在页面上水平完全拉伸文本

在页面上水平完全拉伸文本

有没有一种方法可以将一行文本完全拉伸到页面的整个宽度,而无需手动设置字母间距,无论该行有多少个字符?

答案1

我假设当您引用“一行文本”时,您指的是单词之间的间距(或词间间距)。

如果一行中总能容纳下字符数,则可选的s对齐参数\makebox会插入足够的词间间距拉伸以填充框。如果文本大于框宽度,\hbox则会生成过满警告:

在此处输入图片描述

\documentclass{article}
\setlength{\parindent}{0pt}% Just for this example.
\begin{document}
\makebox[\linewidth][s]{Here is some text.} \par
\makebox[\linewidth][s]{Here is some more text.} \par
\makebox[\linewidth][s]{Here is a whole whack of text, plus some punctuation.} \par
\makebox[\linewidth][s]{Here is a whole whack of text, plus some punctuation, and then some more text.} \par
\makebox[\linewidth][s]{Here is a whole whack of text, plus some punctuation, and then some more text, and nothing else.} \par
\end{document}​

最后一行超出了文本边距。在上面的最小工作示例 (MWE) 中,用 替换\linewidth\textwidth可以。


对于字母间距,soul包裹可以有所帮助。你可以通过以下命令定义自己的字母间、内部和外部空间\sodef{<cmd>}{<font>}{<inter-letter>}{<inner space>}{<outer space>}

在此处输入图片描述

\documentclass{article}
\usepackage{soul}% http://ctan.org/pkg/soul
\setlength{\parindent}{0pt}% Just for this example.
\begin{document}
\sodef\spaceout{}{0pt plus 1fil}{.4em plus 1fil}{0pt}
\makebox[\linewidth][l]{\spaceout{Here is some text.}} \par
\makebox[\linewidth][l]{\spaceout{Here is some more text.}} \par
\makebox[\linewidth][l]{\spaceout{Here is a whole whack of text, plus some punctuation.}} \par
\makebox[\linewidth][l]{\spaceout{Here is a whole whack of text, plus some punctuation, and then some more text.}} \par
\makebox[\linewidth][l]{\spaceout{Here is a whole whack of text, plus some punctuation, and then some more text, and nothing else.}} \par
\end{document}​

由于我不熟悉这种修改,因此这只是一个入门指南。soul包装文档(部分3 字母间距(第 8 页起)充满了例子。

我敢肯定microtype也能够满足您的需求。

答案2

spread作为对框指令的命令,tex 内置了该指令(texbook,第 77 页):

\documentclass{article}
\begin{document}
\hbox spread \linewidth{Here is some text.}
\end{document}

文字扩展到线宽

答案3

使用soul

在此处输入图片描述

\documentclass{article}


\usepackage{soul}
\sodef\ugg{}{.4em plus 1fill}{1em plus 2 fill}{2em plus 2fill minus.1em}

\begin{document}


\noindent\ugg{one two three\\four five six}

\end{document}

答案4

ConTeXt 中有用\stretched于此目的的宏。例如:

\starttext
    \stretched{Here is some text}
\stoptext

结果

相关内容