在每条(基线)线上放置 TikZ 坐标或 \zlabel

在每条(基线)线上放置 TikZ 坐标或 \zlabel

我目前正在调整显示的代码测试某个段落是否有分页符? 使用 TikZ 支持下划线和高亮显示,类似如下LaTeX 中的酷炫文本突出显示,但不需要soul或任何其他影响文本排版的包。

为此,我overlay,remember picture在开始和结束时放置了一个 TikZ 坐标(使用),并使用它来绘制线条。目前,我只是通过添加\baselineskip到第一个标记的 Y 坐标(或从第二个标记中减去它,如果它们之间有分页符)来计算中间线的基线。这对于普通文本很有效,但如果行距不等于,则会导致错误的位置,\baselineskip例如由于行上的元素过高而导致。

是否有可能在 TeX 生成的每一行上自动放置这样的 TikZ 标记?除此之外,我还可能使用\zlabel该包中的标记来确定页面。我搜索了一下zrefTeXBook并查看了源代码,lineno但都没有成功。只有当线高于正常值时才添加标记就足够了。(我目前的有趣的想法TM解决这个问题的方法是让一些常用字母活跃起来,但我尽量避免这种花招。)

答案1

我不认为在 TeX 中可以做到这一点,因为它的段落构建方式。不幸的是,没有\everyline参数。

可以尝试排版段落,\vbox然后将其拆开,在每一行添加代码,参见这个答案

我相信这可以用 LuaTeX 解决。

答案2

我在gmdoc-enhance包中实现了类似的东西,在每个注释行上都有前导%符号。它使空格字符处于活动状态,并在原则上扩展为\discretionary{}{\gmde@kommentarStart}{}~,其中\gmde@kommentarStart 放置了一个 \hbox,其中包含我想要显示的内容。

这里的问题是,\gmde@kommentarStart将针对每个空格进行评估,不仅针对那些创建换行符的空格,而且仅针对框实际上会出现在输出中的空格。此外,我必须确保没有其他换行符发生,这会破坏 TeX 的大部分换行算法(即我基本上不需要\raggedright断字)。这对于我的用例来说是可以接受的,但可能不适合您。

我不确定它如何与 TikZ 一起工作(从未使用过它)。

(该软件包的文档是德文的,如果有人需要更多详细信息,请评论。)

相关内容