#setpage(height:auto,width:8.9cm)#settext(font:"Noto Serif CJK SC",size:11.5pt)/*= 最初尝试的方法不能处理嵌套问题。这个思路源自LuaTeX节点列表。//两端对齐#set par(justify: true)// 汉字及其标点(不完善)#let chinese_set = regex("[\u4E00-\u9FA5、,。;:“”!?‘’]")// 处理此下所有内容#show : (rest) => { for i in rest.children { if i.has("text") { for c in i.text { if chinese_set in c { // 汉字及其标点后插入1份无限拉伸胶 c + [#h(1fr)] }else{ c } } } else { if i==parbreak() { // 段末插入100000无限拉伸胶,经验值 // 可能有副作用 [#h(100000fr)] } i } }}= 正确的做法还不能不能处理单元格中的段落。*/#show:(rest)=>{setpar(justify:true)// 汉字及其标点(不完善)后加无限拉伸胶letchinese_set=regex("[\u4E00-\u9FA5、,。;:“”!?‘’]")showchinese_set:c=>c+[#h(0.00001fr)]// 不满的行(末行)后加胶letend_fr=[#h(1fr)]showparbreak:b=>end_fr+bshowlinebreak:b=>end_fr+bshowenum:it=>{foriinit.children{i.body+end_fr}}showlist:it=>{foriinit.children{i.body+end_fr}}//TODO 文末加end_frrest}//还不能处理嵌套中的内容,如表格#table(columns:(1fr,1fr),[#setpar(justify:true)你来了!你来了!你来了!你来了!你来了!你来了!你来了!你来了!// 末尾必须有空行],[#setpar(justify:true)#lorem(10)],)+你来了!你来了!你来了!你来了!+你来了!你来了!你来了!你来了!-你来了!你来了!你来了!你来了!-你来了!你来了!你来了!你来了!#lorem(20)排版元素可以旋转、位移,\可以手动堆叠成行、成列。\元素间可以放置正值或负值的空白。这么说,可以做标点压缩、竖排、双行夹注等功能。但目前似乎没有操作底层数据的接口,比如获取字体和字模信息,操作抽象语法树、模块树、框架树。另外,它的分行组段的算法似乎比较简陋,不知道后面会不会移植Knuth-Plass的算法(这个说法是错误的,Typst有一个optimizedKnuth-Plassstyle)。目前汉字间没有像LuaTeX那样加入零宽度的胶,所以行校正时可拉伸点较少(只能用标点前后的空格),拉得太狠,很难看。// 末尾必须有空行