我一直在寻找以下排版问题的更优雅的解决方案。考虑在打印介质中找到的那些横幅,其中文本对齐如下:
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}
答案 0 :(得分:2)
首先,请阅读:http://www.tex.ac.uk/cgi-bin/texfaq2html?label=letterspace。根据您的具体情况,该常见问题解答中的软件包和建议可能就足够了。
另外,请查看graphicx包中的\scalebox
和\resizebox
命令。他们按照名字的意思行事。
答案 1 :(得分: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英寸小一点,但两行文本确实缩放到相同的数量。
答案 2 :(得分:1)