\autoref{some-label-goes-here}
包中的命令hyperref
将根据引用浮点数的类型打印“图 X”或“表 Y”等。
如何根据标签打印“图形”/“表格”(不带编号)?类似于\floattype{some-label-goes-here}
。
这很有用,例如,
The \floattype{some-figure-label} shows the expansion rules
其扩展名为“该图显示了扩展规则。”
答案1
cleveref
通过使用该包及其\namecref
宏,可以轻松实现您的目标。
如果需要将figure
和中的首字母大写table
,请使用cleveref
选项加载包capitalise
。(capitalize
也可以。)
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink,noabbrev]{cleveref}
\begin{document}
\begin{figure}[h]\caption{Hello}\label{fig:h}\end{figure}
\begin{table}[h]\caption{Goodbye}\label{tab:g}\end{table}
\Cref{fig:h} shows that \dots
The \namecref{fig:h} shows that \dots
\Cref{tab:g} show that \dots
The \namecref{tab:g} demonstrates that \dots
\end{document}
答案2
下面将引用类型作为第五个未使用的元素插入到用 every 编写的组件中\label
:
\documentclass{article}
\usepackage{hyperref,etoolbox}
\makeatletter
\def\strip@@period#1.#2\@nil{#1}
\def\@@currentHref{\expandafter\strip@@period\@currentHref\@nil}
\newcommand{\@@fifthoffive}[5]{%
\@ifundefined{type@name@#5}
{#5}
{\csname type@name@#5\endcsname}%
}
\newcommand{\settyperef}[2]{\@namedef{type@name@#1}{#2}}
\newcommand{\typeref}[1]{%
\HyRef@StarSetRef{#1}\@@fifthoffive
}%
\AtBeginDocument{
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\label}{{\@currentHref}{}}{{\@currentHref}{\@@currentHref}}{}{}
}
\makeatother
\begin{document}
\begin{figure}
\caption{A figure caption}
\label{fig:figure}
\end{figure}
See \autoref{fig:figure}. It is a \typeref{fig:figure}.
\settyperef{figure}{FiGuRe}
See \autoref{fig:figure}. It is a \typeref{fig:figure}.
\end{document}
\settyperef{<type>}{<output>}
允许您格式化输出内容。