Jeg har brug for at udskrive nogle unicode-tegn (af bokstegningens familie) i mit dokument. Jeg fandt dette spørgsmål , der minder meget om mit, men kun gælder for XeLaTeX. Der er en gyldig måde at gøre dette med pdfLaTeX eller jeg er nødt til at bruge XeLaTeX i stedet?
Svar
Du kan bruge symbolerne , hvis det er tilgængeligt på tastaturet eller makroerne.
\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}
Kommentarer
Svar
Dette er en udvidelse af Herbert “s svar og et svar på Tobia” s kommentar .
Pakke inputenc
med kodningsindstilling utf8
tillader brug af UTF-8 i TeX-inputfiler med 8-bit TeX-motorer. Som en forudsætning skal Unicode-tegnene være kendt, hvordan de kortlægges til TeX-kode. UTF-8-understøttelsen af inputenc
parrer dette med skrifttypekodningen. Derfor definerer pakke pmboxdraw
en kunstig skrifttype, der koder pmboxdraw
og den tilknyttede tilknytningsfil pmboxdrawenc.dfu
, som indlæses derefter automatisk. Dette forenkler Herberts eksempel til:
% 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}
Kompileret med:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Versionsliste med \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 version
LuaTeX og XeTeX understøtter Unicode-tegn og pakke inputenc
er udfaset. pmboxdrawenc.dfu
kan dog stadig bruges til at gøre det understøttede aktive tegn og udvides til symbolerne:
% 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}
Kommentarer
- Nej. Brug af det system, der kommer ind med
apt-get install texlive-xetex texlive-fonts-recommended lmodern
på Linux Mint 18 (Ubuntu 16.04), som ser ud til at være version 2015.20160320-1, kommer dit eksempel ud uden linjetegnene. Jeg skal eksplicit definere tegnene med\newunicodechar
. Måske mangler jeg ' en anden pakke? Eller jeg er min TeX Live for gammel? - @Tobia Spørgsmålet var at gøre det til pdfTeX , ikke XeTeX. Jeg har opdateret svaret og tilføjet en version til LuaTeX / XeTeX.
- Jeg fik en fejl, fordi jeg fejlagtigt havde muligheden
[utf8x]
til pakkeninputenc
. Når jeg rettede det til\usepackage[utf8]{inputenc}
, fungerede det hele fint. . . BTW, er du ikke sikker på, hvad\listfiles
skal gøre? Jeg havde ikke brug for det. (Pdf-LaTeX.) - @Henke
\listfiles
producerer den oversigtsliste, der vises i svaret. - Ja, OK. Det giver mening. Jeg ' har aldrig generet disse logfiler og outputfiler før. I min skrabe af dit eksempel måtte jeg stikke lidt rundt for at finde det – knap
Logs and output files
ved siden afRecompile
, og derefterOther logs & files > log file
øverst til højre. Versionen på næste side synes at være relativt ny:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. BTW, dit svar (udennewunicodechar
) er bedre end det accepterede og fortjener at blive opstemt. 🙂
\newunicodechar
definitionerne? Hvorfor definerer ' tpmboxdraw
disse tegn i første omgang?utf8
kodning kender ikke ' sådanne tegn. Årsagen til, at du skal definere tegnet og dets kommando\newunicodechar
er ikke nødvendige. Pakkepmboxdraw
håndterer den allerede automatisk, se mit svar.