如何使用列表获取匹配的双引号?

如何使用列表获取匹配的双引号?

我在列表方面遇到了一个奇怪的问题。我尝试在字符串两边使用匹配的双引号,如以下最小示例所示:

\documentclass{article}

\usepackage{listings}
\lstset{
    language=Java,
    tabsize=2,
    numbers=left,
    basicstyle=\footnotesize
}

\begin{document}

\begin{lstlisting}
void my_method() {
    int test = 0;
    some_method(``string");
    boolean b = false;
    some_method(``string");

}
\end{lstlisting}

\end{document}

首先,反引号是单独呈现的,而不是像我想要的那样呈现为漂亮的左双引号。而且,更大的问题是,插入反引号后,它开始显示两个字符串之间的所有空格,即使我在设置中添加了 showspaces=false,也是如此,如以下屏幕截图所示:

上述标记的结果

我发现了很多关于如何使用直双引号的方法,但我实际上想要的是弯引号。有人知道如何正确插入左引号吗?

答案1

您可以使用 literate 获取左花括号,但恕我直言,您必须禁用字符串分隔符以避免显示空格。

\documentclass{article}

\usepackage{listings}
\lstset{
    language=Java,
    tabsize=2,
    numbers=left,
    basicstyle=\footnotesize,
    literate={``}{\textquotedblleft}1,
    deletestring=[b]",
    ,
}

\begin{document}

\begin{lstlisting}
void my_method() {
    int test = 0;
    some_method(``string");
    boolean b = false;
    some_method(``string");

}
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

listings逐个字符地扫描,因此你必须教它在特殊情况下不要这样做:

\documentclass{article}

\usepackage{listings}
\lstset{
  language=Java,
  tabsize=2,
  numbers=left,
  basicstyle=\footnotesize,
  literate=
    {``}{\odblq}{1}
    {''}{\cdblq}{1},
}
\newcommand{\odblq}{``}
\newcommand{\cdblq}{''}

\begin{document}

\begin{lstlisting}
void my_method() {
    int test = 0;
    some_method(``string'');
    boolean b = false;
    some_method(``string'');

}
\end{lstlisting}

\end{document}

在此处输入图片描述

用于结束引号可避免被视为分隔符的''问题。"

然而,这可能会让你的读者感到困惑,他们可能会认为他们的代码需要反向引号。

另一种方法是使用 UTF-8

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{listings}
\lstset{
  language=Java,
  tabsize=2,
  numbers=left,
  basicstyle=\footnotesize,
  literate=
    {“}{\odblq}{1}
    {”}{\cdblq}{1},
}
\newcommand{\odblq}{``}
\newcommand{\cdblq}{''}

\begin{document}

\begin{lstlisting}
void my_method() {
    int test = 0;
    some_method(“string”);
    boolean b = false;
    some_method(“string”);

}
\end{lstlisting}

\end{document}

相关内容