通过定义renewcommand{figureautorefname}{Fig.},使用autoref{fig1},可以生成Fig.1(即Fig.也可以加上链接)。如果想实现Figs.1 and 2,该如何处理,也不能用renewcommand{figureautorefname}{Figs.}, 这样会产生Figs.1. 谢谢?
可以使用 cleveref
宏包。
主要的配置命令如下:
% \usepackage{hyperref}
% \usepackage{cleveref} % 注意顺序
% 修改 autorefname,也方便在后面使用
\def\figureautorefname{Fig.}
\def\figureautorefnames{Figs.}
\crefformat{figure}{#2\figureautorefname~#1#3}
\crefmultiformat{figure}
{#2\figureautorefnames~#1#3}
{ and~#2#1#3}
{, #2#1#3}
{ and~#2#1#3}
\crefrangeformat{figure}{#3\figureautorefnames~#1#4 to~#5#2#6}
详细用法见说明文档。
完整的例子:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\usepackage{cleveref}
\def\figureautorefname{Fig.}
\def\figureautorefnames{Figs.}
\crefformat{figure}{#2\figureautorefname~#1#3}
\crefmultiformat{figure}
{#2\figureautorefnames~#1#3}
{ and~#2#1#3}
{, #2#1#3}
{ and~#2#1#3}
\crefrangeformat{figure}{#3\figureautorefnames~#1#4 to~#5#2#6}
\begin{document}
Hello, \LaTeXe.
\begin{figure}[h]
\caption{FIGURE ONE}\label{fig:1}
\centering\fbox{FIGURE ONE}
\end{figure}
\begin{figure}[h]
\caption{FIGURE TWO}\label{fig:2}
\centering\fbox{FIGURE TWO}
\end{figure}
\begin{figure}[h]
\caption{FIGURE THREE}\label{fig:3}
\centering\fbox{FIGURE THREE}
\end{figure}
reference: \ref{fig:1} \& \ref{fig:2} \& \ref{fig:3}
autoref: \autoref{fig:1} \& \autoref{fig:2} \& \autoref{fig:3}
cleveref: \cref{fig:1} \& \cref{fig:2} \& \cref{fig:3}
multi cref: \cref{fig:1,fig:2} \& \cref{fig:1,fig:2,fig:3} \& \cref{fig:1,,fig:2,,fig:3}
---------------------------
\crefmultiformat{figure}
{\figureautorefnames~#2#1#3}
{ and~#2#1#3}
{, #2#1#3}
{ and~#2#1#3}
\crefrangeformat{figure}{\figureautorefnames~#3#1#4 to~#5#2#6}
multi cref: \cref{fig:1,fig:2} \& \cref{fig:1,fig:2,fig:3} \& \cref{fig:1,,fig:2,,fig:3}
\end{document}
首先感谢您的回复。您的回答中,使用autoref,可以实现Fig.1、Fig.2的形式,并未实现我所说的Figs.1 and 2, 即Fig加上s表示复数形式,后面的2可以用ref{fig2}实现,但不知道1前面的Fig.,如何实现单复数的变化。谢谢。
想了想,我想实现的Figs.1 and 2,可能实现不了,毕竟,图1和图2是两个图,如果想把“Figs.”也用autoref加上链接的话,系统应该不知道到底要链接到哪个图上。
@u4328 已更新。
@u4328 可以的。
@u4328 "people can write xml parsers or regex engines in tex so nothing's impossible (and this is likely easier than that)"----David Carlisle