我看见仅在一幅图中更改图形标题名称,而不是全部如何仅更改一个图形的标题名称,但我也需要更改自动引用名称。
使用
\begin{figure}
\renewcommand\figurename{Example}
....
\caption{This is an example.}
\end{figure}
图形标题更改为“示例”,但在自动引用中它显示为“图形”。
我怎样才能仅覆盖一个图形的figurename和autorefname?
谢谢
答案1
\autoref
使用锚点名称中的计数器名称来获取参考术语。
有多种解决方法。
图示:
\begin{figure}
\renewcommand*{\figurename}{Example}
...
\caption{This is an example.}
\label{exp}
\end{figure}
解决方法:
\ref
代替\autoref
:Example~\ref{exp}
\ref
而不是\autoref
在链接中包含“示例”:\hyperref[exp]{Example~\ref*{exp}}
重新定义
\p@figure
以包含“示例”作为参考的前缀:\begin{figure} \makeatletter \renewcommand*{\p@figure}{Example~} \makeatother ... % see above \end{figure} \ref{exp}% -> Example <number>
新柜台
example
:% preamble \newcounter{example} \def\exampleautorefname{Example} \begin{figure} \setcounter{example}{\value{figure}} \refstepcounter{example} \label{exp} ... \caption{This is an example.} \end{figure} \autoref{exp}
答案2
我建议你使用软件包的功能cleveref
来实现排版目标。你应该
cleveref
使用选项nameinlink
、noabbrev
和加载包capitalize
;这将使 的输出\cref
看起来像autoref
。 (注意:cleveref
必须在 之后加载hyperref
。)example
为指令提供可选参数\label
:\label[example]{fig:xyz}
当然,继续发出指令\renewcommand\figurename{Example}
里面环境figure
,按照之前的解决方案。
无需进行其他更改。
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink,noabbrev,capitalize]{cleveref}
\begin{document}
\setcounter{figure}{7} % just for this case
\begin{figure}
\renewcommand\figurename{Example} % as per the earlier solution
\centering
ABC
\caption{This is an example.}
\label[example]{fig:xyz} % note the optional argument: "example"
\end{figure}
A cross-reference to \cref{fig:xyz}.
\end{document}
答案3
您可能会考虑定义一种新的浮点类型。
仅供参考,\floatname
定义了\fname@example
所使用的\caption
。
\documentclass{article}
\usepackage{float}% for \newfloat
\usepackage{hyperref}
\newfloat{example}{htbp}{lox}
\floatname{example}{Example}
\newcommand{\examplename}{Example}
\begin{document}
\begin{example}
\caption{This is an example.}\label{test}
\end{example}
\autoref{test}
\end{document}