是否可以使用 cleveref 引用子图来显示图 2(a)?

是否可以使用 cleveref 引用子图来显示图 2(a)?

我是新手,也是 LaTeX 的新手,所以如果我包含的内容太多或太少,请原谅!

我一直在使用这个subfig包,今天刚刚添加了cleveref

subfig 包标记了我的子图(a)、(b)等,我一直使用该\subref命令使其出现在文本中。

但是,在文本中使用\cref(或甚至\ref)来引用图号以及子图字母时,没有括号。我希望我的输出显示

图 2(a)

但相反

图 2a

我在网上搜索了一段时间,但我不知道该怎么做。我明白了 这里有人遇到了相反的问题,需要删除不需要的括号。除了使用 subfig 之外,我无法弄清楚我所做的与他所做的有何不同。

提前致谢!

这是我的代码(或多或少)

\documentclass{article}

\usepackage{graphicx}      % needed for including graphics e.g. EPS, PS
\usepackage{epstopdf}      % automatic conversion
\usepackage{grffile}       % allow fullstops in graphics file names
\usepackage[format=hang,singlelinecheck=0,font={sf,small},labelfont=bf]{caption, subfig}
                          % allow subfigures
\usepackage[noabbrev]{cleveref}      % reference object types automatically

\graphicspath{{figures/}}

\begin{document}

Here is some text and a figure

\begin{figure}

  \begin{minipage}[tbh]{\linewidth}
    \centering
    \captionsetup{justification=raggedright}

    \subfloat[text]{\label{fig:1a}\includegraphics{file1.eps}}\qquad
    \subfloat[text]{\label{fig:1b}\includegraphics{file2.eps}}\qquad


    \subfloat[text]{\label{fig:1c}\includegraphics{file3.eps}}\qquad
    \subfloat[text]{\label{fig:1d}\includegraphics{file4.eps}}\qquad

  \end{minipage}

  \caption{\subref{fig:1a} to \subref{fig:1b} are plotted against height, and \subref{fig:1c} to \subref{fig:1d} against pressure}
  \label{fig:1}

\end{figure}

Now I'd like to refer to the figure \ref{fig:1d}. And use cref: \cref{fig:1d}

\end{document}

答案1

是的,这是可能的。您需要设置

\captionsetup[subfigure]{subrefformat=simple,labelformat=simple,listofformat=subsimple}
\renewcommand\thesubfigure{(\alph{subfigure})}

并使用\subref*。完整的例子:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage[format=hang,singlelinecheck=0,font={sf,small},labelfont=bf]{subfig}
\usepackage{caption}
\usepackage[noabbrev]{cleveref}

\graphicspath{{figures/}}

\captionsetup[subfigure]{subrefformat=simple,labelformat=simple,listofformat=subsimple}
\renewcommand\thesubfigure{(\alph{subfigure})}

\begin{document}

\begin{figure}
\centering
\captionsetup{justification=raggedright}
\subfloat[text]{\label{fig:1a}\includegraphics{file1.eps}}\qquad
\subfloat[text]{\label{fig:1b}\includegraphics{file2.eps}}\\
\subfloat[text]{\label{fig:1c}\includegraphics{file3.eps}}\qquad
\subfloat[text]{\label{fig:1d}\includegraphics{file4.eps}}
\caption{\protect\subref{fig:1a} to \protect\subref{fig:1b} are plotted against height, and \protect\subref{fig:1c} to \protect\subref{fig:1d} against pressure}
\label{fig:1}
\end{figure}

Now I refer to the figure \subref*{fig:1d}. And use cref: \cref{fig:1d}

\end{document}

在此处输入图片描述

选项demo只是graphicx用黑色矩形替换实际图形;不是在实际文档中使用该选项。

顺便说一句,我对您的代码做了一些修改:为了防止出现错误,我\protect编辑了\subref里面的命令\caption。我还删除了 内部,minipage因为在这个特定示例中不需要使用它。我没有加载一些与此问题中讨论的问题无关的包。

相关内容