Wydrukuj znaki rysunków ramek za pomocą pdfLaTeX

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} 

wprowadź opis obrazu tutaj

Komentarze

  • It ' ok ze środowiskiem Verbatim, ale nadal mam ten sam problem ze środowiskiem lstlisting.
  • Dziękuję, to działa świetnie. Ale czy możesz wyjaśnić, dlaczego musimy wpisać definicje \newunicodechar? Dlaczego nie ' t pmboxdraw 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
  • @Tobia. Rzeczy z \newunicodechar nie są potrzebne. Pakiet pmboxdraw obsługuje go już automatycznie, zobacz moją odpowiedź.

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} 

Wynik

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 pakietu inputenc. 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 obok Recompile, a następnie Other 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ź (bez newunicodechar) jest lepsza niż zaakceptowana i zasługuje na uznanie. 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *