相同的文学定义导致不同的行为

相同的文学定义导致不同的行为

以下两个例子的代码定义相同literate,文字A!用于通过颜色和大小来强调某些代码,文字!A用于恢复颜色。

pt在第一个例子中,我想要强调代码,而且它确实可以正常工作。

在第二个例子中,我想要强调代码\expandafter\@firstoftwo,但是红色延伸到末尾,并且\huge表现得很奇怪。

为什么?我的代码有什么问题?

\documentclass{article}
\usepackage{listings,xcolor}
\begin{document}
Exp 1:
\begin{lstlisting}[literate={A!}{{\huge\color{red}\bfseries}}0{!A}{{\normalcolor}}0]
\ifdim \stwo A!pt!A >\sone pt $<$\else $\geq$\fi
\end{lstlisting}

Exp 2:
\begin{lstlisting}[literate={A!}{{\huge\color{red}\bfseries}}0{!A}{{\normalcolor}}0]
\makeatletter
\newcommand\myConditionTF[1]{%
  #1% or something like \ifx..., \if\empty..., and so on.
  A!\expandafter\@firstoftwo!A
  \else
  \expandafter\@secondoftwo
  \fi
}
\makeatother
\end{lstlisting}
\end{document}

相关内容