![hyperref、capt-of 和 @makecaption 重新定义的交互](https://linux22.com/image/253689/hyperref%E3%80%81capt-of%20%E5%92%8C%20%40makecaption%20%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%E7%9A%84%E4%BA%A4%E4%BA%92.png)
可能重复:
不使用标题包删除图形标题中的冒号
这是一个非常难的问题,我在下面发布了最少的例子。
- 因为我不想让我的数字浮动,所以我使用中心环境和捕获包裹。
- 我已经调整了@makecaption当图形名称为空时,只显示图形名称(没有冒号)。
- 我也用超链接包裹。
工作时三者一起,我得到了一堆“额外\其他。“错误。你能找到问题吗?也许我重新定义了@makecaption很嚴重嗎?
问候。
\documentclass{article}
\usepackage{capt-of}
\usepackage{hyperref}
\makeatletter
% tweaked article.cls @makecaption: no caption text no ":"
\newcommand*{\captionlabeldelim}{}
\long\def\@makecaption#1#2{%
\ifx #2\ignorespaces
\renewcommand*{\captionlabeldelim}{}
\else
\renewcommand*{\captionlabeldelim}{:\ }
\fi
\vskip\abovecaptionskip
\sbox\@tempboxa{#1\captionlabeldelim #2}%
\ifdim \wd\@tempboxa >\hsize
#1\captionlabeldelim #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\makeatother
\begin{document}
\begin{center}
\includegraphics[clip]{bla.eps}
\captionof{figure}{x}
\end{center}%
\begin{center}
\includegraphics[clip]{bla.eps}
\captionof{figure}{}
\end{center}%
\end{document}
答案1
正如在回答类似但不完全相同的问题\caption
,如果(或)的参数\caption-of
为空,则可以通过重新定义 来实现删除冒号的目的\@makecaption
。 MWE 的以下修改形式显示了如何做到这一点。
\documentclass{article}
\usepackage{capt-of}
\usepackage[demo]{graphicx} % [demo] needed just for this MWE
\usepackage[colorlinks]{hyperref}
\makeatletter
\long\def\@makecaption#1#2{% % #2 is argument of \caption and \captionof command
\vskip\abovecaptionskip
\sbox\@tempboxa{#2} % place #2 into a scratch TeX box
\ifdim \wd\@tempboxa = 0pt % test if scratch box has zero width
\centering #1 \par % if yes, typeset only #1 (the float's name and number)
\else % else, proceed with default definition
\sbox\@tempboxa{#1: #2}%
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\fi
\vskip\belowcaptionskip}
\makeatother
\begin{document}
\begin{center}
\includegraphics[clip]{bla.eps}
\captionof{figure}{xyz} \label{fig:bla1}
\end{center}%
\begin{center}
\includegraphics[clip]{bla.eps}
\captionof{figure}{} \label{fig:bla2}
\end{center}%
And here are cross-references to \autoref{fig:bla1} and \autoref{fig:bla2}.
\end{document}