关于软件包列表中的自动缩进和后中断

关于软件包列表中的自动缩进和后中断

我正在使用包listings来显示我的 Matlab 代码。代码已预先输入到文件中,所有内容都将从文件中加载,并将.tex自动生成一个文件以显示带有的代码lstlisting。现在,我担心长行,我需要它自动换行,所以我添加了breaklines选项。它可以工作,但如果断点在注释字符串上,换行符会将注释分成两部分,这看起来很丑陋,因为在 Matlab 中注释必须以%符号开头,现在第二行以注释样式显示,但没有前缀%。我阅读了listings包文档,其中提到了postbreakautoindent选项。我不明白它是如何工作的,我尝试了文档中显示的示例,但没有得到与那里相同的结果。无论如何,我的问题是包或其他包是否可以listings以智能方式中断注释,以便对齐断线并将正确的前缀添加到断开的注释中。例如,长命令显示为

delta = 0.001;    % interval of the time slice between two different signals measured in different point

在以下环境中,

\begin{lstlisting}[postbreak=\space, breakautoindent=true, breakindent=10pt, breaklines]
  delta = 0.001;    % interval of the time slice between two different signals measured in different point
\end{lstlisting}

表明

  delta = 0.001;    % interval of the time slice between two 
    different signals measured in different point

但我希望

  delta = 0.001;    % interval of the time slice between two 
                    % different signals measured in different point

答案1

listings软件包不提供将虚线与输出的任意部分对齐的可能性,因此需要进行一些手动调整。例如

\documentclass{article}
\usepackage{color,listings}
\begin{document}

\begin{lstlisting}[postbreak=\%\space, 
  breakautoindent=true, breakindent=108pt, breaklines]
  delta = 0.001;    % interval of the time slice between two different signals measured in different point
\end{lstlisting}

\end{document}

似乎可以打印所需的输出,但确实依赖于注释都从同一列开始的事实。我怀疑超越这一点是一项不简单的功能请求。

相关内容