![是否可以使用 cleveref 引用子图来显示图 2(a)?](https://linux22.com/image/256337/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20cleveref%20%E5%BC%95%E7%94%A8%E5%AD%90%E5%9B%BE%E6%9D%A5%E6%98%BE%E7%A4%BA%E5%9B%BE%202(a)%EF%BC%9F.png)
我是新手,也是 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
因为在这个特定示例中不需要使用它。我没有加载一些与此问题中讨论的问题无关的包。