Eu preciso imprimir alguns caracteres Unicode (da família de desenho de caixa) no meu documento. Eu encontrei esta pergunta que é muito semelhante à minha, mas é válida apenas para XeLaTeX. Existe uma maneira válida de fazer isso com o pdfLaTeX ou devo usar o XeLaTeX?
Resposta
Você pode usar os símbolos , se disponível no teclado ou nas 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}
Comentários
Resposta
Esta é uma extensão para Herbert “s resposta e uma resposta para Tobia” s comentário .
O pacote inputenc
com opção de codificação utf8
permite o uso de UTF-8 em arquivos de entrada TeX com Motores TeX de 8 bits. Como pré-requisito, os caracteres Unicode devem ser conhecidos, como são mapeados para o código TeX. O suporte UTF-8 de inputenc
associa isso à codificação da fonte. Portanto, o pacote pmboxdraw
define uma codificação de fonte artificial pmboxdraw
e o arquivo de mapeamento relacionado pmboxdrawenc.dfu
, que é então carregado automaticamente. Isso simplifica o exemplo de Herbert para:
% 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}
Compilado com:
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)
Lista de versões de \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 ***********
Versão LuaTeX / XeTeX
LuaTeX e XeTeX suportam caracteres Unicode e o pacote inputenc
está obsoleto. No entanto, pmboxdrawenc.dfu
ainda pode ser usado para tornar os caracteres ativos e expandidos para os símbolos:
% 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}
Comentários
- Não. Usando o sistema que vem com
apt-get install texlive-xetex texlive-fonts-recommended lmodern
no Linux Mint 18 (Ubuntu 16.04), que parece ser a versão 2015.20160320-1, seu exemplo sai sem os caracteres de linha. Tenho que definir explicitamente os caracteres com\newunicodechar
. Talvez eu ' esteja faltando algum outro pacote? Ou eu s meu TeX Live é muito antigo? - @Tobia A questão era fazê-lo para pdfTeX , não XeTeX. Atualizei a resposta e adicionei uma versão para LuaTeX / XeTeX.
- Recebi um erro porque por engano tive a opção
[utf8x]
para o pacoteinputenc
. Depois de corrigir isso para\usepackage[utf8]{inputenc}
, tudo funcionou bem. . . BTW, não tem certeza do que\listfiles
deve fazer? Eu não precisava disso. (Pdf-LaTeX.) - @Henke
\listfiles
produz a lista de versões mostrada na resposta. - Sim, OK. Isso faz sentido. Eu ' nunca me preocupei com esses logs e arquivos de saída antes. No meu rascunho do seu exemplo , tive que fuçar um pouco para encontrá-lo – botão
Logs and output files
ao lado deRecompile
e, em seguida,Other logs & files > log file
no canto superior direito. A versão no verso parece ser relativamente recente:pmboxdraw.sty 2019/12/05 v1.4 Poor man's box drawing characters (HO)
. BTW, sua resposta (semnewunicodechar
) é melhor do que a aceita e merece ser votada. 🙂
\newunicodechar
definições? Por que ' tpmboxdraw
define esses caracteres em primeiro lugar?utf8
a codificação não ' conhece esses caracteres. A razão pela qual você tem que definir o personagem e seu comando\newunicodechar
não é necessário. O pacotepmboxdraw
já lida com isso automaticamente, veja minha resposta.