20 在阅读.cls文件时遇到不理解的语句,求大神解释

发布于 2021-12-17 17:04:49

e27a89b3239f97f35afb1d2335ee0f7b.zip
我的疑惑主要集中在这里,求大神指教啊!
1639731243.jpg

  1. def@makefntext##1
    为什么这里会有两个##?能否解释一下longdef这段命令起到什么样一个功能?
  2. if@twocolumn
    是什么意思,能否解释一下if@twocolumn .... else ... fi 这几段是进行怎样的一个判断?

20积分是我的全部家当了,恳请各位dalao救救萌新!

查看更多

关注者
1
被浏览
1.6k
2 个回答
鱼香肉丝没有鱼先生
鱼香肉丝没有鱼先生.
  1. 1表示第二层参数,例如

\newcommand{\foo}[1]{this is #1.\newcommand{\fooo}[1]{that is ##1.}}

在使用\foo的同时创建一个\fooo命令,由于是内层参数,使用##1.
以此类推

  1. \if@twocolumn <true >else<false >\fi这是一个判断语句,依名称应该是判断是否为双栏,如果条件满足,执行true, 否则 false.
乙醇
乙醇 2021-12-19
这家伙很懒,什么也没写!

第一个问题上面有人回答过了, \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}

image.png

The TeXbook

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

source2e

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

source2e

当你想让 \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

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览