从 KOMA-Script 3.34 中的附录章节编号中删除点

从 KOMA-Script 3.34 中的附录章节编号中删除点

我想在目录中将附录章节标题显示为“附录 A 附录名称”,并在文本中显示为“A 附录名称”。

到目前为止,我得到了“A”和“附录”的正确顺序,\usepackage[titletoc]{appendix}但是在目录中打印了一个不需要的点(即“附录 A.附录名称”。

以前,可以使用\appendixmore-技巧然而,从 KOMA-Script 3.34 开始,该功能似乎已被废弃(参见变更日志)。不幸的是,我对 LaTEX 了解不够多,无法利用变更日志中提供的信息找到新的解决方案。

我当前的代码:

\documentclass{scrreprt}
\usepackage[titletoc]{appendix}

% appendixmore-trick (not working anymore)
\newcommand*{\appendixmore}{%
  \renewcommand*{\sectionformat}{\appendixname~\thesection\autodot\enskip}
  \renewcommand*{\sectionmarkformat}{\appendixname~\thesection\autodot\enskip}
}

\begin{document}

\tableofcontents

\chapter{Lorem ipsum}
\section{Dolor sit amet}

\appendix

\begin{appendices}
  \chapter{Consectetur adipiscing elit}
  \chapter{Mauris euismod}
\end{appendices}
\end{document}

除不需要的点之外,这还有效:

目录中的“A”后面有多余的点

章节标题相同:

标题“A”后面带有多余的点

任何帮助都值得感激:)

答案1

您对 will 的定义\appendixmore也适用于 KOMA-Script 版本 3.34。

如果自 2021/06/01 版本起的 LaTeX 与 KOMA-Script 类一起使用

3.34 版更新日志

  • \appendix包含一个名为 的 LaTeX 钩子<class>/appendix,其中<class>是 KOMA-Script 类的名称。
  • 此钩子在 之前执行\appendixmore
  • 选项appendixprefix(和headings=onelineappendixheadings=twolineappendix)不再通过 实现\appendixmore,而是通过 LaTeX 钩子 实现<class>/appendix

因此,用户定义\appendixmore也将使用 KOMA-Script 版本 3.34 执行。此外,\newcommand\appendixmore{...}即使您使用选项之一appendixprefix,也可以使用headings=onelineappendixheadings=twolineappendix

例子:

\documentclass
  [appendixprefix=false]
  {scrreprt}

\newcommand*{\appendixmore}{\renewcommand*{\chapterformat}{This is \appendixname:\enskip}}
\begin{document}
\chapter{Foo}
\appendix
\chapter{Bar}
\KOMAScriptVersion
\end{document}

适用于最新的 KOMA-Script 预发布版本 3.34 和自 2021/06/01 版本起的 LaTeX。但使用 KOMA-Script 版本 3.33 或更早版本时,您会收到错误消息“命令\appendixmore已定义。”,因为旧版 KOMA-Script 已定义此宏来实现选项appendixprefix等。


以下示例可与 KOMA-Script 版本 3.33 或版本 3.34 一起使用。它仅从附录章节编号中删除点,并在目录中添加前缀,而无需额外的包:

\documentclass{scrreprt}

\newcommand*{\appendixmore}{
  \renewcommand*{\chapterformat}{\thechapter\enskip}%
  \renewcommand*{\chaptermarkformat}{\thechapter\enskip}%
  \addtocontents{toc}{\protect\appendixtocentry}%
}

\newcommand*{\appendixtocentry}{%
  \DeclareTOCStyleEntry[
    entrynumberformat=\appendixprefixfixintoc,
    dynnumwidth
  ]{default}{chapter}%
}
\newcommand{\appendixprefixfixintoc}[1]{%
  \def\autodot{}%
  \appendixname~#1%
}

\begin{document}
\tableofcontents

\KOMAScriptVersion

\chapter{Lorem ipsum}
\section{Dolor sit amet}

\appendix
\chapter{Consectetur adipiscing elit, Consectetur adipiscing elit, Consectetur adipiscing elit}
\chapter{Mauris euismod}
\end{document}

运行三次即可获得

在此处输入图片描述

也可以使用 KOMA-Script 3.34 版本提供的新钩子:

\documentclass{scrreprt}[2021-04-30]

\AddToHook{scrreprt/appendix}{%
  \AddToHook{cmd/chapterformat/before}{\def\autodot{}}%
  \AddToHook{cmd/chaptermarkformat/before}{\def\autodot{}}%
  \addtocontents{toc}{\appendixtocentry}%
}

\NewDocumentCommand{\appendixtocentry}{}{%
  \DeclareTOCStyleEntry[
    entrynumberformat=\appendixprefixfixintoc,
    dynnumwidth
  ]{default}{chapter}%
}
\NewDocumentCommand{\appendixprefixfixintoc}{m}{%
  \def\autodot{}%
  \appendixname~#1%
}

\begin{document}
\tableofcontents

\KOMAScriptVersion

\chapter{Lorem ipsum}
\section{Dolor sit amet}

\appendix
\chapter{Consectetur adipiscing elit, Consectetur adipiscing elit, Consectetur adipiscing elit}
\chapter{Mauris euismod}
\end{document}

但可能最好使用命令的通用钩子\appendixcmd/appendix/after。它在命令主体的最后执行\appendix。注意\appendixmore- 如果已定义 - 将在此钩子之前执行。

\documentclass{scrreprt}[2021-04-30]

\AddToHook{cmd/appendix/after}{%
  \AddToHook{cmd/chapterformat/before}{\def\autodot{}}%
  \AddToHook{cmd/chaptermarkformat/before}{\def\autodot{}}%
  \addtocontents{toc}{\appendixtocentry}%
}

\NewDocumentCommand{\appendixtocentry}{}{%
  \DeclareTOCStyleEntry[
    entrynumberformat=\appendixprefixfixintoc,
    dynnumwidth
  ]{default}{chapter}%
}
\NewDocumentCommand{\appendixprefixfixintoc}{m}{%
  \def\autodot{}%
  \appendixname~#1%
}

\begin{document}
\tableofcontents

\KOMAScriptVersion

\chapter{Lorem ipsum}
\section{Dolor sit amet}

\appendix
\chapter{Consectetur adipiscing elit, Consectetur adipiscing elit, Consectetur adipiscing elit}
\chapter{Mauris euismod}
\end{document}

结果和上面一样。

答案2

我找到了该问题的答案:

使用numbers=noenddotscrreprt 选项来防止目录中出现尾随点。与我最初的计划相反,这会删除整个文档编号方案中的所有尾随点,但我对此很满意。

\documentclass[numbers=noenddot]{scrreprt}

其次,正如施塔达德\chapterformat,可以通过在附录之前覆盖来更改章节标题的格式。(另请参阅KOMA-Script scrbook:如何删除部分后的句号

\renewcommand*{\chapterformat}{\appendixname~\thechapter~~}

如果您希望以通常的方式显示以下部分,请记得将命令改回其原始形式。

相关内容