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