列表中的双引号字符 ('"') 会产生问题

列表中的双引号字符 ('"') 会产生问题

我不知道如何使用 listing 包修复双引号字符 ('"')。Listing 将其作为字符串的开头,但事实并非如此。

下面是一个彩色的最小示例来说明该问题:

\documentclass{standalone}
\usepackage{listings}
\usepackage{color}
\lstset{
  language=Bash,
  stringstyle=\color{red},
  commentstyle=\color{green},
  showspaces=false,
  showstringspaces=false,
}

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

结果是 :

在此处输入图片描述

谢谢你的帮助 !

编辑:请注意,如果我用字母 a 替换双引号字符,则着色效果很好:

在此处输入图片描述

答案1

尝试moredelim

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

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

输出如下:

代码输出

或者可能morestring更合适。在 bash 中,是'通过\还是通过将其翻倍来转义?我猜是通过\

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

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

输出:

第二个示例的输出

相关内容