Ik moet enkele Unicode-tekens (van de kadertekeningfamilie) in mijn document afdrukken. Ik heb deze vraag gevonden die erg lijkt op de mijne, maar alleen geldig is voor XeLaTeX. Is er een geldige manier om dit te doen met pdfLaTeX of moet ik in plaats daarvan XeLaTeX gebruiken?
Antwoord
Je kunt de symbolen gebruiken , indien beschikbaar op het toetsenbord, of de macros.
\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}
Reacties
Antwoord
Dit is een uitbreiding op Herbert “s antwoord en een antwoord op Tobia” s opmerking .
Pakket inputenc
met coderingsoptie utf8
staat het gebruik van UTF-8 toe in TeX-invoerbestanden met 8-bit TeX-motoren. Voorwaarde is dat de Unicode-tekens bekend zijn en hoe ze zijn toegewezen aan TeX-code. De UTF-8-ondersteuning van inputenc
koppelt dit aan de lettertypecodering. Daarom definieert pakket pmboxdraw
een kunstmatige lettertypecodering pmboxdraw
en het gerelateerde toewijzingsbestand pmboxdrawenc.dfu
, dat wordt dan automatisch geladen. Dit vereenvoudigt het voorbeeld van Herbert tot:
% 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}
Gecompileerd met:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Versielijst van \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-versie
LuaTeX en XeTeX ondersteunen Unicode-tekens en pakket inputenc
is verouderd. pmboxdrawenc.dfu
kan echter nog steeds worden gebruikt om de ondersteunde tekens actief en uitbreiden naar de symbolen:
% 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}
Reacties
- Nee. Met behulp van het systeem dat wordt geleverd in met
apt-get install texlive-xetex texlive-fonts-recommended lmodern
op Linux Mint 18 (Ubuntu 16.04) die versie 2015.20160320-1 lijkt te zijn, je voorbeeld komt uit zonder de lijntekens. Ik moet de tekens expliciet definiëren met\newunicodechar
. Misschien mis ik ' een ander pakket? Of Is mijn TeX Live te oud? - @Tobia De vraag was om het te doen voor pdfTeX , niet voor XeTeX. Ik heb het antwoord bijgewerkt en een versie voor LuaTeX / XeTeX toegevoegd.
- Ik kreeg een foutmelding omdat ik ten onrechte de optie
[utf8x]
had voor het pakketinputenc
. Toen ik dat eenmaal had gecorrigeerd naar\usepackage[utf8]{inputenc}
, werkte het allemaal prima.Trouwens, weet je niet zeker wat\listfiles
moet doen? Ik had dat niet nodig. (Pdf-LaTeX.) - @Henke
\listfiles
produceert de versielijst die in het antwoord wordt getoond. - Ja, OK. Dat is logisch. Ik ' heb me nog nooit druk gemaakt over deze logboeken en uitvoerbestanden. In mijn kras van je voorbeeld moest ik een beetje rondneuzen om het te vinden – knop
Logs and output files
naastRecompile
, en danOther logs & files > log file
rechtsboven. De versie op de ommezijde lijkt relatief recent te zijn:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. Trouwens, je antwoord (zondernewunicodechar
) is beter dan het geaccepteerde antwoord, en verdient het om te worden geapprecieerd. 🙂
\newunicodechar
-definities moeten typen? Waarom definieert niet ' tpmboxdraw
die tekens in de eerste plaats?utf8
codering kent geen ' dergelijke karakters. De reden waarom je het karakter en zijn commando moet definiëren\newunicodechar
is niet nodig. Pakketpmboxdraw
handelt het al automatisch af, zie mijn antwoord.