Vytisknout kreslicí znaky boxu pomocí pdfLaTeX

V dokumentu musím vytisknout některé znaky Unicode (rodiny výkresových krabic). Našel jsem tuto otázku , která je velmi podobná té mé, ale je platná pouze pro XeLaTeX. Existuje platný způsob, jak to provést pomocí pdfLaTeX, nebo místo toho musím použít XeLaTeX?

Odpovědět

Můžete použít symboly , pokud jsou k dispozici na klávesnici nebo v makrech.

\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} 

zde zadejte popis obrázku

Komentáře

  • Je to ' v pořádku s doslovným prostředím, ale stále mám stejný problém s prostředím lstlisting.
  • Děkuji, funguje to skvěle. Ale můžete vysvětlit, proč musíme psát \newunicodechar definice? Proč ' t pmboxdraw tyto znaky vůbec definovat?
  • utf8 kódování ' takové znaky nezná. Důvod, proč musíte definovat postavu a její příkaz
  • @Tobia Obsah s \newunicodechar není potřeba. Balíček pmboxdraw jej již zpracovává automaticky, viz moje odpověď.

Odpověď

Toto je rozšíření Herbertovy odpovědi a odpovědi Tobiina komentáře .

Balíček inputenc s možností kódování utf8 umožňuje použití UTF-8 ve vstupních souborech TeX s 8bitové motory TeX. Předpokladem je, že znaky Unicode musí být známy, jak jsou mapovány na kód TeX. Podpora inputenc UTF-8 to spojuje s kódováním písma. Balíček pmboxdraw proto definuje umělé písmo kódující pmboxdraw a související mapovací soubor pmboxdrawenc.dfu, který se poté automaticky načte. To zjednodušuje Herbertov příklad:

% 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} 

Výsledek

Zkompilováno s:

This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) 

Seznam verzí \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 *********** 

verze LuaTeX / XeTeX

LuaTeX a XeTeX podporují znaky Unicode a balíček inputenc je zastaralý. pmboxdrawenc.dfu však stále lze použít k vytvoření podporovaných znaky aktivní a rozbalené na symboly:

% 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} 

Komentáře

  • Ne. Používání systému, který přichází v případě apt-get install texlive-xetex texlive-fonts-recommended lmodern na Linux Mint 18 (Ubuntu 16.04), který se zdá být verzí 2015.20160320-1, vyjde váš příklad bez řádkových znaků. Musím explicitně definovat znaky pomocí \newunicodechar. Možná mi ' chybí nějaký další balíček? Nebo i s můj TeX Live příliš starý?
  • @Tobia Otázkou bylo udělat to pro pdfTeX , ne pro XeTeX. Aktualizoval jsem odpověď a přidal verzi pro LuaTeX / XeTeX.
  • Dostal jsem chybu, protože jsem omylem měl možnost [utf8x] pro balíček inputenc. Jakmile jsem to opravil na \usepackage[utf8]{inputenc}, všechno fungovalo dobře. . . BTW, nejste si jisti, co má \listfiles dělat? To jsem nepotřeboval. (Pdf-LaTeX.)
  • @Henke \listfiles vytvoří seznam verzí zobrazený v odpovědi.
  • Ano, dobře. To dává smysl. Nikdy jsem se o tyto protokoly a výstupní soubory neobtěžoval '. V mém škrábanci vašeho příkladu jsem musel trochu poklepat, abych to našel – tlačítko Logs and output files vedle Recompile a poté Other logs & files > log file vpravo nahoře. Verze na druhé straně se zdá být relativně nedávná: pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO). BTW, vaše odpověď (bez newunicodechar) je lepší než přijatá a zaslouží si její souhlas. 🙂

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *