我想将npm list
命令的输出包含在 Latex 逐字块中:
jeroen@jeroen-ubuntu:~/Desktop$ npm install d3
jeroen@jeroen-ubuntu:~/Desktop$ npm list
/home/jeroen/Desktop
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── [email protected]
但是,这些有趣的小树字符不是 ASCII。我尝试将文件保存为 UTF8 并添加\usepackage[utf8]{inputenc}
到我的 premable 中。但是,它给了我错误:
-Package inputenc Error: Unicode char \u8:â not set up for use with LaTeX
有什么方法可以使用这些字符吗?
答案1
例如,包pmboxdraw
提供符号:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}
\begin{document}
\begin{verbatim}
/home/jeroen/Desktop
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── [email protected]
\end{verbatim}
\end{document}
答案2
这是一个普通的 LaTeX 解决方案(不是使用 tikz)。您需要设置缺少的 unicode 字符。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\makeatletter
\verbatim@font
\newsavebox\v@sp
\sbox{\v@sp}{\ }
\newlength{\v@spwd}
\setlength{\v@spwd}{\wd\v@sp}
\newunicodechar{└}{\mbox{\kern0.5\v@spwd\vrule height 2ex depth -1ex width 0.2ex\kern-0.2ex\rule[1ex]{0.5\v@spwd}{0.2ex}}}
\newunicodechar{─}{\rule[1ex]{1\v@spwd}{0.2ex}}
\newunicodechar{┬}{\rule[1ex]{0.5\v@spwd}{0.2ex}\vrule height 1ex
depth 0.5ex width0.2ex\kern-0.2ex\rule[1ex]{0.5\v@spwd}{0.2ex}}
\newunicodechar{├}{\mbox{\kern0.5\v@spwd\vrule height 2ex depth 0.5ex width 0.2ex\kern-0.2ex\rule[1ex]{0.5\v@spwd}{0.2ex}}}
\newunicodechar{│}{\mbox{\kern0.5\v@spwd\vrule height 2ex depth 0.5ex width
0.2ex\kern-0.2ex \kern0.5\v@spwd}}
\makeatother
\normalfont
\begin{document}
\begin{verbatim}
jeroen@jeroen-ubuntu:~/Desktop$ npm install d3
jeroen@jeroen-ubuntu:~/Desktop$ npm list
/home/jeroen/Desktop
└─┬ [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ └── [email protected]
└── [email protected]
\end{verbatim}
\end{document}
该newunicodechar
包提供了一种访问必要代码点的简单方法。
在代码中,所有符号都是用垂直和水平规则制作的。我们需要获取逐字字体中空格字符的宽度,并使我们的符号具有该宽度,以便在输出中获得正确的对齐。宽度存储在中\v@spwd
并用于后续的水平测量。(我通过备份其宽度来消除垂直规则的宽度,以使这更容易。)此外,以一些空格开头的符号被封闭在一个框中,以防止该空格在每行的开头消失。
可以调整垂直规则的高度/深度以使它们在线条之间连接起来,但这可能不是您想要看到的样式。