我想使用带有的列表包显示 CSV 文件中的几行breaklines=true
。
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\lstset{%
backgroundcolor=\color{lightgray},
basicstyle=\ttfamily\footnotesize,
breaklines,
showspaces
}
\begin{document}
\begin{lstlisting}
K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;1.370082994;1.471863596;1.274232464
\end{lstlisting}
\end{document}
但输出结果并不令人满意。
- 换行发生得太早,因此第一行末尾有大量空白,而第二行超出了可用的文本宽度。第二行没有换行。
- 每行后都有一个空行。
我想要这样的东西:
K01980;23S ribosomal RNA;11.79648646;17.54756407;16.55812848;
7.070375553;9.904088434;10.33047681;11.34235283;12.84408234
K01977;16S ribosomal RNA;7.433653271;11.21805284;10.47502621;
4.555449801;6.223779066;6.547853101;7.12047883;8.056722
K03046;DNA-directed RNA polymerase subunit beta' [EC:2.7.7.6];
1.279373326;1.843958244;1.291530419;0.91598316;1.444456949;
1.370082994;1.471863596;1.274232464
答案1
listings
当字符属于同一内部类别时,不会拆分字符块。在这种情况下,信,数字和其他类别是特别有趣的。默认情况下,字符会像您期望的那样被分配到类别中,即字母属于类别信,数字是数字,符号为其他。
当一个信发现,以下所有信或者数字字符被读取,直到非信/非-数字找到。然后,将该系列作为一个块输出。现在,所有非信直到下一个信找到。以这种方式处理输入可以防止示例中的一长串数字、句号和分号被破坏,因为没有信发现开始了一个新块。
以下是解决此问题的建议:
重新排列字符类别,使构建的块与特定用例的逻辑数据单元相对应。例如,您可能希望将数字和句点也移动到类别信,同时保留分号作为类别其他。这可以通过添加
alsoletter={0123456789.}
至
\lstset
。现在换行符也可以出现在所有小数之后和分号之后。更直接的方法是使用该
literate
选项并将分号重新定义为允许在符号后换行的版本:literate={;}{{;\allowbreak}}1
两种解决方案现在都给出了更有吸引力的结果