2

我一直在为以下排版问题寻找更优雅的解决方案。考虑在印刷媒体中发现的那些文本对齐的横幅,例如:

B    I    G        T   E   X   T
small text small text small text
m o r e    m e d i u m   t e x t

调整字体大小,以便为较长的文本行缩小高度,使每行具有相等的宽度。我编写了一个小脚本,它分别运行每一行、编译、裁剪生成的 pdf,然后将\includegraphics每行放在一个表格中。这会产生预期的效果,但需要外部脚本和 pdfcrop(仅裁剪到白色边界框)。由于大部分 LaTeX 都是自我意识的,我想它可以识别一个框的宽度并适当地缩放它,以便任何文本完全适合所需的宽度。

关于纯 LaTeX 实现如何工作的任何想法或想法?

编辑作为 AVB 建议解决方案的补充(因为评论中的大代码看起来很糟糕),我已经在使用的代码下面发布了,以便其他人可以轻松找到它。

\documentclass[]{article}
\usepackage[pdftex]{graphicx}
\begin{document}
\begin{table}[l]
\resizebox{10cm}{!}{BIG Text} \\
\resizebox{10cm}{!}{small text small text small text} \\ 
\resizebox{10cm}{!}{Medium Text Medium Text}
\end{table} \end{document} 
4

3 回答 3

3

首先,阅读 TeX 常见问题解答条目,标题为更改字母之间的空间。根据您的情况,该常见问题解答中的软件包和建议可能就足够了。

另外,请查看包中的\scaleboxand\resizebox命令graphicx。他们做的就是名字所暗示的。

于 2010-04-16T04:26:19.083 回答
2

我确信这可以改进,并且由于不同大小的不同字体实现,所以它不会是准确的,但这是一个快速而肮脏的方法:

\documentclass[10pt]{article}

\usepackage{pgfmath}
\usepackage{anyfontsize}


\newlength{\mywidth}
\newlength{\testwidth}
\setlength{\mywidth}{4in}
\newcommand{\fixedwidth}[1]{%
\settowidth{\testwidth}{#1}%
\pgfmathsetmacro{\x}{round(\mywidth/\testwidth * 10)}%
\pgfmathsetmacro{\y}{round(\mywidth/\testwidth * 15)}%
\bgroup\fontsize{\x pt}{\y pt}\selectfont#1\egroup}

\begin{document}

\fixedwidth{hello world}

\fixedwidth{greetings earthlings}
\end{document}

在实践中,它比 4 英寸小一点,但两行文本确实被缩放到相同的数量。

于 2010-04-16T08:39:03.617 回答
1

查看包textfit。用法:

\scaletowidth{width}{text}

或者

\scaletoheight{height}{text}
于 2010-04-16T16:15:53.603 回答