我想在目录中将附录章节标题显示为“附录 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}
除不需要的点之外,这还有效:
章节标题相同:
任何帮助都值得感激:)
答案1
您对 will 的定义\appendixmore
也适用于 KOMA-Script 版本 3.34。
如果自 2021/06/01 版本起的 LaTeX 与 KOMA-Script 类一起使用
\appendix
包含一个名为 的 LaTeX 钩子<class>/appendix
,其中<class>
是 KOMA-Script 类的名称。- 此钩子在 之前执行
\appendixmore
。 - 选项
appendixprefix
(和headings=onelineappendix
和headings=twolineappendix
)不再通过 实现\appendixmore
,而是通过 LaTeX 钩子 实现<class>/appendix
。
因此,用户定义\appendixmore
也将使用 KOMA-Script 版本 3.34 执行。此外,\newcommand\appendixmore{...}
即使您使用选项之一appendixprefix
,也可以使用headings=onelineappendix
或headings=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}
但可能最好使用命令的通用钩子\appendix
:cmd/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=noenddot
scrreprt 选项来防止目录中出现尾随点。与我最初的计划相反,这会删除整个文档编号方案中的所有尾随点,但我对此很满意。
\documentclass[numbers=noenddot]{scrreprt}
其次,正如施塔达德\chapterformat
,可以通过在附录之前覆盖来更改章节标题的格式。(另请参阅KOMA-Script scrbook:如何删除部分后的句号)
\renewcommand*{\chapterformat}{\appendixname~\thechapter~~}
如果您希望以通常的方式显示以下部分,请记得将命令改回其原始形式。