cleveref & varioref:缺少插入的 \endcsname

cleveref & varioref:缺少插入的 \endcsname

我读了一个很好的问题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 的错误相同。

如何解决这个问题?我在这个论坛和网络上都找不到答案。

我将使用这些包(vrefcref)来定制我的环境,例如这样的宏框:

\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

问题是,variorefcref不喜欢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}
}

那么它确实工作正常。

相关内容