我正在写一篇包含一些内容的 Latex 文章类型化的 Lua代码片段。它们看起来像常规 Lua 代码,但有一些额外的类型注释。例如,如下所示:
function newlist(): {integer}
local xs = {}
for i = 1, 10 do
xs[i] = 42
end
return xs
end
有没有办法让我以: {integer}
粗体排版该类型注释,或者至少只是{integer}
以粗体排版?如果有办法做到这一点而无需{}
在第二行中突出显示表构造函数,则可以获得加分。
到目前为止,我所能做的最好的就是将其定义为一个附加关键字,但我认为当其排版方式与围绕它的花括号不同时,integer
最终结果看起来很奇怪。integer
\documentclass{article}
\usepackage{listings}
\lstdefinelanguage{TypedLua}[5.3]{Lua}{
morekeywords={integer,float}
}
\begin{document}
\lstset{language=TypedLua}
\begin{lstlisting}
function newlist(): {integer}
local xs = {}
for i = 1, 10 do
xs[i] = 42
end
return xs
end
\end{lstlisting}
\end{document}
答案1
有多种方法可以实现此目的,具体取决于您的需要。
简单的解决方案:
morekeywords={\{integer\}}
尽管您需要强制
listings
将花括号视为“字母”才能使其起作用:alsoletter={\{,\}}
也许更好:
moredelim=[s][\bfseries]{:\ \{}{\}}
例子:
\documentclass{article}
\usepackage{listings}
\lstdefinelanguage{TypedLua1}[5.3]{Lua}{
morekeywords={\{integer\},float},
alsoletter={\{,\}}
}
\lstdefinelanguage{TypedLua2}[5.3]{Lua}{
moredelim=[s][\bfseries]{:\ \{}{\}}
}
\begin{document}
\begin{lstlisting}[language=TypedLua1]
function newlist(): {integer}
local xs = {}
for i = 1, 10 do
xs[i] = 42
end
return xs
end
\end{lstlisting}
\begin{lstlisting}[language=TypedLua2]
function newlist(): {integer}
local xs = {}
for i = 1, 10 do
xs[i] = 42
end
return xs
end
\end{lstlisting}
\end{document}
输出: