Ho bisogno di stampare alcuni caratteri Unicode (della famiglia del box drawing) nel mio documento. Ho trovato questa domanda che è molto simile alla mia ma è valida solo per XeLaTeX. Cè un modo valido per farlo con pdfLaTeX o devo usare XeLaTeX invece?
Risposta
Puoi usare i simboli , se disponibile sulla tastiera o sulle macro.
\documentclass{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pmboxdraw} \usepackage{newunicodechar} \newunicodechar{└}{\textSFii} \newunicodechar{├}{\textSFviii} \newunicodechar{─}{\textSFx} \begin{document} \begin{verbatim} ├── Maildir/ └── scripts/ ├── backup.sh* └── OLD/ ├── backup_cleanup.sh.old └── backup.sh.old* \end{verbatim} \end{document}
Commenti
Risposta
Questa è unestensione della risposta di Herbert e una risposta al commento di Tobia " a>.
Il pacchetto inputenc
con opzione di codifica utf8
consente luso di UTF-8 nei file di input TeX con Motori TeX a 8 bit. Come prerequisito, i caratteri Unicode devono essere conosciuti, come sono mappati al codice TeX. Il supporto UTF-8 di inputenc
lo accoppia con la codifica del carattere. Pertanto il pacchetto pmboxdraw
definisce una codifica del carattere artificiale pmboxdraw
e il relativo file di mappatura pmboxdrawenc.dfu
, che viene quindi caricato automaticamente. Questo semplifica lesempio di Herbert in:
% arara: pdflatex \listfiles \documentclass{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pmboxdraw} \begin{document} \begin{verbatim} ├── Maildir/ └── scripts/ ├── backup.sh* └── OLD/ ├── backup_cleanup.sh.old └── backup.sh.old* \end{verbatim} \end{document}
Compilato con:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Elenco delle versioni di \listfiles
:
*File List* article.cls 2014/09/29 v1.4h Standard LaTeX document class size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) fontenc.sty t1enc.def 2005/09/27 v1.99g Standard LaTeX file inputenc.sty 2015/03/17 v1.2c Input encoding file utf8.def 2016/02/28 v1.1s UTF-8 support for inputenc t1enc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc ot1enc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc omsenc.dfu 2016/02/28 v1.1s UTF-8 support for inputenc pmboxdraw.sty 2011/03/24 v1.1 Poor man"s box drawing characters (HO) ltxcmds.sty 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) kvsetkeys.sty 2012/04/25 v1.16 Key value parser (HO) infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO) etexcmds.sty 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO) kvdefinekeys.sty 2011/04/07 v1.3 Define keys (HO) pmboxdrawenc.dfu 2011/03/24 v1.1 UTF-8 support for box drawing characters kvoptions.sty 2011/06/30 v3.11 Key value format for package options (HO) keyval.sty 2014/10/28 v1.15 key=value parser (DPC) t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions ***********
LuaTeX / XeTeX version
LuaTeX e XeTeX supportano i caratteri Unicode e il pacchetto inputenc
è obsoleto. Tuttavia, pmboxdrawenc.dfu
può ancora essere utilizzato per rendere supportato caratteri attivi e si espandono nei simboli:
% arara: xelatex % or % arara: lualatex \documentclass{article} \usepackage{pmboxdraw} \begingroup \def\DeclareUnicodeCharacter#1{% \begingroup \lccode`\~="#1\relax \lowercase{\endgroup \global\catcode`~=\active \gdef~% }% }% \input{pmboxdrawenc.dfu}% \endgroup \begin{document} \begin{verbatim} ├── Maildir/ └── scripts/ ├── backup.sh* └── OLD/ ├── backup_cleanup.sh.old └── backup.sh.old* \end{verbatim} \end{document}
Commenti
- No. Utilizzando il sistema fornito con
apt-get install texlive-xetex texlive-fonts-recommended lmodern
su Linux Mint 18 (Ubuntu 16.04) che sembra essere la versione 2015.20160320-1, il tuo esempio esce senza i caratteri di riga. Devo definire esplicitamente i caratteri con\newunicodechar
. Forse ' mi manca qualche altro pacchetto? Oppure io Il mio TeX Live è troppo vecchio? - @Tobia La domanda era di farlo per pdfTeX , non per XeTeX. Ho aggiornato la risposta e aggiunto una versione per LuaTeX / XeTeX.
- Ho ricevuto un errore perché avevo erroneamente lopzione
[utf8x]
per il pacchettoinputenc
. Dopo averlo corretto in\usepackage[utf8]{inputenc}
, ha funzionato tutto bene. . . A proposito, non sei sicuro di cosa dovrebbe fare\listfiles
? Non ne avevo bisogno. (Pdf-LaTeX.) - @Henke
\listfiles
produce lelenco delle versioni mostrato nella risposta. - Sì, OK. Questo ha senso. ' non mi sono mai preoccupato di questi log e file di output prima dora. Nel mio graffio del tuo esempio ho dovuto curiosare un po per trovarlo: pulsante
Logs and output files
accanto aRecompile
, quindiOther logs & files > log file
in alto a destra. La versione sul retro sembra essere relativamente recente:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. A proposito, la tua risposta (senzanewunicodechar
) è migliore di quella accettata e merita di essere votata. 🙂
\newunicodechar
? Perché ' tpmboxdraw
definisce questi caratteri in primo luogo?utf8
la codifica ' non conosce tali caratteri. Il motivo per cui devi definire il carattere e il suo comando\newunicodechar
non sono necessarie. Il pacchettopmboxdraw
lo gestisce già automaticamente, vedi la mia risposta.