在我的文档的序言中,我放置了以下命令以允许字符串用斜体注释包装<
并打印:>
\lstset{morecomment=[s]{<}{>},commentstyle=\rmfamily\itshape}
并且根据我对listings
包文档的理解,如果我想暂时禁用这个分隔符,我应该使用它deletecomment=[s]{<}{>}
作为特定环境的可选参数lstlisting
:
\begin{lstlisting}[deletecomment=[s]{<}{>}]
\lstset{morecomment=[s]{<}{>},commentstyle=\rmfamily\itshape}
\end{lstlisting}
但 LaTeX 却因此发出了错误。
那么禁用注释分隔符的正确方法是什么?
以下是 MWE:
\documentclass[a4paper]{article}
\usepackage{listings}
\lstset{morecomment=[s]{<}{>},commentstyle=\rmfamily\itshape}
\begin{document}
\begin{lstlisting}[deletecomment=[s]{<}{>}]
<text>
\end{lstlisting}
\end{document}
答案1
问题在于lstlisting
环境可选参数的解析。]
当
deletecomment=[s]{<}{>}
找到后,LaTeX 会假定它标记了该可选参数的结尾。此问题及其解决方案在文档的 2.3 小节中进行了解释listings
。
language=[77]Fortran
在可选参数内不起作用。如果在可选参数内使用带有可选参数的值,则必须在值周围加上括号。在这种情况下,请写入language={[77]Fortran}
选择 Fortran 77。
如果你在这里应用这个技巧,通过编写
deletecomment={[s]{<}{>}}
相反,一切都按预期进行。
\documentclass[a4paper]{article}
\usepackage{listings}
\lstset{morecomment=[s]{<}{>},commentstyle=\rmfamily\itshape}
\begin{document}
\begin{lstlisting}
<text>
\end{lstlisting}
\begin{lstlisting}[deletecomment={[s]{<}{>}}]
<text>
\end{lstlisting}
\end{document}