列表中使用反斜杠自动换行

列表中使用反斜杠自动换行

我想使用列表来格式化 bash 命令,以便过长的行自动用反斜杠分隔。我知道这个prebreak选项,但似乎无法将文字反斜杠字符传递给prebreak

我从中学到这个答案我可以使用 指定反斜杠\textbackslash,但使用它会产生以下警告消息:

LaTeX Font Warning: Font shape `OMS/cmtt/m/n' undefined
(Font) using `OMS/cmsy/m/n' instead for symbol `textbackslash' on input line 8.

虽然这仍然允许文档编译,但看起来它以\textbackslash某种方式避免了根据basicstyle选项进行格式化。如以下示例所示,listings 完全能够正确地设置手动输入的反斜杠的样式。

是否可以让列表使用正确样式的反斜杠自动断开长行?

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\begin{document}
% Automatic line break
\begin{lstlisting}[basicstyle=\ttfamily,breaklines,breakatwhitespace,prebreak={\textbackslash}]
long string of text to test line breaking for the listings package
\end{lstlisting}

% Manual line break
\begin{lstlisting}[basicstyle=\ttfamily,breaklines,breakatwhitespace]
long string of text to test line breaking for the \
    listings package
\end{lstlisting}
\end{document}

上述 Latex 代码输出的屏幕截图,展示了反斜杠的视觉差异

答案1

我找到了两个答案,这两个答案都允许在列表中自动换行时正确设置反斜杠的样式:

  • 坎帕斯建议添加\usepackage[T1]{fontenc}到序言中修复了\textbackslash用于该prebreak选项时的样式问题。

  • 找到了一个替代解决方案问题我在自己的问题中链接到了 。虽然这个问题涉及回车符,但他们提供的示例代码包含使用 指定反斜杠的不同方法\char`\\。事实证明,设置prebreak\char`\\产生正确样式的反斜杠,而无需使用\usepackage[T1]{fontenc}

了解 非常有帮助\char,因为我预计在将来的情况下可能需要将特殊字符传递给选项。但是,对于这种特殊情况以及通常使用 LaTeX 进行写作,我认为我会坚持使用,\usepackage[T1]{fontenc}因为它具有 中概述的好处这个答案

相关内容