Babel 正在发表言论

Babel 正在发表言论

由于某种原因,这不起作用:

\documentclass{article}
\usepackage[english,hebrew]{babel}
\usepackage{amsthm}
\newtheorem*{remark}{Remark}
\begin{document}
    \begin{remark}
        remark
    \end{remark}
\end{document}

因为“缺少插入的 {。”

但如果我删除这一行:\usepackage[english,hebrew]{babel}它就可以正常编译。

我怎样才能同时使用babelremark

答案1

以下内容在 LuaLaTeX 中对我有用。

\documentclass{article}
\tracinglostchars=2
\usepackage{unicode-math}
\usepackage[bidi=basic]{babel}
\babelprovide[import,main, onchar=ids fonts]{hebrew}
\babelprovide[onchar=ids fonts]{english}

\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX, Renderer=HarfBuzz }
\babelfont{rm}
          [Ligatures=Common,Scale=1.0]{TeX Gyre Schola}
\babelfont[hebrew]{rm}
          [Ligatures=Discretionary,
           Language=Default,
           UprightFont=*-Medium ,
           BoldFont=*-Bold ,
           ItalicFont=*-Medium , % Intentionally disable italics, which slant the opposite way.
           BoldItalicFont=*-Bold]{DavidCLM}
\babelfont{sf}
          [Ligatures=Common]{TeX Gyre Heros}
\babelfont[hebrew]{sf}
          [Ligatures=Discretionary,Language=Default]{Miriam CLM}
\babelfont{tt}
          {inconsolata}
\babelfont[hebrew]{tt}
          [Language=Default]{Miriam Mono CLM}
\setmathfont{TeX Gyre Schola Math}       

\babeltags{hebrew=hebrew}
\babeltags{english=english}

\usepackage{amsthm}

\newtheorem*{remark}{Remark}
\begin{document}
  \begin{english}
    \begin{remark}
        remark בעברית
    \end{remark}
  \end{english}
\end{document}

TeX Gyre Schola + David CLM 示例

在这个例子中,我禁用了 David CLM 中的斜体,因为它们与向相反方向倾斜的斜体混合效果不佳,但您可以启用它们,甚至添加FakeSlantItalicFeatures获得从左到右的斜体。

您可以删除onchar=语言选项。然后您必须使用\begin{english}或标记所有语言\texthebrew,而不是 LuaLaTeX 自动检测它们。但是,当您用英语写完整段落时,您将获得正确的格式。

答案2

我不确定,但我认为其中有一个错误amsthm。加载此包后尝试以下重新定义:

\makeatletter
\def\deferred@thm@head#1{%
  \if@inlabel \indent \par \fi % eject a section head if one is pending
  \if@nobreak
    \adjust@parskip@nobreak
  \else
    \addpenalty\@beginparpenalty
    \addvspace\@topsep
    \addvspace{-\parskip}%
  \fi
  \global\@inlabeltrue
  \everypar{\the\dth@everypar}% <<<<<<<<<< Changed
  \sbox\@labels{\normalfont#1}%
  \ignorespaces
}
\makeatother

相关内容