文档类编写中,如何用条件语句,实现多个option对应运行一个命令?

发布于 2024-09-01 11:20:58

在自定义文档类编写中,已知单个option对应实现单个命令的语句如下:

\if@classname@option
  %为真时运行的命令
\else
  %为假时运行的命令
\fi

那么,怎么编写条件语句,使得有限多个自定义option的添加对应运行同一命令呢?类似于用到“同或(or)”逻辑关系。

<若\if@classname@optionI, \if@classname@optionII, ..., 其中一者为真>
  % 运行命令1
\else
  % 运行命令2
\fi

拓展:如果是“与(and)”(这么多个option激活才能运行某一命令)、“非(or)”(不是某一option激活就能运行某一命令)的逻辑关系,那该如何实现呢?

查看更多

关注者
0
被浏览
522
鱼香肉丝没有鱼先生
鱼香肉丝没有鱼先生.
\begin{filecontents*}[overwrite]{myclass.cls}
\ProvidesClass{myclass}

\LoadClass{article}

\RequirePackage[margin = 2cm]{geometry}

\newif\if@classname@option@i 
\newif\if@classname@option@ii 

\DeclareOption{option-i}{
  \@classname@option@itrue
}

\DeclareOption{option-ii}{
  \@classname@option@iitrue
}

\ProcessOptions*\relax


\if@classname@option@i%
  \def\cmd{Y}%
\else%
  \if@classname@option@ii%
    \def\cmd{Y}%
  \else
    \def\cmd{N}%
  \fi
\fi


\end{filecontents*}

\documentclass{myclass}
% \documentclass[option-i]{myclass}
% \documentclass[option-ii]{myclass}

\begin{document}
\cmd
\end{document}

扩展问题,可以看看 expl3, 会方便很多.

2 个回答
Sagittarius Rover
Sagittarius Rover 2024-09-01
我要成为TikZ糕手/(ㄒoㄒ)/~~

如果不在文档类中的话,也许可以尝试用ifthen宏包提供的多条件判断功能

%\usepackage{ifthen}
\def\A{123}
\def\B{1234}
\def\C{1234}
\def\D{12}

\ifthenelse{\(\equal{5}{6}\) \or \(\equal{123}{\A} \and \equal{\D}{1234}\) }{Yes!}{No!}

image.png

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览