Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
最近在思考实现一个宏包,所以看的tex内容较多,顺便把它们翻译出来了。术语与已有内容保持基本统一,比如页面构建器,备选内容,主竖直列等等。
想写一个宏包,其实是很早之前的想法,最近准备开始实施了。
目的是实现一个版心内的注。即把注不放到页脚,也不放到页边,而是放到版心内,(严格说脚注也在版心内,但它已经不属于正文那部分了)。
比如当前页正文行文中插入\textnote{《春晓》,唐诗,作者孟浩然},然后在当前页面版心右下角占据一半行宽的栏内放入这一注的内容。
布局形式上这可以称为文注混排,有点像图文混排,可以把放注的盒子看做混排的图。又有点像局部的双栏,或双栏语言对照或者代码效果对照,这里可以参考wrapfig,multicol,paralist等。如果放注的盒子的位置没有强制要求,比如直接在注所在段落旁边,那么这种形式,参考上述宏包,利用tex的段落形状的机制应该就可以实现。
但如果要强制要求盒子的位置,比如一定要放到页面版心底部,那么就需要考虑实现的机制。首先想到的是类似浮动体的机制,利用insertion,可以向脚注或者浮动体的一样,在版心底部插入,但这个时候插入的盒子是完全占满整个行空间的,也就是无法体现出文注混排的形式。难点在这里。
要求将放注的盒子在版心底部一侧占据一定的空间,而正文在其左侧正常排,这种情况还可以用另外一种思路来实现,就是利用页面布局,如果存在非矩形的版心布局,而是矩形缺一角(这一角在底部是一个小矩形)的布局,那么正文正常排版,而把注独立出来,利用页面的定位,把它放入小矩形所在位置即可,但是目前还没有缺一角这种页面布局的方法。而且每一页注的大小可能不一样,所以全局的设置页面布局也存在问题。
页面布局不容易实现,那么只能考虑用类似浮动体的方法,而且需要改进。想象一下,把注的内容作为一个插入项,计算其盒子的尺寸并记录。如果这个盒子占据一半的行宽,假设盒子的宽为w,高为h,那么插入页面后,实际影响页面的高度为h,但是影响正文排版的高度为0,只是影响了正文h高度的行宽。如果这是一个浮动体,那么将影响h高度的内容即影响h2w的文字内容,将这一部分内容移除,留出高度h的空间插入即可。但现在仅需要移除一半,因为剩下的一半还需要排h/2高的页面空间(需要排成hw)。现在的思路是把h/2的内容取出来,做一半行宽段落形状,然后在其旁边插入放注的盒子。所以这里涉及到分页的机制,插入的机制,以及tex的逻辑,不知道能否实现,如果有些机制利用不起来,估计都实现不了。所以我想顺便放出来讨论一下。