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}