对齐行间和非行间文本

对齐行间和非行间文本

对于直行文本,代码如 egreg 的这里比 expex 之类的包更适合我的工作流程;然而,保持行间文本和非行间文本对齐(在基线上)已被证明是困难的。

\newcommand\wrd[2]{%
  \leavevmode
  \vbox{\offinterlineskip
    \halign{%
      \hfil##\hfil\cr
      {\footnotesize\sffamily\vphantom{p}#1}\cr
      \noalign{\vskip\lineskip}%
      \vphantom{A}#2\cr
    }%
  }%
}

我尝试用 \vrule 替换 \vphantom固定的高度(因此没有 \strut):(a)即使我需要降低注释的字体大小,也要保持文本对齐,即将 #2 替换为 \footnotesize#2(b)尝试匹配非直行文本,该文本甚至与其自身对齐(在双列模式下最明显)。

梅威瑟:

\documentclass{scrbook,fontsize=10pt}

\usepackage{fontspec}
\setmainfont{Linux Libertine O}

\usepackage{fix-cm}%attempt to rule out issues with the font
\usepackage{lipsum}

\raggedbottom
\raggedright

\newcommand\wrd[2]{%
  \leavevmode
  \vbox{\offinterlineskip
    \halign{%
      \hfil##\hfil\cr
      {{\vrule height 8pt depth 4pt width 0pt}#1}\cr
      \noalign{\vskip\lineskip}%
      {\vrule height 8pt depth 4pt width 0pt}#2\cr
    }%
  }%
}

\begin{document}

\twocolumn

{\footnotesize 1:1}
\wrd{Align}{with}
\wrd{interlinear text}{non-interlinear text -->}

{\footnotesize 1:2}
\wrd{Align}{with}
\wrd{interlinear text}{non-interlinear text -->}

{\footnotesize 1:3}
\wrd{Align}{with}
\wrd{interlinear text}{non-interlinear text -->}

{\footnotesize 1:4}
\wrd{Align}{with}
\wrd{interlinear text}{non-interlinear text -->}

{\footnotesize 1:5}
\wrd{Align}{with}
\wrd{interlinear text}{non-interlinear text -->}

\lipsum

\end{document}

看来,不用其中一个网格包就应该可以实现上述对齐,但我不会使用它。

相关内容