我想排版一本包含测验的书。我想要两种类型的图表:
- 文本图:这些是索引 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}