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}
Komentáře
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}
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íčekinputenc
. 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
vedleRecompile
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ěď (beznewunicodechar
) je lepší než přijatá a zaslouží si její souhlas. 🙂
\newunicodechar
definice? Proč ' tpmboxdraw
tyto znaky vůbec definovat?utf8
kódování ' takové znaky nezná. Důvod, proč musíte definovat postavu a její příkaz\newunicodechar
není potřeba. Balíčekpmboxdraw
jej již zpracovává automaticky, viz moje odpověď.