XeTeX 中 \localleftbox 和 \localrightbox 的等效项

XeTeX 中 \localleftbox 和 \localrightbox 的等效项

在 Omega(和 Aleph)中有一对非常有用的命令,称为\localleftbox\localrightbox,它们会将其唯一参数的排版内容放在 DVI 文件中每个 TeX 行的左侧和右侧。这对于将元数据放入每个 DVI 行(例如段落编号、段落类型等)以及准确了解行的开始和结束位置非常有用。

以下是一个例子(用 Aleph 编译):

\documentclass{article}
\title{A Test Document}
\author{Me}
\usepackage{graphics,color}
\begin{document}
\localleftbox{\textcolor{red}{BLA}}
\localrightbox{\textcolor{red}{BLI}}
\maketitle
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula 
eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient 
montes, nascetur ridiculus mus. Donec quam felis, ultricies nec,
\localleftbox{}\localrightbox{}pellentesque eu, pretium quis, sem. 
Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, 
vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, 
justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt.
\end{document}

结果如下:在此处输入图片描述

请注意,在示例中,当我在 pellentesque 之前调用文本内的命令时,它们会立即影响段落(即,它们作用于行级别而不是段落级别)。

这些命令在 XeTeX 中不存在。我知道这可能只是一厢情愿,但是您知道还有其他方法可以达到同样的效果吗?我只需要在 XDV 文件中的每一行开头和结尾添加一个特殊字符,以及一些有关该行的元数据。这样我就可以解析 XDV 文件,并准确知道一行从哪里开始以及它是哪种类型的行。

答案1

xetex 没有任何与此接近的功能。

luatex 确实继承了它们(来自您的 omega 系统)。如果您需要 DVI 处理,您可以使用 dviluatex。唯一的问题是,如果您使用 OpenType 字体,DVI 格式的扩展方式与 xetex 的扩展不同,因此标准发行版中的任何 dvi 驱动程序都无法处理 dvi 文件。

然而,在 tugboat 中记录了 dvips 的实验性扩展,它支持 dviluatex,尽管我还没有尝试过。

来源:

https://github.com/vtex-soft/texlive.xdvipsk

TUGBoat 文章:

https://tug.org/TUGboat/tb38-2/tb119tolusis.pdf

相关内容