我不知道如何使用 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}
输出: