Am nevoie să tipăresc câteva caractere Unicode (din familia desenelor de casete) în documentul meu. Am găsit această întrebare care este foarte asemănătoare cu a mea, dar este valabilă doar pentru XeLaTeX. Există o modalitate validă de a face acest lucru cu pdfLaTeX sau trebuie să folosesc XeLaTeX în schimb?
Răspuns
Puteți utiliza simbolurile , dacă este disponibil pe tastatură sau pe macrocomenzi.
\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}
Comentarii
Răspuns
Aceasta este o extensie la răspunsul Herbert „s și un răspuns la Tobia„ s comentariu .
Pachetul inputenc
cu opțiunea de codificare utf8
permite utilizarea UTF-8 în fișierele de intrare TeX cu Motoare TeX pe 8 biți. Ca premisă, caracterele Unicode trebuie cunoscute, cum sunt mapate la codul TeX. Suportul UTF-8 al inputenc
cuplează acest lucru cu codarea fontului. Prin urmare, pachetul pmboxdraw
definește un cod de font artificial pmboxdraw
și fișierul de mapare aferent pmboxdrawenc.dfu
, care este apoi încărcat automat. Acest lucru simplifică exemplul lui Herbert în:
% 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}
Compilat cu:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Lista versiunilor \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 și XeTeX acceptă caractere Unicode și pachetul inputenc
este depreciat. Cu toate acestea, pmboxdrawenc.dfu
poate fi încă folosit pentru a face suportul caractere active și extindere la simboluri:
% 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}
Comentarii
- Nu. Utilizarea sistemului care vine cu
apt-get install texlive-xetex texlive-fonts-recommended lmodern
pe Linux Mint 18 (Ubuntu 16.04) care pare a fi versiunea 2015.20160320-1, exemplul dvs. apare fără caracterele de linie. Trebuie să definesc explicit caracterele cu\newunicodechar
. Poate că ' lipsesc alt pachet? Sau TeX Live este prea vechi? - @Tobia Întrebarea era să o faci pentru pdfTeX , nu pentru XeTeX. Am actualizat răspunsul și am adăugat o versiune pentru LuaTeX / XeTeX.
- Am primit o eroare deoarece am greșit opțiunea
[utf8x]
pentru pachetulinputenc
. Odată ce am corectat asta la\usepackage[utf8]{inputenc}
, totul a funcționat bine. . . BTW, nu sunteți sigur ce ar trebui să facă\listfiles
? Nu aveam nevoie de asta. (Pdf-LaTeX.) - @Henke
\listfiles
produce lista de versiuni afișată în răspuns. - Da, OK. Are sens. ' nu m-am deranjat niciodată despre aceste jurnale și fișiere de ieșire. În zgârietura exemplului dvs. a trebuit să mă scot puțin pentru a-l găsi – butonul
Logs and output files
de lângăRecompile
, apoiOther logs & files > log file
în dreapta sus. Versiunea din partea de sus pare a fi relativ recentă:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. BTW, răspunsul dvs. (fărănewunicodechar
) este mai bun decât cel acceptat și merită să fie votat în sus. 🙂
\newunicodechar
? De ce nu ' tpmboxdraw
definește în primul rând acele caractere?utf8
codificarea nu ' nu cunoaște astfel de caractere. Motivul pentru care trebuie să definiți caracterul și comanda acestuia\newunicodechar
nu sunt necesare. Pachetulpmboxdraw
îl gestionează deja automat, vezi răspunsul meu.