我读了一个很好的问题ref、varioref 和 cleveref 之间的区别。论文决策以及网络上的各种文档(varioref 包文档)并尝试使用它...但出现许多错误
一个例子:
\documentclass{article}
\usepackage[a4paper]{geometry}
\geometry{top=25mm,bottom=25mm,inner=25mm,outer=20mm,,marginparwidth=1cm,marginparsep=10pt}
\usepackage[ansinew]{inputenc}
\usepackage[french]{babel}
\usepackage[lmodern]
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage{color,xcolor}
\ifpdf%
\usepackage[pdftex,pagebackref=true,hyperindex=true,colorlinks=true]{hyperref}
\hypersetup{pdfstartview={FitH}, bookmarksnumbered={true}}
\else%
\usepackage[hypertex=true,hyperindex=true,colorlinks=false]{hyperref}
\fi
\usepackage{cleveref}
\usepackage{varioref}
\usepackage{lipsum}
\begin{document}
\section{Bla bla}\label{sec:bla}
\lipsum[1]
\newpage
\section{Second bla bla}
Test section 1 :
\begin{itemize}
\item with \verb"\ref" : \ref{sec:bla}
\item with \verb"\vref" : \vref{sec:bla}
= error "!Missing \verb"\endcsname" inserted"
\item with \verb"\cref" : \cref{sec:bla}
= error "!Missing \verb"\endcsname" inserted"
\end{itemize}
\newpage
\section{Third bla bla}
Test section 1 :
\begin{itemize}
\item with \verb"\ref" : \ref{sec:bla}
\item with \verb"\vref" : \vref{sec:bla}
= error "!Missing \verb"\endcsname" inserted"
\item with \verb"\cref" : \cref{sec:bla}
= error "!Missing \verb"\endcsname" inserted"
\end{itemize}
\end{document}
我得到了错误!Missing \endcsname inserted
以及更多其他错误......(vref 的错误与 cref 的错误相同。
如何解决这个问题?我在这个论坛和网络上都找不到答案。
我将使用这些包(vref
和cref
)来定制我的环境,例如这样的宏框:
\newtheorem{theoreme}{{\sffamily Théorème}}[section]
\newcommand{\boxthm}[2]
{{\colorbox{yellow}{\begin{minipage}{0.98\linewidth}
\begin{theoreme}\label{thm:#1}
{\sffamily ~\\#2}
\end{theoreme}
\end{minipage}}}\\~}
我推测如果我能解决某个部分的问题,那么我也能得到所有宏框(thm、定义、算法、引理、示例……)的提示?
答案1
问题是,varioref
我cref
不喜欢babel
标签中的简写。由于冒号对法语有特殊含义,所以你会遇到奇怪的错误。
\documentclass{article}
\usepackage[a4paper]{geometry}
\geometry{top=25mm,bottom=25mm,inner=25mm,outer=20mm,
marginparwidth=1cm,marginparsep=10pt}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage[english,french]{babel}
\usepackage{microtype} % loads also ifpdf
\usepackage{xcolor}
\usepackage{varioref}
\ifpdf
\usepackage[pagebackref=true,hyperindex=true,colorlinks=true]{hyperref}
\hypersetup{pdfstartview={FitH}, bookmarksnumbered={true}}
\else
\usepackage[hypertex=true,hyperindex=true,colorlinks=false]{hyperref}
\fi
\usepackage{cleveref}
\begin{document}
\section{Bla bla}\label{sec-bla}
\lipsum[1]
\section{Second bla bla}
Test section 1 :
\begin{itemize}
\item with \verb|\ref| : \ref{sec-bla}
\item with \verb|\vref| : \vref{sec-bla}
\item with \verb|\cref| : \cref{sec-bla}
\end{itemize}
\newpage
\vref{sec-bla}
\end{document}
一些说明。这些软件包ae
确实aeguill
过时了,并且没有很好的度量文件。
最好使用 CM-Super 包提供的 Type1 字体(这取决于你使用的发行版如何安装它们)或者说
\usepackage{lmodern}
答案2
我找到了一种解决方法,但并不是很干净。
我cleveref
使用选项加载 -package french
,并定义一个自定义命令\citeref
(而不是\cref
),如下所示
\newcommand{\citeref}[1]{
\begin{otherlanguage}{british}
\cref{#1}
\end{otherlanguage}
}
那么它确实工作正常。