Imprimir caixa de caracteres de desenho com pdfLaTeX

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} 

insira a descrição da imagem aqui

Comentários

  • Está ' está ok com o ambiente literal, mas ainda tenho o mesmo problema com o ambiente lstlisting.
  • Obrigado, isso funciona muito bem. Mas você pode explicar por que precisamos digitar as \newunicodechar definições? Por que ' t pmboxdraw define esses caracteres em primeiro lugar?
  • O utf8 a codificação não ' conhece esses caracteres. A razão pela qual você tem que definir o personagem e seu comando
  • @Tobia O material com \newunicodechar não é necessário. O pacote pmboxdraw já lida com isso automaticamente, veja minha resposta.

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} 

Resultado

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 pacote inputenc. 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 de Recompile 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 (sem newunicodechar) é melhor do que a aceita e merece ser votada. 🙂

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *