如何使列表显示特殊字符

如何使列表显示特殊字符

我正在尝试使用列表包显示树的目录结构,如下所示:

├── controllers
│   ├── application_controller.rb

我得到的结果如下:

    controllers
            application_controller.rb

当我使用

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

给出的错误是:

Package inputenc Error: Unicode char \u8:\lst@FillFixed@\lst@EC not set up for use with LaTeX. [├── ]

尝试使用 utf8x 得到:

./directory_listing.txt:1: Package utf8x Error: MalformedUTF-8sequence. [├── ]

[U+FFFD][U+FFFD][U+FFFD]
1
controllers
[U+FFFD][U+FFFD][U+FFFD]
2
[U+FFFD][U+FFFD][U+FFFD]
a p p l i c a t i o n _ c o n t r o l l e r . rb

âŤIJâŤĂâŤĂ controllers
âŤĆÂăÂă âŤIJâŤĂâŤĂ application_controller.rb

如果我不包含 utf8 行。

有没有办法让它正确地编码破折号、竖线和三通竖线,以便它们显示在输出中?(我需要某种形式的 [T1]fontenc,否则下划线在其他地方无法正确显示。)

答案1

有一个解决方法,使用pmboxdraw包和listings'escapechar命令,允许在列表环境中插入 Latex 代码:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pmboxdraw}
\usepackage{listings}
\begin{document}
Here is my code (note that I can insert \LaTeX code between ``@''):

\begin{lstlisting}[escapechar=@]
for i in @\LaTeX@:
    print @$\sum_i$@
\end{lstlisting}

Now, let's print the characters you are interrested in:

\begin{lstlisting}[escapechar=@]
@\pmboxdrawuni{251D}\pmboxdrawuni{2501}@ controllers
@\textSFxi@  @\pmboxdrawuni{251D}\pmboxdrawuni{2501}\pmboxdrawuni{2501}@ application_controller.rb
\end{lstlisting}

\end{document}

在此处输入图片描述

可能有 Lualatex 或 XeLaTex 解决方案来使用 unicode 字符:这对您来说是一个选择吗?

相关内容