swedish-babel 中有 bug 吗?

swedish-babel 中有 bug 吗?

当我使用瑞典语 babel 包时,目录偶数边上的标题写着“INNEHåLL”(请注意小写的 å,应该是 Å)。如果我使用英语版本,它会正确地显示 CONTENTS。这是一个错误吗?

我没有这个的最小示例,因为它至少需要一页的章节内容,但这里有一个屏幕截图:在此处输入图片描述

编辑:如果我使用 book 类,我可能会得到一个空白页,并且出现此行为。我设法删除了我正在使用的所有软件包,看来问题是由 fontspec 软件包引起的:

\usepackage{fontspec,xltxtra,xunicode}

编辑2:我现在改用 polyglossia。这是我当前的序言。注释的软件包可能是给我带来麻烦的软件包:

%!TEX TS-program = XeLaTeX
%!TEX encoding = UTF-8 Unicode

\documentclass[12pt]{book}
\usepackage{geometry}                
\geometry{a4paper}

%\usepackage{polyglossia}
\usepackage{fancyhdr}

\usepackage{enumerate}
\usepackage{amssymb}
\usepackage{unicode-math}

\usepackage{array}
\usepackage{rotating}

\usepackage{hyperref}

%\usepackage{fontspec}
\defaultfontfeatures{Mapping=tex-text}

\setmainfont{PT Sans}
\setmonofont[AutoFakeBold=1.4, AutoFakeSlant=0.2]{Inconsolata}

\usepackage[parfill]{parskip}

\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\graphicspath{{ill/}}

\usepackage{listingsutf8}

编辑3我目前的解决方案如下(还不能自我回答):

1)babel改为polyglossia

2) 删除了fontspec(包括polyglossia)和amssymb(与 不兼容polyglossia)。

3)改为listingsutf8现在listings使用unicode-math

答案1

检查是否在某处使用\uppercase并将其替换为\MakeUppercase。这是的常见弱点\uppercase,它不会在其参数中显示对宏的影响。比较:

\documentclass{report}
\usepackage[swedish]{babel}
\begin{document}
\uppercase{Inneh\aa ll}

\MakeUppercase{Inneh\aa ll}
\end{document}

MakeUppercase 示例

这不是 babel 中的错误。它可能是代码中的弱点(如上所述)、包中的弱点或使用包作为标头的方式中的弱点。

例如,它可以按默认headings页面样式按预期工作:

\documentclass{report}
\usepackage[swedish]{babel}
\pagestyle{headings}
\begin{document}
\tableofcontents
\chapter{Test}
\section{test}
...
% repeat chapters and sections many times to get a TOC longer than a page
\end{document}

标题示例

如果您使用fancyhdr以下fancy页面样式,它也能正常工作:

\usepackage{fancyhdr}
\pagestyle{fancy}

答案2

你原来使用 babel 时遇到的问题可以这样解决:

\addto\captionsswedish{%
\def\contentsname{Innehåll}}

关于您当前的示例:

  1. 不要将 listingsut8 与 xelatex 一起使用。使用 listings

  2. 您真的需要 amssymb 吗?(它是 的来源Command \Finv already defined)。如果是,您必须在 之前加载它fontspec(即polyglossia在 加载之前fontspec),但请注意,它的某些定义将被覆盖。

答案3

这是我解决问题的方法,结合了答案和评论的帮助:

1)babel改为polyglossia

2) 删除font-spec并移至amssymb顶部(因为与 不兼容polyglossia)。

答案4

不完全确定如何babel修改内容,但尝试以下操作如何:

\renewcommand{\contentsname}{Inneh\aa ll}

\chaptermark应该使用\MakeUppercase它来修改它并在标题中将其变为大写。

相关内容