[{"data":1,"prerenderedAt":1207},["ShallowReactive",2],{"lit-docx-doc:\u002Fguide\u002Fgenerating":3},{"id":4,"title":5,"body":6,"description":1195,"extension":1196,"keywords":1197,"locale":1200,"meta":1201,"navigation":99,"order":69,"path":1202,"section":1203,"seo":1204,"stem":1205,"__hash__":1206},"docs\u002Fguide\u002Fgenerating.zh-CN.md","生成 DOCX",{"type":7,"value":8,"toc":1184},"minimark",[9,46,52,56,175,178,185,297,308,316,321,454,476,614,617,634,835,881,904,907,914,992,996,1062,1069,1072,1149,1159,1162,1180],[10,11,16],"pre",{"className":12,"code":13,"language":14,"meta":15,"style":15},"language-ts shiki shiki-themes github-light github-light github-dark","generateDocx(ast: LitAstNode): Promise\u003CUint8Array>\n","ts","",[17,18,19],"code",{"__ignoreMap":15},[20,21,24,28,32,36,40,43],"span",{"class":22,"line":23},"line",1,[20,25,27],{"class":26},"sgQzM","generateDocx",[20,29,31],{"class":30},"sVPnS","(ast: LitAstNode): ",[20,33,35],{"class":34},"sUNQB","Promise",[20,37,39],{"class":38},"sDD9d","\u003C",[20,41,42],{"class":30},"Uint8Array",[20,44,45],{"class":38},">\n",[47,48,49,51],"p",{},[17,50,27],{}," 没有其他参数。它根据 LitAST 重新构建整个 DOCX 包，返回完整文件的字节；不会在某个已有文件上局部修改。",[53,54,55],"h2",{"id":55},"输出字节",[10,57,59],{"className":12,"code":58,"language":14,"meta":15,"style":15},"\u002F\u002F Node\nawait writeFile(\"out.docx\", await generateDocx(ast));\n\n\u002F\u002F 浏览器：生成下载链接\nconst bytes = await generateDocx(ast);\nconst url = URL.createObjectURL(new Blob([bytes], {\n  type: \"application\u002Fvnd.openxmlformats-officedocument.wordprocessingml.document\",\n}));\n",[17,60,61,67,94,101,107,127,157,169],{"__ignoreMap":15},[20,62,63],{"class":22,"line":23},[20,64,66],{"class":65},"sqmzS","\u002F\u002F Node\n",[20,68,70,73,76,79,83,86,88,91],{"class":22,"line":69},2,[20,71,72],{"class":38},"await",[20,74,75],{"class":26}," writeFile",[20,77,78],{"class":30},"(",[20,80,82],{"class":81},"s-HEn","\"out.docx\"",[20,84,85],{"class":30},", ",[20,87,72],{"class":38},[20,89,90],{"class":26}," generateDocx",[20,92,93],{"class":30},"(ast));\n",[20,95,97],{"class":22,"line":96},3,[20,98,100],{"emptyLinePlaceholder":99},true,"\n",[20,102,104],{"class":22,"line":103},4,[20,105,106],{"class":65},"\u002F\u002F 浏览器：生成下载链接\n",[20,108,110,113,116,119,122,124],{"class":22,"line":109},5,[20,111,112],{"class":38},"const",[20,114,115],{"class":34}," bytes",[20,117,118],{"class":38}," =",[20,120,121],{"class":38}," await",[20,123,90],{"class":26},[20,125,126],{"class":30},"(ast);\n",[20,128,130,132,135,137,140,143,146,148,151,154],{"class":22,"line":129},6,[20,131,112],{"class":38},[20,133,134],{"class":34}," url",[20,136,118],{"class":38},[20,138,139],{"class":34}," URL",[20,141,142],{"class":30},".",[20,144,145],{"class":26},"createObjectURL",[20,147,78],{"class":30},[20,149,150],{"class":38},"new",[20,152,153],{"class":26}," Blob",[20,155,156],{"class":30},"([bytes], {\n",[20,158,160,163,166],{"class":22,"line":159},7,[20,161,162],{"class":30},"  type: ",[20,164,165],{"class":81},"\"application\u002Fvnd.openxmlformats-officedocument.wordprocessingml.document\"",[20,167,168],{"class":30},",\n",[20,170,172],{"class":22,"line":171},8,[20,173,174],{"class":30},"}));\n",[53,176,177],{"id":177},"手写节点",[47,179,180,181,184],{},"LitAST 节点是普通对象，根节点是 ",[17,182,183],{},"document","：",[10,186,188],{"className":12,"code":187,"language":14,"meta":15,"style":15},"const ast = {\n  type: \"document\",\n  children: [\n    {\n      type: \"paragraph\",\n      children: [\n        { type: \"text\", text: \"Hello \" },\n        { type: \"text\", text: \"world\", marks: [{ type: \"bold\" }] },\n      ],\n    },\n  ],\n};\n",[17,189,190,202,211,216,221,231,236,253,273,279,285,291],{"__ignoreMap":15},[20,191,192,194,197,199],{"class":22,"line":23},[20,193,112],{"class":38},[20,195,196],{"class":34}," ast",[20,198,118],{"class":38},[20,200,201],{"class":30}," {\n",[20,203,204,206,209],{"class":22,"line":69},[20,205,162],{"class":30},[20,207,208],{"class":81},"\"document\"",[20,210,168],{"class":30},[20,212,213],{"class":22,"line":96},[20,214,215],{"class":30},"  children: [\n",[20,217,218],{"class":22,"line":103},[20,219,220],{"class":30},"    {\n",[20,222,223,226,229],{"class":22,"line":109},[20,224,225],{"class":30},"      type: ",[20,227,228],{"class":81},"\"paragraph\"",[20,230,168],{"class":30},[20,232,233],{"class":22,"line":129},[20,234,235],{"class":30},"      children: [\n",[20,237,238,241,244,247,250],{"class":22,"line":159},[20,239,240],{"class":30},"        { type: ",[20,242,243],{"class":81},"\"text\"",[20,245,246],{"class":30},", text: ",[20,248,249],{"class":81},"\"Hello \"",[20,251,252],{"class":30}," },\n",[20,254,255,257,259,261,264,267,270],{"class":22,"line":171},[20,256,240],{"class":30},[20,258,243],{"class":81},[20,260,246],{"class":30},[20,262,263],{"class":81},"\"world\"",[20,265,266],{"class":30},", marks: [{ type: ",[20,268,269],{"class":81},"\"bold\"",[20,271,272],{"class":30}," }] },\n",[20,274,276],{"class":22,"line":275},9,[20,277,278],{"class":30},"      ],\n",[20,280,282],{"class":22,"line":281},10,[20,283,284],{"class":30},"    },\n",[20,286,288],{"class":22,"line":287},11,[20,289,290],{"class":30},"  ],\n",[20,292,294],{"class":22,"line":293},12,[20,295,296],{"class":30},"};\n",[47,298,299,300,303,304,307],{},"这份文档生成后再用 ",[17,301,302],{},"parseDocx"," 读回，得到的 ",[17,305,306],{},"children"," 与上面完全一致。",[53,309,311,312,315],{"id":310},"用-docx-辅助函数","用 ",[17,313,314],{},"docx"," 辅助函数",[47,317,318,320],{},[17,319,314],{}," 是一个分组的辅助对象，返回的就是上面这样的节点，只是写起来更短，并带有类型检查：",[322,323,324,337],"table",{},[325,326,327],"thead",{},[328,329,330,334],"tr",{},[331,332,333],"th",{},"分组",[331,335,336],{},"内容",[338,339,340,369,387,407,427],"tbody",{},[328,341,342,348],{},[343,344,345],"td",{},[17,346,347],{},"docx.blocks",[343,349,350,353,354,353,357,353,360,353,363,353,366],{},[17,351,352],{},"paragraph","、",[17,355,356],{},"heading",[17,358,359],{},"blockquote",[17,361,362],{},"codeBlock",[17,364,365],{},"pageBreak",[17,367,368],{},"callout",[328,370,371,376],{},[343,372,373],{},[17,374,375],{},"docx.inline",[343,377,378,353,381,353,384],{},[17,379,380],{},"text",[17,382,383],{},"link",[17,385,386],{},"ruby",[328,388,389,394],{},[343,390,391],{},[17,392,393],{},"docx.marks",[343,395,396,353,399,353,402,353,404],{},[17,397,398],{},"bold",[17,400,401],{},"highlight",[17,403,383],{},[17,405,406],{},"textStyle",[328,408,409,414],{},[343,410,411],{},[17,412,413],{},"docx.tables",[343,415,416,353,418,353,421,353,424],{},[17,417,322],{},[17,419,420],{},"row",[17,422,423],{},"cell",[17,425,426],{},"shadedCell",[328,428,429,434],{},[343,430,431],{},[17,432,433],{},"docx.styles",[343,435,436,353,439,353,442,353,445,353,448,353,451],{},[17,437,438],{},"paragraphProperties",[17,440,441],{},"spacing",[17,443,444],{},"indentation",[17,446,447],{},"shading",[17,449,450],{},"border",[17,452,453],{},"runProperties",[47,455,456,457,459,460,463,464,467,468,471,472,475],{},"辅助函数没有覆盖所有节点。根节点 ",[17,458,183],{},"、图片 ",[17,461,462],{},"image","、分节 ",[17,465,466],{},"section","、列表 ",[17,469,470],{},"list"," 需要手写，二者可以自由混用。斜体等没有辅助函数的标记直接写 ",[17,473,474],{},"{ type: \"italic\" }","。",[10,477,479],{"className":12,"code":478,"language":14,"meta":15,"style":15},"docx.blocks.paragraph({\n  children: [\n    docx.inline.text(\"重要\", { marks: [docx.marks.bold(), docx.marks.textStyle({ color: \"C00000\", fontSize: \"14pt\" })] }),\n    docx.inline.text(\"：详见\"),\n    docx.inline.link(\"说明\", { href: \"https:\u002F\u002Fexample.com\" }),\n  ],\n  properties: docx.styles.paragraphProperties({\n    textAlign: \"center\",\n    spacing: docx.styles.spacing({ after: 120 }),\n  }),\n});\n",[17,480,481,491,495,532,546,566,570,579,589,604,609],{"__ignoreMap":15},[20,482,483,486,488],{"class":22,"line":23},[20,484,485],{"class":30},"docx.blocks.",[20,487,352],{"class":26},[20,489,490],{"class":30},"({\n",[20,492,493],{"class":22,"line":69},[20,494,215],{"class":30},[20,496,497,500,502,504,507,510,512,515,517,520,523,526,529],{"class":22,"line":96},[20,498,499],{"class":30},"    docx.inline.",[20,501,380],{"class":26},[20,503,78],{"class":30},[20,505,506],{"class":81},"\"重要\"",[20,508,509],{"class":30},", { marks: [docx.marks.",[20,511,398],{"class":26},[20,513,514],{"class":30},"(), docx.marks.",[20,516,406],{"class":26},[20,518,519],{"class":30},"({ color: ",[20,521,522],{"class":81},"\"C00000\"",[20,524,525],{"class":30},", fontSize: ",[20,527,528],{"class":81},"\"14pt\"",[20,530,531],{"class":30}," })] }),\n",[20,533,534,536,538,540,543],{"class":22,"line":103},[20,535,499],{"class":30},[20,537,380],{"class":26},[20,539,78],{"class":30},[20,541,542],{"class":81},"\"：详见\"",[20,544,545],{"class":30},"),\n",[20,547,548,550,552,554,557,560,563],{"class":22,"line":109},[20,549,499],{"class":30},[20,551,383],{"class":26},[20,553,78],{"class":30},[20,555,556],{"class":81},"\"说明\"",[20,558,559],{"class":30},", { href: ",[20,561,562],{"class":81},"\"https:\u002F\u002Fexample.com\"",[20,564,565],{"class":30}," }),\n",[20,567,568],{"class":22,"line":129},[20,569,290],{"class":30},[20,571,572,575,577],{"class":22,"line":159},[20,573,574],{"class":30},"  properties: docx.styles.",[20,576,438],{"class":26},[20,578,490],{"class":30},[20,580,581,584,587],{"class":22,"line":171},[20,582,583],{"class":30},"    textAlign: ",[20,585,586],{"class":81},"\"center\"",[20,588,168],{"class":30},[20,590,591,594,596,599,602],{"class":22,"line":275},[20,592,593],{"class":30},"    spacing: docx.styles.",[20,595,441],{"class":26},[20,597,598],{"class":30},"({ after: ",[20,600,601],{"class":34},"120",[20,603,565],{"class":30},[20,605,606],{"class":22,"line":281},[20,607,608],{"class":30},"  }),\n",[20,610,611],{"class":22,"line":287},[20,612,613],{"class":30},"});\n",[53,615,616],{"id":616},"拼音指南",[47,618,619,622,623,475,626,629,630,633],{},[17,620,621],{},"docx.inline.ruby"," 生成原生 ",[17,624,625],{},"w:ruby",[17,627,628],{},"base"," 是正文，",[17,631,632],{},"annotation"," 是注音；两层可以\n分别设置文字格式。读音由调用者提供，lit-docx 不包含自动拼音词典。",[10,635,637],{"className":12,"code":636,"language":14,"meta":15,"style":15},"const guide = docx.inline.ruby({\n  marks: [docx.marks.textStyle({ fontSize: \"12pt\" })],\n  base: [docx.inline.text(\"汉\", {\n    marks: [docx.marks.textStyle({ fontSize: \"12pt\" })],\n  })],\n  annotation: [docx.inline.text(\"hàn\", {\n    marks: [docx.marks.textStyle({ fontFamily: \"Arial\", fontSize: \"6pt\" })],\n  })],\n  rubyAlign: \"center\",\n  hps: 12,\n  hpsRaise: 24,\n  hpsBaseText: 24,\n  lid: \"zh-CN\",\n});\nconst bytes = await generateDocx({\n  type: \"document\",\n  children: [docx.blocks.paragraph({ children: [guide] })],\n});\n",[17,638,639,655,671,686,699,704,718,737,741,750,760,770,779,790,795,810,819,830],{"__ignoreMap":15},[20,640,641,643,646,648,651,653],{"class":22,"line":23},[20,642,112],{"class":38},[20,644,645],{"class":34}," guide",[20,647,118],{"class":38},[20,649,650],{"class":30}," docx.inline.",[20,652,386],{"class":26},[20,654,490],{"class":30},[20,656,657,660,662,665,668],{"class":22,"line":69},[20,658,659],{"class":30},"  marks: [docx.marks.",[20,661,406],{"class":26},[20,663,664],{"class":30},"({ fontSize: ",[20,666,667],{"class":81},"\"12pt\"",[20,669,670],{"class":30}," })],\n",[20,672,673,676,678,680,683],{"class":22,"line":96},[20,674,675],{"class":30},"  base: [docx.inline.",[20,677,380],{"class":26},[20,679,78],{"class":30},[20,681,682],{"class":81},"\"汉\"",[20,684,685],{"class":30},", {\n",[20,687,688,691,693,695,697],{"class":22,"line":103},[20,689,690],{"class":30},"    marks: [docx.marks.",[20,692,406],{"class":26},[20,694,664],{"class":30},[20,696,667],{"class":81},[20,698,670],{"class":30},[20,700,701],{"class":22,"line":109},[20,702,703],{"class":30},"  })],\n",[20,705,706,709,711,713,716],{"class":22,"line":129},[20,707,708],{"class":30},"  annotation: [docx.inline.",[20,710,380],{"class":26},[20,712,78],{"class":30},[20,714,715],{"class":81},"\"hàn\"",[20,717,685],{"class":30},[20,719,720,722,724,727,730,732,735],{"class":22,"line":159},[20,721,690],{"class":30},[20,723,406],{"class":26},[20,725,726],{"class":30},"({ fontFamily: ",[20,728,729],{"class":81},"\"Arial\"",[20,731,525],{"class":30},[20,733,734],{"class":81},"\"6pt\"",[20,736,670],{"class":30},[20,738,739],{"class":22,"line":171},[20,740,703],{"class":30},[20,742,743,746,748],{"class":22,"line":275},[20,744,745],{"class":30},"  rubyAlign: ",[20,747,586],{"class":81},[20,749,168],{"class":30},[20,751,752,755,758],{"class":22,"line":281},[20,753,754],{"class":30},"  hps: ",[20,756,757],{"class":34},"12",[20,759,168],{"class":30},[20,761,762,765,768],{"class":22,"line":287},[20,763,764],{"class":30},"  hpsRaise: ",[20,766,767],{"class":34},"24",[20,769,168],{"class":30},[20,771,772,775,777],{"class":22,"line":293},[20,773,774],{"class":30},"  hpsBaseText: ",[20,776,767],{"class":34},[20,778,168],{"class":30},[20,780,782,785,788],{"class":22,"line":781},13,[20,783,784],{"class":30},"  lid: ",[20,786,787],{"class":81},"\"zh-CN\"",[20,789,168],{"class":30},[20,791,793],{"class":22,"line":792},14,[20,794,613],{"class":30},[20,796,798,800,802,804,806,808],{"class":22,"line":797},15,[20,799,112],{"class":38},[20,801,115],{"class":34},[20,803,118],{"class":38},[20,805,121],{"class":38},[20,807,90],{"class":26},[20,809,490],{"class":30},[20,811,813,815,817],{"class":22,"line":812},16,[20,814,162],{"class":30},[20,816,208],{"class":81},[20,818,168],{"class":30},[20,820,822,825,827],{"class":22,"line":821},17,[20,823,824],{"class":30},"  children: [docx.blocks.",[20,826,352],{"class":26},[20,828,829],{"class":30},"({ children: [guide] })],\n",[20,831,833],{"class":22,"line":832},18,[20,834,613],{"class":30},[47,836,837,838,353,841,353,844,847,848,850,851,855,856,859,860,862,863,353,866,353,869,353,872,353,875,353,878,475],{},"这五个属性在新建时都需显式提供。",[17,839,840],{},"hps",[17,842,843],{},"hpsRaise",[17,845,846],{},"hpsBaseText"," 的数字单位是半磅；\n",[17,849,843],{}," 是文件中的抬升量，",[852,853,854],"strong",{},"不是"," Word 对话框“拼音文字距离”的直接数值。\n本例来自 Word 16.109.2 的 12pt 正文、6pt 注音样本，不代表通用字体的自动间距算法。\n外层 ",[17,857,858],{},"marks"," 的字号、基文字号与 ",[17,861,846],{}," 保持一致；参考字号不会替代实际文字格式。\n对齐值有 ",[17,864,865],{},"center",[17,867,868],{},"left",[17,870,871],{},"right",[17,873,874],{},"distributeLetter",[17,876,877],{},"distributeSpace",[17,879,880],{},"rightVertical",[47,882,883,884,886,887,890,891,896,897,899,900,903],{},"解析后的节点使用 ",[17,885,306],{}," 存正文、",[17,888,889],{},"attrs.rubyText"," 存注音。可修改文字和以上属性后再生成；\n未知或未改的来源属性按",[892,893,895],"a",{"href":894},"\u002Fguide\u002Fround-trip#%E6%8B%BC%E9%9F%B3%E6%8C%87%E5%8D%97","往返规则","保留。超链接应放在整个 ruby\n节点的 ",[17,898,858],{}," 上；不能把 ",[17,901,902],{},"docx.inline.link"," 直接放进任一文字层。",[53,905,906],{"id":906},"表格",[47,908,909,910,913],{},"表格的层级是 ",[17,911,912],{},"table > tableRow > tableCell > 段落","。单元格里至少要有一个块级节点，用辅助函数创建时会自动补一个空段落。",[10,915,917],{"className":12,"code":916,"language":14,"meta":15,"style":15},"docx.tables.table({\n  columns: [3000, 3000],\n  rows: [\n    docx.tables.row({ isHeader: true, cells: [docx.tables.cell({ children: [docx.blocks.paragraph({ children: [docx.inline.text(\"地区\")] })] })] }),\n  ],\n});\n",[17,918,919,928,943,948,984,988],{"__ignoreMap":15},[20,920,921,924,926],{"class":22,"line":23},[20,922,923],{"class":30},"docx.tables.",[20,925,322],{"class":26},[20,927,490],{"class":30},[20,929,930,933,936,938,940],{"class":22,"line":69},[20,931,932],{"class":30},"  columns: [",[20,934,935],{"class":34},"3000",[20,937,85],{"class":30},[20,939,935],{"class":34},[20,941,942],{"class":30},"],\n",[20,944,945],{"class":22,"line":96},[20,946,947],{"class":30},"  rows: [\n",[20,949,950,953,955,958,961,964,966,969,971,974,976,978,981],{"class":22,"line":103},[20,951,952],{"class":30},"    docx.tables.",[20,954,420],{"class":26},[20,956,957],{"class":30},"({ isHeader: ",[20,959,960],{"class":34},"true",[20,962,963],{"class":30},", cells: [docx.tables.",[20,965,423],{"class":26},[20,967,968],{"class":30},"({ children: [docx.blocks.",[20,970,352],{"class":26},[20,972,973],{"class":30},"({ children: [docx.inline.",[20,975,380],{"class":26},[20,977,78],{"class":30},[20,979,980],{"class":81},"\"地区\"",[20,982,983],{"class":30},")] })] })] }),\n",[20,985,986],{"class":22,"line":109},[20,987,290],{"class":30},[20,989,990],{"class":22,"line":129},[20,991,613],{"class":30},[53,993,995],{"id":994},"图片分节与页眉页脚","图片、分节与页眉页脚",[997,998,999,1013,1029],"ul",{},[1000,1001,1002,184,1005,1008,1009,1012],"li",{},[852,1003,1004],{},"图片",[17,1006,1007],{},"{ type: \"image\", attrs: { src, width, height } }","，",[17,1010,1011],{},"src"," 是图片的 Data URL，宽高单位是像素（按 96 DPI 换算）。",[1000,1014,1015,184,1018,1020,1021,1024,1025,1028],{},[852,1016,1017],{},"分节",[17,1019,466],{}," 是 ",[17,1022,1023],{},"document.children"," 里的一个兄弟节点，表示它",[852,1026,1027],{},"之前","的内容到此结束一节，并携带这一节的页面设置。",[1000,1030,1031,1034,1035,1037,1038,1041,1042,1008,1045,1041,1048,1051,1052,353,1055,1058,1059,475],{},[852,1032,1033],{},"页眉页脚","：作为 ",[17,1036,466],{}," 的子节点，",[17,1039,1040],{},"header"," 用 ",[17,1043,1044],{},"attrs.headerType",[17,1046,1047],{},"footer",[17,1049,1050],{},"attrs.footerType","，取值为 ",[17,1053,1054],{},"\"default\"",[17,1056,1057],{},"\"first\""," 或 ",[17,1060,1061],{},"\"even\"",[47,1063,1064,1068],{},[892,1065,1067],{"href":1066},"\u002F","快速开始","里的报告示例同时用到了这三者。",[53,1070,1071],{"id":1071},"单位约定",[322,1073,1074,1084],{},[325,1075,1076],{},[328,1077,1078,1081],{},[331,1079,1080],{},"数值",[331,1082,1083],{},"单位",[338,1085,1086,1094,1102,1117,1131],{},[328,1087,1088,1091],{},[343,1089,1090],{},"页面宽高、页边距、段落缩进、段前段后间距、表格列宽",[343,1092,1093],{},"twips，即 1\u002F20 磅；1 英寸 = 1440，1 厘米 ≈ 567",[328,1095,1096,1099],{},[343,1097,1098],{},"图片宽高",[343,1100,1101],{},"像素，按 96 DPI 换算",[328,1103,1104,1112],{},[343,1105,1106,1108,1109],{},[17,1107,406],{}," 的 ",[17,1110,1111],{},"fontSize",[343,1113,1114,1116],{},[17,1115,667],{}," 这样的字符串，或以磅为单位的数字",[328,1118,1119,1128],{},[343,1120,1121,1122,353,1124,353,1126],{},"ruby 的 ",[17,1123,840],{},[17,1125,843],{},[17,1127,846],{},[343,1129,1130],{},"数字为半磅，或保留 OOXML 显式单位字符串",[328,1132,1133,1136],{},[343,1134,1135],{},"颜色",[343,1137,1138,1139,1141,1142,1145,1146],{},"6 位十六进制 RGB，",[17,1140,522],{}," 与 ",[17,1143,1144],{},"\"#C00000\""," 均可；解析结果带 ",[17,1147,1148],{},"#",[47,1150,1151,1152,1155,1156,475],{},"A4 纸为 ",[17,1153,1154],{},"pageWidth: 11906, pageHeight: 16838","，US Letter 为 ",[17,1157,1158],{},"12240 × 15840",[53,1160,1161],{"id":1161},"新文档会自动补齐的部件",[47,1163,1164,1165,353,1168,1171,1172,1175,1176,475],{},"从零生成时没有原始的 ",[17,1166,1167],{},"styles.xml",[17,1169,1170],{},"numbering.xml"," 等部件，生成器会按文档中实际用到的内容补齐编号、批注、脚注尾注等部件。从已有文件读进来的 LitAST 则会写回 ",[17,1173,1174],{},"ast.meta.rawXmlFiles"," 中保存的原始部件，见",[892,1177,1179],{"href":1178},"\u002Fguide\u002Fround-trip","往返与保留",[1181,1182,1183],"style",{},"html pre.shiki code .sgQzM, html code.shiki .sgQzM{--shiki-default:#6F42C1;--shiki-light:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVPnS, html code.shiki .sVPnS{--shiki-default:#24292E;--shiki-light:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sUNQB, html code.shiki .sUNQB{--shiki-default:#005CC5;--shiki-light:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sDD9d, html code.shiki .sDD9d{--shiki-default:#D73A49;--shiki-light:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sqmzS, html code.shiki .sqmzS{--shiki-default:#6A737D;--shiki-light:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s-HEn, html code.shiki .s-HEn{--shiki-default:#032F62;--shiki-light:#032F62;--shiki-dark:#9ECBFF}",{"title":15,"searchDepth":69,"depth":69,"links":1185},[1186,1187,1188,1190,1191,1192,1193,1194],{"id":55,"depth":69,"text":55},{"id":177,"depth":69,"text":177},{"id":310,"depth":69,"text":1189},"用 docx 辅助函数",{"id":616,"depth":69,"text":616},{"id":906,"depth":69,"text":906},{"id":994,"depth":69,"text":995},{"id":1071,"depth":69,"text":1071},{"id":1161,"depth":69,"text":1161},"用手写节点或 docx 创作辅助函数构造 LitAST，再用 generateDocx 输出完整的 DOCX 字节；附单位约定。","md",[27,314,1198,906,1004,1083,1199],"创作","twips","zh-CN",{},"\u002Fguide\u002Fgenerating","指南",{"title":5,"description":1195},"guide\u002Fgenerating.zh-CN","Uy-RYkKXK4zmkCinItHghblftaSSb5GBJZmNjRNzAgU",1793045344143]