Почему текст на иностранном языке не расставляет переносы даже при использовании Babel? Typst расставляет переносы правильно

Почему текст на иностранном языке не расставляет переносы даже при использовании Babel? Typst расставляет переносы правильно

Почему я не получаю те же результаты переносов, что и Typst при использовании babelв LuaLaTeX? Я пробовал разные методы решения этой проблемы, но они не работают.

В обоих случаях используется бумага формата Letterpaper, пользовательские поля сверху, снизу, слева и справа по 1,5 см, размер шрифта 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 пытается избегать переносов, и с длинными строками и довольно короткими словами ему это часто удается. Если вы хотите быстрый текст о том, как работают переносы, установите небольшую textwidth:

\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

Просто чтобы расширить свои комментарии и добавить несколько изображений. Я провел три теста:

  1. Использование Typst
    введите описание изображения здесь

  2. Использование LuaLaTeX сmicrotype введите описание изображения здесь

  3. Использование LuaLaTeX без микротипа. введите описание изображения здесь

Как и ожидалось, лучшие результаты были получены при использовании microtype. Конечно, лучшим тестом было бы использование узкой колонки, но я не знал достаточно о типографике, чтобы проверить это. Также было бы лучше использовать некоторые сложные для переноса абзацы, например из Frog King, а также регистрировать все параметры, влияющие на перенос.

В качестве отступления, вот также несколько комментариев о моем опыте работы с typst.

  1. Я установил его на Windows из репозитория github без каких-либо проблем (на Windows), и потребовалось меньше 2 минут, чтобы все заработало (10/10).
  2. Я использую Sublime в качестве редактора, и хотя у меня не было пакета для подсветки кода Typst, он создает чистый и читабельный код (8/10).
  3. Typst компилируется очень быстро (10/10).
  4. Я также посетил сервер Discord, и это был очень плохой опыт. Мне просто не очень нравится посещать Discord в целом и получать всплывающие окна с предложением купить нитро. Сообщество пока что кажется воодушевленным и поддерживающим. Есть много запросов на функции, которые в LaTeX считаются само собой разумеющимися. (6/10)
  5. Я также рассмотрел некоторые пакеты и, по моему скромному мнению, Typst вскоре столкнется с той же проблемой, что и Javascript, с экосистемой, которая приводит к нерешительности, путанице и дублированию. (5/10)
  6. В целом мне потребовалось менее 15 минут, чтобы научиться пользоваться typst и немного прочитать документацию. Я не смотрел видео, так как предпочитаю читать, а не смотреть видео, это намного быстрее. Я бы предпочел pdf в виде документов LaTeX doc/docstrip. Они привносят единообразие, IMHO, что лучше, чем онлайн-руководства. (8/10)
  7. IMHO, и для LaTeX, и для Typst будет очень легко разработать пакеты для перевода друг в друга, либо силами сообществ, либо pandoc.
  8. На данный момент и Typst, и LaTex являются лучшей альтернативой Word.

В общей обстановке снижения образовательных стандартов, усугубленной политическим руководством, предающимся пустой риторике, приятно видеть разработки, направленные на создание систем, которые могут помочь студентам и другим людям писать более качественные документы, а не твиты.

Связанный контент