在标题中使用章节和小节编号时,如何自定义其样式?

在标题中使用章节和小节编号时,如何自定义其样式?

TL;DR - 为什么我在最后一行出现错误

\usepackage{xstring}
\renewcommand*{\thesection}{\alph{section})}
\renewcommand*{\thesubsection}{\StrGobbleRight{\thesection}{1}.\roman{subsection})}

xstring我是 Latex 的新手(使用 Overleaf),并尝试使用和自动更新章节和小节标签StrGobbleRight{}{}

具体来说,我希望用节的(字母)标签来标记小节,后跟一个括号,后跟小节的(罗马)标签。

例如:

第一章

ai) 首字母 ...
a.ix) 姓氏

b)第 2 章

bi) 首字母 ...
b.ix) 姓氏

ETC。

我还希望这可以在目录中自动更新。

对于这些部分,我设法让它工作使用

\renewcommand*{\thesection}{\alph{section})}

对于小节,当我使用时,\StrGobbleRight{\thesection}{1}我会正确获取该节的字母标签。但是,当我尝试在上下文中使用它时

\renewcommand*{\thesubsection}{\StrGobbleRight{\thesection}{1}.\roman{subsection})}

出现一大堆错误。我相信错误与移除括号有关。

如果能提供任何关于如何纠正这个问题的帮助,以及对我的理解存在缺陷的地方的解释,那就太好了!

答案1

(在 OP 阐明了节级和小节级标题的交叉引用应该如何呈现之后,我修改并简化了这个答案。)

正如 David Carlisle 在评论中指出的那样,您的格式化目标不需要该包。以下解决方案不使用 ,xstring而是仅使用。\StrGobbleRight{\thesection}{1}\alph{section}

在此处输入图片描述

\documentclass{article}

\renewcommand\thesection{\alph{section})}
\renewcommand\thesubsection{\alph{section}.\roman{subsection})}

\begin{document}
\tableofcontents

\bigskip

\section{Chapter 1}
\subsection{Initial \dots}
\addtocounter{subsection}{7}
\subsection{Last \dots} \label{sec:a.ix}

\section{Chapter 2}
\subsection{Initial \dots} \label{sec:b.i}
\addtocounter{subsection}{7}
\subsection{Last \dots}

As argued in subsections \ref{sec:a.ix} and \ref{sec:b.i}, \dots
\end{document}

相关内容