Jarak yang buruk dengan XeLatex dan poliglosia
Saya memiliki dokumen Latex multibahasa yang menggunakan Xelatex dan fontspec
paket untuk rendering. Dokumen yang saya berikan menunjukkan spasi yang tidak memuaskan, terutama dalam bahasa Inggris: Seringkali spasi kosong setelah tanda baca dalam bentuk apa pun terlalu lebar. Saya tidak pernah mengalami masalah ini sebelumnya, dan oleh karena itu saya bertanya pada diri saya sendiri, apakah saya marah atau jika ada sesuatu yang berubah dengan beberapa pembaruan paket: Berikut ini contohnya:

Ini cukup mengejutkan, bahwa tidak ada tanda hubung yang terjadi. Tapi ini mungkin hanya kebetulan, karena nanti di dokumen ada kasus tanda hubung, tapi tidak banyak. Hasil saya dalam bahasa Jerman lebih baik. Adakah yang bisa membantu saya di sini.
Berikut adalah contoh kode:
\documentclass[a4paper,10pt,twoside]{memoir}
\usepackage{polyglossia}
\usepackage{xltxtra}
\usepackage{fontspec}
\setmainlanguage[spelling=old,babelshorthands=true,script=latin]{german}
\setotherlanguage[variant=polytonic]{greek}{}
\setotherlanguages{english, french, italian, spanish, latin, portuguese}
\usepackage{blindtext}
\begin{document}
\blinddocument
\begin{english}
\blinddocument
\end{english}
\end{document}
Jawaban
Seperti yang dikatakan David Carlisle di komentar, ini adalah perilaku yang diharapkan: Secara default, TeX menyisakan sedikit lebih banyak spasi setelah tanda baca akhir kalimat daripada di antara kata. Perilaku ini dikenal dengan perintah TeX \nonfrenchspacing
.
Meskipun hal ini umum (atau setidaknya tidak sepenuhnya tidak umum) dalam tipografi bahasa Inggris (meskipun saya mengumpulkan ada perdebatan tentang apakah ide yang baik untuk meninggalkan ruang yang lebih besar setelah periode dan sejenisnya), biasanya tidak dilakukan di tempat lain. bahasa. Untuk situasi tersebut TeX memiliki perintah \frenchspacing
, yang menyebabkan spasi setelah tanda baca menjadi sama dengan spasi antar kata.
Jadi, Anda akan mengatakan \frenchspacing
untuk melawan perilaku ini jika Anda melihatnya.
Ketika paket lokalisasi menyukai babel
dan polyglossia
terlibat, paket tersebut dapat mengubah \frenchspacing
/ \nonfrenchspacing
state jika bahasa dialihkan sesuai dengan konvensi nasional.
Dengan versi modern polyglossia
ada cara untuk sepenuhnya menonaktifkan \nonfrenchspacing
dan memaksa \frenchspacing
setiap saat: Cukup tentukan ulang makro internal \polyglossia@lang@frenchspacing:n
yang disetel \(non)frenchspacing
ke selalu masalah \frenchspacing
.
\documentclass[a4paper,10pt,twoside]{memoir}
\usepackage{polyglossia}
\usepackage{fontspec}
\makeatletter
\ExplSyntaxOn
\cs_set_nopar:Nn{\polyglossia@lang@frenchspacing:n}{\frenchspacing}
\ExplSyntaxOff
\makeatother
\setmainlanguage[spelling=old,babelshorthands=true,script=latin]{german}
\setotherlanguage[variant=polytonic]{greek}{}
\setotherlanguages{english, french, italian, spanish, latin, portuguese}
\usepackage{blindtext}
\begin{document}
\blinddocument
\begin{english}
\blinddocument
\end{english}
\end{document}
Tetapi ada alternatif untuk pendekatan ini, misalnya poliglosia: bagaimana menyetel `\ spasi perancis` untuk semua bahasa, di mana saja? .
Alternatif lain yang sangat radikal (yang mungkin berpotensi merusak barang) adalah
\def\nonfrenchspacing{\frenchspacing}
\AtBeginDocument{\frenchspacing}