如何删除 \ref 中的“figure”

如何删除 \ref 中的“figure”

我使用朋友的模板,并尝试在我的文档中创建一个图形

\begin{figure} 
\caption{abc}
\includegraphic{aaaaa.jpg}
\label{abc}
\end{figure}
\ref{abc}

我有“图 I.1 abc”作为图形标题(I 是章节编号,1 是图形编号)。

问题是:当我引用该图时,我只有“图 I.1”而不是“I.1”。我只想要“I.1”,而不想要图中的单词“图” \ref。我怎样才能删除图中的“图”字样\ref

我查看了文档类并找到了此代码

\renewcommand \thefigure
 {\ifnum \c@chapter>\z@ \figurename\ \thechapter.\fi \@arabic\c@figure}
\def\fnum@figure{\nobreakspace\thefigure}

文档类使用nohyperref包。

答案1

如果没有任何改变,您请求的实际上是默认行为。因此,我的建议是恢复到默认定义:

在此处输入图片描述

\documentclass{report}

\renewcommand{\thechapter}{\Roman{chapter}}

\makeatletter
% Default definitions for \thefigure and \fnum@figure
\renewcommand\thefigure
 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
\renewcommand{\fnum@figure}{\figurename\nobreakspace\thefigure}
\makeatother

\begin{document}

\setcounter{chapter}{6}

This is a reference to Figure~\ref{test}.

\begin{figure}
  \caption{A figure caption.}\label{test}
\end{figure}

\end{document}

\thefigure请注意 和 的默认定义与您的定义之间的区别\fnum@figure\figurename从 中删除\thefigure并放入 中\fnum@figure。这样可以有效地保持 中的格式不变\caption,但会根据需要将其从\reference(使用)中删除。\thefigure

答案2

值得注意的是,如果没有额外的修改(大概是在未命名的文档类中),图表列表是不可读的。

此修复需要在每个图形之间 \fixlabel添加\caption和。\label

\documentclass{report}
\makeatletter
\renewcommand{\thechapter}{\Roman{chapter}}

\renewcommand \thefigure
 {\ifnum \c@chapter>\z@ \figurename\ \thechapter.\fi \@arabic\c@figure}
\def\fnum@figure{\nobreakspace\thefigure}

\newcommand{\fixlabel}{\def\@currentlabel{\thechapter.\arabic{figure}}}
\makeatother

\begin{document}
\setcounter{chapter}{1}
\begin{figure}
\caption{Some caption}\fixlabel\label{test}
\end{figure}
This is a reference to \ref{test}.
\end{document}

答案3

您可以提供一个宏\Customfigurename{<Argument1>}{<Argument2>},其中来自 的扩展的短语“Figure”在作为 提供的文本中\thefigure与 进行交换。也可以包含类似 的内容,并且可以为空,从而抑制短语“Figure”。<Argument1><Argument2><Argument2>\ref{abc}<Argument1>

当使用 hyperref 包时,不仅抑制短语,而且提供提供另一个短语的可能性是有意义的,而另一个短语是 hyperref 包从引用创建的超链接的一部分。

\documentclass{book}
%\usepackage{hyperref}

\makeatletter
\newcommand\Figurenamecustom{}%
\DeclareRobustCommand\Figurenamecustom{\@firstofone}%
\newcommand\Customfigurename{}%
\DeclareRobustCommand\Customfigurename[2]{%
  \begingroup
  \DeclareRobustCommand\Figurenamecustom[1]{#1}%
  #2%
  \endgroup
}%
\renewcommand\thefigure{%
  \ifnum \c@chapter>\z@ \Figurenamecustom{\figurename\ }\thechapter.\fi 
  \@arabic\c@figure
}%
\def\fnum@figure{\nobreakspace\thefigure}
\makeatother

\begin{document}

\chapter{A Chapter}

\begin{figure}
\caption{abc}
%\includegraphic{aaaaa.jpg}
\rule{2cm}{2cm}%
\label{abc}
\end{figure}

\noindent \verb|\ref{abc}| yields:
\ref{abc}

\noindent \verb|\Customfigurename{}{\ref{abc}}| yields:
\Customfigurename{}{\ref{abc}}

\noindent \verb|\Customfigurename{funny figure~}{\ref{abc}}| yields:
\Customfigurename{funny figure~}{\ref{abc}}

\noindent \verb|\thefigure| yields:
\thefigure

\noindent \verb|\Customfigurename{funny figure~}{\thefigure}| yields:
\Customfigurename{funny figure~}{\thefigure}

\noindent \verb|\Customfigurename{}{\thefigure}| yields:
\Customfigurename{}{\thefigure}

\end{document}

在此处输入图片描述

相关内容