
У меня есть два требования. Я могу выполнить каждое из этих двух требований по отдельности, но мне не удалось их объединить.
Во-первых, мне нужно разрешить перенос слов с дефисом (например: "entendendo-se"), что по умолчанию невозможно. Пример:
enten-
dendo-se
или
en-
tendendo-se
Затем, когда слово переносится, если перенос строки происходит на тире, он должен добавить еще один тире в следующей строке (это правило португальского языка). Пример:
entendendo-
-se
Я знаю, что могу добиться первого, используя пакет extdash
, \-/
а второго могу добиться, определив макрос, который заменит тире на \discretionary{-}{-}{-}
.
Но как объединить оба требования в одном решении?
И наконец, хотя это и не обязательно, можно ли применить решение ко всем тире в какой-то части текста (чтобы мне не пришлось заменять каждое тире командой [или чем-то еще, что будет использоваться])?
PS: В настоящее время я использую компилятор XeLaTeX.
ИЗМЕНИТЬ с дополнительной информацией
Минимальный рабочий пример
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[portuguese]{babel}
\usepackage{hyphenat}
\begin{document}
\chapter{Exemplo}
Texto completamente aleatório, foi feito para demonstrar o porquê de entendendo-se não ser hifenizado corretamente.
\end{document}
В этом примере слово entendendo-se
разрывается на тире, но его можно было разорвать и раньше.
- Решение для моего первого требования — добавить
\usepackage[shortcuts]{extdash}
и заменитьentendendo-se
наentendendo\-/se
. Это необходимо, потому что LaTeX по умолчанию не разрывает слова, заключенные в тире. Вы увидите, что слово разрывается раньше (потому что LaTeX считает, что это делает первую строку красивее), и это одна из вещей, которую я хочу добиться. Слово выглядит так:enten- dendo-se
- Решение для моего второго требования будет заключаться в замене
entendendo-se
наentendendo\discretionary{-}{-}{-}se
. Вы увидите, что когда слово прерывается на тире, в следующей строке добавляется еще один тире (что является португальским правилом), и это мое второе требование. Слово выглядит так:entendendo- -se
. Пожалуйстапримечаниечто если слово не прерывается на тире, то никакого дополнительного тире добавлять не нужно!
Однако мне не удалось совместить оба варианта...
решение1
После нескольких проб и ошибок я нашел способ выполнить оба требования:
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[portuguese]{babel}
\usepackage{hyphenat}
\begin{document}
\chapter{Exemplo}
Texto completamente aleatório, foi feito para demonstrar o porquê de entendendo\babelhyphen{repeat}se não ser hifenizado corretamente.
\end{document}
Для большего удобства мы могли бы добавить \defineshorthand{"-}{\babelhyphen{repeat}}
в преамбулу и заменить entendendo-se
наentendendo"-se