如何在列表环境中混合直撇号和重音字母的标记?

如何在列表环境中混合直撇号和重音字母的标记?

我有一个用 luatex 格式化的文档,开头

\documentclass[b4paper]{article}
\usepackage{expl3}
\usepackage{hyperref}
\usepackage{listings}         %Requires luatex engine to handle UTF-8
                              %Consider using minted, but ...
    ...
\begin{document}
\lstset{language=Rexx, extendedchars=true, frame=trbl}

\maketitle

使用 listings 包显示 Rexx 的代码示例,Rexx 是一种使用 ASCII 撇号作为分隔符的语言。代码示例包括一个带重音符号 aigu 的字母 e(“é”),我将其输入为“\'{e}”,以及一个 ASCII 撇号(“'”),我将其输入为“{\textquotesingle}”。这在文本中运行良好

For example, the Unicode string {\textquotesingle\}Caf\'{e}{\textquotesingle\} has 4 code points, 4
grapheme clusters and 5 octets in UTF-8 encoding while
{\textquotesingle\}Cafe\textbf{'}{\textquotesingle\} has 5 code points, 4 grapheme clusters and 6 octets
in UTF-8 encoding, yet many text processing applications need to treat
them as equivalent.

正确呈现为

例如,Unicode 字符串“Café”在 UTF-8 编码中有 4 个代码点、4 个字素簇和 5 个八位字节,而“Cafe”在 UTF-8 编码中有 5 个代码点、4 个字素簇和 6 个八位字节,但许多文本处理应用程序需要将它们视为等效的。

撇号应被呈现为直的。

第二部分是

\begin{lstlisting}
    foo = 'Ren\'{e}'
    parse upper var foo bar
\end{lstlisting}

呈现为

foo = ’Ren\’{e}’

____解析上部变量 foo bar

其中 _ 实际上是可见的空格杯。 ' 未插入,第二行上的前导空格未正确呈现。

我能够使用 \'{ } 来显示裸重音符号 aigu,并且使用最近的 LaTeX,我能够使用 \textquotesingle 来显示直撇号。

列表的 MWE:

\documentclass[b4paper]{article}
\usepackage{enumitem}
\usepackage{expl3}
\usepackage{hyperref}
\usepackage{listings}         %Requires luatex engine to handle UTF-8
                              %Consider using minted, but ...

\begin{document}
\lstset{language=Rexx, extendedchars=true, frame=trbl}

\begin{lstlisting}
    foo = {\textquotesingle\}Ren\'{e}{\textquotesingle}
    parse upper var foo bar
\end{lstlisting}

\end{document}

列表文档声称可以转为 LaTeX,但我无法做到这一点。我上面使用的标记,以纯文本形式,正确呈现为“'Café'”。

所以我的问题是,在不输入 U+7F 以上字符的情况下,我应该对示例代码使用什么与 luatex 兼容的包和标记,而不会影响文档中其他地方的撇号的渲染?只要代码缩进、不换行、带框或以其他方式区分,我就可以放弃语法突出显示。

答案1

我不确定你为什么要用老方法输入重音符号。

\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}

% choose the fonts
% \setmainfont{...}

% now a special font for listings
\defaultfontfeatures{}
\newfontfamily{\listingfont}{Latin Modern Roman}

\lstset{
  language=Rexx,
  extendedchars=true,
  frame=trbl,
  basicstyle=\listingfont
}

\begin{document}


\begin{lstlisting}
foo = 'René'
parse upper var foo bar
\end{lstlisting}

\end{document}

在此处输入图片描述

答案2

这两种方法都有效

\documentclass[b4paper]{article}
\usepackage{alltt}
\usepackage{framed}
\usepackage{upquote}

\begin{document}

Using alltt with framed and upquote.

\begin{framed}
\begin{verbatim}
foo='Ren\'{e}'
bar=`Ren\'{e}`
\end{verbatim}
\end{framed}

\end{document}

\documentclass{article}
\usepackage{fontspec}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{upquote}

\begin{document}
\lstset{language=Rexx, extendedchars=true, frame=trbl, escapechar={!},linewidth=20em}

\section{Statement of problem}

\subsection{Secondary Problem}

Using upquote listings with language=Rexx, extendedchars=true, frame=trbl, escapechar={!}, width=20em

\begin{lstlisting}
    foo = 'Ren!\'{e}!'
    baz = `Ren!\'{e}!`
    parse upper var foo bar
\end{lstlisting}

\结束{文档}

相关内容