Я хочу набрать книгу с викториной. Я хочу иметь два типа фигур:
- Текстовые рисунки: Они индексируются 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}