在纯 TeX 中对齐框和旋转框

在纯 TeX 中对齐框和旋转框

当我读完 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 会把字符框abc,……放在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

相关内容