将 fancyvrb 与 xeCJK 一起使用时出现额外的空格

将 fancyvrb 与 xeCJK 一起使用时出现额外的空格

我正在尝试在verbatim环境中排版包含 CJK 表意文字的文本。因为我想verbatim稍微缩进我的文本,所以我使用fancyvrb包。下面是 MWE:

\documentclass{article}
\usepackage{parskip}

\usepackage{fancyvrb}
\DefineVerbatimEnvironment{verbatim}{Verbatim}{xleftmargin=2em}

\usepackage{xeCJK}
\setCJKmonofont{Noto Sans CJK JP}

\begin{document}
Code like this\ldots
\begin{verbatim}
auto x = "林";
\end{verbatim}
\end{document}

但是我发现输出中有一个多余的空格字符,位于开头的双引号和表意文字之间。

截图

它似乎是一个空格字符,而不仅仅是过度的字距调整,因为它从 PDF 中复制并粘贴为空格字符。有人知道如何摆脱它吗?如果相关的话,我使用的是 XeLaTeX 版本 3.14159265-2.6-0.99996。

在 LaTeX 的内置verbatim环境中不会发生这种情况,但我不知道如何改变它的边距。如果我可以用其他方式 fancyvrb设置环境的左边距,我不会坚持使用。verbatim

答案1

我遇到了和你一样的问题。这是因为 xeCJK 在英文和 CJK 字符之间插入了粘连(默认情况下是空格)。

解决方案 1:

\xeCJKsetup{xCJKecglue={}}

请注意,这是一个全局设置,它会影响整个文档,而不仅仅是逐字环境。

解决方案 2:

将 verbatim env 包装在里面{\CJKsetecglue{} ...your normal code... },因此它仅在本地生效。

{
    \CJKsetecglue{}
    \begin{verbatim}
    auto x = "林";
    \end{verbatim}
}

相关内容