First
:
\def\cs#1#2{00\fi\def\csa{#1}\def\csb{#2}
\ifx\csa\csb}
\if\cs{...}{...}
Second
:
\def\cs#1#2{\fi\def\csa{#1}\def\csb{#2}
\ifx\csa\csb}
\if\cs{...}{...}
我的意思是00
在这个结构中扮演什么角色?
这是我的示例:
\documentclass[12pt]{book}
\usepackage{xcolor}
\begin{document}
\def\a{\fcolorbox{red}{green!20}{true}}
\def\b{\fcolorbox{green}{red!20}{false}}
\def\MadadString#1#2{00\fi\def\sh{#1}\def\sha{#2}
\ifx\sh\sha}
\if\MadadString{Shajarian}{Shajarian}
\a\else\b\fi\qquad
\if\MadadString{tt}{\makeindex}
\a\else\b\fi\qquad
\def\b{\fcolorbox{green}{red!20}{false}}
\def\MadadString#1#2{\fi\def\sh{#1}\def\sha{#2}
\ifx\sh\sha}
\if\MadadString{Shajarian}{Shajarian}
\a\else\b\fi\qquad
\if\MadadString{tt}{\makeindex}
\a\else\b\fi
\end{document}
答案1
没什么区别。当\if
不跳过时,在第一种情况下,你会得到
\if00\fi\def\csa{...}\def\csb{...}\ifx\csa\csb
在第二种情况下,你会得到
\if\fi\def\csa{...}\def\csb{...}\ifx\csa\csb
并且\if\fi
内部被 替换\if\relax\relax\fi
。让 TeX 添加这些标记是一种不太好的编程风格,因此00
应该使用第一种方法(使用 )。
请注意,00
可以是任意一对不可扩展的标记,无论相等或不相等。