LaTeX 设置自动换行不拉伸前一行

LaTeX 设置自动换行不拉伸前一行

我确信这是一些基本的 LaTeX 文档格式,但就我而言,我就是无法在文档中找到正确的位置来实现我想要的正确方法。

考虑以下 MWE:

\documentclass[12pt]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}

\sloppypar

\begin{document}
    Some normal line followed by a cyrillic long word многодългадуманакирилицабезпренасяне
\end{document}

我知道\sloppypar这是一种不好的做法,但它确实以可接受的方式处理了我的大多数警告和文档缺陷,所以我现在坚持这样做。

此示例编译时会发出Underfull \hbox (badness 10000) in paragraph at lines 9--10警告,这是可以理解的,因为 LaTeX 没有关于如何对有问题的西里尔字母单词进行连字符处理的说明,因此将其放在一个全新的行上,同时尝试拉伸前一行,最终结果为Underfull。我明白了。(顺便说一句,这不是俄语,而是保加利亚语,我没有找到任何用于该语言的连字符包……因此也欢迎对此提出建议)。

本质:我现在真的没有时间重新格式化整个文档,所以我想指示 LaTeX 不要尝试拉伸前一行(基本上在\\需要的地方像 with 一样将其断开),这现在完全让我满意。因此文档应该看起来像它的内容如下:

\documentclass[12pt]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}

\sloppypar

\begin{document}
    Some normal line followed by a cyrillic long word\\ многодългадуманакирилицабезпренасяне
\end{document}

现在,我实际上正在修复出现此问题的几个地方(大概 10 或 15 行),通过手动添加,我知道这很糟糕并且从长远来看难以管理,所以我真的很高兴得到一些关于如何强制执行这种行为的说明(如果可能的话\\结合)。\sloppypar

提前谢谢了!

答案1

我很惊讶没有人建议使用“自由连字符”。自由连字符\-在单词中适合使用连字符的位置输入为反斜杠连字符 ( )。

在英语文本中,有时需要使用自由连字符,因为可以且应该用连字符连接的单词无法自动用连字符连接,因为 (La)TeX 无法区分它是动词还是名词,并且根据单词是用作动词还是名词,断字的位置应该有所不同,例如“ pro\-gress”(动词)与“ prog\-ress”(名词)。

让我们用你的长西里尔字母尝试一下:

много\-дълга\-дума\-на\-кирилица\-без\-пре\-насяне

(La)TeX 将选择在当前段落内提供最佳间距的换行符。

(请不要认为这完全正确。我对保加利亚语的掌握相当不稳定;我可能对俄语掌握得更好。)

附录:

原帖作者在评论中指出,相关文档包含的保加利亚语文本不止一点点。在这种情况下,这种方法几乎肯定是更好的选择:

\usepackage[bulgarian]{babel}

@leandris 在评论中提出了以下内容:

\documentclass[12pt]{article}
 \usepackage[T2A]{fontenc}
 \usepackage[utf8]{inputenc}
 \usepackage[english]{babel}
% \sloppypar
\begin{document}
Some normal line followed by a cyrillic long word
\foreignlanguage{bulgarian}{многодългадуманакирилицабезпренасяне}
\end{document}

我建议检查babel文档以确定如何处理“其他”语言的更广泛的包。

答案2

TeX 多年来一直支持多种语言。

\documentclass[12pt]{article}

\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[bulgarian,english]{babel}

\usepackage{showframe} % to show page margins

\begin{document}

Some normal line followed by a cyrillic long word 
\foreignlanguage{bulgarian}{многодългадуманакирилицабезпренасяне}

\end{document}

在此处输入图片描述

如果您的文档主要为保加利亚语,并包含英文文本,请交换:

\documentclass[12pt]{article}

\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,bulgarian]{babel}

\usepackage{showframe} % to show page margins

\begin{document}

\foreignlanguage{english}{Some normal line followed by a cyrillic long word} 
многодългадуманакирилицабезпренасяне

\end{document}

如果因为复合词而不喜欢这种连字符,您可以使用"=设置复合词边界。这是结果,也是此情况下的完整连字符。

\documentclass[12pt]{article}

\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,bulgarian]{babel}

\usepackage{showframe} % to show page margins

\begin{document}

\foreignlanguage{english}{Some normal line followed by a cyrillic long word}
многодългадумана"=кирилицабезпренасяне

\parbox[t]{0pt}{\hspace{0pt}многодългадуманакирилицабезпренасяне}

\end{document}

在此处输入图片描述

来自以下文档babel-bulgarian

在此处输入图片描述

请注意,‘‘实际上应该是"(无向双引号),因此真正的简写是

"-
""
"~
"=
",

相关内容