我正在为一段代码编写文档。其中定义了一个包含破折号的字符串,我想引用它来展示已定义对象的示例。
问题是破折号,我无法在列表环境中设置它。下面的 MWE 显示了我迄今为止尝试过的方法。输入“---”只会打印三个连字符,\emdash{}
不会打印任何内容,从而退出列表环境做打印破折号,但它会给字符串格式带来麻烦:空格字符没有按应有的方式显示(如示例 1 中所示)。
所以问题归结为:如何在列表环境中设置破折号,如果这是不可能的,我该如何以不改变周围字符串的方式退出列表环境?
这是MWE:
\documentclass{article}
\usepackage{color}
\usepackage{listings}
\usepackage[utf8]{inputenc}
\lstdefinestyle{java}{
language = java,
stringstyle = \color{red}
}
\begin{document}
\begin{lstlisting}[style=java,escapechar=!]
pro: {
descr1: " -- This is some text",
descr2: " !{\color{red}---}! Here is some more text",
descr3: " !\emdash{}! And a third version",
descr4: " !{\color{red}—}! No. 4",
descr5: " !{\color{red}\textemdash}! No. 5",
descr6: " \textemdash No. 6"
}
\end{lstlisting}
\end{document}
答案1
使用literate
:
\documentclass{article}
\usepackage{color}
\usepackage{listings}
\usepackage[utf8]{inputenc}
\lstdefinestyle{java}{
language = java,
stringstyle = \color{red},
literate ={--}{\textendash}1 {---}{\textemdash}2,
}
\begin{document}
\begin{lstlisting}[style=java]
pro: {
descr1: " -- This is some text",
descr2: " --- Here is some more text",
}
\end{lstlisting}
\end{document}