无法根据类别选项值设置切换

无法根据类别选项值设置切换

我正在尝试在传递 class 选项时切换行号man。到目前为止,我已经尝试了推荐的答案这个答案但它不起作用。LaTeX 发出Undefined Control Sequence错误提示。

这是我的代码:

\documentclass[a4paper,man]{article}
\usepackage{lineno}
\usepackage{etoolbox}
\newtoggle{manu}

\makeatletter%
\newcommand*\DetectManuscriptOption{%
  \ifsa@man \toggletrue{manu}\else \togglefalse{manu}\fi}
\makeatother%

\begin{document}
\maketitle

\DetectManuscriptOption
\iftoggle{manu}{%
  \linenumbers
}

\end{document}

结果是没有显示行号。如何修复此问题,以便在man指定选项时显示行号?

答案1

\ifsa@preview从另一个答案来看,这是一个独立的内部命令,而不是通用的钩子。

你可以做这样的事情。

\documentclass[a4paper,man]{article}
\usepackage{lineno}
\usepackage{etoolbox}
\newtoggle{manu}


\DeclareOption{man}{\toggletrue{manu}}
\ProcessOptions

\begin{document}

\iftoggle{manu}{%
  \linenumbers
}
blblb
\end{document}

但是使用起来有点不寻常,\DeclareOption而且\ProcessOptions不在包装内。我不能完全确定它没有副作用。

更标准的方法是检查\@classoptionslist

\documentclass[a4paper,man]{article}
\usepackage{lineno}
\usepackage{etoolbox,expl3}
\newtoggle{manu}
\ExplSyntaxOn
\makeatletter
\clist_set:NV  \l_tmpa_clist{ \@classoptionslist }
\clist_if_in:NnT
 { \l_tmpa_clist } { man }
 { \toggletrue{manu} }
\makeatother
\ExplSyntaxOff


\begin{document}

\iftoggle{manu}{%
  \linenumbers
}
blblb
\end{document}

相关内容