列表 moredelim / morestring 选项不适用于包含的文件

列表 moredelim / morestring 选项不适用于包含的文件

当代码位于单独的文件中时,我不知道如何使用 listings 包修复双引号字符 ('"')。Listing 将其作为字符串的开头,但事实并非如此。

非常感谢 Gustavo Mezzetti 提供的 moredelim/morestring 选项的答案。不幸的是,即使这些修复在 latex 文件中运行良好,当我从单独的文件中包含代码时,morestring 和 moredelim 修复也不起作用。

下面是展示该问题的新最小示例:

\documentclass[varwidth]{standalone}
\usepackage{listings}
\usepackage{color}
\lstset{
  language=bash,
  stringstyle=\color{red},
  commentstyle=\color{green},
  showspaces=false,
  showstringspaces=false,
  morestring=[b]',
}

\begin{document}
This is working fine thanks to Gustavo Mezzetti answer's and the morestring=[b]' option :

\begin{lstlisting}
file_name=$(cut -d '"' -f 2)
# This shoud be a comment
    echo "This should be a String"
\end{lstlisting}

This isn't working anymore when the same code is included from a separated file :

\lstinputlisting[language=Bash, morestring{[b]'}]{test.sh}
\end{document}

使用以下分离文件“test.sh”:

  file_name=$(cut -d '"' -f 2)
  # This shoud be a comment
  echo "This should be a String"

结果是 :

在此处输入图片描述

谢谢你的帮助 !

请注意,这个问题紧接着这个问题: 列表中的双引号字符 ('"') 会产生问题

答案1

好的,我明白了:我只需要更换

\lstinputlisting[language=Bash, morestring{[b]'}]{test.sh}

经过

\lstinputlisting{test.sh}

我猜想这里的问题在于列表选项的冗余;)

相关内容