我有一份相当复杂的英文文档,使用 kaobook 排版。
对于我的摘要,我需要添加法语,但添加french
到行中
\usepackage[main=english, ngerman, french]{babel}
会导致上述错误。出现错误的行是
\begin{equation}
\vb{A} = \vb{L}^{(1)} \vb{L}^{(2)} \dots \vb{L}^{(r)} \vb{\tilde{A}}^{(r)} \vb{R}^{(r)} \dots \vb{R}^{(2)} \vb{R}^{(1)}
\end{equation}
不幸的是,我无法在 MWE 中重现该错误。非常感谢您的帮助!
编辑:MWE 添加
\documentclass[]{book}
\usepackage[main=english, ngerman, french]{babel}
\usepackage{physics}
\usepackage{upgreek}
\usepackage{bm}
\renewcommand{\vb}[1]{\bm{#1}}
\begin{document}
\begin{otherlanguage*}{french}
La physique des ondes apparaît dans la nature entre autres sous forme d’ondes électromagnétiques, d’ondes sonores ou encore d’ondes
\end{otherlanguage*}
\begin{equation}
\vb{L}^{(1)} \vb{L}^{(2)} \dots \vb{L}^{(r)}
\end{equation}
\end{document}
答案1
法语和/或物理 amsmath
似乎令人不安bm
。
然而,如果你不深入研究为什么你可以\bm
用额外的括号来保护,你就不会得到任何错误
\renewcommand{\vb}[1]{{\bm{#1}}}
amsmath
可以通过将一个实例更改为\boldsymbol
来进行更永久的修复##1
\documentclass[]{book}
\usepackage{amsmath}
\usepackage{bm}
\makeatletter
\def\mdots@@{\gdef\thedots@{\dotso@}%
\ifx\@let@token\boldsymbol
% \gdef\thedots@\boldsymbol{\boldsymboldots@}%
\gdef\thedots@##1{\boldsymboldots@}%
\else
\ifx,\@let@token \gdef\thedots@{\dotsc}%
\else
\ifx\not\@let@token
\gdef\thedots@{\dotsb@}%
\else
\keybin@
\ifgtest@ % if \keybin@ test
\gdef\thedots@{\dotsb@}%
\else
\xdef\meaning@{\meaning\@let@token. .........}%
\xdef\meaning@@{\@xp\striplong@\meaning@\relax\meaning@}%
\@xp\math@\meaning@\math@
\ifgtest@ % if \mathxxx test
\@xp\mathch@\meaning@\mathch@
\ifgtest@ % if \mathchar
\@xp\getmathch@\meaning@\getmathch@
\fi % end if \mathchar
\else % \not \mathxxx
\@xp\Umathch@\meaning@"0"\Umathch@
\ifgtest@ % if \Umathchar
\else % else not \Umathcar
\@xp\macro@\meaning@@\macro@
\ifgtest@ % if macro test
\@xp\not@\meaning@\not@
\ifgtest@ % if macro starts \not test
\gdef\thedots@{\dotsb@}%
\else% else not \not
\@xp\DOTS@\meaning@\DOTS@
\ifgtest@ % \if DOTS
\ifcase\number\DOTSCASE@ %ifcase dots
\gdef\thedots@{\dotsb@}%
\or\gdef\thedots@{\dotsi}\else
\fi % endifcase dots
\else % not macro starts \DOTS
\@xp\math@\meaning@\math@
\ifgtest@ % \if macro starts \mathxxxx
\@xp\mathbin@\meaning@\mathbin@
\ifgtest@ % if macro starts \mathbin
\gdef\thedots@{\dotsb@}%
\else % not macro starting \mathbin
\@xp\mathrel@\meaning@\mathrel@
\ifgtest@ % if macro starts \mathrel
\gdef\thedots@{\dotsb@}%
\fi % endif macro starts \mathrel (no else)
\fi % endif macro starts \mathbin
\fi % endif macro starts with \mathxxx (no else)
\fi % endif macro starts \DOTS else
\fi % end macro starting \not \ifgtest@ test (no else)
\else
\@xp\thecharacter@\meaning@\thecharacter@
\fi % end macro \ifgtest@ test (no else)
\fi % end if \Umathchar test
\fi % end \math@ \ifgtest@
\fi % end \keybin@ \ifgtest@ test (no else)
\fi % end if \not (no else)
\fi % end if comma (no else)
\fi % end if boldsymbol (no else)
\thedots@}
\makeatother
\begin{document}
$\dots 1$ $\dots\bm{1}$
$1 + \dots + 5$ $1\bm{+} \dots\bm{+} 5$
\end{document}
``
答案2
我建议不要使用physics
。无论如何,它与 没有直接关系physics
,但它与 有交互amsmath
。
这是一个更简单的例子:
\documentclass[]{book}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage{bm}
\newcommand{\vb}[1]{\bm{#1}}
\begin{document}
$\vb{L}\dots\vb{L}$
\end{document}
您可以使用以下方法解决该问题\NewCommandCopy
(或者\RenewCommandCopy
如果您坚持使用physics
):
\documentclass[]{book}
\usepackage[french]{babel}
\usepackage{amsmath}
\usepackage{bm}
\NewCommandCopy{\vb}{\bm}
\begin{document}
$\vb{L}\dots\vb{L}$
\end{document}