我想间隔关键字(listings
即关键字,中间有空格)。
现在,这个网站上已经回答了一些问题,像这个,官方的答案是“这不可能”。但当然,就像几乎所有事情一样,让你做到这一点的解决方法。
然而,我在文档中看到过microtype
正确突出显示关键字做包含空格(例如,no ligatures
,outer kerning
,outer spacing
)。
就这些。如果我没说清楚,请留言。这就是问题所在:我想重现microtype
文档中使用的系统。
更新
正如@Robert 指出的那样,他latin1
在文档中使用了编码。这似乎与 配合得很好lstlisting
(除了不间断空格之外,它甚至默认接受,例如)。但我使用(不是为了任何特殊目的,á
而是因为到处都推荐使用),它与 配合得不好。因为我喜欢使用不间断空格来定义带空格的关键字的想法,所以我将重写我的问题ü
utf8
listings
有没有办法可以教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
包含文件中的输入)并将所有代码列表存储在单独的文件中 - 根据您拥有的列表数量,可能会有点麻烦。