我有一段pgfplots
想要放入lstlisting
环境中的代码:
\pgfplotsset{
every axis x label/.append style = {
font = \small
},
every axis y label/.append style = {
font = \small,
rotate = -90,
xshift = 0.5em
}
}
我如何才能让listings
包相信像 这样的字符串every axis x label
必须被视为标识符?我不喜欢将关键字的角色分配给单个子字符串every
、axis
、x
、的想法label
。
答案1
根据listings
包裹 文档这显然是不可能的。引自第 21 页(重点突出):
另一个问题:默认情况下,某些字符不允许放在关键字中,例如
-
,,,等等。参考指南通过引入更多键来解决此问题,这些键可让您适当调整标准字符表。但请:
注意.
关键字内禁止使用空格字符。
对于小型实例,目前没有可行的替代方案listings
。但是,对于较大或更通用的实例,pgf
包裹 文档(使用codeexample
环境)可能会有一些帮助。
答案2
你可以劫持moredelim
钥匙,按照你的意愿行事listings
……有点像。见下文。
请注意,这种方法远非完美。例如,使用下面的代码,任何以 开头every axis x
和以 结尾的字符序列label
都会像真正的关键字一样突出显示。但是,你也许可以好好利用它。
\documentclass{article}
\setlength\parindent{0pt}
\usepackage{xcolor}
\usepackage{listings}
\lstdefinestyle{mytikzPGFstyle}{
language = TeX,
basicstyle = \ttfamily,
keywordstyle = \color{blue},
frame = single,
moredelim = [s][keywordstyle]{every\ axis\ x\ }{label},
moredelim = [s][keywordstyle]{every\ axis\ y\ }{label},
}
\begin{document}
Success:
\begin{lstlisting}[style=mytikzPGFstyle]
\pgfplotsset{
every axis x label/.append style = {
font = \small
},
every axis y label/.append style = {
font = \small,
rotate = -90,
xshift = 0.5em
}
\draw node {every, axis, label, x};
}
\end{lstlisting}
Failure:
\begin{lstlisting}[style=mytikzPGFstyle]
every axis x foo label/.append style = {
\end{lstlisting}
\end{document}
答案3
您还可以使用“文学编程”实验功能。
例如,我更喜欢用列表来排版伪代码,因为我发现输入纯文本比输入像algorithmicx
et al. 这样的专用包的特殊语法更方便。
对于作业,我想清楚地说明“获取的值”。我通过将以下内容添加到我的伪语言定义 ( \lstdefinelanguage
) 来实现这一点:
literate=*{:=}{{\hbox{\textbf{takes the value of}}}}{18}
这也适用于带有(法语)重音字母的关键词,这些关键词也不会被识别为普通关键词。