Как реализовать два счетчика цифр с правильными гиперссылками в hyperref в latex?

Как реализовать два счетчика цифр с правильными гиперссылками в hyperref в latex?

Я хочу набрать книгу с викториной. Я хочу иметь два типа фигур:

  • Текстовые рисунки: Они индексируются 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}

Связанный контент