-
Notifications
You must be signed in to change notification settings - Fork 125
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
关于jiazhu宏包竖排时折行的夹注丢失一部分的问题 #616
Comments
通过 请试着将 |
问题分析中易仿宋的字身高是 85.9375%,用 这时候,你再用 % 夹注是一个三行的自然段,装着夹注内容的盒子大概长这样
第一行㊀㊁㊂㊃
㊄㊅第二行㊆㊇
㊈㊉剩余的夹注内容全部在第三行等着被折行 宏包接下来会尝试分离出两行的内容,更准确的说法是「分离出高度为 200% 的内容」。但因为第一行高到 115%,前两行加在一起就有 215%,取出两行内容就会溢出。所以,TeX 只会分离出第一行: % 因为太高,只能分离出第一行,装进 \l__jiazhu_typeset_box
第一行㊀㊁㊂㊃
% 剩下的部分留在 \l__jiazhu_text_box 里面
㊄㊅第二行㊆㊇
㊈㊉剩余的夹注内容全部在第三行等着被折行 接下来的工作就是:
第一步里面的 repackage 会做底部对齐。第二步只会取出 复现例子抬高 29%,并且设置夹注为三行,考虑一个跨三行正文的长夹注: % Expected result:
㈩㈨㈦ ㈤㈢㊆ 正
︒︐㈧ ︙︙︙ 文
正 ︙︙㈠ ㊄㊂㊀
文 ㈥㈣㈡ ㊅㊃㊁
% Actual result:
㈩㈨㈦ ㈢㊆ 正
︒︐㈧ ︙︙ 文
正 ︙㈠ ㊂㊀
文 ㈣㈡ ㊃㊁ |
@chenxiao445566 我看你已经试过注释掉 我想多啰嗦几句:这个 横排的时候,各个厂家的字身高度不尽相同;竖排的时候,其实就根本没有这个问题,此时所有厂家的汉字皆被放置在基线对称的位置上。 既然可以竖排,就说明文本内容是以汉字为主的,而文本中出现的拉丁字母(英文)、数字必然是少量的。能够转正的英文(如缩写)、数字(如单位数或双位数的月份日期)都是正立着竖排下去,长一点的数字如四位数的年份会把阿拉伯数字改写成汉字然后也是正立着竖排下去。真正「侧躺九十度」的只是一些零散的英文单词。 所以,如果你要匹配这些侧躺英文单词跟汉字的关系,去做所谓的对齐,那么要移动的不应该是汉字、不应该是逐个逐个汉字去 顺便一提,这种「动英文、不动汉字」的方法是日文TeX社区的习惯做法。说到底还是因为人家到现在还经常用竖排、总结出了 best practice,我们简体中文社区不常用竖排、难免走弯路…… |
解决夹注第一行过高的伪算法目前 默认可以将 第一步用 ...
\linespread{1}%
\splittopskip=\glueexpr\baselineskip*3/2\relax % <- 1.5\baselineskip
<user's code for format (a token list)>
...
\setbox\textbox=\vbox{%
\penalty0 % neat trick
\parshape <n+1>
<zero dim> <jiazhu line length> % line 1
...
<zero dim> <jiazhu line length> % line n
<zero dim> <max dim> % line n+1
<jiazhu content>
}%
\setbox0=\vsplit\textbox to0pt % neat trick 第二步分离出 \setbox\typesetbox=\vsplit\textbox
to\dimexpr\splittopskip+<n-1>\baselineskip\relax 第三步修正分离出来的 \setbox\typesetbox=\vbox{%
\vskip-\splittopskip
\vskip<height of jiazhu ideographs>
\unvbox\typesetbox
}% 如果用了这种修正高度的方法,那就不需要支架了。 第四步测试 \setbox\textbox=\vbox{%
\penalty0
\parshape ...
\unhbox<the last line being carried over>
}%
\setbox0=\vsplit\textbox to0pt 然后返回第二步。 |
感谢各位大佬指点! |
e254c61 通过设置 |
请看图
竖排时,当夹注折行时,会有一部分丢失,如何解决?
代码如下
The text was updated successfully, but these errors were encountered: