stmaryrd 与 babel 不兼容

stmaryrd 与 babel 不兼容

我遇到了一个错误:当我想在编写的\llbracket某些代码中同时使用 stmaryrd for 和法语 babel时,编译永远不会结束。在我的本地机器和 Overleaf 上都出现了这种情况。book

以下是一些 MWE:

\documentclass{book}

%General setup
\usepackage[margin=2.5cm]{geometry}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{commath}
\usepackage{stmaryrd}
\usepackage{import}
%Custom style
\renewcommand{\partname}{Partie}
\renewcommand{\contentsname}{Sommaire}
\renewcommand{\chaptername}{Thème}
\setcounter{tocdepth}{4}
\setcounter{secnumdepth}{4}

\usepackage{hyperref}

\makeatletter
\@addtoreset{chapter}{part}
\makeatother

\usepackage[frenchb]{babel}

\title{My title}
\date{Today}
\author{Kal} 


\begin{document}

\maketitle
 
\newpage 
 
\begin{center}\Large
\textit{Préambule}
\end{center}

\bigskip 
    
\begin{equation*}
\forall k \in \llbracket 1 : N \rrbracket, \: i_k = \frac{G_k}{\sum\limits_{l=1}^N G_l} i
\end{equation*}

\end{document}

我尝试了所有方法,唯一能告诉你的是,在 MWE 上注释 babel import 可以解决问题并使其编译。但是,我无法在整个文档中执行此操作。我真的被困住了,尤其是没有任何错误消息......

答案1

正如 Ulrike 所指出的,这不是stmaryrd和之间的冲突babel-french,而是commath和之间的冲突babel-french。参见 commath 和 babel 包不兼容

使commath冒号处于活动状态,这与babel-french使其处于活动状态相冲突。由于commath似乎没有维护(上次更新于 2006 年),我建议注释掉 中的第 281-286 行commath.sty。如果:=需要在数学模式下进行修补(这是唯一目的除了使结肠活跃之外,还有其他选择(mathtools.styfi)。

一个更简洁的解决方案是从中挑选出您真正需要的命令commath.sty,将它们添加到您的序言中(或个人样式文件)并放弃对的调用commath.sty

顺便说一句,我建议\usepackage[T1]{fontenc}按照建议添加babel-french\usepackage{lmodern}获取拉丁现代字体而不是“cm-super”字体。

相关内容