如何在 latex 中的 hyperref 中实现具有适当超链接的两个图形计数器?

如何在 latex 中的 hyperref 中实现具有适当超链接的两个图形计数器?

我想排版一本包含测验的书。我想要两种类型的图表:

  • 文本图:这些是索引 i、ii(罗马)
  • 测验图形:这些图形与测验相关,并且应具有适当的编号:1、2、3......n

我希望测验图形彼此相邻,而不是彼此叠放,实现此目的的唯一方法是使用子浮点数。原则上,使用自定义计数器可以实现此目的,这可以提供正确的引用。但是,hyperref 包似乎无法理解这些自定义计数器。

我如何获取超链接以链接到正确的图表?

我的实现如下:

\documentclass{book}
\usepackage[english]{babel}
\usepackage[]{graphicx}
\usepackage{subfig}
\usepackage{hyperref}

%Counters
\newcounter{textcounter}
\setcounter{textcounter}{0}
\newcounter{quizcounter}
\setcounter{quizcounter}{0}

\begin{document}

\chapter*{Chaptername}

\section*{Introduction}
This is our normal text, where we want to refer to accompanying figures like figure \ref{textfigure1}.

\begin{figure}
\addtocounter{textcounter}{1}
\renewcommand{\thesubfigure}{\roman{textcounter}}
\renewcommand{\thefigure}{}
\subfloat[Example textfigure]{\includegraphics[width=0.5\columnwidth]{example_ti.jpg}\label{textfigure1}}
\end{figure}


\section*{Table}
\begin{enumerate}
\item Question one, asking questions about quizfigure \ref{quizfigure1}.
\item Question two, asking questions about quizfigure \ref{quizfigure2} , with more info in textfigure \ref{textfigure1}.
\end{enumerate}

\section*{quizfigures}
\begin{figure}
\renewcommand{\thesubfigure}{\arabic{quizcounter}}
\renewcommand{\thefigure}{}
\addtocounter{quizcounter}{1}
\subfloat[Example quizfigure 1]{\includegraphics[width=0.5\columnwidth]{example_q1.jpg}\label{quizfigure1}}
\end{figure}

\newpage

\begin{figure}
\renewcommand{\thesubfigure}{\arabic{quizcounter}}
\renewcommand{\thefigure}{}
\addtocounter{quizcounter}{1}
\subfloat[Example quizfigure 2]{\includegraphics[width=0.5\columnwidth]{example_q2.jpg}\label{quizfigure2}}
\addtocounter{quizcounter}{1}
\subfloat[Example quizfigure 3]{\includegraphics[width=0.5\columnwidth]{example_q3.jpg}\label{quizfigure3}}
\end{figure}


\end{document}

答案1

您不必使用自定义计数器,可以使用subcaption包的内置计数器。这是对已弃用的包的替代subfig

您可以使用

\captionsetup{labelformat=empty,labelsep=none}
\renewcommand{\thefigure}{}

抑制图形本身的标签,并将子图形命名为图形。

要使用内置罗马数字计数器,您可以使用

\renewcommand{\thesubfigure}{\roman{subfigure}}

为了在单独的图形环境之间继续子图的标签计数,您应该仅caption{}在最后一个图形中使用。

\documentclass{book}
\usepackage[english]{babel}
\usepackage[]{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{hyperref}


\captionsetup{labelformat=empty,labelsep=none}
\renewcommand{\thefigure}{}

\begin{document}

\chapter*{Chaptername}

\section*{Introduction}
This is our normal text, where we want to refer to accompanying figures like figure \ref{textfigure1}.

\begin{figure}
\renewcommand{\thesubfigure}{\roman{subfigure}}

\begin{subfigure}{6cm}
\caption{Example textfigure}
\label{textfigure1}
\end{subfigure}

\caption{}
\label{test}
\end{figure}


\section*{Table}
\begin{enumerate}
\item Question one, asking questions about quizfigure \ref{quizfigure1}.
\item Question two, asking questions about quizfigure \ref{quizfigure2} and \ref{quizfigure3} , with more info in textfigure \ref{textfigure1}.
\end{enumerate}

\section*{quizfigures}
\begin{figure}
\begin{subfigure}{3cm}
\caption{Example quizfigure 1}
\label{quizfigure1}
\end{subfigure}
\end{figure}

\newpage

\begin{figure}
\begin{subfigure}{3cm}
\caption{Example quizfigure 2}
\label{quizfigure2}
\end{subfigure}
\begin{subfigure}{3cm}
\caption{Example quizfigure 3}
\label{quizfigure3}
\end{subfigure}
\caption{}
\end{figure}

\end{document}

相关内容