在下面的 MWE 中,我建立了一个“数据库”,然后稍后在正文和标题中查询它。
在我加载xifthen
包之前,它运行良好。这在 MWE 中没有用到,但我\isempty{}
在实际文件的其他地方使用了它提供的功能。
经过一些搜索,我发现了这个类似的问题(即相同的错误消息):包含 pdfpages 包时未定义控制序列但\noexpand
在(第二个)之前添加\setcounter
并没有解决问题。
错误(由于某种原因日志文件似乎为空):
除了解决问题之外,有人还能(理想情况下)提出其他修复建议吗xifthen
?
\documentclass{memoir}
\usepackage{xifthen} % PROBLEMATIC PACKAGE (ifthen works)
% Database counter
\newcounter{awcounter}
% Database creation command
\newcommand{\awset}[3]{% #1 specifies the Aw document number, #2 the field, and #3 the value
\setcounter{awcounter}{#1}%
\expandafter\def\csname aw#2\roman{awcounter}\endcsname{#3}%
}
% Build database for Aw no. 9
\awset{9}{ruler}{RULER}
% Database retrieval command
\newcommand{\awruler}[1]{% #1 specifies the Aw document number
\setcounter{awcounter}{#1}%
\expandafter\csname awruler\roman{awcounter}\endcsname%
}
\begin{document}
\mainmatter
\chapter{Chapter}
Here is some text with a retrieval: \awruler{9}.
\section{Header with retrieval: \awruler{9}}
\end{document}
答案1
您可以简化您的定义,使它们自然而然地健壮并且可以安全地在章节标题中使用:
\documentclass{memoir}
%\usepackage{xifthen} % PROBLEMATIC PACKAGE (ifthen works) (must be the authors:-)
% Database counter
%\newcounter{awcounter}
% Database creation command
\newcommand{\awset}[3]{% #1 specifies the Aw document number, #2 the field, and #3 the value
% \setcounter{awcounter}{#1}%
\expandafter\def\csname aw#2#1\endcsname{#3}%
}
% Build database for Aw no. 9
\awset{9}{ruler}{RULER}
% Database retrieval command
\newcommand{\awruler}[1]{% #1 specifies the Aw document number
\csname awruler#1\endcsname
}
\begin{document}
\mainmatter
\chapter{Chapter}
Here is some text with a retrieval: \awruler{9}.
\section{Header with retrieval: \awruler{9}}
\end{document}