XeTeX 中不必要的首行移位

XeTeX 中不必要的首行移位

使用 XeTeX 时,我注意到文档中的第一行发生了偏移,\usepackage{indentfirst}这是我不希望发生的。在 LaTeX 中一切正常。示例:

XeTeX:

\documentclass[a4paper,oneside,14pt]{book}
\usepackage{xltxtra}
\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{extsizes}
\usepackage{indentfirst}
\usepackage{fancyhdr}
\pagestyle{plain}
\linespread{1.5}
\setdefaultlanguage{ukrainian}
\setmainfont{Times New Roman}

在此处输入图片描述

乳胶:

\documentclass[a4paper,oneside,14pt]{book}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[ukrainian]{babel}
\usepackage{extsizes}
\usepackage{indentfirst}
\usepackage{fancyhdr}
\pagestyle{plain}
\linespread{1.5}

在此处输入图片描述

问题是如何修复此缩进?我应该使用一些手动缩进来代替吗indentfirst?那会不会变成“轮子”?

答案1

这不是缩进问题:您应该Overfull \hbox在排版过程中收到一条消息,您可以通过启用选项draft来测试它\documentclass,这将在超出的行旁边弹出一个黑色斑点。

在这种情况下,重写通常是最简单的补救措施。更改分页参数也会有所帮助。无论如何,只有当文档处于“几乎最终”形式时才应解决此类问题。

顺便说一下,Polyglossia 对乌克兰语的设置是

\PolyglossiaSetup{ukrainian}{
  script=Cyrillic,
  scripttag=cyrl,
  langtag=UKR,
  hyphennames={ukrainian},
  hyphenmins={2,2},
  frenchspacing=true,
  fontsetup=true
}

不包括indentfirst。除了加载indentfirst包,您还可以说

\setmainlanguage{ukrainian}
\PolyglossiaSetup{ukrainian}{indentfirst=true}

这不会改变其他语言的设置。本地更改还是全局更改(使用包)取决于许多因素,因此请自行选择。

请注意 是\setdefaultlanguage的弃用名称\setmainlanguage

一个提示
一个有趣的方法是将\emergencystretch本地设置为段落(不在列表环境中,因为列表环境中事情不能按预期进行),以便 TeX 有更多的机会纠正错误的断点,你可以说

Text of a paragraph that doesn't set well
and here's where it ends.{\emergencystretch=1.5em\par}

Here starts the following paragraph.

答案2

我认为 Werner 的想法是正确的。我用其他字体测试了相同的文本并获得了正确的缩进。

更改后geometry我得到了正确的结果,但我认为我的解决方案不是那么优雅,但它有效(使用 Times New Roman 和西里尔文本)。

相关内容