引用子项但不将子项作为项

引用子项但不将子项作为项

我想要做的是引用subcaptions/ subfloats,但没有子元素。

从头开始就可以。

通常你会label向每个想要引用的元素添加一个。例如:

\begin{figure} [h]
  \subfloat[]{
     \includegraphics[width=0.28\textwidth]
     {example-image-a}\label{f1a}}
  \subfloat[text 2]{
     \includegraphics[width=0.28\textwidth]
     {example-image-b}\label{f1b}}
  \subfloat[]{
     \includegraphics[width=0.28\textwidth]
     {example-image-c}\label{f1c}}

  \captionof{figure}[]{long text 1}
  \label{f1all}
\end{figure}

您可以像这样引用:

See fig~\ref{f1a}, fig~\ref{f1b} and fig~\ref{f1c}.

工作正常并显示类似这样的内容(如果\usepackage{hyperref}使用的话):

在此处输入图片描述


但是我遇到过这种情况,图像文件本身包含不同的“子”图像(由于各种原因无法拆分),但图像上已经有文本,如 、(a)(b)(c)我想以与上述示例类似的方式引用它。例如,使用此代码:

\begin{figure} [h]
  \subfloat{
     \includegraphics[width=0.5\textwidth]
     {example-image}}

  \captionof{figure}[]{long text 2}
  \label{f2}
\end{figure}

以及这样的引用:

See fig~\ref{f2}a, fig~\ref{f2}b and fig~\ref{f2}c.

当然,这些字母没有包含在链接框中(因为它们不在标签中\ref),如下所示:

在此处输入图片描述


我现在的问题是:有没有办法将字母添加到链接文本中,这样就没有人会看到差异了?(当然链接目标应该位于图像中的任何位置[就像正常行为一样],并且任何字母都不应该有所不同。)


这是我的完整工作MWE:

\documentclass{report}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{hyperref}



\begin{document}

\begin{figure} [h]
  \subfloat[]{
     \includegraphics[width=0.28\textwidth]
     {example-image-a}\label{f1a}}
  \subfloat[text 2]{
     \includegraphics[width=0.28\textwidth]
     {example-image-b}\label{f1b}}
  \subfloat[]{
     \includegraphics[width=0.28\textwidth]
     {example-image-c}\label{f1c}}

  \captionof{figure}[]{long text 1}
  \label{f1all}
\end{figure}

Referencing in the text like: See fig~\ref{f1a}, fig~\ref{f1b} and fig~\ref{f1c}.



\begin{figure} [h]
  \subfloat{
     \includegraphics[width=0.5\textwidth]
     {example-image}}

  \captionof{figure}[]{long text 2}
  \label{f2}
\end{figure}

Referencing in the text like: See fig~\ref{f2}a, fig~\ref{f2}b and fig~\ref{f2}c.


\end{document}

答案1

使用我的第二种方法和 fakecounter,你可以用这个来创建你需要的东西:

\documentclass{report}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{hyperref}

\newcounter{fakecounter}[figure]
\renewcommand*{\thefakecounter}{\thefigure\alph{fakecounter}}
\newcommand*\sublabel[1]{\refstepcounter{fakecounter}\label{#1}}


\begin{document}
\begin{figure} [h]
  \subfloat{
     \includegraphics[width=0.5\textwidth]
     {example-image}}

  \caption[]{long text 2}
  \label{f2}
  \sublabel{f2a}
  \sublabel{f2b}
  \sublabel{f2c}
\end{figure}

Also see fig~\ref{f2a}, fig~\ref{f2b} and fig~\ref{f2c}.

\begin{figure} [h]
  \subfloat{
     \includegraphics[width=0.5\textwidth]
     {example-image}}

  \caption[]{long text 2}
  \label{f3}
  \sublabel{f3a}
  \sublabel{f3b}
  \sublabel{f3c}
\end{figure}

Also see fig~\ref{f3a}, fig~\ref{f3b} and fig~\ref{f3c}.
\end{document}

相关内容