我用其他语言编写文档,然后显示代码时我需要切换到英语(切换字体):
\newcommand\code[1]{\lstinline{#1}}
\pretocmd{\code}{\begin{otherlanguage}{english}}{}{}
\apptocmd{\code}{\end{otherlanguage}}{}{}
然后,当我尝试将特殊字符放入定义的命令中时,我遇到一个问题,如下所示:
\code{HEAD^^}
因为我知道在这些命令中这样做是可以的:
\lstinline{HEAD^^} ...or... \lstinline|HEAD^^|
所以我想取消定义我的命令并使用原始命令,但这似乎不起作用:
\pretocmd{\lstlisting}{\begin{otherlanguage}{english}}{}{}
我如何使用\pretocmd
它?
答案1
好的,我没有找到我的问题的答案,但是这个解决方法有效:
\lstset{basicstyle=\selectlanguage{english}\ttfamily}
这会将我的语言(和字体)切换为英语,\lstinline
并\begin{lstlisting} ... \end{lstlisting}
在范围结束时切换回我的主要语言。所以我不再需要那些\pretocmd
或\BeforeBeginEnvironment
了。