Babel を使用しても外国語のテキストがハイフンで区切られないのはなぜですか? Typst は正しくハイフンで区切ってくれます

Babel を使用しても外国語のテキストがハイフンで区切られないのはなぜですか? Typst は正しくハイフンで区切ってくれます

LuaLaTeX で使用すると、Typst と同じハイフネーション結果が得られないのはなぜですかbabel? この問題を解決するためにさまざまな方法を試しましたが、うまくいきませんでした。

どちらもレターペーパー サイズの用紙を使用し、上下左右に 1.5 cm のカスタム余白、12 ポイントのフォント サイズを使用し、STIX Two Text フォントを使用しています。

  • LuaLaTeX コード:
% {
\documentclass[letterpaper,12pt]{article}

\usepackage[left=1.5cm, right=1.5cm, top=1.5cm, bottom=1.5cm]{geometry}
\usepackage{indentfirst}
\usepackage{fancyhdr}
\usepackage{csquotes}
\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
    \setmainfont{STIX Two Text}[Ligatures=TeX]
    \setmathfont{STIX Two Math}
\usepackage[main=english,spanish,russian]{babel} 

\makeatletter
\renewcommand{\@maketitle}{%
\newpage
\null
\vspace{-0.125cm} % This corresponds to the top margin set by geometry
\begin{center}
\parskip=0pt
\let\footnote\thanks 
{\LARGE \@title \par }%
{\large \lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}%
\par }%
\vspace{.25cm} % Adjust this value to control the space between the author and date
{\large \@date }%
\end{center}\par 
\vspace{.25cm} % This corresponds to the bottom margin set by geometry
}
\makeatother 

\setlength\parindent{.25cm} 

% }

\title{Title}
\author{Author}
\date{\today}

\begin{document}

\noindent
\begin{minipage}{\textwidth}
\maketitle
\end{minipage}

\selectlanguage{russian}

Как лучше всего получить то, что ты хочешь? - спросила она. Он посмотрел в землю, зная, что ей не понравится его ответ. Он колебался, зная, что правда только повредит. Как он собирался сказать ей это? лучший способ получить то, что он хотел, это оставить ее. Завтра я возвращаюсь в Колорадо после того, как на выходных провел там фестиваль в Санта-Барбаре. Там я буду строить планы на октябрь и постараюсь договориться, чтобы, если возможно, вернуться сюда на день рождения. Я сообщу вам, как только узнаю график приема врача и планы полетов. Стул стоял в углу, где простоял более 25 лет. Единственная разница заключалась в том, что в нем действительно кто-то сидел. Сколько времени прошло с тех пор, как кто-то это делал? По его мнению, десять лет или больше. И все же нельзя было отрицать присутствие в кресле сейчас.

\end{document}

これがTypstコードです。

  • テンプレートコード:
// The project function defines how your document looks.
// It takes your content and some metadata and formats it.
// Go ahead and customize it to your liking!
#let project(title: "", authors: (), date: none, body) = {
  // Set the document's basic properties.
  set document(author: authors, title: title)
  set page(
    paper: "us-letter",
    margin: (left: 15mm, right: 15mm, top: 15mm, bottom: 15mm),
    numbering: "1",
    number-align: center,
  )
  set text(font: "STIX Two Text", lang: "en", 12pt)

  // Set paragraph spacing.
  show par: set block(above: 0.75em, below: 0.75em)

  set heading(numbering: "1.1.")
  set par(leading: 0.58em)

  // Title row.
  align(center)[
    #block(text(weight: 700, 1.75em, title))
    #v(0.8em, weak: true)
    #date
  ]

  // Author information.
  pad(
    top: 0.3em,
    bottom: 0.3em,
    x: 2em,
    grid(
      columns: (1fr,) * calc.min(3, authors.len()),
      gutter: 1em,
      ..authors.map(author => align(center, strong(author))),
    ),
  )

  // Main body.
  set par(justify: true)

  body
}
  • 文書コード:
#import "template.typ": *

// Take a look at the file `template.typ` in the file panel
// to customize this template and discover how it works.
#show: project.with(
  title: "Template",
  authors: (
    "Author",
  ),
  date: "January 6, 2024",
)

#h(.25cm) #set text(lang: "ru"); Как лучше всего получить то, что ты хочешь? - спросила она. Он посмотрел в землю, зная, что ей не понравится его ответ. Он колебался, зная, что правда только повредит. Как он собирался сказать ей это? лучший способ получить то, что он хотел, это оставить ее. Завтра я возвращаюсь в Колорадо после того, как на выходных провел там фестиваль в Санта-Барбаре. Там я буду строить планы на октябрь и постараюсь договориться, чтобы, если возможно, вернуться сюда на день рождения. Я сообщу вам, как только узнаю график приема врача и планы полетов. Стул стоял в углу, где простоял более 25 лет. Единственная разница заключалась в том, что в нем действительно кто-то сидел. Сколько времени прошло с тех пор, как кто-то это делал? По его мнению, десять лет или больше. И все же нельзя было отрицать присутствие в кресле сейчас.

答え1

TeX はハイフネーションを回避しようとしますが、長い行や短い単語ではハイフネーションが成功することがよくあります。ハイフネーションがどのように機能するかをすばやく確認したい場合は、テキスト幅を小さく設定します。

\documentclass[letterpaper,12pt]{article}
\usepackage{microtype}
\usepackage{unicode-math} % loads fontspec
\setmainfont{STIX Two Text}[Ligatures=TeX]
\usepackage[main=english,spanish,russian]{babel} 

\textwidth=5pt
\begin{document}
\selectlanguage{russian}
Как лучше всего получить то, что ты хочешь? - спросила она. Он посмотрел в землю, зная, что ей не понравится его ответ. Он колебался, зная, что правда только повредит. Как он собирался сказать ей это? лучший способ получить то, что он хотел, это оставить ее. Завтра я возвращаюсь в Колорадо после того, как на выходных провел там фестиваль в Санта-Барбаре. Там я буду строить планы на октябрь и постараюсь договориться, чтобы, если возможно, вернуться сюда на день рождения. Я сообщу вам, как только узнаю график приема врача и планы полетов. Стул стоял в углу, где простоял более 25 лет. Единственная разница заключалась в том, что в нем действительно кто-то сидел. Сколько времени прошло с тех пор, как кто-то это делал? По его мнению, десять лет или больше. И все же нельзя было отрицать присутствие в кресле сейчас.

\end{document}

ここに画像の説明を入力してください

答え2

コメントを拡張し、画像をいくつか追加します。3 つのテストを実行しました。

  1. Typstの使用
    ここに画像の説明を入力してください

  2. LuaLaTeXを使用するmicrotype ここに画像の説明を入力してください

  3. microtype なしで LuaLaTeX を使用する。 ここに画像の説明を入力してください

予想通り、最良の結果は を使用したものでしたmicrotype。もちろん、よりよいテストは狭い列を使用したものだったでしょうが、私はそれをチェックするのに十分な知識がありませんでした。また、Frog King のようなハイフネーションが難しい段落を使用したり、ハイフネーションに影響するすべてのパラメータを記録したりすることも、よりよかったでしょう。

余談ですが、 に関する私の経験についてのコメントもいくつかありますtypst

  1. 私は github リポジトリから Windows に問題なくインストールし (Windows の場合)、すべてが実行されるまでに 2 分もかかりませんでした (10/10)。
  2. 私はエディターとして Sublime を使用していますが、typst コードを強調表示するパッケージはありませんが、きれいで読みやすいコードを生成します (8/10)。
  3. Typst は非常に高速にコンパイルされます (10/10)。
  4. 私も Discord サーバーにアクセスしましたが、非常に残念な体験でした。Discord にアクセスして Nitro を購入するよう促すポップアップが表示されるのは、あまり好きではありません。これまでのところ、コミュニティは熱心で協力的であるようです。LaTeX では当然のこととされている機能に対する要望が多数あります。(6/10)
  5. 私もいくつかのパッケージを見てみましたが、私の意見では、Typst も Javascript と同じ問題にすぐに直面することになり、優柔不断、混乱、重複につながるエコシステムになるでしょう。(5/10)
  6. 全体として、typst を使いこなし、ドキュメントを少し読むのに 15 分もかかりませんでした。私はビデオを見ませんでした。ビデオを見るよりも読むほうがずっと早いからです。LaTeX doc/docstrip ドキュメントのような PDF の方がよかったと思います。私の意見では、それらはオンライン マニュアルよりも統一性があります。(8/10)
  7. 私見では、コミュニティまたは によって、LaTeX と Typst の両方が相互に翻訳するためのパッケージを開発するのは非常に簡単でしょうpandoc
  8. これまでのところ、Typst と LaTex はどちらも Word よりも優れた代替手段です。

空虚なレトリックに耽溺する政治指導者によって悪化した教育水準の低下という一般的な環境において、学生やその他の人々がツイートではなくより良い文書を書けるようにするシステムを目指す開発が見られるのは喜ばしいことだ。

関連情報