重新定义 \figref,使其可以接受可选参数

重新定义 \figref,使其可以接受可选参数

我有一些包含子图的图要包含在我的文档中。我不使用子图环境,而是只生成一个 EPS,其中每个部分都标记为 A、B 等。(编辑希望以这种方式上传子图)。

我想在我的博士论文中使用这些图并使用命令引用它们\figref。问题是,如果我写类似的东西 ( \figref{fig:label} A),那么“图 1”部分是蓝色的,包含指向该图的链接,但“A”是黑色的。我觉得这有点丑,所以我想重新定义,\figref以便它可以接受类似这样的参数\figref{fig:label}{A},并且引用和链接(我在我的文档中使用包 hyperref)显示为蓝色。有什么办法吗?

答案1

我的subcaption包提供了一个名为\phantomcaption(resp. \phantomsubcaption) 的命令,用于支持带有内置子标题的子图的标签和引用。使用此方法无需重新定义\figref,它应该可以与您现有的定义一起使用。

一个例子:

\documentclass{article}
\usepackage{subcaption}
\usepackage[demo]{graphicx}

% Define \figref as abbreviation of "Figure~\ref{...}"
\newcommand\figref{Figure~\ref}

% Use uppercase letters for sub-figures
\renewcommand\thesubfigure{\Alph{subfigure}}

\begin{document}

\begin{figure}
  \centering
  \begin{subfigure}{0.4\textwidth}
    \includegraphics{A}
    \phantomcaption
    \label{fig:test:A}
  \end{subfigure}
  \qquad
  \begin{subfigure}{0.4\textwidth}
    \includegraphics{B}
    \phantomcaption
    \label{fig:test:B}
  \end{subfigure}
  \caption{A demo figure}
\end{figure}

\begin{figure}
  \begin{subfigure}{\linewidth}%
    \centering
    \includegraphics{AandBandC}
    \phantomcaption
    \label{fig:test2:A}%
    \phantomcaption
    \label{fig:test2:B}%
    \phantomcaption
    \label{fig:test2:C}%
  \end{subfigure}
  \caption{A demo figure}
  \label{fig:test2}
\end{figure}

See \figref{fig:test:A} and \figref{fig:test2:C}...

\end{document}

有关详细信息,请参阅subcaption包文档。

(请注意,这需要该subcaption软件包的版本 1.1(2011/08/17)。)

答案2

您可以将命令定义为:

\newcommand{\figref}[2][{}]{\hyperref[#2]{\figurename~\ref{#2}#1}} 

将其用作\figref{label}仅包含一个图的图形,并将其用作\figref[A]{label}想要引用图 1A 的图形。

希望这可以帮助!

相关内容