Babel 改变了 LNCS 纸张的布局

Babel 改变了 LNCS 纸张的布局

我正在使用伦斯勒公司springer 课程的最新版本。

MWE1:

\documentclass[runningheads]{llncs}[2018/03/10]
\usepackage{blindtext}
\begin{document}
\maketitle
\blindtext[10]
\end{document}

输出:

MWE1 输出

MWE2:

\documentclass[runningheads]{llncs}[2018/03/10]
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\maketitle
\blindtext[10]
\end{document}

输出:

在此处输入图片描述

重现方式如下:

 docker run --rm -it -v "$(pwd):/home" danteev/texlive pdflatex paper-min.tex

适用于 Linux 和 PowerShell。系统配置:https://github.com/dante-ev/docker-texlive/blob/master/Dockerfile

*File List*
  llncs.cls    2018/03/10 v2.20 
LaTeX document class for Lecture Notes in Computer Science
article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
multicol.sty    2017/04/11 v1.8q multicolumn formatting (FMi)
aliascnt.sty    2009/09/08 v1.3 Alias counter (HO)
remreset.sty    
  babel.sty    2018/02/14 3.18 The Babel package
english.ldf    2017/06/06 v3.3r English support from the babel system
blindtext.sty    2012/01/06 V2.0 blindtext-Package
  xspace.sty    2014/10/28 v1.13 Space after command names (DPC,MH)
***********

在 MiKTeX 上也会发生这种情况:

*File List*
  llncs.cls    2018/03/10 v2.20 
LaTeX document class for Lecture Notes in Computer Science
article.cls    2014/09/29 v1.4h Standard LaTeX document class
  size10.clo    2014/09/29 v1.4h Standard LaTeX file (size option)
multicol.sty    2018/04/20 v1.8s multicolumn formatting (FMi)
aliascnt.sty    2009/09/08 v1.3 Alias counter (HO)
remreset.sty    
  babel.sty    2018/06/05 3.22 The Babel package
bblopts.cfg    2005/09/08 v0.1 add Arabic and Farsi to "declared" options of b
abel
english.ldf    2017/06/06 v3.3r English support from the babel system
blindtext.sty    2012/01/06 V2.0 blindtext-Package
  xspace.sty    2014/10/28 v1.13 Space after command names (DPC,MH)
***********

德语和法语也存在类似的问题。

答案1

哈维尔·贝佐斯已经成功了,我们应当给予他荣誉。

直到 Springer 修复与此相关的错误\switcht@albion,顺便说一下,可以通过简单的

\documentclass{llncs}
\usepackage[english]{babel}
\begin{document}
X\selectlanguage{english}X
\end{document}

打印“X <several spaces>X”,你可以一劳永逸地递归修补错误的宏:

\documentclass[runningheads]{llncs}
\usepackage[english]{babel}
\usepackage{etoolbox}

\makeatletter
\def\recursivepatch{%
  \ifpatchable\switcht@albion{ \def}
    {%
     \patchcmd\switcht@albion{ \def}{\def}{}{}%
     \recursivepatch
    }
    {\undef\recursivepatch}%
}
\recursivepatch
\makeatother

\begin{document}

\maketitle

X\selectlanguage{english}X
\clearpage
X\selectlanguage{english}X

\end{document}

在此处输入图片描述

或者,将其添加\relax到宏中并用于\xpatchcmd*一步完成所有修补。

\documentclass[runningheads]{llncs}
\usepackage[english]{babel}
\usepackage{regexpatch}

\makeatletter
\edef\switcht@albion{%
  \relax\unexpanded\expandafter{\switcht@albion}%
}
\xpatchcmd*{\switcht@albion}{ \def}{\def}{}{}
\xpatchcmd{\switcht@albion}{\relax}{}{}{}
\makeatother

\begin{document}

\maketitle

X\selectlanguage{english}X
\clearpage
X\selectlanguage{english}X

\end{document}

事实上,法语和德语也存在同样的问题。对于这些语言,也需要重复补丁:

\makeatletter
\edef\switcht@albion{%
  \relax\unexpanded\expandafter{\switcht@albion}%
}
\xpatchcmd*{\switcht@albion}{ \def}{\def}{}{}
\xpatchcmd{\switcht@albion}{\relax}{}{}{}
\edef\switcht@deutsch{%
  \relax\unexpanded\expandafter{\switcht@deutsch}%
}
\xpatchcmd*{\switcht@deutsch}{ \def}{\def}{}{}
\xpatchcmd{\switcht@deutsch}{\relax}{}{}{}
\edef\switcht@francais{%
  \relax\unexpanded\expandafter{\switcht@francais}%
}
\xpatchcmd*{\switcht@francais}{ \def}{\def}{}{}
\xpatchcmd{\switcht@francais}{\relax}{}{}{}
\makeatother

答案2

这是 中的一个错误llncs.cls,即%第 79-114 行末尾缺少以下内容。应为:

\def\switcht@albion{%
\def\abstractname{Abstract.}%
\def\ackname{Acknowledgement.}%
\def\andname{and}%
\def\lastandname{\unskip, and}%
\def\appendixname{Appendix}%
\def\chaptername{Chapter}%
\def\claimname{Claim}%
\def\conjecturename{Conjecture}%
\def\contentsname{Table of Contents}%
\def\corollaryname{Corollary}%
\def\definitionname{Definition}%
\def\examplename{Example}%
\def\exercisename{Exercise}%
\def\figurename{Fig.}%
\def\keywordname{{\bf Keywords:}}%
\def\indexname{Index}%
\def\lemmaname{Lemma}%
\def\contriblistname{List of Contributors}%
\def\listfigurename{List of Figures}%
\def\listtablename{List of Tables}%
\def\mailname{{\it Correspondence to\/}:}%
\def\noteaddname{Note added in proof}%
\def\notename{Note}%
\def\partname{Part}%
\def\problemname{Problem}%
\def\proofname{Proof}%
\def\propertyname{Property}%
\def\propositionname{Proposition}%
\def\questionname{Question}%
\def\remarkname{Remark}%
\def\seename{see}%
\def\solutionname{Solution}%
\def\subclassname{{\it Subject Classifications\/}:}%
\def\tablename{Table}%
\def\theoremname{Theorem}}

babel尝试修复此类错误,但并不总是成功(在这种特殊情况下,因为这个宏被添加到\extrasenglish,而不是\captionsenglish)。

此外\switcht@francais,还有\switcht@deutsch未受保护的线路末端,尽管隐藏得很好。

答案3

该错误已在llncs.cls2.21 版本中修复。

相关内容