我在使用 emacs 的 AUCTeX + RefTeX 模式时遇到了麻烦。当在文件的前言中加载\cref
时,pdf 将图片的引用显示为“第 1.3 节”,而不是“图 1a”(见下面的快照)。\usepackage{cleveref}
main.tex
我已阅读过以下两篇讨论:链接-1,链接-2,并且我已将以下几行添加到我的.emacs
文件中,但没有注意到 emacs 的行为有任何变化。
;;emacs RefTeX
(setq reftex-ref-macro-prompt nil) ;skips picking the reference style
;code taken from SX "Cleveref: AUCTeX and RefTeX set-up"
(eval-after-load
"latex"
'(TeX-add-style-hook
"cleveref"
(lambda ()
(if (boundp 'reftex-ref-style-alist)
(add-to-list
'reftex-ref-style-alist
'("Cleveref" "cleveref"
(("\\cref" ?c) ("\\Cref" ?C) ("\\cpageref" ?d) ("\\Cpageref" ?D)))))
(reftex-ref-style-activate "Cleveref")
(TeX-add-symbols
'("cref" TeX-arg-ref)
'("Cref" TeX-arg-ref)
'("cpageref" TeX-arg-ref)
'("Cpageref" TeX-arg-ref)))))
有人可以帮帮我吗?
=MWE=
\documentclass[10pt, a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel}
\usepackage{amsmath,amssymb}
\usepackage{mathtools}
\usepackage{esdiff}
\usepackage[version=4]{mhchem}
\usepackage[a4paper]{geometry}
\usepackage{fullpage}
\usepackage{lipsum}
% FONT CHOICE
% Palatino for serif & math, Helvetica for ss, Courier for tt
\usepackage{mathpazo} % math & rm
\linespread{1.05} % Palatino needs more leading (space between lines)
\usepackage[scaled]{helvet} % ss
\usepackage{courier} % tt
\normalfont
\usepackage{siunitx}
\DeclareSIUnit\Molar{\textsc{m}}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage[colorlinks=false, pdfborder={0 0 0}]{hyperref}
\usepackage{cleveref}
\graphicspath{{./IMGS/}}
\title{sometitle}
\begin{document}
\begin{enumerate}
\item bla bla bla? [cfr. \cref{fig:rame}]
\end{enumerate}
\begin{figure}[ht]
\centering
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[scale=.4]{a}
\label{fig:nacl}
\end{subfigure} \quad
\begin{subfigure}[b]{0.4\textwidth}
\includegraphics[scale=0.4]{b}
\label{rame}
\end{subfigure}
\label{fig:figure}
\caption{General caption}
\end{figure}
\end{document}
答案1
您遇到的问题与 emacs 无关,并且仅与 cleveref 间接相关。您需要执行以下操作:
\caption
在主图中,交换和的顺序\label
:\caption
语句必须位于\label
声明之前。\caption
为两种环境分别提供语句subfigure
。请注意,\caption
语句必须位于\label
语句之前。\label
修复第二个子图中指令的参数:它当前显示为rame
,而 的参数为\cref
。fig:rame
我建议您将\label
语句更改为\label{fig:rame}
。
最后,如果您需要\cref
生成Fig.
而不是fig
。,请确保使用cleveref
选项加载包capitalize
(capitalise
也可以)。