我使用朋友的模板,并尝试在我的文档中创建一个图形
\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
,但会根据需要将其从\ref
erence(使用)中删除。\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}