Muszę wydrukować kilka znaków Unicode (z rodziny box drawing) w moim dokumencie. Znalazłem to pytanie , które jest bardzo podobne do mojego, ale dotyczy tylko XeLaTeX. Czy istnieje poprawny sposób na zrobienie tego z pdfLaTeX lub muszę zamiast tego użyć XeLaTeX?
Odpowiedź
Możesz użyć symboli , jeśli jest dostępna na klawiaturze lub w makrach.
\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}
Komentarze
Odpowiedź
To jest rozszerzenie do „s odpowiedzi Herberta i odpowiedź na komentarz Tobii .
Pakiet inputenc
z opcją kodowania utf8
umożliwia używanie UTF-8 w plikach wejściowych TeX z 8-bitowe silniki TeX. Warunkiem wstępnym jest znajomość znaków Unicode, sposobu ich odwzorowania na kod TeX. Obsługa UTF-8 w inputenc
łączy to z kodowaniem czcionki. Dlatego pakiet pmboxdraw
definiuje sztuczne kodowanie czcionki pmboxdraw
i powiązany plik mapowania pmboxdrawenc.dfu
, który jest wtedy automatycznie ładowany. Upraszcza to przykład Herberta do:
% 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}
Skompilowano z:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Lista wersji \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 ***********
Wersja LuaTeX / XeTeX
LuaTeX i XeTeX obsługują znaki Unicode, a pakiet inputenc
jest przestarzały. Jednak pmboxdrawenc.dfu
może być nadal używany do tworzenia obsługiwanych znaki są aktywne i rozwijane do symboli:
% 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}
Komentarze
- Nie. Korzystanie z systemu, który jest w przypadku
apt-get install texlive-xetex texlive-fonts-recommended lmodern
na Linux Mint 18 (Ubuntu 16.04), który wydaje się być wersją 2015.20160320-1, Twój przykład wychodzi bez znaków linii. Muszę wyraźnie zdefiniować znaki za pomocą\newunicodechar
. Może ' brakuje mi jakiegoś innego pakietu? Czy mój TeX Live jest za stary? - @Tobia Pytanie brzmiało, aby zrobić to dla pdfTeX , a nie XeTeX-a. Zaktualizowałem odpowiedź i dodałem wersję dla LuaTeX / XeTeX.
- Wystąpił błąd, ponieważ przez pomyłkę miałem opcję
[utf8x]
dla pakietuinputenc
. Po poprawieniu tego na\usepackage[utf8]{inputenc}
wszystko działało dobrze. . . Przy okazji, nie wiesz, co\listfiles
ma zrobić? Nie potrzebowałem tego. (Pdf-LaTeX.) - @Henke
\listfiles
tworzy listę wersji przedstawioną w odpowiedzi. - Tak, OK. To ma sens. ' nigdy wcześniej nie przejmowałem się tymi dziennikami i plikami wyjściowymi. W moim skrawku twojego przykładu musiałem trochę poszperać, żeby go znaleźć – przycisk
Logs and output files
obokRecompile
, a następnieOther logs & files > log file
w prawym górnym rogu. Wersja na odwrocie wydaje się być stosunkowo nowa:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. Swoją drogą, Twoja odpowiedź (beznewunicodechar
) jest lepsza niż zaakceptowana i zasługuje na uznanie. 🙂
\newunicodechar
? Dlaczego nie ' tpmboxdraw
definiuje te znaki w pierwszej kolejności?utf8
kodowanie nie ' nie zna takich znaków. Powód, dla którego musisz zdefiniować znak i jego polecenie\newunicodechar
nie są potrzebne. Pakietpmboxdraw
obsługuje go już automatycznie, zobacz moją odpowiedź.