Estou compondo (lualatex) um documento em alguns idiomas. O idioma principal é o inglês. Se eu usar outras linguagens, geralmente uso comandos como \foreigntextquote{french}{text}
e \foreignlanguage{german}{text}
, esperando que isso resolva algumas coisas e, em particular, a hifenização. Eu também poderia gerenciar,com alguma ajuda, a hifenização do grego antigo ( polutonikogreek
).
O meu principal problema agora é que algumas línguas que não estão escritas no alfabeto latino são por vezes utilizadas na transliteração. Por exemplo, em árabe, eu às vezes (geralmente no corpo principal do texto) escrevia,yaštarikuem vez de يشترك oual-muta'allimem vez de المتعلّم.
Mas como posso conseguir hifenizar essas transliterações?
Eles não são uma língua “conhecida” (pelo menos não na transliteração). Não sei se existem regras estabelecidas e presumo que, mesmo que existam, elas não foram integradas babel
. Às vezes as palavras têm até um travessão sozinhas (devido ao artigoal-), que é um problema conhecido (mas também existem algumas soluções).
Mas geralmente, a minha pergunta é esta: Como não posso declarar no meu preâmbulotodospalavras que usarei na transliteração (o comando \hyphenation{...}
seria muito lang; isso seria uma loucura), gostaria de saber se existe uma maneira de talvezaleatoriamentehifenizar aquelas palavras que babel
não sabe hifenizar ou uma maneira fácil de criar uma nova linguagem de hifenização e declarar suas regras? Ou existe alguma outra recomendação sobre como hifenizar todas essas palavras transliteradas?
Sem solução, meu documento contém várias palavras escritas nas margens ou linhas cujo espaço entre palavras é muito grande.
Na verdade, este deveria ser um problema urgente para a composição tipográfica em todas as humanidades, pois os editores tendem a usar a transliteração em suas publicações. Não sei como os editores lidam com isso.
Responder1
Aqui está uma solução bastante grosseira, que apenas insere a \-
entre uma vogal e algumas consoantes:
\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}