Я набираю (lualatex) документ на нескольких языках. Основной язык — английский. Если я использую другие языки, то обычно использую такие команды, как \foreigntextquote{french}{text}
и \foreignlanguage{german}{text}
, надеясь, что это уладит пару вопросов, в частности, расстановку переносов. Я также мог бы справиться,с некоторой помощью, перенос древнегреческого языка ( polutonikogreek
).
Моя главная проблема сейчас в том, что некоторые языки, которые не пишутся на латинице, иногда используются в транслитерации. Например, в арабском языке я иногда (обычно в основном тексте) пишу,яштарикувместо يشترك илиаль-мута'аллимвместо المتعلّم.
Но как мне сделать так, чтобы эти транслитерации были разделены дефисами?
Они не являются "известным" языком (по крайней мере, не в транслитерации). Я не знаю, существуют ли установленные правила, и предполагаю, что даже если они есть, они не были интегрированы в babel
. Иногда слова даже имеют тире сами по себе (из-за артикляаль-), что является известной проблемой (но есть и некоторые решения).
Но в целом мой вопрос таков: поскольку я не могу заявить в своей преамбуле,всеслова, которые я буду использовать в транслитерации (команда \hyphenation{...}
будет слишком длинной; это было бы просто безумием), я хотел бы узнать, есть ли способ, возможно,случайнопереносить те слова, которые babel
не умеют переносить или простой способ создать новый язык переносов и объявить его правила? Или есть ли какие-либо другие рекомендации, как переносить все эти транслитерированные слова?
Без решения моей проблемы в моем документе есть ряд слов, написанных на полях или в строках, межсловное расстояние в которых слишком велико.
Это должно быть актуальной проблемой для набора текста во всех гуманитарных науках, поскольку издатели склонны использовать транслитерацию в своих публикациях. Я не знаю, как издатели с этим справляются.
решение1
Вот довольно грубое решение, которое просто вставляет a \-
между гласной и некоторыми согласными:
\documentclass{article}
\usepackage{luacode}
\begin{luacode*}
function insdisc (s)
-- add more letters if necessary
s = s:gsub( [[([aeiou])([bcfgklmnpqtxz])]] , '%1\\-%2' )
-- but don't leave a single char alone:
s = s:gsub( '^(.)\\%-', '%1')
s = s:gsub( '\\%-(.)$', '%1')
return s
end
\end{luacode*}
\def\insdisc#1{\directlua{tex.print(insdisc(\luastring{#1}))}}
\begin{document}
\hsize1mm
Text \insdisc{umiq'utzexopab} umiq'utzexopab text text text text text
text text text text text text text text text text text text.
\end{document}