utf8 字符

utf8 字符

我想将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并用于后续的水平测量。(我通过备份其宽度来消除垂直规则的宽度,以使这更容易。)此外,以一些空格开头的符号被封闭在一个框中,以防止该空格在每行的开头消失。

可以调整垂直规则的高度/深度以使它们在线条之间连接起来,但这可能不是您想要看到的样式。

相关内容