更新

更新

我想间隔关键字listings即关键字,中间有空格)。

现在,这个网站上已经回答了一些问题,像这个,官方的答案是“这不可能”。但当然,就像几乎所有事情一样,让你做到这一点的解决方法

然而,我在文档中看到过microtype正确突出显示关键字包含空格(例如,no ligaturesouter kerningouter spacing)。

就这些。如果我没说清楚,请留言。这就是问题所在:我想重现microtype文档中使用的系统


更新

正如@Robert 指出的那样,他latin1在文档中使用了编码。这似乎与 配合得很好lstlisting(除了不间断空格之外,它甚至默认接受,例如)。但我使用(不是为了任何特殊目的,á而是因为到处都推荐使用),它与 配合得不好。因为我喜欢使用不间断空格来定义带空格的关键字的想法,所以我将重写我的问题üutf8listings

有没有办法可以教utf8/listings理解关键字内部有不间断空格吗?

这是一个最小的非工作示例:

笔记:spaced和之间的空格keyword是不间断空格(如下图所示)。

\documentclass{scrartcl}

%\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenx} % With latin1 it works perfectly

\usepackage{listings}
\lstset{keywords={spaced keyword}, columns=fullflexible}

\begin{document}
\begin{lstlisting}
  notakeyword spaced keyword notakeyword
\end{lstlisting}
\end{document}

在此处输入图片描述

答案1

好吧,你们的大多数问题已经在问题本身或评论中得到解答了,所以这里只是为了满足网站的要求而进行回顾:

  • 允许关键字中使用空格的解决方法microtype.dtx是使用“不间断空格”代替普通空格,使其看起来listings像字母,但实际上它会被输出为空格;
  • 这需要加载确实包含不间断空格并将其映射到正常空间的输入编码(例如latin1)。
  • 您的示例中的问题在于您使用了utf8输入编码,尽管它满足上述要求,但与listings包不兼容。除了本身之外,我看不出有其他方法可以解决此不兼容性listings

据我所知,您只有两个选择:

  • 要么不要使用utf8编码——在你的情况下这似乎是可能的,因为你说你首先使用它的唯一原因是它在任何地方都被推荐;
  • 或者使用listingsutf8包(它理解utf8包含文件中的输入)并将所有代码列表存储在单独的文件中 - 根据您拥有的列表数量,可能会有点麻烦。

相关内容