如何使用 \autoref 引用子图

如何使用 \autoref 引用子图

假设我有一个图,它实际上有两个子图(但合成一个文件),有没有办法让我让 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}

相关内容