我正在使用listings
Java 语言的包(与所有类似 C 的语言一样,Java 语言使用括号作为块分隔符)。我打算将其\lstinline{...}
用作排版霍尔三元组的命令的第二个参数。
虽然\lstinline|while (...) { ... } |
正确排版了括号,但如果\lstinline|...|
将其作为参数传递给任何宏,它们将被删除。例如:
\documentclass{article}
\usepackage{listings}
\lstset{language=Java}
\newcommand{\hoare}[3]{\{ $#1$ \} #2 \{ $#3$ \} }
\newcommand{\true}{\mathbf{true}}
\newcommand{\false}{\mathbf{false}}
\begin{document}
\hoare{\true}{\lstinline|while(true) { }|}{\false}
\end{document}
我怎样才能重新戴上牙套?
答案1
您可以引用括号以使其可见:
\hoare{\true}{\lstinline|while(true) \{ \}|}{\false}
直接调用时,\lstinline|while(true) \{ \}|
也会打印反斜杠,但不会打印在宏参数中,因为外部宏已经处理了引用的括号。