我想使用 IEEE 模板将论文中的章节交叉引用从罗马数字更改为阿拉伯数字。我的问题的 MWE 是
\documentclass[journal]{IEEEtran}
\begin{document}
Section~\ref{sec-test} is incorrect.
\section{My Test}\label{sec-test}
\end{document}
短语中显示的文本必须是:“第 1 部分不正确。”(阿拉伯数字)但显示的文本是“第 I 部分不正确。”(罗马数字)章节标题必须保持为“第 I 部分”(罗马数字)。
有人知道如何设置吗?
答案1
该规范非常奇怪:如果某个部分编号为“I”(罗马数字),那么交叉引用也应该遵循该方案。
无论如何,提供所需的编号方案相当容易,因为IEEEtran
将标题编号与相关计数器的表示分离:对于 的编号,\section
它使用\thesectiondis
。因此,以下工作。
\documentclass[journal]{IEEEtran}
\renewcommand\thesection{\arabic{section}}
\renewcommand\thesectiondis{\Roman{section}.}
\begin{document}
Section~\ref{sec-test} is incorrect.
\section{My Test}\label{sec-test}
\end{document}
答案2
以下最小示例以使用\refstepcounter
重新存储的方式进行更新,而不是专门在计数器步进时进行更新。s和s 都需要类似的处理,并且也已添加。\@currentlabel
\arabic
\Roman
section
\subsection
\subsubsection
\documentclass[journal]{IEEEtran}
\makeatletter
\let\oldrefstepcounter\refstepcounter
\renewcommand{\refstepcounter}[1]{%
\oldrefstepcounter{#1}% Regular \refstepcounter
\ifnum\pdfstrcmp{#1}{section}=0
% Update \@currentlabel for \section to be \arabic
\edef\@currentlabel{\arabic{section}}%
\else
\ifnum\pdfstrcmp{#1}{subsection}=0
% Update \@currentlabel for \subsection to match default + \arabic section counter
\edef\@currentlabel{\arabic{section}-\Alph{subsection}}%
\else
\ifnum\pdfstrcmp{#1}{subsubsection}=0
% Update \@currentlabel to match default for \subsubsection + \arabic for section
\edef\@currentlabel{\arabic{section}-\Alph{subsection}\arabic{subsubsection}}%
\fi
\fi
\fi
}
\makeatother
\begin{document}
Section~\ref{sec-test} is correct.
\section{My Test}\label{sec-test}
\end{document}
这尚未经过广泛的测试,因此不提供任何保证。