e27a89b3239f97f35afb1d2335ee0f7b.zip
我的疑惑主要集中在这里,求大神指教啊!
20积分是我的全部家当了,恳请各位dalao救救萌新!
\newcommand{\foo}[1]{this is #1.\newcommand{\fooo}[1]{that is ##1.}}在使用\foo的同时创建一个\fooo命令,由于是内层参数,使用##1.
以此类推
\if@twocolumn <true >else<false >\fi这是一个判断语句,依名称应该是判断是否为双栏,如果条件满足,执行true, 否则 false.第一个问题上面有人回答过了, \long\def 是定义一个可分段的命令, 如
\documentclass{article}
\def\abc#1{{\bfseries #1}}
\long\def\aabbcc#1{{\itshape #1}}
\begin{document}
\abc{bfseries}
% 不加 \long 的 \def 内不允许分段
% \abc{bfseries
% bfseries}
\aabbcc{itshape
itshape}
\end{document}

在 LaTeX 中的 \newcommand 默认是允许换段的, 而 \newcommand* 则是定义不允许换段的命令

然后关于下一个判断, 你可以用 \newif\ifabc 来定义一个名为 \ifabc 的判断, 同时生成两个命令: \abctrue 和 \abcfalse, 它的初始值是 \abcfalse

当你想让 \ifabc 的值变为 True 的时候, 可以使用 \abctrue, 它的定义是 \let\ifabc\iftrue.
并且当你使用 \ifabc <true> \else <false> \fi 的时候, 会使用当前 \ifabc 的真假性来进行判断, 比如:
\documentclass{article}
\newif\ifabc
\def\testabc{\ifabc true \else false \fi}
\begin{document}
\testabc
\abctrue
\testabc
\end{document}返回为
false true
在使用
\foo的同时创建一个\fooo命令,由于是内层参数,使用##1.以此类推
\if@twocolumn <true>else<false >\fi这是一个判断语句,依名称应该是判断是否为双栏,如果条件满足,执行true, 否则false.谢谢,但我还有两个对应的疑问。1.##表示是内层的参数我理解,但是图中的@makefntext##1我没有找到它的上一层在哪里,我很疑惑;2.if@twocolumn是等价于if @twocolum = True嘛?
@u58488
@makefntext##1前面有一个\long\def再外层有\def,\def类似与\newcommand都是构建命令的.texbook吧