通过LaTeX中的表格改变字体高度

时间:2010-04-15 21:44:09

标签: latex typesetting

我一直在寻找以下排版问题的更优雅的解决方案。考虑在打印介质中找到的那些横幅,其中文本对齐如下:

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} 

3 个答案:

答案 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)

查看包textfit。用法:

\scaletowidth{width}{text}

\scaletoheight{height}{text}