罗马字部分和阿拉伯字部分交叉引用

罗马字部分和阿拉伯字部分交叉引用

我想使用 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\Romansection\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}

这尚未经过广泛的测试,因此不提供任何保证。

相关内容