为什么 \newline 在 lstlisting 中不起作用?

为什么 \newline 在 lstlisting 中不起作用?

我是 LaTeX 新手,正在使用朋友提供的模板:

 \subsection{P2P library}
The library is implemented in C-Sharp and provides two basic facilities - maintaining a member list at every instance and the support for receving and multicasting UDP data. 

The public methods it has are 
\begin{lstlisting}
      void setPorts(int recvHere \newline, int sendFrom

为什么在 PDF 输出中没有,int sendFrom移动到新行?事实上它只是显示在 PDF 输出中。

答案1

正如 Peter Grill 所评论的,lstlisting这是一个逐字环境,这意味着其内容将完全按照代码中显示的内容进行打印。由于这还包括换行符,因此您只需在代码中添加换行符即可。

\begin{lstlisting}
      void setPorts(int recvHere 
      , int sendFrom
\end{lstlisting}

答案2

你可以使用 转为 latex escapechar=\&。然后将你想要执行的 LaTeX 宏括在一&对中:

在此处输入图片描述

如果只是插入新行,最好按照 TorbjørnT 的解决方案手动操作。但如果您想嵌入更有用的宏,则escapechar需要指定。

\documentclass{article}
\usepackage{listings}

\lstset{% Add other global options here
  basicstyle=\small\sffamily,
  escapechar=\&% char to escape out of listings and back to LaTeX
}


\begin{document}
\subsection{P2P library}
The public methods it has are 
\begin{lstlisting}
      void setPorts(int recvHere &\newline& int sendFrom
\end{lstlisting}
\end{document}

答案3

另一个解决方法是定义逃出内部场地。

\lstset{escapeinside={\%*}{*)}

意味着您可以在 %* 和 *) 字符之间写入 latex 命令。

例如,

\begin{lstlisting}
  void setPorts(int recvHere,  %*\newline*) int sendFrom)

答案与彼得斯的答案相似,但由于我的声誉不够,我无法在他的答案中添加评论......)

相关内容