当我读完 TeXbook 中的附录 D:Dirty Tricks 时,我重新思考一个问题:是否可以像这样对齐一些字符框:
输入可能是这样的:
\font\fortyeightrm=cmr10 at48pt
\font\twentyfourrm=cmr10 at24pt
\parindent=0pt
{\fortyeightrm A}|\twentyfourrm a b c d e f g h i j k l m n o p q r|
\bye
我们假设 TeX 在扫描大 的时候A
,会把那个字符框放在第一行的基线处。在扫描 的时候,|
会进入一个组,然后 TeX 会把字符框a
,b
,c
,……放在r
字符框轴线的上方然后下方A
(此时 TeX 可能会在一行的末尾插入换行符,比如在字符框 的后面i
)
我没有一个好的、简单的方法来解决这个问题。还有一个问题:是否可以旋转角色框(也许我们应该把它放进\hbox
)?
答案1
使用 48pt 和 24pt 字体不是一个好主意,因为相关的尺寸是大写字母的高度。所以我认为大写字母应该更大一点。
\font\highcapital=cmr10 at60pt
\font\twentyfourrm=cmr10 at24pt
\def\timlititle#1#2{%
\hbox{%
\setbox0=\hbox{\highcapital #1}%
\dimen0=\ht0
\box0\vbox to\dimen0{
\twentyfourrm
\def\\{\egroup\nointerlineskip\vss\hbox\bgroup\ignorespaces}%
\hbox\bgroup#2\egroup}%
}%
}
\hrule
\timlititle{A}
{a b c d e f g h i \\
j k l m n o p q r}
\bigskip
\font\highcapital=cmr10 at54pt
\hrule
\timlititle{A}
{a b c d e f g h i \\
j k l m n o p q r}
\bigskip
\font\highcapital=cmr10 at48pt
\hrule
\timlititle{A}
{a b c d e f g h i \\
j k l m n o p q r}
\bye
这些\hrule
命令只是显示框的垂直对齐。在 Computer Modern 中,“A”在顶部有相当大的超出部分,因此您可能需要添加一个小的修正来调整框的正确高度。
对于旋转盒子,您可以使用eplain
的工具来加载 LaTeXgraphicx
包:
\input eplain
\beginpackages
\usepackage{graphicx}
\endpackages
\rotatebox{-45}{Abcdef}
答案2
\font\fortyeightrm=cmr10 at48pt
\font\twentyfourrm=cmr10 at24pt
\hsize 3in
\def\foo#1|#2|{%
\setbox0\hbox{#1}%
\dimen0\ht0
\advance\dimen0\dp0
\divide\dimen0 2
\leavevmode\raise -\dimen0 \hbox{\smash{\copy0}}\vtop{\advance\hsize-\wd0 #2}}
\parindent=0pt
X\dotfill X
\bigskip
\foo
{\fortyeightrm A}|\twentyfourrm a b c d e f g h i j k l m n o p q r|
\bigskip
X\dotfill X
\bye