使用 lstlisting 环境时,我无法让它在仅包含字符的长行上中断*
。这是我的最小工作示例。它生成一个列表,其中的文本超出了列表的框架,并且没有产生正确的换行符。我该如何解决这个问题?我尝试了不同的参数\lstset
,但似乎没有任何效果。我如何告诉列表环境可以在 上中断*
?
\usepackage{listings}
\begin{document}
\lstset{%
breaklines=true,
breakatwhitespace=false,
postbreak=\space,
tabsize=2,
basicstyle=\ttfamily\footnotesize,
showspaces=false,
showstringspaces=false,
extendedchars=true,
frame=single,
frameround=ffff,
aboveskip=1.5em
}
\begin{lstlisting}
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** hello world
\end{lstlisting}
\end{document}
答案1
环境中文本的断行方式listings
取决于所选的源代码语言。如果您不想更改语言设置,您可以添加选项literate={*}{*\allowbreak}1
,将每个*
字符替换为允许在其后立即换行的版本。
更新示例:
\documentclass{article}
\usepackage{listings}
\begin{document}
\lstset{%
breaklines=true,
breakatwhitespace=false,
postbreak=\space,
tabsize=2,
basicstyle=\ttfamily\footnotesize,
showspaces=false,
showstringspaces=false,
extendedchars=true,
frame=single,
frameround=ffff,
aboveskip=1.5em,
literate={*}{*\allowbreak}1 % ADDED
}
\begin{lstlisting}
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** hello world
\end{lstlisting}
\end{document}