\ref 与以下文本重叠

\ref 与以下文本重叠

我想在工作中引用章节标题,但当我使用\ref{label}章节编号时,它会与以下单词重叠。我正在使用ifmbe文档类。(textcomp如果重要的话,正在使用包)

...Section \ref{sec:relatedWork} outlines...
\section{Related Work}\label{sec:relatedWork}

编辑:

我还应该指出,这个问题在使用\ref数字时不会发生。章节标题使用罗马数字,而数字使用阿拉伯数字。

答案1

\thesection给出的和的定义\thesubsection完全是错误的。

\ref你可以得到相同的结果,而不会出现问题

\documentclass[nouppercase]{ifmbe}

\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\Alph{subsection}}
\makeatletter
\def\@seccntformat#1{\csname the#1\endcsname.\ }
\makeatother

\begin{document}
Section \ref{sec:relatedWork} outlines...

\section{Related Work}\label{sec:relatedWork}

\end{document}

在此处输入图片描述

如果您希望在节号后面加上句号\ref,请执行

\renewcommand{\thesection}{\Roman{section}.}
\renewcommand{\thesubsection}{\Alph{subsection}.}
\makeatletter
\def\@seccntformat#1{\csname the#1\endcsname\ }
\makeatother

答案2

原因是\thesection和的定义错误\thesubsection,导致数字末尾出现负空格:

\renewcommand{\thesection}{\Roman{section}.\hspace{-3mm}}
\renewcommand{\thesubsection}{\Alph{subsection}.\hspace{-2mm}}

以下解决方法使用\secref,它会在本地删除空间:

\documentclass{ifmbe}
\newcommand*{\secref}[1]{%
  \begingroup
    \renewcommand*{\hspace}[1]{}%
    \ref{#1}%
  \endgroup
}
\begin{document}
Section \secref{sec:relatedWork} outlines
\section{Related Work}\label{sec:relatedWork}
\end{document}

结果

另一种解决方法是使用\seclabeland\subseclabel代替\labelfor \sectionand \subsection。这样就可以轻松定义计数器外观而无需使用点,并且 a 的引用\subsection可以包含部分编号:

\documentclass{ifmbe}

\makeatletter
\newcommand*{\seclabel}[1]{%
  \@bsphack  
  \begingroup
    \edef\@currentlabel{\Roman{section}}%
    \label{#1}%
  \endgroup
  \@esphack
}
\newcommand*{\subseclabel}[1]{%
  \@bsphack  
  \begingroup
    \edef\@currentlabel{\Roman{section}.\Alph{subsection}}%
    \label{#1}%
  \endgroup
  \@esphack
}
\makeatother

\begin{document}
Section \ref{sec:relatedWork} and \ref{sec:sub} outlines
\section{Related Work}\seclabel{sec:relatedWork}
\subsection{Subsection}\subseclabel{sec:sub}
\end{document}

结果

相关内容