LaTeX 不会在句号前或句号后插入换行符.
我理解你为什么想避免在句号前换行,因为否则你会在句子末尾看到多余的句号。我认为在句号后不允许换行也是有充分理由的(也许是为了避免拆分缩写,例如e.g.
)
但有时你做希望能够在句号后换行,或者至少允许在该处换行。例如,在语言学中,外语中的单词通常使用明确解释的形态来注释,语法代码用句号分隔,没有空格,例如f.dat.sg.indef
。在以下示例中,换行应为'f.dat.sg. - indef'.
有没有办法在 LaTeX 中使用这种“可中断句号”?
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
Abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd ab `f.dat.sg.indef'.
\end{document}
答案1
简单的应用expl3
:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\gloss}{m}
{
\tl_set:Nn \l_tmpa_tl { #1 }
\tl_replace_all:Nnn \l_tmpa_tl { . } { .\- }
`\tl_use:N \l_tmpa_tl'
}
\ExplSyntaxOff
\begin{document}
Abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd ab `f.dat.sg.indef'.
Abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd ab \gloss{f.dat.sg.indef}.
\end{document}
我们只是将每个句号替换为.\-
(带有可选连字符)。
如果你必须遵守不关心读者的规则,那么
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\gloss}{m}
{
\tl_set:Nn \l_tmpa_tl { #1 }
\tl_replace_all:Nnn \l_tmpa_tl { . } { .\discretionary{}{}{} }
`\tl_use:N \l_tmpa_tl'
}
\ExplSyntaxOff
\begin{document}
Abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd abcd ab \gloss{f.dat.sg.indef}.
\end{document}
会做。
答案2
LaTeX 通常会在句号(空格处)后中断。如果您有专门的用法,其中没有后续空格,一种简单的方法是使用url
包和
\url{f.dat.sg.indef}
或手动
f.\linebreak[0]dat.\linebreak[0]sg.\linebreak[0]indef}