独立更改目录和交叉引用中的数字格式

独立更改目录和交叉引用中的数字格式

我正在尝试使用该类自定义目录中章节、子章节等的编号格式book。基本上,问题是更改任何样式都会\renewcommand改变所有地方的样式,我想独立于交叉引用的样式更改目录的样式。

我知道这个titlesec包,但它只会改变实际标题的样式,而不会改变交叉引用。

更准确地说,我的 MWE 如下。

\documentclass[oneside,12pt]{book}

\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand{\thesection}{\thechapter.\arabic{section}}
\renewcommand{\thesubsection}{\thechapter.\arabic{section}.\alph{subsection}}
\renewcommand{\theparagraph}{\roman{chapter}.\arabic{paragraph}.}

\setcounter{secnumdepth}{4}

\begin{document}

\tableofcontents

\chapter{First Chapter}
\section{Section one}\label{sec:one}
\subsection{Subsection A}\label{subsec:one.a}

\subsection{Subsection B}

\section{Section two}
Same as Section~\ref{sec:one}.

\section{Section three}
\subsection{Subsection A}
Same as Subsection~\ref{subsec:one.a}.

\end{document}

它生成目录

以及书的正文

现在,我对正文的外观很满意,但我想删除目录中章节和小节编号前面的罗马字母“I”,而不是交叉引用中的罗马字母“I”。

我将非常感谢您的所有建议。

答案1

当写出目录条目时,LaTeX 设置\label\@gobble。因此你可以对其进行测试:

\documentclass[oneside,12pt]{book}

\renewcommand{\thechapter}{\Roman{chapter}}
\makeatletter
\renewcommand{\thesection}{\ifx\label\@gobble\else\thechapter.\fi\arabic{section}}
\renewcommand{\thesubsection}{\ifx\label\@gobble\else\thechapter.\fi\arabic{section}.\alph{subsection}}
\renewcommand{\theparagraph}{\roman{chapter}.\arabic{paragraph}.}

\setcounter{secnumdepth}{4}

\begin{document}

\tableofcontents

\chapter{First Chapter}
\section{Section one}\label{sec:one}
\subsection{Subsection A}\label{subsec:one.a}

\subsection{Subsection B}

\section{Section two}
Same as Section~\ref{sec:one}.

\section{Section three}
\subsection{Subsection A}
Same as Subsection~\ref{subsec:one.a}.

\end{document}

相关内容