包括 xifthen 包会破坏标头中的宏扩展

包括 xifthen 包会破坏标头中的宏扩展

在下面的 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}

相关内容