假设我有一个图,它实际上有两个子图(但合成一个文件),有没有办法让我让 autoref 输出“图 1A”和“图 1B”?
我希望有某种方法可以将额外内容传递到调用中,\autoref{}
用作后缀(例如\autoref{fig:foo,A}
->“图 1A”)。
我正在考虑的一个选择是:\hyperref[fig:foo]{Figure 1A}
但理想情况下,我希望编号是自动的(以便我以后可以灵活地更改事物的顺序)。
\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\section{Introduction}
The birds will appear in figure number \autoref{fig:foo}.
\begin{figure}[h!]
\includegraphics{example-image-a}
\caption{bar}
\label{fig:foo}
\end{figure}
\end{document}
答案1
这有点复杂,但我想你并不经常需要这样做。
\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\section{Introduction}
The birds will appear in figure number \hyperref[fig:foo]{\autoref*{fig:foo}A}.
\begin{figure}[h!]
\includegraphics{example-image-a}
\caption{bar}
\label{fig:foo}
\end{figure}
\end{document}
答案2
这\autoref
超链接包已经被编程为知道在创建与名为 的计数器相关联的对象的交叉引用时该做什么subfigure
。
您还需要选择一个有助于创建子图的包。其中一个包是副标题包,它提供了称为subfigure
和的环境subtable
。
如果需要创建多个交叉引用subfigure
,我建议你考虑使用聪明人包及其\cref
用户级宏。该\cref
命令可以配置为\autoref
在给定单个参数时执行的操作。但是,与 不同\autoref
,\cref
可以轻松接受多个参数。
\documentclass{article}
\usepackage{graphicx} % for '\includegraphics' command
\usepackage{subcaption} % for 'subfigure' environment
\renewcommand\thesubfigure{\Alph{subfigure}} % per the OP's stated preference
\usepackage[colorlinks,allcolors=blue]{hyperref} % for '\autoref' macro
\usepackage[nameinlink,capitalize,noabbrev]{cleveref} % for '\cref' macro
\begin{document}
The birds will appear in \autoref{fig:barA} and in \autoref{fig:barB}.
The birds will appear in \cref{fig:barA,fig:barB}.
\begin{figure}[h!]
\captionsetup{skip=0.333\baselineskip} % default: 1\baselineskip
\begin{subfigure}{0.475\textwidth}
\includegraphics[width=\linewidth]{example-image-a}
\caption{barA}
\label{fig:barA}
\end{subfigure}%
\hspace{\fill}
\begin{subfigure}{0.475\textwidth}
\includegraphics[width=\linewidth]{example-image-b}
\caption{barB}
\label{fig:barB}
\end{subfigure}
\caption{A figure with two subfigures}
\label{fig:foo}.
\end{figure}
\end{document}
答案3
请注意,每个标题的宽度/间距由子图环境设置。
\autoref
从 hyperref 锚点名称中获取计数器名称,然后运行该名称\autorefname
(第 26 页 hyperref)。事实证明,subcaption 包对 caption 和 subcaptions 使用相同的锚点,因此它会打印Figure
而不是Subfigure
。数字来自,与(参见第 13 页 subcaption)\@currentlabel
相同。\ref
\labelformat
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{hyperref}
\renewcommand{\thesubfigure}{\Alph{subfigure}}% use upper case letters
\begin{document}
\section{Introduction}
The birds will appear in figure number \autoref{fig:foo} and \autoref{fig:bar}.
\begin{figure}[h]
\includegraphics[width=\columnwidth]{example-image-a}% need width to align captions
\begin{subfigure}{0.5\linewidth}
\caption{foo}
\label{fig:foo}
\end{subfigure}\hfill
\begin{subfigure}{0.5\linewidth}
\caption{bar}
\label{fig:bar}
\end{subfigure}
\caption{main title}% or \phantomcaption
\end{figure}
\end{document}