我正在尝试在传递 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}