强制在 \lstinline 内换行

强制在 \lstinline 内换行

我使用\lstinline{foo}listings包中的选项在常规文本中设置代码片段。为了获得自动换行,我使用以下选项:

\lstset{
 breaklines=true,
 breakatwhitespace=true,
 breakindent=2ex,
 postbreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookrightarrow\space}}
}

有时代码片段必须进入相当窄的表格单元格并且自动换行看起来不太好看。

有没有办法告诉\lstinline(和lstlisting)在哪里插入换行符,而不必将它们实际放入 LaTeX 源代码中?如果我对它们进行硬编码,这将影响行号(以lstlistings 为单位),并且行延续符号和缩进也会丢失。

答案1

你当然可以退出到 LaTeX 并手动强制中断,例如

\documentclass{article}
\usepackage{listings}
\lstset{
 breaklines        = true,
 breakatwhitespace = true,
 breakindent       = 2ex,
 escapechar        = *,
 numbers           = left
}
\begin{document}

\begin{lstlisting}
Some text
Some more text Some more text Some more text Some more text
Some more text Some more text *\break* Some more text Some more text
Final text
\end{lstlisting}

\end{document}

我不能 100% 确定这是否是必需的:listings在不向源添加任何内容的情况下告诉在哪里中断似乎很难想象。

答案2

如果您只需要一次并且不想用 \lstset 声明它,您可以直接在 lstinline 中将 breaklines 设置为 true。

\lstinline[breaklines=true]|[this is a very long command]|

相关内容