在我继承的一些传家宝中,控制序列被用作变量,例如:
\def\accessflavor{ats}
它用于在包含的 tex 文件(称为,即image01_ats
)等上生成后缀。
我想在条件结构中使用它,例如
\if\accessflavor ats
This text is only shown if the Flavor of Access is 'ats'.
\fi
我尝试了很多变体,包括各种括号、转义序列和宏,但都无法让它工作。大多数情况下,甚至没有出现错误消息。我发现的在线示例要么处理更具体的 IF,如\ifodd
、\ifx
等,要么处理更(看似)复杂的情况,如测试两个宏是否相同。
有人能帮我解释一下用法吗?
答案1
答案2
如果你想保持\if...\else...\fi
结构,你可以使用
\documentclass{article}
\usepackage{pdftexcmds}
\makeatletter
\newcommand\flavor[1]{%
TT\fi
\ifnum\pdf@strcmp{#1}{\accessflavor}=\z@
}
\makeatother
\begin{document}
\def\accessflavor{ats}
Shown
\if\flavor{ats}
This text is only shown if the Flavor of Access is `ats'.
\fi
\def\accessflavor{notats}
Not shown
\if\flavor{ats}
This text is only shown if the Flavor of Access is `ats'.
\fi
\end{document}
使用pdftexcmds
是为了获得引擎独立性,因此代码可以与pdftex
、luatex
和一起使用xetex
。
诀窍在于\if
扩展令牌。
请注意,这可以在其他条件中使用。