巴别塔与回忆录之间的冲突使用希腊语和西班牙语

巴别塔与回忆录之间的冲突使用希腊语和西班牙语

这是西班牙语 babel 与两栏回忆录和 \frontmatter 之间的冲突

Babel In TeXLive 2021 似乎现在将这些元素与希腊语组合在一起时也会产生同样的错误,即使没有输入任何希腊语。同时使用这两个es-ucroman是没用的。即使使用\pagenumbering{roman}而不是\frontmatter也会失败,尽管使用 不会出错\pagenumbering{alph}

最小不起作用的示例:

\documentclass[twocolumn]{memoir} % works without twocolumn/memoir
\usepackage[LGR,TS1,T1]{fontenc}
\usepackage[greek,spanish,es-ucroman]{babel} % works without greek
\begin{document}
% \pagenumbering{roman} % works with `alph` 
\frontmatter % works without frontmatter
foo
\mainmatter
foo
\end{document}

我怎样才能在不切换到其他课程的情况下解决这个问题?

答案1

问题在于babel-spanishbabel-greek的相互作用mparhack

您可以通过修补重新定义mparhack\@outputdblcol使用 的包中的其他命令来修复它\thepage

这应该与西班牙语的默认罗马数字一起使用,es-lcroman或者es-ucroman(当babel-greek进入场景时)。

\documentclass[twocolumn]{memoir} % works without twocolumn/memoir

\usepackage[T1]{fontenc}
\usepackage[greek,spanish,es-ucroman]{babel} % works without greek
\usepackage{xpatch}

\makeatletter
\def\kernel@roman#1{\romannumeral#1}
\def\kernel@Roman#1{\expandafter\@slowromancap\romannumeral#1@}
\def\fix@mph@spanish@greek{%
  \let\es@scroman\@firstofone
  \let\@Roman\kernel@Roman
  \let\@roman\kernel@roman
}
\xpatchcmd{\mph@get@margin}
 {\begingroup}
 {\begingroup\fix@mph@spanish@greek}
 {}{}
\xpatchcmd{\@outputdblcol}
 {\def}
 {\fix@mph@spanish@greek\def}
 {}{}
\xpatchcmd{\mph@outputpage@hook}
 {\bgroup}
 {\bgroup\fix@mph@spanish@greek}
 {}{}
\makeatother

\begin{document}

\frontmatter % works without frontmatter
foo\marginpar{what}

\mainmatter
foo\marginpar{what}

\end{document}

相关内容