我使用 xelatex 和 KOMA 脚本类 scrreprt。现在我必须将我的论文附录编号为章节 A1.1、A1.2 和小节 A1.1.1 等。目录中的章节条目(包括章节附录)应设置为大写。
因此,我重新定义了 \thesection 和 \thesubsection。hyperref 选项 hypertexnames=false 确保链接正确链接。但现在我希望目录条目 A1.1,... 与正常章节和子章节编号对齐,例如:
1.1 Section
1.1.1 Subsection
A1.1 Appendix Section
A1.1.1 Appendix Subsection
使用 fontspec 设置主字体 Verdana 还会减小 A1.1 与相应 TOC 条目之间的间距:
这可能是由于未将 A 定义为附录前缀造成的。
此外,我尝试使用以下方法将目录章节条目变为大写:
\addtokomafont{chapterentry}{\MakeUppercase}
但是这会为 .toc 文件生成错误消息。不知何故,这对于文本本身的章节标题来说却很有效,而且 \nameref chapter 不是按预期的大写。
希望有人能帮我将附录条目对齐,并将章节条目改为大写。先谢谢大家了!
这是我的 MWE:
% !TEX TS-program = xelatex
\documentclass[
a4paper,
10pt,
]{scrreprt}
\usepackage[no-math]{fontspec}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage{footnotebackref}
\usepackage[showframe]{geometry}
\setmainfont[BoldFont={Verdanab.ttf},ItalicFont={Verdanai.ttf}]{Verdana.ttf} % <<< Reduces spacing in toc entries
\setlength{\parindent}{0pt}
% Chapter title
\setkomafont{chapter}{\Large\normalfont\bfseries\MakeUppercase}
\RedeclareSectionCommand[beforeskip=0pt]{chapter}
% TOC entry chapter level
\RedeclareSectionCommand[
toclinefill=\TOCLineLeaderFill
]{chapter}
\setkomafont{chapterentry}{\normalfont\bfseries}
%\addtokomafont{chapterentry}{\MakeUppercase} % <<< This does not work
% Section title
\setkomafont{section}{\large\normalfont\bfseries}
% Subsection/Subsubsection title
\setkomafont{subsection}{\normalsize\normalfont\bfseries}
\hypersetup{
hypertexnames=false,
colorlinks=true,
citecolor=black,
linkcolor=black,
urlcolor=black,
bookmarksnumbered,
bookmarksdepth=2,
bookmarksopenlevel=1,
bookmarksopen=true,
}
\begin{document}
\tableofcontents
\chapter{Main Body}
Reference to appedix \ref{app: First Appendix} or sub-appendix \ref{app: First Sub-Appendix}
\section{Section}
\subsection{Subsetion}
\chapter{Appendices}
\renewcommand{\thesection}{A\arabic{chapter}.\arabic{section}}
\renewcommand{\thesubsection}{A\arabic{chapter}.\arabic{section}.\arabic{subsection}}
\renewcommand{\thesubsubsection}{A\arabic{chapter}.\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}
\setcounter{chapter}{1}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\section{First Appendix} \label{app: First Appendix}
\subsection{Fist Sub-Appendix} \label{app: First Sub-Appendix}
\end{document}
答案1
我只需使用 \appendix 命令,并通过 tocentry 命令设置大写,添加一个带有参数的复杂命令(如\MakeUppercase
字体命令)必然会在这个地方中断,因为参数包含链接命令。
\documentclass[
a4paper,
10pt,
]{scrreprt}
\usepackage[no-math]{fontspec}
\PassOptionsToPackage{no-math}{fontspec}
\usepackage{footnotebackref,etoolbox}
\usepackage[showframe]{geometry}
\setmainfont[BoldFont={Verdanab.ttf},ItalicFont={Verdanai.ttf}]{Verdana.ttf} % <<< Reduces spacing in toc entries
\setlength{\parindent}{0pt}
% Chapter title
\setkomafont{chapter}{\Large\normalfont\bfseries\MakeUppercase}
\RedeclareSectionCommand[beforeskip=0pt]{chapter}
% TOC entry chapter level
\RedeclareSectionCommand[
toclinefill=\TOCLineLeaderFill
]{chapter}
\setkomafont{chapterentry}{\normalfont\bfseries}
\renewcommand{\addchaptertocentry}[2]{%
\IfArgIsEmpty{#1}
{\addcontentsline{toc}{chapter}{\protect\nonumberline\texorpdfstring{\protect\MakeUppercase{#2}}{#2}}}
{\addcontentsline{toc}{chapter}{\protect\numberline{#1}\texorpdfstring{\protect\MakeUppercase{#2}}{#2}}}%
}%
% Section title
\setkomafont{section}{\large\normalfont\bfseries}
% Subsection/Subsubsection title
\setkomafont{subsection}{\normalsize\normalfont\bfseries}
\hypersetup{
hypertexnames=false,
colorlinks=true,
citecolor=black,
linkcolor=black,
urlcolor=black,
bookmarksnumbered,
bookmarksdepth=2,
bookmarksopenlevel=1,
bookmarksopen=true,
}
\begin{document}
\tableofcontents
\chapter{Main Body}
Reference to appedix \ref{app: First Appendix} or sub-appendix \ref{app: First Sub-Appendix}
\section{Section}
\subsection{Subsetion}
\appendix
\chapter{Appendices}
\section{First Appendix} \label{app: First Appendix}
\subsection{Fist Sub-Appendix} \label{app: First Sub-Appendix}
\end{document}