我想在工作中引用章节标题,但当我使用\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}
另一种解决方法是使用\seclabel
and\subseclabel
代替\label
for \section
and \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}