我尝试使用caption
withhypcap=true
以便交叉引用超链接指向图形而不是图形标题。但是,我使用的multicol
环境带有自定义图形环境,以便浮动元素可以很好地放置在双列文档中。
以下是 MWE:
\documentclass[10pt, letterpaper]{article}
\usepackage{multicol}
\usepackage[small,bf,hypcap=true]{caption}
\usepackage[demo]{graphicx}
\newenvironment{Figure}
{\par\medskip\noindent\minipage{\linewidth}}
{\endminipage\par\medskip}
\usepackage[unicode, bookmarks, colorlinks, breaklinks]{hyperref}
\usepackage[all]{hypcap} %I don't know if this line is needed
\begin{document}
\begin{multicols}{2}[\section{section1}]
Figure~\ref{fig:fig1}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\captionof{figure}{caption}
\label{fig:fig1}
\end{Figure}
\end{multicols}
\end{document}
我正在使用 XeLaTeX,但我认为这不会改变任何东西。
答案1
您应该使用float
包来使用H
位置说明符:
\documentclass{article}
\usepackage{multicol}
\usepackage[small,bf,hypcap=true]{caption}
\usepackage[demo]{graphicx}
\usepackage{float}
\usepackage[unicode]{hyperref}
\begin{document}
\begin{multicols}{2}[\section{section1}]
Figure~\ref{fig:fig1}
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{apple.jpg}
\caption{caption}
\label{fig:fig1}
\end{figure}
\end{multicols}
\end{document}
答案2
您的超链接无法正常工作有两个原因:
当使用
hypcap
包时caption
,包将不再放置超链接锚点,因为hypcap
包负责此任务。所以不要在这里使用它,否则根本不会放置任何超链接锚点,至少包不会放置caption
。请参阅包手册中的第 6.6 节“hypcap”caption
。(作为可以在此处使用的替代方案\capstart
,请参阅hypcap
包手册了解详细信息。)使用包时,
\captionof
仅caption
知道标题的位置,但不知道图形实际从哪里开始,即应该将超链接锚点放在哪里。因此,请使用\captionsetup{type=figure}
来完成此任务,并避免使用\captionof
。请参阅包手册中的第 6.5 节“hyperref”caption
,尤其是段落“\captionof{...}{...} vs. \captionsetup{type=...}+\caption{...}”
您的示例文档,已修改:
\documentclass[10pt, letterpaper]{article}
\usepackage{multicol}
\usepackage[small,bf,hypcap=true]{caption}
\usepackage[demo]{graphicx}
\newenvironment{Figure}
{\par\medskip\noindent\minipage{\linewidth}%
\captionsetup{type=figure}}% \captionsetup{type=figure} added
{\endminipage\par\medskip}
\usepackage[unicode, bookmarks, colorlinks, breaklinks]{hyperref}
%\usepackage[all]{hypcap} % No, this line is not needed
\begin{document}
\begin{multicols}{2}[\section{section1}]
Figure~\ref{fig:fig1}
\begin{Figure}
\centering
\includegraphics[width=\textwidth]{apple.jpg}
\caption{caption} % \captionof replaced by \caption
\label{fig:fig1}
\end{Figure}
\end{multicols}
\end{document}