使用 apxproof 包,如何使附录章节标题以单词“附录”开头?即“附录 A”。

使用 apxproof 包,如何使附录章节标题以单词“附录”开头?即“附录 A”。

我更愿意坚持使用防伪包,否则我将被迫手动迁移文档中的所有校样。如果我能以某种方式重新定义编号以添加单词“附录”,那就容易多了。有一个可以重新定义的 \appendixsectionformat 命令,但这只会改变附录部分标题中“A.”部分之后发生的事情。即“A. [在此处更改文本]”。

例如,以下代码

\documentclass[11pt]{article}
\usepackage[bibliography = common]{apxproof}
\usepackage{amsmath, amsthm}
\usepackage{hyperref}

\begin{document}

\section{Introduction}

\section{Main}

\begin{theorem} \label{theorem:label} This is an example theorem.
\end{theorem}
\begin{toappendix} % This is from the apxproof package
\begin{proof}[\hypertarget{proof:theorem:label}{Proof of Theorem \ref{theorem:label}}] 

The proof goes here.

\end{proof}
\end{toappendix}

\end{document}

将生成一个文档,其中创建“1. 简介”、“2. 主要”和“A. 第 2 节(主要)的证明”部分。定理陈述出现在第 2 节中,但其证明出现在附录 A 中。我的目标是让附录部分标题改为“附录 A. 第 2 节(主要)的证明”。

从 apxproof 文档来看,当前外观可能如下所示(将单词“Usage”替换为“Main”,将“Foobar”替换为“Theorem”):在此处输入图片描述

如果相关的话,我在 .sty 文件中找到了这个防伪

\newcommand\axp@writesection{%
    \ifx\axp@sectitle\@empty
    \else
      \edef\axp@tmp{%
        \noexpand\global\noexpand\def
        \expandonce{\csname axp@protectref@\roman{axp@seccounter}\endcsname}{%
          \noexpand\ref{axp@s\roman{axp@seccounter}}%
        }%
      }%
      \immediate\write\@auxout{\expandonce\axp@tmp}
      \immediate\write\axp@proofsfile{%
        \expandonce\axp@tmp^^J%
        \noexpand\axp@section{%
          \noexpand\appendixsectionformat{%
            \protect
            \expandonce{\csname axp@protectref@\roman{axp@seccounter}\endcsname}%
          }{\expandonce\axp@sectitle}%
        }%
      }%
      \nosectionappendix
    \fi
  }

我想知道这是可以修改的地方吗?如果可以,我该如何修改这部分代码。

答案1

以下是一个解决方法:

对于每个具有相应附录部分的部分,您可以插入以下代码。

\section{My first section with proofs}\label{first:section}

\begin{toappendix}
   \section*{Appendix A. Proofs for Section \ref{first:section}}
   % This version removes the numbering from the table of contents/document outline
\end{toappendix}

%
% Your theorems/proofs go here
%

\section{My second section with proofs}\label{second:section}

\begin{toappendix}
   \section*{Appendix B. Proofs for Section \ref{second:section}}
   \addcontentsline{toc}{section}{\protect\numberline{}Appendix B. Proofs for Section \ref{second:section} (My second section with proofs)} 
   \renewcommand{\theequation}{B.\arabic{equation}}
   % This version adds back in the numbering to the table of contents / document outline, as well as sets equation numbering
\end{toappendix}

重要的是你使用\section*否则防伪包将附加其自己的编号,例如“A. 附录 A”。但是,这意味着您将丢失目录中的编号和外观。要解决这个问题,请使用第二个示例,其中\addcontentsline允许您手动将编号重新插入目录中。此外,您还将丢失方程编号的部分。例如,在附录 A 中,您的方程标签将看起来像 (.1)、(.2),而不是 (A.1)、(A.2)。上面\renewcommand{\theequation}{B.\arabic{equation}}第二个附录部分中添加的行将为方程标签提供正确的编号 (B.1)、(B.2) 等等。

这是一个有点手动的解决方案,但每个附录只需要执行一次。例如,如果您只有一个部分有证明,则只需手动添加此代码一次。使用时可能有一种方法可以获取实际的章节标题文本,\addcontentsline但我不知道有这样的解决方案。但最重要的是,这可以让您保持定理/证明在文本中的位置不变。

相关内容