葡萄牙语:在明确带连字符的单词中,在连字符处换行

葡萄牙语:在明确带连字符的单词中,在连字符处换行

在葡萄牙语中,许多单词都明确带有连字符,例如“anti-inflamatório”。

根据葡萄牙语连字符规则,如果行在连字符处断开,则应添加另一个连字符作为下一行的开头(否则我们会和其他人一样……)。

例 1:“正常”连字的示例:

Necessito de pensar em tomar um anti-infla-
matório e bem depressa.

示例 2:在连字符处连字符的示例(请注意下一行中的额外连字符):

Necessito de pensar em tomar um anti-
-inflamatório e bem depressa.

我怎样才能实现示例 2 的行为?(默认情况下,Babel 不会在下一行添加额外的连字符……)

谢谢。

若昂·洛伦索

答案1

最近的babel(> = 3.37)luatex可以为您完成此操作:

\documentclass{article}

\usepackage[portuguese]{babel}

\babelposthyphenation{portuguese}{.=.}{
  {},
  { no = -, pre = -, post = -, data = 1 },
  {}
}

\begin{document}

Necessito de pensar em tomar um anti-inflamatório e bem depressa.

zzz zzz zzz zzz zzz zzz zzz zzz zzz
Necessito de pensar em tomar um anti-inflamatório e bem depressa.

\end{document}

这里,\babelposthyphenation定义了一个非标准的连字符规则。目前代码效率不高,但很多情况下很难注意到。有关详细信息,请参阅使用 luatex 进行非标准连字符连接

编辑。现在babel为此任务提供了一个预定义的转换,可以使用以下前言启用它:

\documentclass{article}
\usepackage[portuguese]{babel}
\babelprovide[transforms = hyphen.repeat]{portuguese}

答案2

在此处输入图片描述

\documentclass{article}

\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\newcommand\x[1]{\discretionary{#1}{#1}{#1}}
\begin{document}

Necessito de pensar em tomar um anti\x-inflamatório e bem depressa.

zzz zzz zzz zzz zzz zzz zzz zzz zzz
Necessito de pensar em tomar um anti\x-inflamatório e bem depressa.

\end{document}

答案3

对于那些使用hyphenat包的人,根据以前答案的线索(谢谢!),我想出了以下方法来实现\hyp命令中的双连字符(针对hyphenat2009/09/02 v2.3c):

\documentclass{article}

\usepackage[portuguese]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{hyphenat}

%% hacking \hyp command from hyphenat to double hyphen
\makeatletter
\renewcommand{\BreakableHyphen}{\leavevmode%
  \prw@zbreak-\discretionary{}{-}{}\prw@zbreak}
\makeatother

\begin{document}

Necessito de pensar em tomar um anti\hyp{}inflamatório e bem depressa.

zzz zzz zzz zzz zzz zzz zzz zzz 
Necessito de pensar em tomar um anti\hyp{}inflamatório e bem depressa.

zzz zzz zzz zzz zzz zzz zzz zzz zzz
Necessito de pensar em tomar um anti\hyp{}inflamatório e bem depressa.

\end{document}

上述代码的输出

答案4

这个\discretionary解决方案很好用,但我发现每次都要输入 a 有点麻烦\command{}。所以当我写论文时,我做了一些修改,以便可以使用'-快捷方式:

\documentclass{article}
\usepackage[utf8]{inputenc}
    
%\usepackage[brazil]{babel}    % works for both
\usepackage[portuguese]{babel} % works for both
    
\begin{document}
    
\defineshorthand{"-}{\nobreak\hskip0pt\discretionary{-}{-}{-}\nobreak\hskip0pt}
\chardef\singlequote=`\'
\catcode`\'=\active
\def'#1{\ifmmode\text{\singlequote}\else\ifx#1-"-\else\singlequote#1\fi\fi}
    
Anti'-inflamatório. Circum'-navegação. xxxxxxx xxxxxx xxxx xxxxxx
Pré'-industrial. nononononon no Anti'-inflamatório. Circum'-navegação.
Pré'-industrial. 
    
\end{document}

我说的“黑客”是指有人向我展示了如何使用"-作为快捷方式,然后我反复试验,将其改为'-。我不确定如何它确实有用,但我可以用它完成我的论文。欢迎提出改进建议。

上述代码片段的呈现方式如下:

在此处输入图片描述

相关内容