Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Translation of Chapter 28 & 29 #9

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

hushidong
Copy link
Contributor

最近在思考实现一个宏包,所以看的tex内容较多,顺便把它们翻译出来了。术语与已有内容保持基本统一,比如页面构建器,备选内容,主竖直列等等。

想写一个宏包,其实是很早之前的想法,最近准备开始实施了。
目的是实现一个版心内的注。即把注不放到页脚,也不放到页边,而是放到版心内,(严格说脚注也在版心内,但它已经不属于正文那部分了)。
比如当前页正文行文中插入\textnote{《春晓》,唐诗,作者孟浩然},然后在当前页面版心右下角占据一半行宽的栏内放入这一注的内容。

布局形式上这可以称为文注混排,有点像图文混排,可以把放注的盒子看做混排的图。又有点像局部的双栏,或双栏语言对照或者代码效果对照,这里可以参考wrapfig,multicol,paralist等。如果放注的盒子的位置没有强制要求,比如直接在注所在段落旁边,那么这种形式,参考上述宏包,利用tex的段落形状的机制应该就可以实现。

但如果要强制要求盒子的位置,比如一定要放到页面版心底部,那么就需要考虑实现的机制。首先想到的是类似浮动体的机制,利用insertion,可以向脚注或者浮动体的一样,在版心底部插入,但这个时候插入的盒子是完全占满整个行空间的,也就是无法体现出文注混排的形式。难点在这里。

要求将放注的盒子在版心底部一侧占据一定的空间,而正文在其左侧正常排,这种情况还可以用另外一种思路来实现,就是利用页面布局,如果存在非矩形的版心布局,而是矩形缺一角(这一角在底部是一个小矩形)的布局,那么正文正常排版,而把注独立出来,利用页面的定位,把它放入小矩形所在位置即可,但是目前还没有缺一角这种页面布局的方法。而且每一页注的大小可能不一样,所以全局的设置页面布局也存在问题。

页面布局不容易实现,那么只能考虑用类似浮动体的方法,而且需要改进。想象一下,把注的内容作为一个插入项,计算其盒子的尺寸并记录。如果这个盒子占据一半的行宽,假设盒子的宽为w,高为h,那么插入页面后,实际影响页面的高度为h,但是影响正文排版的高度为0,只是影响了正文h高度的行宽。如果这是一个浮动体,那么将影响h高度的内容即影响h2w的文字内容,将这一部分内容移除,留出高度h的空间插入即可。但现在仅需要移除一半,因为剩下的一半还需要排h/2高的页面空间(需要排成hw)。现在的思路是把h/2的内容取出来,做一半行宽段落形状,然后在其旁边插入放注的盒子。所以这里涉及到分页的机制,插入的机制,以及tex的逻辑,不知道能否实现,如果有些机制利用不起来,估计都实现不了。所以我想顺便放出来讨论一下。

最近在思考实现一个宏包,所以看的tex内容较多,顺便把它们翻译出来了。术语与已有内容保持基本统一,比如页面构建器,备选内容,主竖直列等等。

想写一个宏包,其实是很早之前的想法,最近准备开始实施了。
目的是实现一个版心内的注。即把注不放到页脚,也不放到页边,而是放到版心内,(严格说脚注也在版心内,但它已经不属于正文那部分了)。
比如当前页正文行文中插入\textnote{《春晓》,唐诗,作者孟浩然},然后在当前页面版心右下角占据一半行宽的栏内放入这一注的内容。

布局形式上这可以称为文注混排,有点像图文混排,可以把放注的盒子看做混排的图。又有点像局部的双栏,或双栏语言对照或者代码效果对照,这里可以参考wrapfig,multicol,paralist等。如果放注的盒子的位置没有强制要求,比如直接在注所在段落旁边,那么这种形式,参考上述宏包,利用tex的段落形状的机制应该就可以实现。

但如果要强制要求盒子的位置,比如一定要放到页面版心底部,那么就需要考虑实现的机制。首先想到的是类似浮动体的机制,利用insertion,可以向脚注或者浮动体的一样,在版心底部插入,但这个时候插入的盒子是完全占满整个行空间的,也就是无法体现出文注混排的形式。难点在这里。

要求将放注的盒子在版心底部一侧占据一定的空间,而正文在其左侧正常排,这种情况还可以用另外一种思路来实现,就是利用页面布局,如果存在非矩形的版心布局,而是矩形缺一角(这一角在底部是一个小矩形)的布局,那么正文正常排版,而把注独立出来,利用页面的定位,把它放入小矩形所在位置即可,但是目前还没有缺一角这种页面布局的方法。而且每一页注的大小可能不一样,所以全局的设置页面布局也存在问题。

页面布局不容易实现,那么只能考虑用类似浮动体的方法,而且需要改进。想象一下,把注的内容作为一个插入项,计算其盒子的尺寸并记录。如果这个盒子占据一半的行宽,假设盒子的宽为w,高为h,那么插入页面后,实际影响页面的高度为h,但是影响正文排版的高度为0,只是影响了正文h高度的行宽。如果这是一个浮动体,那么将影响h高度的内容即影响h*2w的文字内容,将这一部分内容移除,留出高度h的空间插入即可。但现在仅需要移除一半,因为剩下的一半还需要排h/2高的页面空间(需要排成h*w)。现在的思路是把h/2的内容取出来,做一半行宽段落形状,然后在其旁边插入放注的盒子。所以这里涉及到分页的机制,插入的机制,以及tex的逻辑,不知道能否实现,如果有些机制利用不起来,估计都实现不了。所以我想顺便放出来讨论一下。
@Liam0205
Copy link
Contributor

@hushidong bbs.ctex.org 挂了,这个 issue 让我觉得还是需要一个新的讨论区的……

@hushidong
Copy link
Contributor Author

是的,没有好的地方放。

@Liam0205
Copy link
Contributor

内容有点多,review 有点慢哈……

@Liam0205 Liam0205 changed the title Master最近在思考实现一个宏包,所以看的tex内容较多,顺便把它们翻译出来了。术语与已有内容保持基本统一,比如页面构建器,备选内容,主竖直列等等。 Translation of Chapter 28 & 29 Jan 23, 2019
@hushidong
Copy link
Contributor Author

感谢,,写的有点糙,就是要好好检查一下。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants