diff options
Diffstat (limited to 'macros/latex')
21 files changed, 1678 insertions, 749 deletions
diff --git a/macros/latex/contrib/hithesis/README.md b/macros/latex/contrib/hithesis/README.md index 18117fdfcb..32241b8f4d 100644 --- a/macros/latex/contrib/hithesis/README.md +++ b/macros/latex/contrib/hithesis/README.md @@ -20,14 +20,13 @@ http://www.latex-project.org/lppl.txt and version 1.3a or later is part of all distributions of LaTeX version 2004/10/01 or later. - ## hithesis是什么? hithesis 旨在建立一个简单易用的哈尔滨工业大学学位论文LaTeX模板,包括本科论文、硕士论文、博士论文 。现 在支持本科、硕士、博士论文,对其它格式的支持会陆续加入。 hithesis 已收录在[CTAN](https://ctan.org/pkg/hithesis -"CTAN")中,用户安装TeXLive将自带我工模板(版本日期>2017.08.28)。 +"CTAN**)中,用户安装TeXLive将自带我工模板(版本日期>2017.08.28)。 ## 我工规范有歧义之处 @@ -42,14 +41,13 @@ hithesis 已收录在[CTAN](https://ctan.org/pkg/hithesis ### 呆萌的操作,傲娇的效果 - 极限程度实现了[《哈尔滨工业大学研究生学位论文撰写规范》](http://hitgs.hit.edu.cn/aa/fd/c3425a109309/page.htm)、[《哈尔滨工业大学本科生毕业论文撰写规范》](http://jwc.hit.edu.cn/2566/list.htm) -- 这是[PlutoThesis](https://github.com/dustincys/PlutoThesis "PlutoThesis")的终极进化,PlutoThesis废弃不再维护。 +- 这是[PlutoThesis](https://github.com/dustincys/PlutoThesis "PlutoThesis**)的终极进化,PlutoThesis废弃不再维护。 - 更傻更简单的选项,例如论文主文件,只需要在文档类的括号中填写本硕博选项,字体选项(设置弹性间距或者刚性间距),文科生选项(目录可以设成四级目录),非全日制类型等,轻松设定目标格式。 - 自适应格式,例如图题和标题,标题字号在字数超过两行时自动由五号变小五号,实现自适应(硕博规范规定,字数多时用五号) - 自动化中英文索引(博士规范要求,有需要时候添加) - - 图书馆提交论文级的书签设置 + - 图书馆提交论文级的电子版 - …… - ### 矫正PlutoThesis的不足 - 纠正PlutoThesis页面向下溢出 @@ -75,7 +73,7 @@ hithesis 已收录在[CTAN](https://ctan.org/pkg/hithesis - 行间距、段前后距离设置精确到小数后四位, 例如 1bp = 1.00374pt,1mm = 2.84526pt, 按照我工之要求, 行距在3mm~4mm之间,换算之后为20.50398~23.33863bp,严格符合规范要求,哪怕是显微镜级别 - 规范明确规定,数字间空格要求为汉字宽度的四分之一(形式类似与 12 2345 和 0.123 456 这样多于3位以上的整数或小数)。默认情况下在LaTeX中任何人工输入的空格均不正确(“\:”为4/18汉字宽度,“\;”为5/18汉字宽度,所以PlutoThesis中的数字间宽度错误)。hithesis模板中定义了精准的数字间宽度。 - - 重写了一堆重要函数,例如章节标题由原来的`BiChapter{}{}`方式进化为`chapter{}[]`,极大简化,后面方括号中为可选括号,硕本可以不用,用了自动忽略 + - 重写了一堆重要函数,例如章节标题由原来的`BiChapter{}{}`方式进化为`chapter{}[**`,极大简化,后面方括号中为可选括号,硕本可以不用,用了自动忽略 - 严格符合(满足)两个规范要求,由于规范中有矛盾之处,例如本科生的标题段前距离有两处不一样的规定,刚性行距尽量满足行数(要求约33行)要求。 - 规范中给出了行距区间,为了规格严格,设置了弹性行距 - …… @@ -103,9 +101,22 @@ CTAN的版本一般会比较落后,但在每年年底会同步为最新版本 ### 关于hithesis的线上讨论区 -由于维护者(就是本书呆)已经是高龄不毕业刀客,课题繁忙,常常无法及时回答疑问。 -为了解决使用中遇到的问题,请各位刀客和大侠加入QQ群:259959600。 -群里有很多热心的LaTeX隐士高人如@poofee等,很乐于解答。 +~~由于维护者(就是本书呆)已经是高龄不毕业刀客,课题繁忙,常常无法及时回答疑问。~~ +为了解决使用中遇到的问题,请各位刀客和大侠加入QQ群hithesis讨论区:259959600。 + +hithesis 高级群:476262502 (高级群为作者散布高级排版、制图、Linux管理、编码等 +知识和技术之所在,其要旨引用自《西游记》第八回,如来自言“叵耐不识我法门之要旨, +怠慢了瑜伽之正宗”,以及“曹溪路险、鹫岭云深,故人不音杳!”。散布知识之后,作者将 +直播回答高级群中众生问题。(**由于工作关系直播暂停,开播时间待定**))。 + +21 Oct 2019 添加:由于工作繁忙,改为西瓜小视频形式传播正能量(**包括Linux实用技术、 +排版、制图等等平时积累的经验和知识**)。 + +西瓜视频ID:**石见石页** + +网址:https://www.ixigua.com/home/105143356290/ + +hithesis群里有很多热心的LaTeX隐士高人如@poofee等,很乐于解答。 ### 关于查重 @@ -115,14 +126,20 @@ CTAN的版本一般会比较落后,但在每年年底会同步为最新版本 会出现无法正常复制的情况(可能是系统的字体映射出现了误差)。一般需要在主文件的 选项中明确声明使用哪一种fontset。 -### 模板的编译方法、打印版、电子版及其他说明 +### 模板版本要求 -- 生成论文格式文件(第一步要生成 *.cls,*.cfg,*.ist,然后再生成论文) +LaTeX 中的ctex package版本要求: + + ctex >= v2.4.3 (2016年9月份发布) 注意,如果下载最新版本(>= 2018)的texlive或Miktex或Mactex,如果使用自带的模板,可能会出现一些错误,因为自带的版本老。 查看自带版本的命令是 - texdoc hithesis + texdoc hithesis + +### 模板的编译方法 + +1. 生成论文格式文件(第一步要生成 *.cls,*.cfg,*.ist,然后再生成论文) - 如果是Linux/Mac执行 (此处作者没测试过Mac,如遇到问题到谈论区可以问一下热心刀客大侠们,比如陈登泰教授、郭大侠等) @@ -132,60 +149,66 @@ CTAN的版本一般会比较落后,但在每年年底会同步为最新版本 lualatex hithesis.ins + - 如果喜欢玩 make -- 生成论文 - - xelatex main.tex - bibtex main - xelatex main.tex - xelatex main.tex - splitindex main -- -s hithesis.ist # 自动生成索引 - xelatex main.tex + make cls -- 生成文档 +2. 生成论文的方式 - xelatex hithesis.dtx - makeindex -s gind.ist -o hithesis.ind hithesis.idx - makeindex -s gglo.ist -o hithesis.gls hithesis.glo - xelatex hithesis.dtx - xelatex hithesis.dtx + - 手动狙击(源文件更改后每次编译逐行命令输入一轮) -如果喜欢Makefile的是另一画风: + xelatex -shell-escape main.tex + bibtex main + xelatex -shell-escape main.tex + xelatex -shell-escape main.tex + splitindex main -- -s hithesis.ist # 自动生成索引 + xelatex -shell-escape main.tex + + - 半自动精确射击(源文件更改后每次编译敲一次) -- 生成文档类 + make thesis - make cls + - 全自动火力覆盖(只需要输入一次命令,源文件更改后自动识别更改自动编译) -- 生成论文 + latexmk - make thesis +3. 生成文档(没什么用,因为有文档也基本没人看) -- 生成文档 + - 手动狙击(逐行命令输入一轮) - make doc - -LaTeX 中的ctex package版本要求: + xelatex hithesis.dtx + makeindex -s gind.ist -o hithesis.ind hithesis.idx + makeindex -s gglo.ist -o hithesis.gls hithesis.glo + xelatex hithesis.dtx + xelatex hithesis.dtx - ctex >= v2.4.3 (2016年9月份发布) + - 半自动精确射击(编译敲一次) -注意,一般情况下,博士论文的打印版要求右翻页,最后向图书管提交的电子版不是右翻 -页,注意选项中的选项。 + make doc -由于维护者(就是本书呆)已经是高龄不毕业博士,课题繁忙,实在无空余时间再写详细文档以及 无偿解决一些用户要求(例如前面文档中[已经解决的算法格式各实验室要求不一致](https://github.com/dustincys/PlutoThesis#%E6%B2%A1%E6%9C%89%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E7%9A%84%E6%A0%BC%E5%BC%8F)问题)。 +### 打印版、电子版 -各位刀客和大侠如用的嗨,要解囊相助,请微信扫码~~ +注意,一般情况下,博士论文的打印版要求双面打印,本硕单面。 +博士论文在双面打印成册时,规范中没有明确规定是否要右翻页(右翻页是每一章的起始位 +置位于书的右侧页面),所以会出现DIY(或身不由己DIY)哪一处右翻页。 +`openright`选项设置为真时,会将所有章(即所有部分,包括前文和后文)起始设置成右翻页。 +如果想DIY(或身不由己DIY)在什么地方右翻页,将这个选项设置为false,然后在目标位 +置添加`\cleardoublepage`命令即可。 -![5](http://wx4.sinaimg.cn/large/61dccbaaly1fge32sbb32j20my0uz3zt.jpg "谢谢") +最后向图书管提交的电子版不是右翻页且要求没有任何空白页,这时只需要设置选项`library=true` +即可,这时候会强制`openright=false`。然后什么都不用做,就会出现如同`Sirius`同学 +的这种“书签还没整明白,论文居然已经通过了”的情况。 -如果用的非常嗨, +### 幻灯片 -![10](http://wx4.sinaimg.cn/large/61dccbaaly1fge32tuvvsj20my0uzabc.jpg "谢谢") +有些强迫症刀客喜欢用Beamer,推荐[progressbar主题](https://github.com/dustincys/progressbar), +能够使用[pympress](https://github.com/Cimbali/pympress)播放双屏提示。 -那个,看在苦X高龄不毕业博士,还熬夜写代码的份上…… 唉…… +### 其他说明 -![1](http://wx4.sinaimg.cn/large/61dccbaaly1fge32qrvgij20my0uzjso.jpg "谢谢") +由于维护者(就是本书呆)已经是高龄不毕业博士,课题繁忙,实在无空余时间再写详细文档以及 无偿解决一些用户要求(例如前面文档中[已经解决的算法格式各实验室要求不一致](https://github.com/dustincys/PlutoThesis#%E6%B2%A1%E6%9C%89%E6%98%8E%E7%A1%AE%E8%A6%81%E6%B1%82%E7%9A%84%E6%A0%BC%E5%BC%8F)问题)。 -或者随便吧…… +各位刀客和大侠如用的嗨,要解囊相助,请微信扫码~~ ![wechat](http://wx2.sinaimg.cn/large/61dccbaaly1fqwvz6sd4ej20yi1au797.jpg "谢谢") diff --git a/macros/latex/contrib/hithesis/body/introduction.tex b/macros/latex/contrib/hithesis/body/introduction.tex index ee9d8c3c99..9fe6b4ed1e 100644 --- a/macros/latex/contrib/hithesis/body/introduction.tex +++ b/macros/latex/contrib/hithesis/body/introduction.tex @@ -553,7 +553,7 @@ tikz适合用来画不需要大量实验数据支撑示意图。但R语言等专 推荐使用glossaries包管理术语、缩略语,可以自动生成首次全写,非首次缩写。 \subsection{\TeX\ 源码编辑器}[\TeX editor] -推荐:(1)付费软件Winedt;(2)免费软件kile;(3)vim或emacs或spacemacs等神级编 +推荐:(1)付费软件Winedt;(2)免费软件kile;(3)vim或emaces或sublime等神级编 译器(需要配置)。 \subsection{\LaTeX\ 排版重要原则}[\LaTeX\ typesetting rules] @@ -586,3 +586,8 @@ word那样处处修改。总而言之,使用自定义命令和环境才是正 only} \end{figure} + +% Local Variables: +% TeX-master: "../main" +% TeX-engine: xetex +% End: diff --git a/macros/latex/contrib/hithesis/figures/bthesistitle.eps b/macros/latex/contrib/hithesis/figures/bthesistitle.eps new file mode 100644 index 0000000000..631dc56ddd --- /dev/null +++ b/macros/latex/contrib/hithesis/figures/bthesistitle.eps @@ -0,0 +1,335 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.10 (http://cairographics.org) +%%CreationDate: Sat Aug 26 23:43:48 2017 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 -1 422 55 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 422 55 +%%EndPageSetup +q 0 -1 422 56 rectclip q +0 g +20.781 0.454 m 20.582 0.704 20.312 4.915 20.18 9.95 c 20.047 14.927 19.844 + 19.544 19.723 20.208 c 19.512 21.403 19.488 21.415 17.988 21.192 c 17.156 + 21.067 14.938 20.813 13.062 20.634 c 8.965 20.235 7.098 19.766 4.219 18.399 + c 0.973 16.864 0.621 16.958 0.168 19.442 c -0.25 21.751 0.102 22.798 1.293 + 22.798 c 1.676 22.798 2.816 23.032 3.828 23.317 c 5.516 23.79 6.543 24.063 + 12.273 25.559 c 13.32 25.833 15.043 26.298 16.105 26.599 c 17.168 26.895 + 18.309 27.141 18.641 27.141 c 19.082 27.141 19.242 27.466 19.242 28.388 + c 19.242 29.161 19.551 29.989 20.055 30.567 c 20.871 31.505 l 22.859 30.806 + l 23.953 30.423 25.258 29.72 25.754 29.243 c 26.66 28.376 l 32.27 28.821 + l 35.352 29.067 38.203 29.302 38.602 29.349 c 40.082 29.509 40.516 29.274 + 41.535 27.774 c 42.109 26.927 42.68 26.153 42.801 26.056 c 43.188 25.739 + 43.527 22.552 43.281 21.571 c 43.098 20.833 42.824 20.626 42.02 20.626 +c 41.457 20.626 40.902 20.778 40.789 20.962 c 40.676 21.145 39.551 21.638 + 38.293 22.056 c 36.312 22.716 35.297 22.806 30.789 22.72 c 25.574 22.618 + l 25.324 20.626 l 25.188 19.532 25.043 14.727 25 9.95 c 24.961 5.177 24.859 + 0.981 24.773 0.634 c 24.652 0.138 24.238 0.001 22.879 0.001 c 21.918 0.001 + 20.977 0.204 20.781 0.454 c h +202.465 0.454 m 202.309 0.7 202.234 4.911 202.301 9.809 c 202.375 15.247 + 202.246 20.274 201.977 22.72 c 201.535 26.731 l 200.133 26.966 l 198.18 + 27.298 196.074 26.872 194.555 25.845 c 193.848 25.364 193.043 24.97 192.766 + 24.97 c 192.152 24.97 189.68 29.513 189.68 30.641 c 189.68 31.294 189.945 + 31.493 191.039 31.681 c 191.785 31.806 192.965 32.059 193.66 32.239 c 194.359 + 32.419 195.309 32.563 195.777 32.567 c 196.242 32.567 197.746 32.907 199.117 + 33.325 c 201.609 34.083 l 201.707 41.919 l 201.805 49.759 l 203.684 49.864 + l 204.992 49.942 206.055 49.751 207.18 49.239 c 209.047 48.388 209.301 +47.942 208.66 46.665 c 208.371 46.095 208.152 43.868 208.074 40.786 c 207.957 + 35.825 l 209.273 35.825 l 209.996 35.825 211.422 36.095 212.445 36.427 +c 214.23 37.001 214.328 36.997 214.855 36.337 c 215.16 35.954 215.578 35.196 + 215.789 34.649 c 215.996 34.102 216.293 33.653 216.449 33.653 c 216.832 + 33.653 217.645 30.641 217.484 29.806 c 217.367 29.192 216.957 29.13 213.016 + 29.114 c 210.633 29.102 208.41 28.97 208.082 28.817 c 207.363 28.481 206.992 + 22.196 206.918 9.044 c 206.879 2.056 206.781 0.641 206.328 0.352 c 205.535 + -0.144 202.801 -0.077 202.465 0.454 c h +407.906 2.102 m 406.441 2.333 402.094 5.352 402.332 5.974 c 402.445 6.27 + 402.707 6.513 402.914 6.513 c 403.426 6.513 410.059 13.184 410.059 13.7 + c 410.059 13.927 410.184 14.114 410.332 14.114 c 410.895 14.122 413.797 + 19.571 414.762 22.434 c 417.156 29.536 417.203 38.747 414.895 47.946 c +414.594 49.141 414.215 50.649 414.047 51.294 c 413.758 52.427 413.781 52.462 + 414.707 52.259 c 417.59 51.634 417.832 51.333 419.203 46.681 c 422.32 36.099 + 422.586 26.45 420.016 17.052 c 419.426 14.895 416.766 9.188 415.988 8.407 + c 415.711 8.134 415.488 7.778 415.488 7.618 c 415.488 7.462 414.449 6.247 + 413.18 4.919 c 410.883 2.516 409.605 1.833 407.906 2.102 c h +262.418 2.829 m 260.957 3.532 260.273 4.263 260.258 5.145 c 260.25 5.485 + 260.02 6.302 259.746 6.954 c 257.246 12.884 256.172 26.763 257.664 33.872 + c 258.633 38.485 259.824 41.72 261.766 45.02 c 263.887 48.626 268.145 52.833 + 269.668 52.833 c 270.238 52.833 274.098 50.97 274.633 50.438 c 274.883 +50.188 275.41 49.884 275.809 49.755 c 276.207 49.63 276.531 49.407 276.531 + 49.255 c 276.531 49.001 274.07 46.681 273.797 46.681 c 273.5 46.681 270.016 + 42.997 270.016 42.684 c 270.016 42.493 269.887 42.341 269.73 42.341 c 269.445 + 42.341 266.758 38.907 266.758 38.54 c 266.758 38.434 266.391 37.735 265.934 + 36.993 c 264.969 35.411 263.863 32.599 262.914 29.313 c 262.355 27.368 +262.238 25.77 262.254 20.083 c 262.273 13.337 262.504 11.423 263.945 5.97 + c 264.887 2.403 264.906 2.169 264.277 2.196 c 263.953 2.204 263.113 2.493 + 262.418 2.829 c h +386.898 2.415 m 378.605 3.438 377.863 3.704 377.195 5.88 c 375.809 10.376 + 373.941 12.786 371.555 13.149 c 370.211 13.352 370.016 13.251 367.859 11.231 + c 365.59 9.106 365.094 8.774 361.84 7.181 c 360.895 6.716 360.121 6.227 + 360.121 6.095 c 360.121 5.661 357.707 4.341 356.914 4.341 c 354.457 4.341 + 348.902 8.356 348.902 10.134 c 348.902 10.813 349.148 10.856 353.184 10.856 + c 356.52 10.856 358 11.024 359.879 11.614 c 361.207 12.032 362.293 12.52 + 362.293 12.7 c 362.293 12.88 362.457 13.028 362.66 13.028 c 363.078 13.028 + 366.273 16.266 366.273 16.684 c 366.273 17.184 364.309 18.345 362.422 18.966 + c 360.445 19.61 360.137 20.067 360.129 22.356 c 360.121 23.665 360.91 25.829 + 361.527 26.212 c 361.746 26.345 362.91 25.876 364.117 25.169 c 365.324 +24.462 366.445 23.884 366.609 23.884 c 366.773 23.884 367.113 23.638 367.359 + 23.341 c 367.605 23.044 368.086 22.798 368.426 22.798 c 369.125 22.798 +369.891 25.466 369.891 27.891 c 369.891 29.438 369.422 29.681 367.969 28.872 + c 367.48 28.602 365.57 28.431 362.988 28.419 c 359.531 28.411 358.57 28.282 + 357.477 27.696 c 356.164 26.985 356.152 26.985 355.625 27.696 c 355.055 + 28.458 354.332 31.302 354.332 32.774 c 354.332 33.849 355.266 34.282 358.246 + 34.587 c 362.355 35.009 368.797 36.509 370.098 37.349 c 370.312 37.485 +372.266 38.192 374.441 38.919 c 376.617 39.645 378.758 40.47 379.199 40.747 + c 380.543 41.595 381.707 41.372 382.68 40.079 c 384.594 37.528 385.734 +33.751 384.637 33.587 c 384.391 33.548 383.02 33.509 381.59 33.493 c 378.305 + 33.466 377.375 32.841 375.738 29.532 c 374.648 27.325 373.168 21.665 373.152 + 19.653 c 373.148 18.552 378.91 12.809 380.75 12.087 c 381.047 11.97 381.781 + 11.649 382.379 11.38 c 382.973 11.106 384.902 10.372 386.668 9.747 c 390.215 + 8.489 392.648 7.013 393.762 5.446 c 394.797 3.997 394.684 3.372 393.324 + 2.946 c 392.031 2.548 388.324 2.239 386.898 2.415 c h +152.227 4.099 m 149.426 4.513 149.035 4.825 148.445 7.145 c 148.23 7.993 + 147.895 8.684 147.699 8.684 c 147.504 8.684 147.344 8.931 147.344 9.227 + c 147.344 9.528 147.098 9.77 146.801 9.77 c 146.5 9.77 146.258 9.931 146.258 + 10.126 c 146.258 10.52 143.5 11.942 142.73 11.942 c 142.457 11.942 141.797 + 11.481 141.262 10.923 c 138.781 8.333 136.094 6.876 133.781 6.876 c 132.195 + 6.876 129.453 7.86 128.688 8.708 c 128.082 9.376 128.082 9.442 128.707 +10.134 c 129.066 10.532 129.656 10.856 130.016 10.856 c 131.078 10.856 135.316 + 12.778 137.27 14.145 c 138.605 15.083 l 136.484 17.313 l 135.305 18.552 + 134.051 19.54 133.66 19.54 c 132.48 19.54 131.969 20.563 132 22.849 c 132.035 + 25.462 132.816 26.563 134.383 26.22 c 134.996 26.087 135.402 26.149 135.402 + 26.376 c 135.402 26.993 142.492 29.04 144.098 28.888 c 145.492 28.755 145.5 + 28.759 144.836 29.485 c 143.207 31.274 143 32.27 143 38.341 c 143 44.794 + 142.957 44.888 140.816 43.102 c 139.562 42.056 l 139.582 38.852 l 139.59 + 37.087 139.672 34.782 139.762 33.724 c 139.922 31.813 139.918 31.798 138.098 + 30.087 c 135.477 27.626 131.059 26.356 131.059 28.067 c 131.059 28.333 +131.547 29.274 132.145 30.161 c 132.742 31.044 133.23 31.907 133.23 32.079 + c 133.234 32.247 133.496 32.876 133.816 33.474 c 134.238 34.263 134.445 + 35.942 134.574 39.626 c 134.691 42.876 134.926 44.962 135.227 45.442 c +135.656 46.13 139.707 47.766 140.977 47.766 c 141.246 47.766 141.938 48.009 + 142.508 48.309 c 143.953 49.059 146.387 48.985 148.055 48.134 c 149.832 + 47.227 150.133 46.317 149.238 44.587 c 148.355 42.888 147.648 39.95 147.613 + 37.852 c 147.582 35.696 148.406 34.516 150.328 33.966 c 152.465 33.356 +152.77 33.04 152.77 31.454 c 152.77 30.411 152.527 29.841 151.801 29.165 + c 150.82 28.255 148.48 27.618 147.629 28.028 c 147.371 28.153 147.473 28.044 + 147.855 27.786 c 149.988 26.349 150.328 25.423 149.152 24.247 c 148.754 + 23.849 148.43 23.282 148.43 22.993 c 148.43 22.477 148.07 21.552 146.543 + 18.102 c 145.828 16.485 l 146.91 15.571 l 147.504 15.067 148.383 14.329 + 148.863 13.931 c 150.176 12.845 153.766 11.083 156.207 10.329 c 162.23 +8.47 164.34 7.106 163.805 5.415 c 163.562 4.653 163.234 4.54 159.645 3.985 + c 156.93 3.567 155.723 3.587 152.227 4.099 c h +142.797 24.309 m 142.523 25.177 141.594 25.141 139.391 24.181 c 137.582 + 23.391 l 141.676 19.454 l 142.344 21.552 l 142.707 22.708 142.914 23.95 + 142.797 24.309 c h +315.25 4.927 m 312.305 6.091 309.629 8.333 309.27 9.942 c 308.648 12.696 + 308.348 16.372 308.375 20.774 c 308.395 23.579 308.402 26.149 308.395 26.485 + c 308.383 26.927 307.93 26.657 306.797 25.544 c 304.602 23.38 302.277 21.86 + 300.727 21.575 c 299.773 21.399 299.355 21.11 299.219 20.528 c 299.113 +20.083 298.762 19.005 298.438 18.13 c 297.465 15.505 297.832 15.165 299.734 + 16.923 c 301.922 18.938 302.586 18.934 302.586 16.919 c 302.586 14.095 +300.703 10.075 298.281 7.72 c 297.199 6.669 296.75 6.661 295.832 7.692 c + 294.453 9.227 293.852 12.157 294.121 15.993 c 294.41 20.114 294.184 21.352 + 293.145 21.352 c 292.25 21.352 291.098 20.782 290.043 19.825 c 288.664 +18.571 287.23 19.645 286.145 22.735 c 285.496 24.583 286.012 25.618 287.711 + 25.884 c 290.102 26.255 293.352 27.255 293.762 27.743 c 293.98 28.009 294.273 + 28.227 294.41 28.227 c 294.547 28.227 295.02 28.606 295.457 29.067 c 295.895 + 29.532 296.527 30.009 296.859 30.134 c 297.781 30.47 300.223 28.536 300.621 + 27.149 c 300.957 25.985 l 302.855 28.532 l 303.902 29.934 304.758 31.239 + 304.758 31.434 c 304.758 31.63 305 32.29 305.301 32.903 c 305.598 33.516 + 306.086 34.52 306.387 35.13 c 306.684 35.743 306.93 36.528 306.93 36.868 + c 306.93 37.212 307.07 37.645 307.242 37.833 c 307.414 38.024 307.973 39.403 + 308.48 40.903 c 308.988 42.399 309.562 44.028 309.758 44.52 c 309.953 45.013 + 310.395 46.474 310.734 47.766 c 311.078 49.063 311.625 50.813 311.949 51.657 + c 312.52 53.153 312.582 53.192 314.184 53.196 c 315.09 53.196 316.027 53.001 + 316.266 52.763 c 316.848 52.177 316.793 50.329 316.156 49.216 c 315.512 + 48.091 315.449 44.372 316.066 43.724 c 316.312 43.458 316.762 42.774 317.059 + 42.196 c 317.359 41.618 318.426 40.282 319.438 39.224 c 320.445 38.165 +321.992 36.438 322.871 35.388 c 325.047 32.786 327.559 30.399 328.117 30.399 + c 328.371 30.399 328.633 30.27 328.699 30.11 c 328.766 29.954 329.719 29.364 + 330.812 28.798 c 333.949 27.177 336.176 25.614 336.363 24.899 c 336.914 + 22.786 335.586 22.224 330.949 22.61 c 325.246 23.087 323.25 23.989 323.223 + 26.099 c 323.211 27.255 321.867 30.399 321.387 30.399 c 321.195 30.399 +321.043 30.641 321.043 30.942 c 321.043 31.239 320.879 31.485 320.68 31.485 + c 320.48 31.485 320.02 31.77 319.656 32.118 c 319.293 32.466 318.602 33.083 + 318.117 33.493 c 317.637 33.903 316.508 35.059 315.613 36.067 c 314.719 + 37.075 313.648 38.075 313.234 38.29 c 312.551 38.645 312.383 38.477 311.355 + 36.438 c 309.703 33.149 309.098 31.524 309.098 30.349 c 309.098 29.337 +309.145 29.309 310.508 29.528 c 311.625 29.708 312.062 29.606 312.633 29.036 + c 313.273 28.395 313.312 28.106 312.992 26.263 c 312.797 25.13 312.723 +24.118 312.828 24.016 c 312.93 23.911 313.723 24.247 314.586 24.755 c 315.449 + 25.266 316.488 25.833 316.895 26.013 c 317.301 26.192 317.852 26.602 318.113 + 26.923 c 318.875 27.841 319.586 27.606 320.156 26.247 c 321.023 24.165 +320.57 21.712 319.312 21.712 c 319.102 21.712 318.875 21.591 318.809 21.442 + c 318.648 21.079 315.371 18.458 315.082 18.458 c 314.953 18.458 314.355 + 17.997 313.754 17.431 c 312.664 16.415 312.66 16.395 313.051 14.278 c 313.27 + 13.102 313.68 11.915 313.961 11.63 c 314.789 10.802 317.961 10.665 319.562 + 11.388 c 321.227 12.138 321.766 13.536 321.766 17.122 c 321.766 18.431 +321.93 19.602 322.129 19.724 c 322.82 20.153 323.934 19.493 324.164 18.524 + c 324.293 17.989 324.52 17.388 324.672 17.188 c 325.281 16.384 326.793 +9.849 326.809 7.962 c 326.824 6.044 326.402 5.669 323.867 5.376 c 319.918 + 4.919 315.816 4.704 315.25 4.927 c h +121.473 6.602 m 120.414 9.708 120.145 12.118 120.258 17.368 c 120.383 22.977 + l 118.77 22.856 l 117.723 22.774 116.785 22.423 116.117 21.86 c 115.547 + 21.38 114.852 20.989 114.574 20.989 c 113.812 20.989 112.613 23.634 112.512 + 25.524 c 112.426 27.153 112.453 27.2 113.789 27.669 c 114.539 27.931 115.84 + 28.251 116.684 28.376 c 119.211 28.759 122.801 30.251 124.078 31.454 c +125.223 32.532 126.121 32.388 127.402 30.927 c 128.809 29.325 128.879 27.759 + 127.621 26.056 c 127.125 25.38 126.715 24.556 126.715 24.22 c 126.715 23.888 + 126.496 22.981 126.227 22.212 c 125.562 20.298 125.199 17.368 125.625 17.368 + c 125.812 17.368 126.469 17.86 127.078 18.454 c 128.398 19.743 129.973 +19.934 129.973 18.806 c 129.973 18.403 129.73 17.485 129.43 16.77 c 129.133 + 16.056 128.887 15.208 128.887 14.884 c 128.883 14.559 128.641 13.829 128.344 + 13.259 c 128.043 12.688 127.801 12.063 127.801 11.872 c 127.801 11.454 +124.668 7.247 123.875 6.602 c 123.57 6.356 122.941 6.153 122.473 6.153 c + 122.008 6.153 121.559 6.356 121.473 6.602 c h +181.875 7.872 m 180.062 12.13 179.805 13.708 180.109 18.638 c 180.562 25.884 + 180.512 26.438 179.473 25.903 c 178.559 25.434 177.449 24.755 176.965 24.364 + c 175.574 23.251 174.926 23.434 173.891 25.224 c 173.34 26.177 172.785 +27.04 172.66 27.141 c 172.535 27.239 172.246 27.856 172.023 28.513 c 171.676 + 29.528 171.715 29.798 172.289 30.372 c 172.656 30.743 173.668 31.153 174.535 + 31.282 c 176.316 31.552 179.082 32.575 183.066 34.442 c 183.906 34.833 +184.887 35.063 185.242 34.95 c 185.996 34.712 188.086 31.653 188.43 30.282 + c 188.625 29.513 188.434 29.122 187.406 28.149 c 186.711 27.497 185.949 + 26.583 185.719 26.126 c 185.199 25.11 184.73 16.278 185.195 16.298 c 185.91 + 16.325 187.492 18.048 189.113 20.559 c 190.293 22.388 191.008 23.165 191.426 + 23.079 c 192.348 22.888 192.082 19.411 190.965 16.966 c 190.09 15.056 188.59 + 12.298 188.234 11.942 c 187.844 11.552 186.426 9.427 186.426 9.231 c 186.426 + 9.118 185.91 8.462 185.281 7.77 c 183.727 6.063 182.633 6.095 181.875 7.872 + c h +57.926 8.548 m 57.348 9.239 56.527 11.497 56.52 12.403 c 56.512 13.173 +57.469 13.575 60.133 13.915 c 62.109 14.169 63.715 14.563 68.691 16.024 +c 72.648 17.184 72.555 17.036 72.473 22.192 c 72.441 24.384 72.375 24.599 + 71.895 24.118 c 71.594 23.817 71.352 23.489 71.352 23.384 c 71.352 23.024 + 67.984 19.54 67.637 19.54 c 66.953 19.54 63.852 22.997 63.441 24.216 c +63.102 25.216 63.125 25.606 63.551 26.259 c 64.004 26.95 64.391 27.063 66.266 + 27.044 c 67.816 27.028 68.645 27.196 69.113 27.626 c 69.48 27.954 69.945 + 28.227 70.145 28.227 c 70.348 28.227 70.789 28.528 71.125 28.899 c 71.664 + 29.493 71.707 30.165 71.488 34.52 c 71.184 40.575 71.41 41.255 73.719 41.255 + c 75.59 41.255 78.469 40.032 78.758 39.114 c 78.875 38.739 78.723 37.802 + 78.41 37.028 c 77.949 35.876 77.867 34.169 77.945 27.493 c 78.043 19.36 + l 78.926 19.458 l 79.414 19.513 79.855 19.602 79.91 19.657 c 80.43 20.177 + 81.168 25.462 81.637 32.024 c 82.121 38.794 82.473 41.677 83.508 47.29 +c 83.766 48.669 84.703 49.302 86.113 49.036 c 88.926 48.509 89.969 47.001 + 88.707 45.29 c 88.18 44.583 87.824 43.364 87.617 41.571 c 87.449 40.102 + 87.145 37.763 86.938 36.368 c 86.73 34.974 86.566 32.778 86.566 31.481 +c 86.57 29.13 l 87.5 30.216 l 89.414 32.446 89.805 32.942 89.805 33.114 +c 89.805 33.212 90.051 33.579 90.352 33.927 c 90.652 34.274 91.355 35.114 + 91.918 35.79 c 93.238 37.384 94.32 37.161 96.156 34.923 c 97.621 33.134 + 97.68 31.735 96.301 31.298 c 95.895 31.165 93.906 29.446 91.887 27.47 c + 89.871 25.493 87.613 23.595 86.875 23.247 c 85.812 22.751 85.5 22.38 85.395 + 21.481 c 85.316 20.856 85.316 20.165 85.391 19.942 c 85.551 19.462 93.125 + 19.423 95.594 19.891 c 96.492 20.063 97.84 20.321 98.59 20.462 c 99.645 + 20.665 100.113 20.579 100.66 20.087 c 102.062 18.817 103.727 14.122 103.496 + 12.095 c 103.383 11.095 103.289 11.04 101.746 11.079 c 100.852 11.102 98.902 + 11.548 97.418 12.075 c 94.828 12.989 94.406 13.028 87.285 13.016 c 82.078 + 13.005 79.203 12.845 77.684 12.477 c 76.488 12.188 74.68 11.95 73.668 11.946 + c 70.68 11.938 63.766 10.274 60.375 8.747 c 58.289 7.809 58.52 7.829 57.926 + 8.548 c h +11.016 28.677 m 10.027 30.2 10.016 30.266 10.125 35.462 c 10.184 38.349 + 10.039 42.02 9.805 43.622 c 9.43 46.177 9.449 46.677 9.977 47.692 c 10.434 + 48.583 10.805 48.845 11.559 48.825 c 13.102 48.782 15.043 47.958 15.441 + 47.177 c 15.754 46.567 15.988 46.513 17.168 46.794 c 18.238 47.048 18.73 + 46.985 19.465 46.505 c 20.871 45.583 20.414 44.153 17.934 41.712 c 16.324 + 40.126 15.863 39.415 15.711 38.278 c 15.52 36.849 l 16.566 37.825 l 18.434 + 39.563 20.707 40.962 21.301 40.735 c 21.746 40.563 21.824 40.177 21.656 + 38.95 c 21.469 37.587 20.539 35.29 19.953 34.739 c 19.844 34.641 19.398 + 34.091 18.957 33.516 c 16.648 30.509 13.129 27.149 12.281 27.141 c 12.133 + 27.141 11.562 27.833 11.016 28.677 c h +25.684 31.841 m 24.75 32.653 23.625 34.032 23.191 34.907 c 22.434 36.415 + 22.41 36.766 22.676 41.681 c 22.832 44.532 22.977 48.329 23 50.118 c 23.023 + 51.911 23.172 53.579 23.332 53.829 c 23.781 54.52 25.348 54.368 26.758 +53.497 c 28.023 52.712 l 27.809 49.903 l 27.59 47.091 l 28.754 47.481 l +29.395 47.692 30.172 48.091 30.488 48.36 c 31.309 49.067 32.543 48.966 32.98 + 48.153 c 33.574 47.04 33.41 44.423 32.695 43.606 c 31.887 42.681 29.879 + 41.255 29.387 41.255 c 29.18 41.255 29.012 41.11 29.012 40.934 c 29.012 + 40.759 28.523 40.415 27.926 40.169 c 26.965 39.77 26.84 39.544 26.844 38.224 + c 26.852 36.138 27.227 35.72 29.117 35.681 c 31.188 35.634 31.945 36.306 + 32.762 38.895 c 33.109 39.993 33.586 40.888 33.824 40.88 c 35.031 40.849 + 36.609 38.337 36.609 36.45 c 36.609 35.759 36.859 34.489 37.164 33.63 c + 37.688 32.141 37.676 32.028 36.973 31.321 c 36.32 30.665 35.703 30.567 +31.809 30.474 c 27.383 30.368 l h +296.914 34.356 m 294.777 35.325 294.484 36.071 294.785 39.774 c 295.031 + 42.79 295.594 44.161 296.578 44.141 c 296.945 44.134 298.684 41.708 300.68 + 38.423 c 301.555 36.985 301.719 35.466 301.125 34.352 c 300.637 33.446 +298.918 33.446 296.914 34.356 c h +124.816 38.591 m 122.375 39.829 l 122.375 42.13 l 122.375 45.54 123.875 + 48.489 125.613 48.489 c 126.07 48.489 126.535 48.13 126.781 47.587 c 127.008 + 47.087 127.332 46.681 127.496 46.681 c 127.664 46.681 127.801 46.438 127.801 + 46.138 c 127.801 45.841 127.934 45.595 128.098 45.595 c 128.418 45.595 +129.484 43.595 130.191 41.673 c 130.938 39.638 129.73 37.259 127.984 37.321 + c 127.586 37.337 126.16 37.907 124.816 38.591 c h +185.168 39.817 m 183 40.587 182.699 41.337 183.145 44.864 c 183.723 49.47 + 185.5 51.028 186.973 48.22 c 187.363 47.474 187.773 46.782 187.879 46.681 + c 189.934 44.794 191.742 41.169 191.312 39.813 c 191.113 39.184 190.789 + 39.091 189.023 39.13 c 187.895 39.157 186.16 39.466 185.168 39.817 c h +368.988 42.251 m 365.379 44.106 364.602 48.188 367.129 52.016 c 367.988 + 53.321 369.418 53.618 369.754 52.563 c 370.152 51.298 371.145 49.028 371.375 + 48.852 c 371.504 48.755 371.977 47.817 372.426 46.77 c 374.074 42.923 372.277 + 40.559 368.988 42.251 c h +368.988 42.251 m f +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/macros/latex/contrib/hithesis/figures/hitlogo.eps b/macros/latex/contrib/hithesis/figures/hitlogo.eps new file mode 100644 index 0000000000..251af0e1ba --- /dev/null +++ b/macros/latex/contrib/hithesis/figures/hitlogo.eps @@ -0,0 +1,382 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.10 (http://cairographics.org) +%%CreationDate: Sat Aug 26 21:27:21 2017 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 98 590 565 677 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 98 590 565 677 +%%EndPageSetup +q 98 590 467 87 rectclip q +0 g +532.574 596.495 m 527.34 601.503 l 532.105 601.257 l 536.867 601.015 l +537.176 605.284 l 537.57 610.765 535.727 611.605 529.727 608.679 c 525.621 + 606.675 525.082 606.632 522.34 608.054 c 519.105 609.734 518.207 613.554 + 521.047 613.554 c 526.309 613.554 535.574 615.941 536.098 617.433 c 536.414 + 618.331 537.324 619.831 538.117 620.761 c 539.957 622.917 538.949 624.589 + 535.809 624.589 c 534.309 624.589 533.371 625.167 533.371 626.093 c 533.371 + 627.132 534.414 627.597 536.746 627.597 c 538.602 627.597 540.684 628.273 + 541.367 629.101 c 542.051 629.929 543.152 630.605 543.816 630.605 c 545.504 + 630.605 554.359 636.612 554.359 637.753 c 554.359 640.003 551.082 639.741 + 548.531 637.292 c 546.605 635.437 545.172 634.859 543.562 635.28 c 542.25 + 635.624 540.578 635.269 539.586 634.433 c 538.641 633.64 535.949 632.155 + 533.602 631.136 c 529.934 629.542 528.992 629.468 526.855 630.616 c 525.492 + 631.351 524.375 632.526 524.375 633.237 c 524.375 634.55 530.199 636.609 + 533.93 636.62 c 535.062 636.624 536.859 637.276 537.926 638.069 c 539.75 + 639.425 539.766 639.616 538.18 641.234 c 536.59 642.855 536.336 642.855 + 533.902 641.253 c 529.945 638.651 527.355 641.421 531.121 644.23 c 532.781 + 645.468 532.785 645.62 531.133 647.3 c 529.477 648.987 529.316 648.98 527.637 + 647.112 c 526.668 646.034 524.629 643.234 523.109 640.89 c 520.074 636.202 + 519.285 635.859 516.941 638.214 c 515.5 639.659 515.535 640.05 517.367 +642.632 c 519.605 645.784 519.863 648.249 518.371 652.194 c 517.082 655.597 + 517.922 657.003 520.438 655.651 c 522.004 654.812 522.375 653.526 522.375 + 648.929 c 522.375 644.753 522.672 643.542 523.488 644.362 c 525.016 645.898 + 524.98 659.335 523.438 664.03 c 522.742 666.136 522.426 668.109 522.73 +668.413 c 523.68 669.37 528.34 667.757 530.293 665.796 c 532.059 664.023 + 532.078 663.616 530.602 658.296 c 529.742 655.202 529.355 652.359 529.738 + 651.976 c 530.117 651.593 531.637 652.491 533.113 653.972 c 535.215 656.081 + 535.535 656.925 534.582 657.878 c 532.492 659.98 533.246 660.816 536.652 + 660.175 c 539.746 659.593 540.133 659.859 543.301 664.769 c 545.152 667.632 + 546.953 671.386 547.305 673.109 c 548.117 677.101 550.496 677.569 552.109 + 674.058 c 554.223 669.452 553.566 667.433 548.82 663.929 c 544.594 660.808 + 543.32 658.456 545.219 657.28 c 545.688 656.991 547.113 657.866 548.391 + 659.23 c 549.664 660.589 551.164 661.706 551.719 661.706 c 552.273 661.706 + 553.707 662.624 554.898 663.749 c 556.094 664.878 558.707 666.066 560.711 + 666.39 c 563.699 666.878 564.352 666.679 564.352 665.28 c 564.352 662.866 + 562.582 659.78 558.711 655.433 c 556.867 653.362 555.355 651.331 555.355 + 650.917 c 555.355 650.507 554.223 648.847 552.836 647.23 c 549.637 643.499 + 550.965 641.87 555.352 644.148 c 559.18 646.136 563.352 645.437 563.352 + 642.804 c 563.352 640.519 555.363 633.476 551.09 631.995 c 548.676 631.159 + 547.922 630.343 548.094 628.757 c 548.223 627.589 547.203 624.968 545.824 + 622.929 c 542.656 618.245 543.805 616.956 549.211 619.128 c 553.934 621.023 + 556.355 620.526 556.355 617.655 c 556.355 615.093 554.867 614.226 549.359 + 613.577 c 544.863 613.05 l 545.203 605.913 l 545.523 599.101 545.395 598.612 + 542.348 595.132 c 540.594 593.124 538.855 591.484 538.48 591.484 c 538.109 + 591.484 535.449 593.737 532.57 596.495 c h +545.535 641.296 m 547.727 643.284 547.891 644.651 545.934 644.651 c 544.055 + 644.651 541.191 641.734 541.914 640.558 c 542.719 639.253 543.449 639.401 + 545.535 641.296 c h +544.215 645.972 m 545.816 647.913 546.102 653.878 544.613 654.405 c 543.871 + 654.671 543.363 653.995 543.363 652.73 c 543.363 651.562 542.691 650.347 + 541.867 650.03 c 539.598 649.155 540.055 644.651 542.41 644.651 c 542.801 + 644.651 543.613 645.245 544.215 645.972 c h +551.395 649.917 m 553.59 653.487 554.887 657.499 554.098 658.288 c 553.82 + 658.566 552.422 658.499 550.988 658.136 c 548.836 657.593 548.398 656.929 + 548.488 654.327 c 548.551 652.593 548.27 650.155 547.863 648.913 c 546.742 + 645.472 549.066 646.132 551.395 649.917 c h +538.367 650.702 m 538.367 653.507 535.695 654.288 533.355 652.163 c 530.906 + 649.937 531.66 648.663 535.43 648.663 c 537.715 648.663 538.367 649.116 + 538.367 650.702 c h +282.875 600.261 m 277.797 605.624 277.324 605.894 276.215 604.112 c 272.863 + 598.734 269.059 596.937 267.828 600.155 c 267.441 601.167 267.922 602.335 + 269.066 603.175 c 270.871 604.503 270.859 604.601 268.73 606.097 c 266.473 + 607.683 265.711 612.261 267.395 614.105 c 268.73 615.566 269.637 620.386 + 268.684 620.976 c 268.219 621.265 266.312 619.921 264.449 617.987 c 262.059 + 615.511 260.328 614.562 258.594 614.765 c 255.715 615.109 254.789 612.874 + 254.629 605.21 c 254.535 600.519 253.203 596.495 251.746 596.503 c 251.355 + 596.503 249.742 598.905 248.168 601.839 c 245.32 607.136 245.312 607.202 + 247.07 610.609 c 248.27 612.944 249.082 617.749 249.594 625.585 c 250.008 + 631.933 250.805 638.308 251.363 639.753 c 252.125 641.714 251.977 643.499 + 250.781 646.843 c 249.219 651.198 249.508 654.683 251.426 654.683 c 253.09 + 654.683 258.27 649.773 258.812 647.679 c 259.164 646.339 258.359 644.612 + 256.426 642.53 c 252.633 638.456 251.941 635.39 253.887 631.269 c 255.355 + 628.167 255.328 627.573 253.5 622.737 c 252.418 619.882 251.531 616.87 +251.531 616.05 c 251.531 613.741 253.32 614.284 254.043 616.812 c 255.953 + 623.487 259.816 632.554 260.559 632.093 c 261.027 631.804 260.547 629.655 + 259.492 627.323 c 257.395 622.687 256.992 619.573 258.484 619.573 c 259.879 + 619.573 271.633 631.741 272.492 634.069 c 274.375 639.183 269.77 642.163 + 265.789 638.409 c 263.043 635.819 264.242 633.862 267.5 635.612 c 270.496 + 637.218 271.133 636.206 269.094 633.085 c 266.918 629.749 263.18 630.019 + 262.684 633.542 c 262.496 634.882 261.68 636.991 260.871 638.23 c 259.566 + 640.226 259.578 640.835 260.961 643.523 c 261.824 645.191 262.527 647.554 + 262.527 648.769 c 262.527 650.909 262.59 650.921 264.5 649.191 c 265.586 + 648.202 266.754 646.511 267.094 645.429 c 267.617 643.773 268.297 643.566 + 271.367 644.109 c 273.375 644.468 276.207 645.612 277.656 646.659 c 280.102 + 648.421 281.516 648.39 281.516 646.566 c 281.516 646.151 280.379 644.452 + 278.992 642.796 c 277.355 640.847 276.852 639.546 277.555 639.112 c 279.039 + 638.191 282.02 641.073 284.074 645.425 c 285.672 648.804 285.859 648.909 + 287.145 647.148 c 289.727 643.601 288.723 641.331 282.492 636.651 c 279.207 + 634.179 276.52 631.585 276.52 630.882 c 276.52 629.14 277.234 629.265 281.129 + 631.679 c 282.973 632.823 284.887 633.503 285.391 633.191 c 285.91 632.87 + 286.07 627.23 285.766 620.124 c 285.227 607.624 l 287.703 606.491 l 289.066 + 605.866 290.965 604.019 291.93 602.386 c 293.543 599.64 293.555 599.23 +292.07 596.952 c 291.188 595.601 289.984 594.491 289.402 594.491 c 288.816 + 594.491 285.883 597.089 282.875 600.261 c h +273.02 608.37 m 273.02 610.183 271.062 609.855 270.676 607.972 c 270.461 + 606.929 270.836 606.468 271.676 606.749 c 272.414 606.999 273.02 607.726 + 273.02 608.37 c h +282.852 607.202 m 283.219 607.569 282.781 608.691 281.883 609.687 c 280.688 + 611.011 280.215 613.609 280.133 619.3 c 280.035 625.71 279.75 627.023 278.516 + 626.687 c 277.691 626.46 276.098 626.202 274.969 626.116 c 271.961 625.882 + 270.523 624.722 270.523 622.523 c 270.523 620.179 271.371 620.081 274.23 + 622.089 c 276.879 623.952 277.211 623.409 277.312 617.042 c 277.441 609.073 + 280.066 604.405 282.852 607.202 c h +273.762 615.073 m 273.055 618.792 271.52 619.167 271.52 615.62 c 271.52 + 613.698 272.031 612.55 272.883 612.55 c 273.797 612.55 274.086 613.378 +273.762 615.073 c h +394.883 598.015 m 393.098 602.304 391.578 602.413 388.113 598.507 c 386.641 + 596.851 384.613 595.495 383.605 595.495 c 381.195 595.495 378.461 598.601 + 378.461 601.335 c 378.461 603.222 378.98 603.487 382.387 603.351 c 386.152 + 603.206 391.453 605.589 391.453 607.433 c 391.453 607.905 390.789 608.847 + 389.973 609.523 c 387.883 611.269 389.734 614.339 393.125 614.741 c 395.992 + 615.081 397.672 617.566 395.035 617.566 c 393.027 617.566 392.965 619.448 + 394.945 620.21 c 395.766 620.526 396.172 621.222 395.844 621.753 c 395.516 + 622.284 394.617 622.476 393.852 622.179 c 392.133 621.519 389.453 622.46 + 389.453 623.726 c 389.453 624.237 391.027 625.589 392.953 626.726 c 396.656 + 628.921 397.723 631.148 394.59 630.151 c 393.52 629.808 392.199 630.202 + 391.473 631.085 c 389.547 633.413 388.578 633.023 382.863 627.597 c 379.957 + 624.839 376.715 622.581 375.656 622.581 c 372.305 622.581 368.316 626.507 + 368.66 629.468 c 368.938 631.862 369.391 632.124 373.461 632.249 c 376.531 + 632.343 380.18 633.566 384.957 636.101 c 394.23 641.026 394.789 641.616 + 393.477 645.089 c 392.566 647.491 392.199 647.694 390.832 646.558 c 389.961 + 645.831 388.855 644.202 388.375 642.937 c 387.219 639.886 383.684 639.886 + 382.922 642.937 c 382.605 644.198 382.816 646.472 383.391 647.991 c 384.277 + 650.327 384.734 650.589 386.379 649.706 c 387.66 649.019 389.188 648.991 + 390.844 649.624 c 393.203 650.526 393.383 651.093 393.66 658.405 c 393.945 + 666.054 394.008 666.226 396.637 666.53 c 400.406 666.968 403.234 662.734 + 401.59 659.109 c 399.938 655.476 400.156 654.683 402.805 654.683 c 404.324 + 654.683 406.367 656.109 408.551 658.691 c 410.863 661.421 412.75 662.698 + 414.488 662.702 c 420.211 662.714 421.387 656.741 416.188 654.066 c 414.402 + 653.148 412.633 651.917 412.258 651.331 c 410.691 648.894 412.91 648.859 + 419.168 651.222 c 424.895 653.386 426.004 653.534 427.223 652.312 c 429.281 + 650.245 427.848 646.894 424.637 646.273 c 423.152 645.987 418.617 645.484 + 414.562 645.155 c 407.32 644.566 399.117 641.452 395.652 637.976 c 393.398 + 635.714 395.266 634.98 398.512 636.851 c 401.117 638.351 402.941 637.671 + 400.453 636.128 c 399.906 635.788 398.992 634.632 398.418 633.562 c 397.598 + 632.019 397.703 631.609 398.922 631.609 c 399.77 631.609 401.816 633.816 + 403.473 636.515 c 406.613 641.64 410.02 643.499 412.223 641.288 c 414.098 + 639.405 412.746 636.929 409.156 635.671 c 405.512 634.398 401.445 630.839 + 401.445 628.929 c 401.445 626.905 403.148 627.335 404.863 629.792 c 406.754 + 632.499 408.355 631.3 406.609 628.491 c 405.914 627.378 405.605 625.655 + 405.922 624.659 c 406.312 623.417 405.664 622.3 403.863 621.116 c 402.004 + 619.894 401.543 619.073 402.297 618.316 c 403.051 617.562 403.785 617.605 + 404.812 618.46 c 406.566 619.921 407.676 618.554 406.395 616.515 c 404.566 + 613.62 405.332 612.726 409.191 613.241 c 412.043 613.624 413.598 613.222 + 415.688 611.569 c 420.625 607.663 418.66 600.019 412.891 600.679 c 410.457 + 600.956 409.883 601.534 409.605 603.991 c 409.246 607.144 405.945 612.55 + 404.375 612.55 c 403.863 612.55 403.445 609.46 403.445 605.683 c 403.445 + 598.589 402.5 596.714 398.145 595.159 c 396.754 594.663 396.004 595.319 + 394.883 598.015 c h +396.797 603.276 m 397.668 604.691 396.223 609.542 394.93 609.542 c 393.551 + 609.542 391.23 604.077 392.199 603.105 c 393.039 602.261 396.246 602.382 + 396.797 603.276 c h +402.742 646.757 m 403.496 647.964 403.191 648.917 401.512 650.605 c 398.883 + 653.245 398.91 653.265 398.02 648.335 c 397.379 644.776 397.492 644.519 + 399.535 644.823 c 400.75 645.003 402.191 645.874 402.742 646.757 c h +409.371 653.312 m 410.508 654.769 411.441 656.347 411.441 656.823 c 411.441 + 658.632 408.605 657.593 407.059 655.218 c 403.922 650.417 405.852 648.823 + 409.371 653.312 c h +214.914 599.761 m 213.449 602.105 211.418 605.245 210.402 606.741 c 208.055 + 610.202 208.074 610.874 210.492 609.577 c 213.383 608.023 216.555 608.3 + 216.555 610.105 c 216.555 611.011 215.816 611.581 214.805 611.456 c 213.844 + 611.335 212.344 611.554 211.477 611.937 c 210.609 612.319 208.68 612.167 + 207.191 611.597 c 204.832 610.698 204.625 610.292 205.59 608.48 c 206.457 + 606.855 206.352 605.859 205.105 603.956 c 202.848 600.495 200.562 600.796 + 200.562 604.558 c 200.562 606.335 199.938 607.835 199.062 608.175 c 196.402 + 609.198 192.527 607.558 191.555 604.999 c 190.48 602.155 188.414 601.812 + 186.141 604.093 c 184.316 605.925 184.156 609.409 185.629 615.058 c 187.48 + 622.14 187.406 622.038 189.418 620.21 c 191.863 617.987 192.836 618.148 + 192.047 620.64 c 191.539 622.241 191.781 622.64 193.125 622.394 c 195.914 + 621.886 195.902 624.284 193.109 624.987 c 189.305 625.948 190.039 628.273 + 194.816 630.398 c 200.5 632.925 201.59 634.495 201.848 640.484 c 202.078 + 645.937 200.887 648.109 198.23 647.085 c 196.191 646.3 196.109 644.968 +197.973 643.093 c 200.273 640.784 198.648 637.792 193.09 634.089 c 187.453 + 630.335 186.836 630.151 184.598 631.573 c 183.406 632.331 183.977 633.308 + 187.598 636.706 c 191.922 640.769 191.949 642.991 187.645 640.679 c 184.664 + 639.077 180.711 640.468 179.043 643.71 c 177.273 647.14 178.188 647.987 + 184.07 648.378 c 187.996 648.64 202.82 655.359 209.664 659.976 c 223.113 + 669.05 230.449 670.456 230.531 663.98 c 230.551 662.155 220.797 657.48 +218.496 658.21 c 216.395 658.882 205.637 652.972 205.586 651.12 c 205.555 + 649.89 207.598 647.659 208.758 647.659 c 209.195 647.659 209.559 648.737 + 209.559 650.05 c 209.559 651.683 210.27 652.636 211.805 653.046 c 218.297 + 654.792 222.848 652.425 221.922 647.776 c 221.543 645.874 221.988 644.562 + 223.469 643.218 c 225.973 640.944 226.035 639.921 223.934 635.691 c 222.16 + 632.12 221.879 627.03 222.48 609.202 c 222.801 599.722 222.598 597.144 +221.469 596.425 c 218.898 594.792 217.609 595.448 214.914 599.761 c h +193.641 610.819 m 193.516 612.019 192.148 611.788 191.719 610.495 c 191.496 + 609.831 191.855 609.472 192.516 609.691 c 193.176 609.913 193.684 610.421 + 193.641 610.819 c h +207.059 616.562 m 206.574 617.347 206 617.405 205.332 616.737 c 204.785 + 616.187 204.66 615.206 205.059 614.558 c 205.543 613.773 206.117 613.714 + 206.785 614.382 c 207.332 614.933 207.457 615.913 207.059 616.562 c h +197.02 615.491 m 198.043 617.148 195.918 617.546 193.965 616.062 c 192.129 + 614.667 192.141 614.62 194.258 614.589 c 195.461 614.569 196.707 614.976 + 197.02 615.491 c h +216.555 618.511 m 216.555 620.132 216.102 621.737 215.555 622.081 c 214.957 + 622.448 214.555 621.253 214.555 619.128 c 214.555 617.167 215.004 615.558 + 215.555 615.558 c 216.102 615.558 216.555 616.886 216.555 618.511 c h +200.637 620.851 m 200.512 622.05 199.141 621.819 198.715 620.526 c 198.492 + 619.862 198.852 619.503 199.512 619.722 c 200.172 619.944 200.68 620.452 + 200.637 620.851 c h +211.555 621.577 m 211.555 623.913 211.547 623.913 207.906 622.523 c 205.68 + 621.675 205.418 621.276 206.594 620.534 c 209.141 618.917 211.555 619.425 + 211.555 621.577 c h +201.562 625.53 m 201.562 626.05 201.113 626.753 200.562 627.097 c 200.012 + 627.437 199.562 627.011 199.562 626.151 c 199.562 625.292 200.012 624.589 + 200.562 624.589 c 201.113 624.589 201.562 625.011 201.562 625.53 c h +207.559 626.593 m 207.559 627.148 207.109 627.597 206.559 627.597 c 206.008 + 627.597 205.559 627.148 205.559 626.593 c 205.559 626.042 206.008 625.593 + 206.559 625.593 c 207.109 625.593 207.559 626.042 207.559 626.593 c h +216.555 628.683 m 216.555 631.128 214.219 630.784 213.73 628.265 c 213.539 + 627.276 214.051 626.593 214.98 626.593 c 215.906 626.593 216.555 627.452 + 216.555 628.683 c h +211.555 631.609 m 211.555 632.163 210.656 632.612 209.559 632.612 c 208.457 + 632.612 207.559 632.163 207.559 631.609 c 207.559 631.058 208.457 630.609 + 209.559 630.609 c 210.656 630.609 211.555 631.058 211.555 631.609 c h +217.051 635.12 m 217.051 637.28 215.621 637.956 213.668 636.714 c 212.484 + 635.964 212.484 635.605 213.668 634.265 c 215.406 632.296 217.051 632.71 + 217.051 635.12 c h +212.828 640.71 m 217.453 644.538 217.516 645.655 213.113 645.655 c 209.266 + 645.655 209.074 645.472 208.098 640.89 c 207.23 636.835 208.102 636.804 + 212.828 640.71 c h +128.227 600.8 m 127.195 601.558 126.262 603.929 125.957 606.566 c 125.109 + 613.921 125.109 613.921 118.793 609.253 c 109.316 602.253 98.121 600.542 + 98.121 606.093 c 98.121 607.441 99.188 608.167 102.031 608.761 c 112.367 + 610.917 125.305 623.241 132.859 638.132 c 138.129 648.515 140.203 653.585 + 141.551 659.37 c 142.934 665.308 144.477 666.409 147.484 663.597 c 148.641 + 662.515 149.59 661.53 149.59 661.409 c 149.59 661.288 150.004 659.753 150.504 + 657.991 c 151.281 655.28 151.051 654.37 148.98 651.98 c 144.109 646.359 + 144.684 643.757 152.543 635.788 c 155.344 632.948 157.535 631.605 159.375 + 631.593 c 165.98 631.558 166.078 627.913 159.559 624.573 c 152.633 621.026 + 150.691 621.933 147.234 630.316 c 145.594 634.292 143.684 637.765 142.988 + 638.034 c 141.922 638.444 136.598 631.062 136.598 629.175 c 136.598 628.136 + 140.172 628.577 141.355 629.761 c 142.23 630.64 142.883 630.612 144.051 + 629.64 c 146.699 627.433 145.762 625.593 140.93 623.511 c 137.234 621.925 + 136.094 621.773 135.461 622.796 c 134.402 624.495 132.02 623.007 129.785 + 619.257 c 128.18 616.558 128.195 616.362 130.098 614.952 c 131.898 613.616 + 132.176 613.671 132.996 615.523 c 133.5 616.655 134.855 617.566 136.039 + 617.566 c 137.215 617.566 139.926 618.464 142.07 619.558 c 145.691 621.413 + 146.094 621.437 147.777 619.905 c 150.16 617.741 150.082 614.421 147.594 + 612.28 c 145.211 610.234 145.055 608.96 147.094 608.175 c 148.988 607.444 + 149.023 604.816 147.164 602.948 c 145.359 601.136 135.992 600.995 135.223 + 602.769 c 134.848 603.628 134.156 603.316 133.016 601.765 c 131.094 599.151 + 130.609 599.05 128.227 600.8 c h +137.023 608.066 m 138.883 610.909 138.379 612.55 135.648 612.55 c 133.48 + 612.55 132.523 610.558 133.285 607.632 c 134.008 604.862 135.012 604.976 + 137.023 608.066 c h +439.98 602.456 m 437.832 604.839 438.777 606.734 441.746 605.984 c 444.188 + 605.37 450.902 607.831 453.773 610.394 c 455.973 612.359 459.414 618.847 + 459.414 621.038 c 459.414 621.886 458.898 622.581 458.266 622.581 c 456.938 + 622.581 446.797 615.98 445.906 614.53 c 444.969 613.007 440.812 613.382 + 439.375 615.116 c 438.465 616.218 438.355 617.452 439.004 619.276 c 440.008 + 622.105 440.91 622.71 446.922 624.589 c 452.84 626.441 458.934 629.319 +460.223 630.878 c 461.512 632.437 463.242 651.933 462.715 658.964 c 462.426 + 662.823 462.715 663.804 464.395 664.706 c 466.066 665.605 466.859 665.355 + 468.914 663.296 c 471.898 660.3 472.152 655.714 469.926 645.151 c 467.488 + 633.605 467.926 632.933 475.637 636.347 c 478.484 637.609 479.691 638.831 + 480.098 640.862 c 480.762 644.21 480.73 644.206 484.438 641.452 c 489.152 + 637.956 488.227 633.753 482.398 632.187 c 474.547 630.077 466.41 626.163 + 466.41 624.495 c 466.41 623.519 467.297 622.433 468.379 622.089 c 469.465 + 621.745 471.961 619.573 473.934 617.261 c 478.641 611.741 480.852 610.62 + 487.148 610.581 c 490.035 610.558 492.395 610.148 492.395 609.663 c 492.395 + 609.183 490.648 606.925 488.512 604.648 c 481.785 597.48 478.121 599.12 + 471.395 612.335 c 469.086 616.866 466.902 620.573 466.539 620.573 c 466.176 + 620.573 465.102 618.378 464.152 615.691 c 462.457 610.905 455.445 602.851 + 451.664 601.347 c 447.969 599.878 441.773 600.464 439.98 602.456 c h +312.055 609.765 m 310.184 612.444 310.016 616.487 311.75 616.987 c 312.434 + 617.187 315.617 617.929 318.82 618.64 c 324.414 619.878 324.938 620.28 +332.062 628.757 c 340.41 638.687 342.074 643.023 335.305 637.206 c 330.438 + 633.023 327.645 632.718 323.895 635.952 c 321.719 637.831 321.324 638.819 + 321.867 640.999 c 322.516 643.589 322.758 643.683 327.266 643.081 c 331.402 + 642.534 332.836 642.901 338.875 646.062 c 347.543 650.601 349.062 650.609 + 351.191 646.128 c 352.871 642.589 l 345.676 635.319 l 338.238 627.804 336.664 + 624.886 340.73 626.159 c 341.969 626.546 343.867 627.48 344.953 628.234 + c 347.512 630.015 348.977 629.964 350.902 628.03 c 353.52 625.401 351.297 + 622.948 345.621 622.194 c 342.91 621.831 340.176 620.913 339.547 620.151 + c 338.918 619.39 337.34 618.499 336.039 618.171 c 334.742 617.843 331.656 + 615.316 329.184 612.554 c 324.812 607.675 324.527 607.534 319.148 607.534 + c 314.559 607.534 313.344 607.917 312.055 609.765 c h +505.375 617.816 m 504.285 619.609 503.395 621.851 503.391 622.8 c 503.391 + 624.331 511.609 634.667 513.422 635.413 c 514.961 636.046 515.297 632.331 + 513.883 630.304 c 511.719 627.202 512.027 626.288 514.98 627.03 c 516.406 + 627.39 517.395 627.327 517.176 626.89 c 516.953 626.452 516.004 624.398 + 515.062 622.323 c 512.961 617.694 510.367 614.558 508.648 614.558 c 507.938 + 614.558 506.465 616.023 505.375 617.816 c h +103.352 622.866 m 102.25 624.558 101.918 627.546 102.094 634.269 c 102.43 + 647.069 103.199 647.917 109 641.921 c 111.391 639.452 112.613 637.245 112.613 + 635.401 c 112.613 631.862 113.738 631.855 115.438 635.378 c 117.777 640.23 + 117.848 640.636 116.371 640.636 c 114.98 640.636 110.859 644.405 111.703 + 644.905 c 115.488 647.163 122.918 650.667 123.918 650.667 c 125.789 650.667 + 130.602 645.37 130.602 643.312 c 130.602 642.359 129.012 640.179 127.07 + 638.468 c 123.73 635.523 123.629 635.253 125.211 633.499 c 126.543 632.019 + 126.637 631.351 125.664 630.175 c 123.93 628.077 117.938 626.292 115.059 + 627.019 c 113.609 627.382 112.613 627.198 112.613 626.566 c 112.613 624.995 + 107.938 620.573 106.277 620.573 c 105.492 620.573 104.176 621.605 103.352 + 622.866 c h +269.172 648.128 m 267.156 649.659 267.727 651.675 270.18 651.675 c 272.613 + 651.675 278.656 654.737 283.016 658.183 c 288.625 662.62 289.121 662.843 + 291.84 662.159 c 294.371 661.523 296.98 657.269 295.91 655.526 c 295.129 + 654.257 286.891 650.671 284.758 650.671 c 283.484 650.671 283.617 651.151 + 285.414 653.073 c 288.715 656.597 286.133 657.456 282.641 653.995 c 278.672 + 650.066 273.848 646.651 272.312 646.691 c 271.602 646.706 270.188 647.355 + 269.172 648.128 c h +276.227 660.691 m 276.555 661.956 276.156 662.909 275.133 663.304 c 272.043 + 664.495 273.32 667.347 277.512 668.609 c 285.633 671.05 288.781 665.093 + 281.559 660.952 c 276.715 658.175 275.555 658.116 276.227 660.691 c h +276.227 660.691 m f +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/macros/latex/contrib/hithesis/hithesis.dtx b/macros/latex/contrib/hithesis/hithesis.dtx index 5cddf61a13..25454eb6f5 100644 --- a/macros/latex/contrib/hithesis/hithesis.dtx +++ b/macros/latex/contrib/hithesis/hithesis.dtx @@ -16,7 +16,7 @@ % % \iffalse %<*driver> -\ProvidesFile{hithesis.dtx}[2018/12/05 2.0.6 Harbin Institute of Technology Thesis Template] +\ProvidesFile{hithesis.dtx}[2019/06/27 2.0.11 Harbin Institute of Technology Thesis Template] \documentclass{ltxdoc} \usepackage{dtx-style} @@ -750,7 +750,7 @@ % 的 \cs{cite}\marg{key},而 \cs{inlinecite}\marg{key} 则用来生成正文模式。 % % 关于参考文献模板推荐使用 \BibTeX,关于中文参考文献需要额外增加一个 Entry: -% \texttt{lang},将其设置为 \texttt{zh} 用来指示此参考文献为中文,以 +% \texttt{language},将其设置为 \texttt{zh} 用来指示此参考文献为中文,以 % 便 \file{hithesis.bst} 处理。如: % \begin{latex} % @INPROCEEDINGS{cnproceed, @@ -760,7 +760,7 @@ % year = 2006, % address = {西安, 中国}, % month = sep, -% lang = "zh", +% language = "zh", % } % % @ARTICLE{cnarticle, @@ -770,7 +770,7 @@ % PAGES = "260--266", % VOLUME = "224", % YEAR = "1800", -% LANG = "zh", +% LANGUAGE = "zh", % } % \end{latex} % @@ -941,7 +941,7 @@ %<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<cls>\ProvidesClass{hithesis} %<cfg>\ProvidesFile{hithesis.cfg} -%<cls|cfg>[2018/12/05 2.0.6 Harbin Institute of Technology Thesis Template] +%<cls|cfg>[2019/06/27 2.0.11 Harbin Institute of Technology Thesis Template] % \end{macrocode} % % \subsection{定义选项} @@ -1024,6 +1024,11 @@ % \begin{macrocode} \DeclareBoolOption[false]{openright} % \end{macrocode} +% \changes{v2.0.10}{2019/6/25}{此处添加是否为提交图书馆电子版} +% 是否为提交图书馆电子版。 +% \begin{macrocode} +\DeclareBoolOption[false]{library} +% \end{macrocode} % 图题和标题最后一行是否居中对其(默认是,非规范要求)。 % \changes{v1.0.6}{2017/10/25}{此处更改了选项的名称} % \begin{macrocode} @@ -1343,8 +1348,11 @@ delim_1 "\\hspace*{\\fill}" % \begin{macro}{\cleardoublepage} % 对于 \textsl{openright} 选项,必须保证章首页右开,且如果前章末页无内容须 % 清空其页眉页脚。 +% 如果\textsl{library}为真,则强制设置\textsl{openright}为真。 +% \changes{v2.0.10}{2019/6/25}{添加\textsl{openright}和\textsl{library}逻辑} % \begin{macrocode} %<*cls> +\ifhit@library\hit@openrightfalse\else\relax\fi \let\hit@cleardoublepage\cleardoublepage \newcommand{\hit@clearemptydoublepage}{% \clearpage{\pagestyle{hit@empty}\hit@cleardoublepage} @@ -1353,8 +1361,6 @@ delim_1 "\\hspace*{\\fill}" % \end{macrocode} % \end{macro} % \begin{macro}{\frontmatter} -% \begin{macro}{\mainmatter} -% \begin{macro}{\backmatter} % 我们的单面和双面模式与常规的不太一样。 % \begin{macrocode} \renewcommand\frontmatter{% @@ -1363,26 +1369,37 @@ delim_1 "\\hspace*{\\fill}" \pagenumbering{Roman} \pagestyle{hit@empty} } - +% \end{macrocode} +% \end{macro} +% \begin{macro}{\mainmatter} +% 根据打印店(伪官方)的猛虎式操作,\cs{mainmatter}命令的逻辑是,双面打印时第一章必须在奇数页 +% (不看文档别怪我)。 +% \changes{v2.0.11}{2018/06/27}{设置第一章必须在奇数页} +% \begin{macrocode} \renewcommand\mainmatter{% \ifhit@tocblank% \addtocontents{toc}{\vspace{\baselineskip}} %规范中并没有这一要求,此处不应该加 \addtocontents{toe}{\vspace{\baselineskip}} \fi% - \ifhit@openright\cleardoublepage\else\clearpage\fi + \ifhit@doctor% + \ifhit@library\clearpage\else\cleardoublepage\fi + \else% + \clearpage + \fi% \@mainmattertrue \pagenumbering{arabic} \pagestyle{hit@headings} } - +% \end{macrocode} +% \end{macro} +% \begin{macro}{\backmatter} +% \begin{macrocode} \renewcommand\backmatter{% \ifhit@openright\cleardoublepage\else\clearpage\fi \@mainmattertrue} %</cls> % \end{macrocode} % \end{macro} -% \end{macro} -% \end{macro} % % \subsubsection{字体} % \label{sec:font} @@ -1432,6 +1449,7 @@ delim_1 "\\hspace*{\\fill}" % \end{macrocode} % \end{macro} % +% \begin{macro}{\dachu} % \begin{macro}{\chuhao} % \begin{macro}{\xiaochu} % \begin{macro}{\yihao} @@ -1452,6 +1470,7 @@ delim_1 "\\hspace*{\\fill}" % \begin{macro}{\bahao} % 一组字号定义。 % \begin{macrocode} +\hit@def@fontsize{dachu}{58bp} \hit@def@fontsize{chuhao}{42bp} \hit@def@fontsize{xiaochu}{36bp} \hit@def@fontsize{yihao}{26bp} @@ -1490,6 +1509,7 @@ delim_1 "\\hspace*{\\fill}" % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % \subsubsection{页眉页脚} % \label{sec:headerfooter} % \begin{macro}{\hit@empty} @@ -1682,13 +1702,15 @@ delim_1 "\\hspace*{\\fill}" % \end{macrocode} % \subsubsection{浮动对象以及表格} % \label{sec:float} -% 设置浮动对象和文字之间的距离 +% 设置浮动对象和文字之间的距离,由于规范中没有明确规定,根据经验,设置成正文汉字 +% 高度。 % \changes{v1.0.9}{2018/01/07}{修正float垂直间距bug} +% \changes{v2.0.9}{2019/06/24}{修正float垂直间距bug} % \begin{macrocode} %<*cls> \setlength{\intextsep}{\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi} \setlength{\textfloatsep}{\ifhit@glue 8.50398bp \@plus 2.83465bp \@minus 0bp\else 8.50398bp\fi} -\setlength{\floatsep}{\ifhit@glue 20.50398bp \@plus 2.83465bp \@minus 0bp\else 20.50398bp\fi} +\setlength{\floatsep}{\ifhit@glue 12bp \@plus 2.83465bp \@minus 0bp\else 12bp\fi} % \end{macrocode} % 此处设置float在p选项时间隔,此处不设置\cs{@fptop}和\cs{@fpbot}以确保居中。 % \changes{v1.0.12}{2018/04/03}{修正float为p状态时默认不居中bug} @@ -2258,7 +2280,7 @@ delim_1 "\\hspace*{\\fill}" 本人郑重声明:此处所提交的学位论文《\hit@ctitle》,是本人在导师指导下,在哈尔滨工业大学攻读学位期间独立进行研究工作所取得的成果,且学位论文中除已标注引用文献的部分外不包含他人完成或已发表的研究成果。对本学位论文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明。} \newcommand{\hit@datefill}{\hspace{2.5em}年\hspace{1.5em}月\hspace{1.5em}日} \newcommand{\hit@publication@ctitle}{攻读\hit@cxuewei 学位期间发表的论文及其他成果} -\newcommand{\hit@publication@etitle}{Papers published in the period of PH.D. education} +\newcommand{\hit@publication@etitle}{Papers published in the period of Ph.D. education} \def\hit@index@etitle{Index} \def\hit@hi{嗨!thesis} \def\hit@cbraceleft{(} @@ -2454,18 +2476,21 @@ delim_1 "\\hspace*{\\fill}" \phantomsection \pdfbookmark[0]{\hit@ctitle}{ctitle} \xiaosi[1]% +% \end{macrocode} +% \changes{v2.0.10}{2019/6/25}{此处添加提交图书馆电子版的逻辑} +% \begin{macrocode} \begin{titlepage} \hit@first@titlepage - \cleardoublepage + \ifhit@library\clearpage\else\cleardoublepage\fi \hit@second@titlepage - \cleardoublepage + \ifhit@library\clearpage\else\cleardoublepage\fi \ifhit@bachelor \relax \else \phantomsection \pdfbookmark[0]{\hit@etitle}{etitle} \hit@engcover - \cleardoublepage + \ifhit@library\clearpage\else\cleardoublepage\fi \fi \end{titlepage} \normalsize @@ -2571,7 +2596,11 @@ delim_1 "\\hspace*{\\fill}" \advance\leftskip\@tempdima \hskip -\leftskip % numberline is called here, and it uses \@tempdima - {\ifhit@bachelor\sffamily\else\csname hit@toc@font\endcsname\fi\heiti #1} +% \end{macrocode} +% 修改本科生论文目录格式 +% \changes{v2.0.8}{2017/06/15}{修改本科生论文目录格式(感谢QQ:嬴政 同学)} +% \begin{macrocode} + {\ifhit@bachelor\rmfamily\else\csname hit@toc@font\endcsname\fi\heiti #1} \leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill \nobreak{\normalfont\normalcolor #2}\par \penalty\@highpenalty @@ -2749,6 +2778,10 @@ delim_1 "\\hspace*{\\fill}" \renewcommand\theenumiv{\@arabic\c@enumiv}}% \sloppy\frenchspacing % \end{macrocode} +% \changes{v2.0.7}{2019/03/02}{添加flushbottom到thebibliography环境中} +% \begin{macrocode} + \flushbottom +% \end{macrocode} % \changes{v2.0.3}{2018/10/08}{添加参考文献分割开关} % \begin{macrocode} \ifhit@splitbibitem diff --git a/macros/latex/contrib/hithesis/hithesis.pdf b/macros/latex/contrib/hithesis/hithesis.pdf Binary files differindex ce315baaa3..f9e8ebc4dc 100644 --- a/macros/latex/contrib/hithesis/hithesis.pdf +++ b/macros/latex/contrib/hithesis/hithesis.pdf diff --git a/macros/latex/contrib/hithesis/hithesis.sty b/macros/latex/contrib/hithesis/hithesis.sty index b1508de9c7..d92ef07e6c 100644 --- a/macros/latex/contrib/hithesis/hithesis.sty +++ b/macros/latex/contrib/hithesis/hithesis.sty @@ -3,17 +3,12 @@ Thesis Template Extension] % 此文件声明不在规范中要求的格式所使用的宏包。 % (所以,格式基本上是自由发挥的。) - -\setCJKfamilyfont{siyuan}[]{SourceHanSerifCN-Regular} -\newcommand{\highlight}[1]{{\CJKfamily{siyuan}\textbf{#1}}} - - - % 根据窝工规范中对数字书写规范的规定(6): % 凡4位或4位以上的数都从个位起每3位数空半个数码(1/4汉字)。 % 注意此处,除此任何空格都是错误的(包括\:\;\ 等) \RequirePackage{siunitx} \sisetup{group-minimum-digits=4, group-separator= \hspace{0.25em}} +\sisetup{detect-weight,detect-mode,detect-family} % 处理数学公式中的黑斜体的宏包 \RequirePackage{bm} @@ -38,17 +33,21 @@ Thesis Template Extension] % 算法的宏包,注意宏包兼容性,先后顺序为float、hyperref、algorithm(2e),否则无法 % 生成算法列表。我工算法混乱问题详见hithesis文档。各个实验室设置具体方法详见 % hithesis文档或者示例中给出的地址。 -\RequirePackage[boxed,linesnumbered,algochapter]{algorithm2e} +\RequirePackage[algoruled,linesnumbered,algochapter]{algorithm2e} +\SetAlCapSty{} +\newcommand{\foocaption}[1]{ \def\@algocf@pre@plainruled{\hrule height1.5pt depth0pt\kern\interspacetitleruled #1 \kern\interspacealgoruled\hrule height1pt depth0pt\kern\interspacetitleruled} } +\def\@algocf@post@ruled{\kern\interspacealgoruled\hrule height1.5pt\relax}% + \newcommand{\algoenname}{Algo.} %算法英文标题 \newfloatlist[chapter]{algoen}{aen}{\listalgoenname}{\algoenname} \newfixedcaption{\algoencaption}{algoen} \renewcommand{\thealgoen}{\thechapter-\arabic{algocf}} -\renewcommand{\@cftmakeaentitle}{\chapter*{\listalgoenname\@mkboth{\bfseries\listalgoenname}{\bfseries\listalgoenname}} +\renewcommand{\@cftmakeaentitle}{\chapter*{\listalgoenname\@mkboth{\listalgoenname}{\listalgoenname}} } \renewcommand{\algorithmcfname}{算法} \setlength\AlCapSkip{1.2ex} \SetAlgoSkip{1pt} -\renewcommand{\algocf@captiontext}[2]{\wuhao#1\algocf@typo ~ \AlCapFnt{}#2} % text of caption +\renewcommand{\algocf@captiontext}[2]{\wuhao#1\algocf@typo~\AlCapFnt{}#2} % text of caption \expandafter\ifx\csname algocf@within\endcsname\relax% if \algocf@within doesn't exist \renewcommand\thealgocf{\@arabic\c@algocf} % and the way it is printed \else% else @@ -62,7 +61,7 @@ Thesis Template Extension] \addtolength{\hsize}{-\algomargin}% } \newcommand{\AlgoBiCaption}[2]{%直接取出自定义的中英文标题条目加入到真正的\caption 中 - \caption[#1]{\protect\setlength{\baselineskip}{1.5em}#1 \protect \\ Algo. \thealgocf~~ #2} % \algoencaption{#2} + \caption[#1]{\protect\setlength{\baselineskip}{1.5em}#1 \protect \\ Algo.\thealgocf~#2} % \algoencaption{#2} \addcontentsline{aen}{algoen}{\protect\numberline{\thealgoen}{#2}} } diff --git a/macros/latex/contrib/hithesis/latexmkrc b/macros/latex/contrib/hithesis/latexmkrc index 8f73cb3286..e8cd866595 100644 --- a/macros/latex/contrib/hithesis/latexmkrc +++ b/macros/latex/contrib/hithesis/latexmkrc @@ -8,7 +8,31 @@ $preview_continuous_mode = 1; $clean_ext = "synctex.gz acn acr alg aux bbl bcf blg brf fdb_latexmk glg glo gls idx ilg ind lof log lot out run.xml toc pdf thm toe ist idx"; $pdflatex = "xelatex -file-line-error --shell-escape -src-specials -synctex=1 -interaction=nonstopmode %O %S;cp %D %R.pdf"; $pdf_update_method = 0; - +$makeindex = 'internal splitindex'; +sub splitindex { + # Use splitindex instead of makeindex. + # The splitindex programe starts from an .idx file, makes a set of + # other .idx files for separate indexes, and then runs makeindex to + # make corresponding .ind files. + # However, it is possible that the document uses the splitindex + # package, but in a way compatible with the standard methods + # compatible with makeindex, i.e., with a single index and with the + # use of the \printindex command. + # Then we need to invoke makeindex. + # In addition, latexmk assumes that makeindex or its replacement makes + # an .ind file from an .idx file, and latexmk gives an error if it + # doesn't exist, we need to make an .ind file. + # Both problems are solved by running makeindex and then splitindex. + # Note: errors are returned by makeindex and splitindex for things + # like a missing input file. No error is returned for lines in an + # input file that are in an incorrect format; they are simply + # ignored. So no problem is caused by lines in the .idx file + # that are generated by splitindex in a format incompatible with + # makeindex. + my $ret1 = system( "makeindex", $$Psource ); + my $ret2 = system( "splitindex", $$Psource ); + return $ret1 || $ret2; +} @cus_dep_list = (@cus_dep_list, "idx ind 0 makenomenclature"); sub makenomenclature { system("splitindex $_[0] -- -s $_[0].ist"); } diff --git a/macros/latex/contrib/hithesis/main.pdf b/macros/latex/contrib/hithesis/main.pdf Binary files differindex 515665ee40..1f0c0de474 100644 --- a/macros/latex/contrib/hithesis/main.pdf +++ b/macros/latex/contrib/hithesis/main.pdf diff --git a/macros/latex/contrib/hithesis/main.tex b/macros/latex/contrib/hithesis/main.tex index 5c632115a8..69549e2c36 100644 --- a/macros/latex/contrib/hithesis/main.tex +++ b/macros/latex/contrib/hithesis/main.tex @@ -1,5 +1,5 @@ % !Mode:: "TeX:UTF-8" -\documentclass[newtxmath=true,newgeometry=two,capcenterlast=true,subcapcenterlast=true,openright=true,absupper=true,fontset=windowsnew,type=doctor]{hithesis} +\documentclass[newtxmath=true,newgeometry=two,capcenterlast=true,subcapcenterlast=true,openright=false,library=false,absupper=true,fontset=windowsnew,type=doctor]{hithesis} % 此处选项中不要有空格 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 必填选项 @@ -20,7 +20,7 @@ % 后出现无法复制的问题以及想要解决排版如 biang biang 面的 biang 这类中易 % 宋体无法识别的汉字的问题。没有特殊的需要不推荐使用这个选项。 % -% 如果是安装了 windowns 字体的 linux 系统,可以填写windowsnew(win vista +% 如果是安装了 windows 字体的 linux 系统,可以填写windowsnew(win vista % 以后 的字体)或 windowsold(vista 以前)或者想用思源宋体并且是已经安装 % 了思源宋体的任何系统,填写siyuan选项。缺省值为空,自动识别系统并匹配字体 % 。模板版中给出的思源字体定义文件定义的思源字体的版本是Adobe版,其他字体 @@ -49,6 +49,9 @@ % ,电子版要求非右翻页且无空白页。如果想DIY(或身不由己DIY)在什么地方右 % 翻页,将这个选项设置为false,然后在目标位置添加`\cleardoublepage`命令即 % 可。 +% library=true|false +% 含义:是否为提交到图书馆的电子版。默认否。注意:如果设置成true,那么 +% openright选项将被强制转换为false。 % capcenterlast=true|false % 含义:图题、表题最后一行是否居中对齐(我工规范要求居中,但不要求居中对 % 齐),此选项不在规范要求中,按个人喜好自行决定。默认否。 @@ -56,21 +59,21 @@ % 含义:子图图题最后一行是否居中对齐(我工规范要求居中,但不要求居中对齐 % ),此选项不在规范要求中,按个人喜好自行决定。默认否。 % absupper=true|false -% 含义:中文目录中的英文索引在中文目录中的大小写样式歧义,在规范中要求首 -% 字母大写,在work样例中是全大写。该选项控制是否全大写。默认否。 +% 含义:中文目录中的英文摘要在中文目录中的大小写样式歧义,在规范中要求首 +% 字母大写,在work样例中是全大写。该选项控制是否全大写。默认否。 % bsmainpagenumberline=true|false -% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 -% 置是否在正文中显示页码横线,默认否。 +% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 +% 置是否在正文中显示页码横线,默认否。 % bsfrontpagenumberline=true|false -% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 -% 置是否在前文中显示页码横线,默认否。 +% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 +% 置是否在前文中显示页码横线,默认否。 % bsheadrule=true|false -% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 -% 置是否显示页眉横线,默认显示。 +% 含义:由于本科生论文官方模板的页码和页眉格式混乱,提供这个选项自定义设 +% 置是否显示页眉横线,默认显示。 % splitbibitem=true|false -% 含义:参考文献每一个条目内能不能断页,应广大刀客要求添加。默认否。 +% 含义:参考文献每一个条目内能不能断页,应广大刀客要求添加。默认否。 % newtxmath=true|false -% 含义:数学字体是否使用新罗马。默认是。 +% 含义:数学字体是否使用新罗马。默认是。 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{hithesis} @@ -118,14 +121,18 @@ \include{back/resume} % 博士学位论文有个人简介 %本科书序为: -%\include{body/conclusion} % 结论 -%\bibliographystyle{hithesis} -%\bibliography{reference} -%\authorization %授权 -%%\authorization[saomiao.pdf] %添加扫描页的命令,与上互斥 -%\include{body/acknowledgements} %致谢 -%\begin{appendix}%附录 -%\input{body/appendix01}%本科生翻译论文 -%\end{appendix} +% \include{body/conclusion} % 结论 +% \bibliographystyle{hithesis} +% \bibliography{reference} +% \authorization %授权 +% % \authorization[saomiao.pdf] %添加扫描页的命令,与上互斥 +% \include{body/acknowledgements} %致谢 +% \begin{appendix}%附录 +% % \input{body/appendix01}%本科生翻译论文 +% \end{appendix} \end{document} + +% Local Variables: +% TeX-engine: xetex +% End: diff --git a/macros/latex/contrib/hithesis/reference.bib b/macros/latex/contrib/hithesis/reference.bib index 49e0405fb1..5b4b260487 100644 --- a/macros/latex/contrib/hithesis/reference.bib +++ b/macros/latex/contrib/hithesis/reference.bib @@ -1,11 +1,5 @@ % !Mode:: "TeX:UTF-8" -@ONLINE{DoeOnline, -author = {Doe, Ringo}, -title = {This is a test entry of type {@ONLINE}}, -month = jun, -year = {2009}, -url = {http://www.test.org/doe/} -} + @INPROCEEDINGS{cnproceed, author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝}, title = {武林高手从入门到精通}, diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.pdf b/macros/latex/contrib/nicematrix/nicematrix-french.pdf Binary files differindex 02b227ed0d..ccc4611524 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.pdf +++ b/macros/latex/contrib/nicematrix/nicematrix-french.pdf diff --git a/macros/latex/contrib/nicematrix/nicematrix-french.tex b/macros/latex/contrib/nicematrix/nicematrix-french.tex index 883a1acf69..1035a9bab4 100644 --- a/macros/latex/contrib/nicematrix/nicematrix-french.tex +++ b/macros/latex/contrib/nicematrix/nicematrix-french.tex @@ -560,6 +560,8 @@ $\begin{pmatrix} \section{Les nœuds Tikz créés par l'extension nicematrix} +\label{name} + L'extension \pkg{nicematrix} crée un nœud Tikz pour chaque case du tableau considéré. Ces nœuds sont utilisés pour tracer les lignes en pointillés entre les cases du tableau. Toutefois, l'utilisateur peut aussi utiliser directement ces nœuds. On commence par donner un nom au tableau (avec l'option |name|). Cela étant fait, les nœuds @@ -600,17 +602,18 @@ a & a & a \bigskip -En fait, l'extension \pkg{nicematrix} peut créer des nœuds supplémentaires (\emph{extra nodes} en anglais). Ces -nouveaux nœuds sont créés si l'option |create-extra-nodes| est utilisée. Il y a deux séries de nœuds -supplémentaires : les «nœuds moyens» (\emph{medium nodes} en anglais) et les «nœuds larges» (\emph{large nodes} en -anglais). +En fait, l'extension \pkg{nicematrix} peut créer deux séries de nœuds supplémentaires (\emph{extra nodes} en +anglais) : les «nœuds moyens» (\emph{medium nodes} en anglais) et les «nœuds larges» (\emph{large nodes} en +anglais). Les premiers sont créés avec l'option |create-medium-nodes| et les seconds avec l'option +|create-large-nodes|.\footnote{Il existe aussi l'option |create-extra-nodes| qui est un alias pour la conjonction +de |create-medium-nodes| et |create-large-nodes|.} \medskip Les noms des «nœuds moyens» s'obtiennent en ajoutant le suffixe «|-medium|» au nom des nœuds normaux. Dans l'exemple suivant, on a surligné tous les «nœuds moyens». Nous considérons que cet exemple se suffit à lui-même comme définition de ces nœuds. \[\begin{pNiceMatrix}[ - create-extra-nodes, + create-medium-nodes, code-after = {\begin{tikzpicture} [every node/.style = {fill = red!15, blend mode = multiply, @@ -639,7 +642,7 @@ définition de ces nœuds.\footnote{Il n'y a pas de «nœuds larges» créés da (pour ces lignes et colonnes, voir p.~\pageref{exterior}).} \[\begin{pNiceMatrix}[ - create-extra-nodes, + create-large-nodes, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, inner sep = -\pgflinewidth/2}, @@ -669,7 +672,7 @@ dernière colonne. Dans l'exemple suivant, nous avons utilisé les options |left aucune valeur n'est donnée, c'est la valeur par défaut qui est utilisée et elle est égale à |\arraycolsep| (par défaut, 5~pt).Il existe aussi une option |margin| pour fixer à la fois |left-margin| et |right-margin|.} \[\begin{pNiceMatrix}[ - create-extra-nodes,left-margin,right-margin, + create-large-nodes,left-margin,right-margin, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, inner sep = -\pgflinewidth/2}, @@ -694,7 +697,7 @@ Il est aussi possible d'ajouter de l'espace sur les côtés du tableau avec les |extra-right-margin|. Ces marges ne sont pas incorporées dans les «nœuds larges». Dans l'exemple suivant, nous avons utilisé |extra-left-margin| et |extra-right-margin| avec la valeur $3$~pt. \[\begin{pNiceMatrix}[ - create-extra-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt, + create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, inner sep = -\pgflinewidth/2}, @@ -718,7 +721,7 @@ a & a & a Dans le cas présent, si on veut un contrôle sur la hauteur des rangées, on peut ajouter un |\strut| dans chaque rangée du tableau. \[\begin{pNiceMatrix}[ - create-extra-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt, + create-large-nodes,left-margin,right-margin,extra-right-margin=3pt,extra-left-margin=3pt, code-after = {\begin{tikzpicture} [every node/.style = {blend mode = multiply, inner sep = -\pgflinewidth/2}, @@ -956,6 +959,9 @@ tableau) ne s'étend pas dans les rangées extérieures.\footnote{Ce dernier poi sont pas parfaitement compatibles car \pkg{arydshln} redéfinit beaucoup de structures internes à \pkg{array}. Par ailleurs, si on veut vraiment un filet qui s'étende dans la première et la dernière rangée, on peut utiliser |!{\vline}| dans le préambule à la place de \verb+|+.} + +Si on veut définir de nouveaux spécificateurs de colonnes pour des filets (par exemple plus épais), on aura +peut-être intérêt à utiliser la commande |\OnlyMainNiceMatrix| décrite p.~\pageref{OnlyMainNiceMatrix}. \item Sans surprise, une éventuelle option |columns-width| (décrite p.~\pageref{width}) ne s'applique pas à la «première colonne» ni à la «dernière colonne». \item Pour des raisons techniques, il n'est pas possible d'utiliser l'option de la commande |\\| après la @@ -1409,6 +1415,47 @@ En revanche, les colonnes |d| de l'extension \pkg{dcolumn} ne sont pas prises en \section{Remarques techniques} +\subsection{Pour définir de nouveaux types de colonnes} + +\label{OnlyMainNiceMatrix} + +L'extension \pkg{nicematrix} fournit la commande |\OnlyMainNiceMatrix| qui est destinée à être utilisée dans des +définitions de nouveaux types de colonnes. Son argument n'est exécuté que si on se place dans la partie principale +du tableau, c'est-à-dire que l'on n'est pas dans l'une des éventuelles rangées extérieures. + +Par exemple, si on souhaite définir un type de colonne |?| pour tracer un trait fort d'épaisseur 1~pt, on pourra +écrire : +\begin{Verbatim} +\newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} +\end{Verbatim} + +Le trait fort correspondant ne s'étendra pas dans les rangées extérieures : + +\medskip +\begin{scope} +\newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} + +\begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] +$\begin{pNiceArray}{CC?CC}[first-row,last-row] +C_1 & C_2 & C_3 & C_4 \\ +a & b & c & d \\ +e & f & g & h \\ +C_1 & C_2 & C_3 & C_4 +\end{pNiceArray}$ +\end{BVerbatim} +$\begin{pNiceArray}{CC?CC}[first-row,last-row] +C_1 & C_2 & C_3 & C_4 \\ +a & b & c & d \\ +e & f & g & h \\ +C_1 & C_2 & C_3 & C_4 +\end{pNiceArray}$ +\end{scope} + +\medskip +Le spécificateur |?| ainsi créé est aussi utilisable dans les environnements |{array}| (de \pkg{array}) et, dans ce +cas, |\OnlyMainNiceMatrix| est sans effet. + + \subsection{Intersection des lignes pointillées} Depuis la version 3.1 de \pkg{nicematrix}, les lignes en pointillées créées par |\Cdots|, |\Ldots|, |\Vdots|, etc. @@ -1445,6 +1492,20 @@ $\begin{pNiceMatrix}[nullify-dots] \end{pNiceMatrix}$ +\subsection{Le nom des nœuds Tikz créés par nicematrix} + +Les nœuds Tikz créés par \pkg{nicematrix} peuvent être utilisés hors des environnements de \pkg{nicematrix} après +avoir nommé l'environnement concerné avec l'option |name| (cf. p.~\pageref{name}). Il s'agit là de la méthode +conseillée mais on décrit néanmoins maintenant le nom Tikz interne de ces nœuds. + +Les environnements créés par \pkg{nicematrix} sont numérotés par un compteur global interne. La commande +|\NiceMatrixLastEnv| donne le numéro du dernier de ces environnements (pour LaTeX, il s'agit d'une commande — +complètement développable — et non d'un compteur). + +Si l'environnement concerné a le numéro $n$, alors le nœud de la rangée~$i$ et de la colonne~$j$ a pour nom +|nm-|$n$|-|$i$|-|$j$. Les noms des nœuds |medium| et |large| correspondants s'obtiennent suffixant par |-medium| et +|-large|. + \subsection{Lignes diagonales} Par défaut, toutes les lignes diagonales\footnote{On parle des lignes créées par |\Ddots| et non des lignes créées @@ -1948,7 +2009,7 @@ doit fixer |inner sep = -\pgflinewidth/2|. \begin{Verbatim} $\begin{pNiceArray}{>{\strut}CCCC}% - [create-extra-nodes,margin,extra-margin=2pt, + [create-large-nodes,margin,extra-margin=2pt, code-after = {\begin{tikzpicture} [~emphase#name suffix = -large@, every node/.style = {draw, @@ -1967,7 +2028,7 @@ a_{41} & a_{42} & a_{43} & a_{44} \[\begin{pNiceArray}{>{\strut}CCCC}[ - create-extra-nodes,margin,extra-margin=2pt, + create-large-nodes,margin,extra-margin=2pt, code-after = {\begin{tikzpicture}[name suffix = -large, every node/.style = {draw, inner sep = -\pgflinewidth/2}] @@ -2050,7 +2111,7 @@ On considère maintenant la matrice suivante que l'on a appelée |exemple|. \medskip \begin{Verbatim} -$\begin{pNiceArray}{CCC}[~emphase#name=exemple@,create-extra-nodes,last-col] +$\begin{pNiceArray}{CCC}[~emphase#name=exemple@,last-col,create-medium-nodes] a & a + b & a + b + c & L_1 \\ a & a & a + b & L_2 \\ a & a & a & L_3 @@ -2097,7 +2158,6 @@ On obtient la matrice suivante. \[\begin{pNiceArray}{CCC}[ last-col, - create-extra-nodes, code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, blend mode = multiply, inner sep = 0pt}] @@ -2126,7 +2186,7 @@ On obtient la matrice suivante. \[\begin{pNiceArray}{CCC}[ last-col, - create-extra-nodes, + create-medium-nodes, code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, blend mode = multiply, inner sep = 0pt}, @@ -2146,7 +2206,7 @@ a & a & a & L_3 Dans l'exemple suivant, on utilise les «nœuds larges» pour surligner une zone de la matrice.\par\nobreak \begin{Verbatim} \left(\,\begin{NiceArray}{>{\strut}CCCC}% - [create-extra-nodes,left-margin,right-margin, + [create-large-nodes,left-margin,right-margin, code-after = {\tikz \path [~emphase#name suffix = -large@, fill = red!15, blend mode = multiply] @@ -2164,7 +2224,7 @@ A_{41} & A_{42} & A_{43} & A_{44} \end{Verbatim} \[\left(\,\begin{NiceArray}{>{\strut}CCCC}[ - create-extra-nodes,left-margin,right-margin, + create-large-nodes,left-margin,right-margin, code-after = {\tikz \path [name suffix = -large, fill = red!15, blend mode = multiply] diff --git a/macros/latex/contrib/nicematrix/nicematrix.dtx b/macros/latex/contrib/nicematrix/nicematrix.dtx index 3b0f3fcad4..9ccfc120b5 100644 --- a/macros/latex/contrib/nicematrix/nicematrix.dtx +++ b/macros/latex/contrib/nicematrix/nicematrix.dtx @@ -15,8 +15,8 @@ % % \fi % \iffalse -\def\myfileversion{3.8} -\def\myfiledate{2020/01/02} +\def\myfileversion{3.9} +\def\myfiledate{2020/01/10} % % %<*batchfile> @@ -26,7 +26,7 @@ \usedir{tex/latex/nicematrix} \preamble -Copyright (C) 2018-2019 by F. Pantigny +Copyright (C) 2018-2020 by F. Pantigny ----------------------------------- This file may be distributed and/or modified under the @@ -590,6 +590,8 @@ c & c & b & a & e % % \section{The Tikz nodes created by nicematrix} % +% \label{name} +% % The package \pkg{nicematrix} creates a Tikz node for each cell of the % considered array. These nodes are used to draw the dotted lines between the % cells of the matrix. However, the user may wish to use directly these nodes. @@ -632,9 +634,12 @@ c & c & b & a & e % % % \bigskip -% In fact, the package \pkg{nicematrix} can create ``extra nodes''. These new -% nodes are created if the option |create-extra-nodes| is used. There are two -% series of extra nodes: the ``medium nodes'' and the ``large nodes''. +% In fact, the package \pkg{nicematrix} can create ``extra nodes'': the ``medium +% nodes'' and the ``large nodes''. The first ones +% are created with the option |create-medium-nodes| and the second ones with the +% option |create-large-nodes|.\footnote{There is also an option +% |create-extra-nodes| which is an alias for the conjonction of +% |create-medium-nodes| and |create-large-nodes|.} % % \medskip % The names of the ``medium nodes'' are constructed by adding the suffix @@ -642,7 +647,7 @@ c & c & b & a & e % we have underlined the ``medium nodes''. We consider that this example is % self-explanatory. % \[\begin{pNiceMatrix}[ -% create-extra-nodes, +% create-medium-nodes, % code-after = {\begin{tikzpicture} % [every node/.style = {fill = red!15, % blend mode = multiply, @@ -672,7 +677,7 @@ c & c & b & a & e % rows and columns (for these rows and columns, cf. p.~\pageref{exterior}).} % % \[\begin{pNiceMatrix}[ -% create-extra-nodes, +% create-large-nodes, % code-after = {\begin{tikzpicture} % [every node/.style = {blend mode = multiply, % inner sep = -\pgflinewidth/2}, @@ -704,7 +709,7 @@ c & c & b & a & e % default: 5~pt). There is also an option |margin| to fix both |left-margin| and % |right-margin| to the same value.} % \[\begin{pNiceMatrix}[ -% create-extra-nodes,left-margin,right-margin, +% create-large-nodes,left-margin,right-margin, % code-after = {\begin{tikzpicture} % [every node/.style = {blend mode = multiply, % inner sep = -\pgflinewidth/2}, @@ -731,7 +736,7 @@ c & c & b & a & e % option |extra-margin| and, in the following example, we use |extra-margin| % with the value $3$~pt. % \[\begin{pNiceMatrix}[ -% create-extra-nodes,margin,extra-margin=3pt, +% create-large-nodes,margin,extra-margin=3pt, % code-after = {\begin{tikzpicture} % [every node/.style = {blend mode = multiply, % inner sep = -\pgflinewidth/2}, @@ -755,7 +760,7 @@ c & c & b & a & e % In this case, if we want a control over the height of the rows, we can add a % |\strut| in each row of the array. % \[\begin{pNiceMatrix}[ -% create-extra-nodes,left-margin,right-margin,extra-right-margin=3pt, +% create-large-nodes,left-margin,right-margin,extra-right-margin=3pt, % extra-left-margin=3pt, % code-after = {\begin{tikzpicture} % [every node/.style = {blend mode = multiply, @@ -941,9 +946,9 @@ c & c & b & a & e % computed from the preamble of the array. % \item For the potential last row, the option |last-row| may, in fact, be used % without value. In this case, \pkg{nicematrix} computes, during the first -% compilation, the number of row of the array and writes that information in the -% |.aux| file for the second run. In the following example, the option -% |last-row| will be used without value. +% compilation, the number of rows of the array and writes that information in +% the |.aux| file for the second run. In the following example, the option +% |last-row| will be used without value. % \end{itemize} % % \bigskip @@ -995,9 +1000,14 @@ c & c & b & a & e % rows.\footnote{The latter is not true when the extension \pkg{arydshln} is % loaded besides \pkg{nicematrix}. In fact, \pkg{nicematrix} and \pkg{arydhsln} % are not totally compatible because \pkg{arydshln} redefines many internals of -% \pkg{array}. On another note, if one really wants a vertical rule running in +% \pkg{array}. On another hand, if one really wants a vertical rule running in % the first and in the last row, he should use |!{\vline}| instead of \verb+|+ % in the preamble of the array.} +% +% If one wishes to define new specifiers for columns in order to draw vertical +% rules (for example thicker than the standard rules), he should consider the +% command |\OnlyMainNiceMatrix| described on page~\pageref{OnlyMainNiceMatrix}. +% % \item Logically, the potential option |columns-width| (described % p.~\pageref{width}) doesn't apply to the ``first column'' and ``last column''. % \item For technical reasons, it's not possible to use the option of the @@ -1356,9 +1366,9 @@ c & c & b & a & e % \medskip % In fact, the option |small| corresponds to the following tuning: % \begin{itemize} -% \item the cells of the array are composed with \verb|\scriptstyle| ; -% \item \verb|\arraystretch| is set to $0.47$ ; -% \item \verb|\arraycolsep| is set to $1.45$~pt ; +% \item the cells of the array are composed with \verb|\scriptstyle|; +% \item \verb|\arraystretch| is set to $0.47$; +% \item \verb|\arraycolsep| is set to $1.45$~pt; % \item the characteristics of the dotted lines are also modified. % \end{itemize} % @@ -1466,15 +1476,59 @@ c & c & b & a & e % 7.2 & 0 & \Cdots & 0 % \end{pNiceArray}$ % +% \medskip % On the other hand, the |d| columns of the package \pkg{dcolumn} are not % supported by \pkg{nicematrix}. % % \section{Technical remarks} +% +% \subsection{Definition of new column types} +% +% \label{OnlyMainNiceMatrix} +% +% The extension \pkg{nicematrix} provides the command |\OnlyMainNiceMatrix| +% which is meant to be used in definitions of new column types. Its argument is +% evaluated if and only if we are in the main part of the array, that is to say +% not in an eventual exterior row. % +% For example, one may wish to define a new column type |?| in order to draw a +% thick rule of width 1~pt. The following definition will do the job: +% +% \begin{Verbatim} +% \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} +% \end{Verbatim} +% +% The thick vertical rule won't extend in the exterior rows: +% \medskip +% \begin{scope} +% \newcolumntype{?}{!{\OnlyMainNiceMatrix{\vrule width 1 pt}}} +% +% \begin{BVerbatim}[baseline = c, boxwidth = 10.5cm] +% $\begin{pNiceArray}{CC?CC}[first-row,last-row] +% C_1 & C_2 & C_3 & C_4 \\ +% a & b & c & d \\ +% e & f & g & h \\ +% C_1 & C_2 & C_3 & C_4 +% \end{pNiceArray}$ +% \end{BVerbatim} +% $\begin{pNiceArray}{CC?CC}[first-row,last-row] +% C_1 & C_2 & C_3 & C_4 \\ +% a & b & c & d \\ +% e & f & g & h \\ +% C_1 & C_2 & C_3 & C_4 +% \end{pNiceArray}$ +% \end{scope} +% +% \medskip +% The specifier |?| may be used in a standard environment |{array}| (of the +% package \pkg{array}) and, in this case, the command |\OnlyMainNiceMatrix| is +% no-op. +% +% % \subsection{Intersections of dotted lines} % % Since the version 3.1 of \pkg{nicematrix}, the dotted lines created by -% |\Cdots|, |\Ldots|, |\Vdots|, etc. can't intersect.\footnote{Of the contrary, +% |\Cdots|, |\Ldots|, |\Vdots|, etc. can't intersect.\footnote{On the contrary, % dotted lines created by |\hdottedline|, the letter ``|:|'' in the preamble % of the array and the command |\line| in the |code-after| can have % intersections with other dotted lines.} @@ -1506,7 +1560,23 @@ c & c & b & a & e % & \Cdots & & & \\ % \end{pNiceMatrix}$ % +% \subsection{The names of the Tikz nodes created by nicematrix} +% +% We have said that, when a name is given to an environment of \pkg{nicematrix}, +% it's possible to access the Tikz nodes through this name (cf. +% p.~\pageref{name}). +% +% That's the recommended way to access these nodes. However, we describe now the +% internal names of these nodes. +% +% The environments created by \pkg{nicematrix} are numbered by an internal +% global counter. The command |\NiceMatrixLastEnv| provides the number of the +% last environment of \pkg{nicematrix} (for LaTeX, it's a —fully expandable— +% command and not a counter). % +% For the environment of number~$n$, the node in row~$i$ and column~$j$ has the +% name |nm-|$n$|-|$i$|-|$j$. The |medium| and |large| have the same name, suffixed by +% |-medium| and |-large|. % % % \subsection{Diagonal lines} @@ -1747,7 +1817,7 @@ c & c & b & a & e % used. It's still possible to use these environments by loading % \pkg{nicematrix} with the option |obsolete-environments|. % -% However, these environments will probably be completely deleted in future +% However, these environments will probably be completely deleted in a future % version of \pkg{nicematrix}. % % \section{Examples} @@ -2033,7 +2103,7 @@ c & c & b & a & e % % \begin{Verbatim} % $\begin{pNiceArray}{>{\strut}CCCC}% -% [create-extra-nodes,margin,extra-margin = 2pt , +% [create-large-nodes,margin,extra-margin = 2pt , % code-after = {\begin{tikzpicture} % [~emphase#name suffix = -large@, % every node/.style = {draw, @@ -2052,7 +2122,7 @@ c & c & b & a & e % % % \[\begin{pNiceArray}{>{\strut}CCCC}[ -% create-extra-nodes,margin,extra-margin = 2pt, +% create-large-nodes,margin,extra-margin = 2pt, % code-after = {\begin{tikzpicture}[name suffix = -large, % every node/.style = {draw, % inner sep = -\pgflinewidth/2}] @@ -2135,15 +2205,15 @@ c & c & b & a & e % % \medskip % \begin{Verbatim} -% $\begin{pNiceArray}{CCC}[~emphase#name=example@,last-col,create-extra-nodes] -% a & a + b & a + b + c & L_1\\ +% $\begin{pNiceArray}{CCC}[~emphase#name=example@,last-col,create-medium-nodes] +% a & a + b & a + b + c & L_1 \\ % a & a & a + b & L_2 \\ % a & a & a & L_3 % \end{pNiceArray}$ % \end{Verbatim} % % \[\begin{pNiceArray}{CCC}[last-col] -% a & a + b & a + b + c & L_1\\ +% a & a + b & a + b + c & L_1 \\ % a & a & a + b & L_2 \\ % a & a & a & L_3 % \end{pNiceArray}\] @@ -2182,7 +2252,6 @@ c & c & b & a & e % % \[\begin{pNiceArray}{CCC}[ % last-col, -% create-extra-nodes, % code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, % blend mode = multiply, % inner sep = 0pt}] @@ -2212,7 +2281,7 @@ c & c & b & a & e % % \[\begin{pNiceArray}{CCC}[ % last-col, -% create-extra-nodes, +% create-medium-nodes, % code-after = {\begin{tikzpicture}[every node/.style = {fill = red!15, % blend mode = multiply, % inner sep = 0pt}, @@ -2233,7 +2302,7 @@ c & c & b & a & e % the matrix.\par\nobreak % \begin{Verbatim} % \begin{pNiceArray}{>{\strut}CCCC}% -% [create-extra-nodes,margin,extra-margin=2pt, +% [create-large-nodes,margin,extra-margin=2pt, % code-after = {\tikz \path [~emphase#name suffix = -large@, % fill = red!15, % blend mode = multiply] @@ -2251,7 +2320,7 @@ c & c & b & a & e % \end{Verbatim} % % \[ \begin{pNiceArray}{>{\strut}CCCC}[ -% create-extra-nodes,margin,extra-margin=2pt, +% create-large-nodes,margin,extra-margin=2pt, % code-after = {\tikz \path [name suffix = -large, % fill = red!15, % blend mode = multiply] @@ -2941,11 +3010,13 @@ c & c & b & a & e % \end{macrocode} % % \bigskip -% The boolean |\l_@@_extra_nodes_bool| will be used to indicate whether the -% ``medium nodes'' and ``large nodes'' are created in the array. +% The boolean |\l_@@_extra_medium_bool| will be used to indicate whether the +% ``medium nodes'' are created in the array. Idem for the ``large nodes''. % \begin{macrocode} -\bool_new:N \l_@@_extra_nodes_bool -\bool_new:N \g_@@_extra_nodes_bool +\bool_new:N \l_@@_medium_nodes_bool +\bool_new:N \g_@@_medium_nodes_bool +\bool_new:N \l_@@_large_nodes_bool +\bool_new:N \g_@@_large_nodes_bool % \end{macrocode} % % \bigskip @@ -2990,17 +3061,17 @@ c & c & b & a & e % |\Vdots| and |\Ddots|. % \begin{macrocode} renew-dots .bool_set:N = \l_@@_renew_dots_bool , - nullify-dots .bool_set:N = \l_@@_nullify_dots_bool , % \end{macrocode} % % \bigskip -% An option to test whether the extra nodes will be created (these nodes are the -% ``medium nodes'' and the ``large nodes''). In some circonstancies, the extra -% nodes are created automatically, for example when a dotted line has an -% ``open'' extremity. +% In some circonstancies, the ``medium nodes'' are created automatically, for +% example when a dotted line has an ``open'' extremity (idem for the ``large nodes''). % \begin{macrocode} - create-extra-nodes .bool_set:N = \l_@@_extra_nodes_bool , + create-medium-nodes .bool_set:N = \l_@@_medium_nodes_bool , + create-large-nodes .bool_set:N = \l_@@_large_nodes_bool , + create-extra-nodes .meta:n = + { create-medium-nodes , create-large-nodes } , left-margin .dim_set:N = \l_@@_left_margin_dim , left-margin .default:n = \arraycolsep , right-margin .dim_set:N = \l_@@_right_margin_dim , @@ -3623,12 +3694,12 @@ c & c & b & a & e % % % \medskip -% We switch to a global version of the boolean |\g_@@_extra_nodes_bool|, -% because, in some circonstancies, the boolean will be raised from inside a -% cell of the |\halign| (in particular in a column of type~|w|). -% +% We switch to a global version of the |\l_@@_medium_nodes_bool| and +% |\l_@@_large_nodes_bool| because these booleans may be raised in cells of the +% array (for exemple in commands |\Block|). % \begin{macrocode} - \bool_gset_eq:NN \g_@@_extra_nodes_bool \l_@@_extra_nodes_bool + \bool_gset_eq:NN \g_@@_medium_nodes_bool \l_@@_medium_nodes_bool + \bool_gset_eq:NN \g_@@_large_nodes_bool \l_@@_large_nodes_bool % \end{macrocode} % % \bigskip @@ -3710,6 +3781,7 @@ c & c & b & a & e \cs_set_eq:NN \Hdotsfor \@@_Hdotsfor: \cs_set_eq:NN \multicolumn \@@_multicolumn:nnn \cs_set_eq:NN \Block \@@_Block: + \cs_set_eq:NN \OnlyMainNiceMatrix \@@_OnlyMainNiceMatrix:n \bool_if:NT \l_@@_renew_dots_bool { \cs_set_eq:NN \ldots \@@_Ldots @@ -3741,9 +3813,10 @@ c & c & b & a & e % \end{macrocode} % % At the end of the environment |{array}|, |\c@iRow| will be the total -% number de rows and |\g_@@_row_total_int| will be the number or rows excepted -% the last row (if |\l_@@_last_row_bool| has been raised with the option -% |last-row|). +% number de rows. +% +% |\g_@@_row_total_int| will be the number or rows excepted the last row (if +% |\l_@@_last_row_bool| has been raised with the option |last-row|). % \begin{macrocode} \int_gzero_new:N \g_@@_row_total_int % \end{macrocode} @@ -3799,7 +3872,7 @@ c & c & b & a & e \l_@@_auto_columns_width_bool || \dim_compare_p:nNn \l_@@_columns_width_dim > \c_zero_dim } - { \bool_gset_true:N \g_@@_extra_nodes_bool } + { \bool_gset_true:N \g_@@_large_nodes_bool } % \end{macrocode} % % \medskip @@ -4769,12 +4842,21 @@ c & c & b & a & e } % \end{macrocode} % -% If the user has used the option |create-extra-nodes|, the ``medium nodes'' and -% ``large nodes'' are created. We recall that the command -% |\@@_create_extra_nodes:|, when used once, becomes no-op (in the current TeX -% group). +% The booleans |\g_@@_medium_nodes_bool| and |\g_@@_large_nodes_bool| may be +% raised directly in cells of the array (for example in commands |\Block|) but +% also because the user has used the options |create-medium-nodes| and +% |create-large-nodes| (these options raise the booleans +% |\l_@@_medium_nodes_bool| and |\l_@@_large_nodes_bool| but theses booleans are +% converted into the global version |\g_@@_medium_nodes_bool| and +% |\g_@@_large_nodes_bool| before the creation of the array). % \begin{macrocode} - \bool_if:NT \g_@@_extra_nodes_bool \@@_create_extra_nodes: + \bool_if:nTF \g_@@_medium_nodes_bool + { + \bool_if:NTF \g_@@_large_nodes_bool + \@@_create_medium_and_large_nodes: + \@@_create_medium_nodes: + } + { \bool_if:NT \g_@@_large_nodes_bool \@@_create_large_nodes: } \int_zero_new:N \l_@@_initial_i_int \int_zero_new:N \l_@@_initial_j_int \int_zero_new:N \l_@@_final_i_int @@ -4844,9 +4926,8 @@ c & c & b & a & e % a & a+b & a+b+c % \end{pNiceMatrix}\] % For a closed extremity, we use the normal node and for a open one, we use the -% ``medium node'' or, if it exists, the |w|~node (the medium and large nodes are -% created with |\@@_create_extra_nodes:| if they have not been created yet). -% \[ \begin{pNiceMatrix}[create-extra-nodes, +% ``medium node'' or, if it exists, the |w|~node. +% \[ \begin{pNiceMatrix}[create-medium-nodes, % code-after = {\begin{tikzpicture} % \node [highlight, fit={(2-1)}] {} ; % \node [highlight, fit={(2-3-medium)}] {}; @@ -5070,10 +5151,10 @@ c & c & b & a & e % matrix\footnote{We should change this. Indeed, for an open extremity of an % \emph{horizontal} dotted line, we use the |w|~node, if, it exists, and not the % ``medium node''.}. We remind that, when used once, the command -% |\@@_create_extra_nodes:| becomes no-op in the current TeX group. +% |\@@_create_medium_nodes:| becomes no-op in the current TeX group. % \begin{macrocode} - \bool_if:nT \l_@@_initial_open_bool \@@_create_extra_nodes: - \bool_if:NT \l_@@_final_open_bool \@@_create_extra_nodes: + \bool_if:nT \l_@@_initial_open_bool \@@_create_medium_nodes: + \bool_if:NT \l_@@_final_open_bool \@@_create_medium_nodes: } % \end{macrocode} % @@ -5461,6 +5542,18 @@ c & c & b & a & e } % \end{macrocode} % +% +% \bigskip +% The command |\NiceMatrixLastEnv| is not used by the package \pkg{nicematrix}. +% It's only a facility given to the final user. It gives the number of the last +% environment (in fact the number of the current environment but it's meant to +% be used after the environment in order to refer to that environment --- and +% its nodes --- without having to give it a name). +% \begin{macrocode} +\NewExpandableDocumentCommand \NiceMatrixLastEnv { } + { \int_use:N \g_@@_env_int } +% \end{macrocode} +% % \bigskip % \subsection{The actual instructions for drawing the dotted line with Tikz} % @@ -5796,7 +5889,7 @@ c & c & b & a & e } } \bool_if:nT { \l_@@_initial_open_bool || \l_@@_final_open_bool } - \@@_create_extra_nodes: + \@@_create_medium_nodes: \@@_actually_draw_Ldots: % \end{macrocode} % We declare all the cells concerned by the |\Hdotsfor| as ``dotted'' (for the @@ -5944,7 +6037,7 @@ c & c & b & a & e { \noalign { - \bool_gset_true:N \g_@@_extra_nodes_bool + \bool_gset_true:N \g_@@_large_nodes_bool \cs_if_exist:cTF { @@_width_ \int_use:N \g_@@_env_int } { \dim_set_eq:Nc \l_tmpa_dim { @@_width_ \int_use:N \g_@@_env_int } } { \dim_set:Nn \l_tmpa_dim { 5 mm } } @@ -6068,7 +6161,7 @@ c & c & b & a & e % { ! { \int_compare:nNnF \c@iRow = \c_zero_int \vline } } % \end{Verbatim} % -% However, this code fails is the user uses "\DefineShortVerb{\|}" of +% However, this code fails if the user uses "\DefineShortVerb{\|}" of % \pkg{fancyvrb}. Moreover, it would not be able to deal correctly with two % consecutive specifiers ``"|"'' (in a preambule like "ccc||ccc"). % @@ -6132,13 +6225,41 @@ c & c & b & a & e % \end{macrocode} % % \medskip -% If \pkg{colortbl} is loaded, the following macro will redefined (in a +% If \pkg{colortbl} is loaded, the following macro will be redefined (in a % |\AtBeginDocument|) to take into account the color fixed by |\arrayrulecolor| % of \pkg{colortbl}. % \begin{macrocode} \cs_set_eq:NN \@@_vline_i: \vline % \end{macrocode} % +% \bigskip +% We give now the definition of |\OnlyMainNiceMatrix|. Internally, it is not +% used by \pkg{nicematrix}. It's only a facility given to the final user, which +% may be useful in the definitions of new columns types (with |\newcolumntype|). +% +% \smallskip +% First, we give the definition of |\OnlyMainNiceMatrix| in the general case: +% it's no-op (thus, a definition of column type may be used outside the +% environments of \pkg{nicematrix}, in |{array}|, etc.). +% \begin{macrocode} +\cs_set_eq:NN \OnlyMainNiceMatrix \use:n +% \end{macrocode} +% +% \medskip +% Now, we give the definition of |\OnlyMainNiceMatrix| which will be used +% in the environments of \pkg{nicematrix}. This command +% |\@@_OnlyMainNiceMatrix:n| will be linked to |\OnlyMainNiceMatrix| in +% |\@@_pre_array:|. This command is ``fully expandable'' and that's why we have +% not protected it, even tough this characteristic will probably not be used. +% \begin{macrocode} +\cs_new:Npn \@@_OnlyMainNiceMatrix:n #1 + { + \int_compare:nNnF \c@iRow = \c_zero_int + { \int_compare:nNnF \c@iRow = \l_@@_last_row_int { #1 } } + } +% \end{macrocode} +% +% % \bigskip % \subsection{The environment \{NiceMatrixBlock\}} % @@ -6212,11 +6333,21 @@ c & c & b & a & e % \end{macrocode} % % \bigskip -% The macro |\@@_create_extra_nodes:| must \emph{not} be used in the -% |code-after| because the |code-after| is executed in a scope of |prefix name|. -% +% We have three macros of creation of nodes: |\@@_create_medium_nodes:|, |\@@_create_large_nodes:| and +% |\@@_create_medium_and_large_nodes:|. They must \emph{not} be used in the +% |code-after| because the |code-after| is executed in a scope of |prefix name| +% of Tikz. % % \bigskip +% We have to compute the mathematical coordinates of the ``medium nodes''. These +% mathematical coordinates are also used to compute the mathematical coordinates +% of the ``large nodes''. That's why we write a command +% |\@@_computations_for_medium_nodes:| to do these computations. +% +% \bigskip +% The command |\@@_computations_for_medium_nodes:| must be used in a +% |{tikzpicture}|. +% \medskip % For each row $i$, we compute two dimensions % \texttt{l_@@_row_\textsl{i}_min_dim} and \texttt{l_@@_row_\textsl{i}_max_dim}. % The dimension \texttt{l_@@_row_\textsl{i}_min_dim} is the minimal @@ -6234,68 +6365,81 @@ c & c & b & a & e % Since these dimensions will be computed as maximum or minimum, we initialize % them to |\c_max_dim| or |-\c_max_dim|. % \begin{macrocode} -\cs_new_protected:Nn \@@_create_extra_nodes: +\cs_new_protected:Npn \@@_computations_for_medium_nodes: { - \begin { tikzpicture } [ remember~picture , overlay ] - \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: - { - \dim_zero_new:c { l_@@_row_\@@_i: _min_dim } - \dim_set_eq:cN { l_@@_row_\@@_i: _min_dim } \c_max_dim - \dim_zero_new:c { l_@@_row_\@@_i: _max_dim } - \dim_set:cn { l_@@_row_\@@_i: _max_dim } { - \c_max_dim } - } - \int_step_variable:nnNn \l_@@_first_col_int \g_@@_col_total_int \@@_j: - { - \dim_zero_new:c { l_@@_column_\@@_j: _min_dim } - \dim_set_eq:cN { l_@@_column_\@@_j: _min_dim } \c_max_dim - \dim_zero_new:c { l_@@_column_\@@_j: _max_dim } - \dim_set:cn { l_@@_column_\@@_j: _max_dim } { - \c_max_dim } - } + \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: + { + \dim_zero_new:c { l_@@_row_\@@_i: _min_dim } + \dim_set_eq:cN { l_@@_row_\@@_i: _min_dim } \c_max_dim + \dim_zero_new:c { l_@@_row_\@@_i: _max_dim } + \dim_set:cn { l_@@_row_\@@_i: _max_dim } { - \c_max_dim } + } + \int_step_variable:nnNn \l_@@_first_col_int \g_@@_col_total_int \@@_j: + { + \dim_zero_new:c { l_@@_column_\@@_j: _min_dim } + \dim_set_eq:cN { l_@@_column_\@@_j: _min_dim } \c_max_dim + \dim_zero_new:c { l_@@_column_\@@_j: _max_dim } + \dim_set:cn { l_@@_column_\@@_j: _max_dim } { - \c_max_dim } + } % \end{macrocode} % We begin the two nested loops over the rows and the columns of the array. % \begin{macrocode} - \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: - { - \int_step_variable:nnNn - \l_@@_first_col_int \g_@@_col_total_int \@@_j: + \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: + { + \int_step_variable:nnNn + \l_@@_first_col_int \g_@@_col_total_int \@@_j: % \end{macrocode} % Maybe the cell ($i$-$j$) is an implicit cell (that is to say a cell after % implicit ampersands |&|). In this case, of course, we don't update the % dimensions we want to compute. % \begin{macrocode} - { \cs_if_exist:cT - { pgf@sh@ns@nm - \int_use:N \g_@@_env_int - \@@_i: - \@@_j: } + { \cs_if_exist:cT + { pgf@sh@ns@nm - \int_use:N \g_@@_env_int - \@@_i: - \@@_j: } % \end{macrocode} % We retrieve the coordinates of the anchor |south west| of the (normal) node of % the cell ($i$-$j$). They will be stored in |\pgf@x| and |\pgf@y|. % \begin{macrocode} - { - \tikz@parse@node \pgfutil@firstofone - ( nm - \int_use:N \g_@@_env_int - - \@@_i: - \@@_j: .south~west ) - \dim_set:cn { l_@@_row_\@@_i: _min_dim} - { \dim_min:vn { l_@@_row _ \@@_i: _min_dim } \pgf@y } - \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } - { - \dim_set:cn { l_@@_column _ \@@_j: _min_dim} - { \dim_min:vn { l_@@_column _ \@@_j: _min_dim } \pgf@x } - } + { + \tikz@parse@node \pgfutil@firstofone + ( nm - \int_use:N \g_@@_env_int + - \@@_i: - \@@_j: .south~west ) + \dim_set:cn { l_@@_row_\@@_i: _min_dim} + { \dim_min:vn { l_@@_row _ \@@_i: _min_dim } \pgf@y } + \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } + { + \dim_set:cn { l_@@_column _ \@@_j: _min_dim} + { \dim_min:vn { l_@@_column _ \@@_j: _min_dim } \pgf@x } + } % \end{macrocode} % We retrieve the coordinates of the anchor |north east| of the (normal) node of % the cell ($i$-$j$). They will be stored in |\pgf@x| and |\pgf@y|. % \begin{macrocode} - \tikz@parse@node \pgfutil@firstofone - ( nm - \int_use:N \g_@@_env_int - \@@_i: - \@@_j: .north~east ) - \dim_set:cn { l_@@_row _ \@@_i: _ max_dim } - { \dim_max:vn { l_@@_row _ \@@_i: _ max_dim } \pgf@y } - \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } - { - \dim_set:cn { l_@@_column _ \@@_j: _ max_dim } - { \dim_max:vn { l_@@_column _ \@@_j: _max_dim } \pgf@x } - } - } - } - } + \tikz@parse@node \pgfutil@firstofone + ( nm - \int_use:N \g_@@_env_int - \@@_i: - \@@_j: .north~east ) + \dim_set:cn { l_@@_row _ \@@_i: _ max_dim } + { \dim_max:vn { l_@@_row _ \@@_i: _ max_dim } \pgf@y } + \seq_if_in:NxF \g_@@_multicolumn_cells_seq { \@@_i: - \@@_j: } + { + \dim_set:cn { l_@@_column _ \@@_j: _ max_dim } + { \dim_max:vn { l_@@_column _ \@@_j: _max_dim } \pgf@x } + } + } + } + } + } +% \end{macrocode} +% +% +% \bigskip +% Here is the command |\@@_create_medium_nodes:|. When this command is used, the +% ``medium nodes'' are created. These nodes won't be constructed twice because +% when used once, this command becomes no-op. +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_create_medium_nodes: + { + \begin { tikzpicture } [ remember~picture , overlay ] + \@@_computations_for_medium_nodes: % \end{macrocode} % Now, we can create the ``medium nodes''. We use a command |\@@_create_nodes:| % because this command will also be used for the creation of the ``large nodes'' @@ -6303,93 +6447,115 @@ c & c & b & a & e % \begin{macrocode} \tikzset { name~suffix = -medium } \@@_create_nodes: + \end { tikzpicture } + \cs_set_protected:Npn \@@_create_medium_nodes: { } + \cs_set_protected:Npn \@@_create_medium_and_large_nodes: + { \@@_create_large_nodes: } + } % \end{macrocode} % +% +% \medskip +% The command |\@@_create_large_nodes:| must be used when we want to create only +% the ``large nodes'' and not the medium ones (if we want to create both, we +% have to use the command |\@@_create_medium_and_large_nodes:|). However, the +% computation of the mathematical coordinates of the ``large nodes'' needs the +% computation of the mathematical coordinates of the ``medium nodes''. That's +% why we use first |\@@_computations_for_medium_nodes:| and then the command +% |\@@_computations_for_large_nodes:|. +% \begin{macrocode} +\cs_new_protected:Npn \@@_create_large_nodes: + { + \begin { tikzpicture } [ remember~picture , overlay ] + \@@_computations_for_medium_nodes: + \@@_computations_for_large_nodes: + \tikzset { name~suffix = -large } + \@@_create_nodes: + \end { tikzpicture } + \@@_compute_width_of_array: + \cs_set_protected:Npn \@@_create_large_nodes: { } + \cs_set_protected:Npn \@@_create_medium_and_large_nodes: + { \@@_create_medium_nodes: } + } +% \end{macrocode} +% +% \begin{macrocode} +\cs_new_protected:Npn \@@_create_medium_and_large_nodes: + { + \begin { tikzpicture } [ remember~picture , overlay ] + \@@_computations_for_medium_nodes: +% Now, we can create the ``medium nodes''. We use a command |\@@_create_nodes:| +% because this command will also be used for the creation of the ``large nodes'' +% (after changing the value of |name-suffix|). +% \begin{macrocode} + \tikzset { name~suffix = -medium } + \@@_create_nodes: + \@@_computations_for_large_nodes: + \tikzset { name~suffix = -large } + \@@_create_nodes: + \@@_compute_width_of_array: + \end { tikzpicture } + \@@_compute_width_of_array: + \cs_set_protected:Npn \@@_create_medium_and_large_nodes: { } + \cs_set_protected:Npn \@@_create_medium_nodes: { } + \cs_set_protected:Npn \@@_create_large_nodes: { } + } +% \end{macrocode} +% +% % \bigskip -% For ``large nodes'', the exterior rows and columns don't interfer. -% That's why the loop over the rows will start at 1 and the loop over the -% columns will stop at $|\c@jCol|$ (and not |\g_@@_col_total_int|). Idem -% for the rows. +% For ``large nodes'', the exterior rows and columns don't interfer. That's why +% the loop over the columns will start at 1 and stop at $|\c@jCol|$ (and not +% |\g_@@_col_total_int|). Idem for the rows. % \begin{macrocode} - \int_set:Nn \l_@@_first_row_int 1 - \int_set:Nn \l_@@_first_col_int 1 +\cs_new_protected:Npn \@@_computations_for_large_nodes: + { + \int_set:Nn \l_@@_first_row_int 1 + \int_set:Nn \l_@@_first_col_int 1 % \end{macrocode} % We have to change the values of all the dimensions % \texttt{l_@@_row_\textsl{i}_min_dim}, \texttt{l_@@_row_\textsl{i}_max_dim}, % \texttt{l_@@_column_\textsl{j}_min_dim} and % \texttt{l_@@_column_\textsl{j}_max_dim}. % \begin{macrocode} - \int_step_variable:nNn { \c@iRow - 1 } \@@_i: - { - \dim_set:cn { l_@@_row _ \@@_i: _ min _ dim } - { - ( - \dim_use:c { l_@@_row _ \@@_i: _ min _ dim } + - \dim_use:c { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } - ) - / 2 - } - \dim_set_eq:cc { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } - { l_@@_row_\@@_i: _min_dim } - } - \int_step_variable:nNn { \c@jCol - 1 } \@@_j: - { - \dim_set:cn { l_@@_column _ \@@_j: _ max _ dim } - { - ( - \dim_use:c - { l_@@_column _ \@@_j: _ max _ dim } + - \dim_use:c - { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } - ) - / 2 - } - \dim_set_eq:cc { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } - { l_@@_column _ \@@_j: _ max _ dim } - } - \dim_sub:cn - { l_@@_column _ 1 _ min _ dim } - \l_@@_left_margin_dim - \dim_add:cn - { l_@@_column _ \int_use:N \c@jCol _ max _ dim } - \l_@@_right_margin_dim -% \end{macrocode} -% Now, we can actually create the ``large nodes''. -% \begin{macrocode} - \tikzset { name~suffix = -large } - \@@_create_nodes: - \end{tikzpicture} -% \end{macrocode} -% -% \medskip -% When used once, the command |\@@_create_extra_nodes:| must become no-op (in -% the current TeX group). That's why we put a nullification of the command. -% \begin{macrocode} - \cs_set:Npn \@@_create_extra_nodes: { } -% \end{macrocode} -% -% \medskip -% We can now compute the width of the array (used by |\hdottedline|). -% \begin{macrocode} - \begin { tikzpicture } [ remember~picture , overlay ] - \tikz@parse@node \pgfutil@firstofone - ( nm - \int_use:N \g_@@_env_int - 1 - 1 - large .north~west ) - \dim_gset:Nn \g_tmpa_dim \pgf@x - \tikz@parse@node \pgfutil@firstofone - ( nm - \int_use:N \g_@@_env_int - 1 - - \int_use:N \c@jCol - large .north~east ) - \dim_gset:Nn \g_tmpb_dim \pgf@x - \end { tikzpicture } - \iow_now:Nn \@mainaux \ExplSyntaxOn - \iow_now:Nx \@mainaux - { - \cs_gset:cpn { @@_width_ \int_use:N \g_@@_env_int } - { \dim_eval:n { \g_tmpb_dim - \g_tmpa_dim } } - } - \iow_now:Nn \@mainaux \ExplSyntaxOff + \int_step_variable:nNn { \c@iRow - 1 } \@@_i: + { + \dim_set:cn { l_@@_row _ \@@_i: _ min _ dim } + { + ( + \dim_use:c { l_@@_row _ \@@_i: _ min _ dim } + + \dim_use:c { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } + ) + / 2 + } + \dim_set_eq:cc { l_@@_row _ \int_eval:n { \@@_i: + 1 } _ max _ dim } + { l_@@_row_\@@_i: _min_dim } + } + \int_step_variable:nNn { \c@jCol - 1 } \@@_j: + { + \dim_set:cn { l_@@_column _ \@@_j: _ max _ dim } + { + ( + \dim_use:c + { l_@@_column _ \@@_j: _ max _ dim } + + \dim_use:c + { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } + ) + / 2 + } + \dim_set_eq:cc { l_@@_column _ \int_eval:n { \@@_j: + 1 } _ min _ dim } + { l_@@_column _ \@@_j: _ max _ dim } + } + \dim_sub:cn + { l_@@_column _ 1 _ min _ dim } + \l_@@_left_margin_dim + \dim_add:cn + { l_@@_column _ \int_use:N \c@jCol _ max _ dim } + \l_@@_right_margin_dim } % \end{macrocode} -% +% +% % % \bigskip % The control sequence |\@@_create_nodes:| is used twice: for the construction @@ -6401,7 +6567,7 @@ c & c & b & a & e % ``medium nodes'' and the ``large nodes'', the values of these dimensions are % changed. % \begin{macrocode} -\cs_new_protected:Nn \@@_create_nodes: +\cs_new_protected:Npn \@@_create_nodes: { \int_step_variable:nnNn \l_@@_first_row_int \g_@@_row_total_int \@@_i: { @@ -6452,6 +6618,34 @@ c & c & b & a & e % \end{macrocode} % % +% +% \medskip +% We can now compute the width of the array (used by |\hdottedline|). We should +% modify this point because it's a waste to construct all the ``large nodes'' only +% for computing the width of the array. +% \begin{macrocode} +\cs_new_protected:Npn \@@_compute_width_of_array: + { + \begin { tikzpicture } [ remember~picture , overlay ] + \tikz@parse@node \pgfutil@firstofone + ( nm - \int_use:N \g_@@_env_int - 1 - 1 - large .north~west ) + \dim_gset:Nn \g_tmpa_dim \pgf@x + \tikz@parse@node \pgfutil@firstofone + ( nm - \int_use:N \g_@@_env_int - 1 - + \int_use:N \c@jCol - large .north~east ) + \dim_gset:Nn \g_tmpb_dim \pgf@x + \end { tikzpicture } + \iow_now:Nn \@mainaux \ExplSyntaxOn + \iow_now:Nx \@mainaux + { + \cs_gset:cpn { @@_width_ \int_use:N \g_@@_env_int } + { \dim_eval:n { \g_tmpb_dim - \g_tmpa_dim } } + } + \iow_now:Nn \@mainaux \ExplSyntaxOff + } +% \end{macrocode} +% +% \bigskip % \begin{macrocode} \cs_new_protected:Npn \@@_extract_coords: #1 - #2 \q_stop { @@ -6542,7 +6736,7 @@ c & c & b & a & e - \int_use:N \c@jCol ) ; \end { tikzpicture } } - \bool_gset_true:N \g_@@_extra_nodes_bool + \bool_gset_true:N \g_@@_medium_nodes_bool % \end{macrocode} % We write an instruction in the |code-after|. We write the instruction in the % beginning of the |code-after| (the |left| in |\tl_gput_left:Nx|) because we @@ -6867,6 +7061,9 @@ c & c & b & a & e code-for-first-row,~ code-for-last-col,~ code-for-last-row,~ + create-extra-nodes,~ + create-medium-nodes,~ + create-large-nodes,~ exterior-arraycolsep,~ hlines,~ left-margin,~ @@ -6900,6 +7097,8 @@ c & c & b & a & e code-for-last-row,~ columns-width,~ create-extra-nodes,~ + create-medium-nodes,~ + create-large-nodes,~ extra-left-margin,~ extra-right-margin,~ first-col,~ @@ -6920,7 +7119,7 @@ c & c & b & a & e % % \medskip % This error message is used for the set of keys |NiceMatrix/NiceMatrix| and -% |NiceMatrix/pNiceArray| (but not by |NiceMatrix/NiceArray| (because, for this +% |NiceMatrix/pNiceArray| (but not by |NiceMatrix/NiceArray| because, for this % set of keys, there is also the options |t|, |c| and~|b|). % \begin{macrocode} \@@_msg_new:nnn { Unknown~option~for~NiceMatrix } @@ -6939,6 +7138,8 @@ c & c & b & a & e code-for-last-row,~ columns-width,~ create-extra-nodes,~ + create-medium-nodes,~ + create-large-nodes,~ extra-left-margin,~ extra-right-margin,~ first-col,~ @@ -7374,6 +7575,13 @@ c & c & b & a & e % % An error is raised when an obsolete environment is used. % +% +% \subsection*{Changes between version 3.8 and 3.9} +% +% New commands |\NiceMatrixLastEnv| and |\OnlyMainNiceMatrix|. +% +% New options |create-medium-nodes| and |create-large-nodes|. +% % \PrintIndex % % \tableofcontents diff --git a/macros/latex/contrib/nicematrix/nicematrix.pdf b/macros/latex/contrib/nicematrix/nicematrix.pdf Binary files differindex da9bd49dc6..01f2e3261b 100644 --- a/macros/latex/contrib/nicematrix/nicematrix.pdf +++ b/macros/latex/contrib/nicematrix/nicematrix.pdf diff --git a/macros/latex/contrib/tocloft/tocloft.dtx b/macros/latex/contrib/tocloft/tocloft.dtx index dcf62b1da6..1d1573eee0 100644 --- a/macros/latex/contrib/tocloft/tocloft.dtx +++ b/macros/latex/contrib/tocloft/tocloft.dtx @@ -16,7 +16,7 @@ % % This work consists of the files listed in the README file. % -% +% %<*driver> \documentclass{ltxdoc} \usepackage{hypdoc} @@ -73,8 +73,7 @@ % \def\fileversion{v2.3g} \def\filedate{2014/06/14} % \def\fileversion{v2.3h} \def\filedate{2017/08/29} % \def\fileversion{v2.3i} \def\filedate{2017/08/31} -% -% \CheckSum{2302} +% \def\fileversion{v2.3j} \def\filedate{2020/01/10} % % \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath} % \DoNotIndex{\@centercr,\@cite} @@ -137,18 +136,18 @@ % \date{\filedate} % \maketitle % \begin{abstract} -% The \Lpack{tocloft} package provides means of controlling the +% The \Lpack{tocloft} package provides means of controlling the % typographic design of the Table of Contents, List of Figures and List of % Tables. New kinds of `List of \ldots' can be defined. % -% The package has been tested with the -% \Lpack{tocbibind}, -% \Lpack{minitoc}, +% The package has been tested with the +% \Lpack{tocbibind}, +% \Lpack{minitoc}, % \Lpack{ccaption}, -% \Lpack{subfigure}, +% \Lpack{subfigure}, % \Lpack{float}, % \Lpack{fncychap}, and -% \Lpack{hyperref} +% \Lpack{hyperref} % packages. % \end{abstract} % \tableofcontents @@ -157,7 +156,7 @@ % \listoftables % \StopEventually{} % -% +% % % \section{Introduction} % @@ -166,7 +165,7 @@ % more precisely, it is buried within the class definitions. % The \Lpack{tocloft} package provides handles for an author to % change the design to meet the needs of the particular document. -% +% % Elements of the package were developed as part of a class % and package bundle for typesetting ISO standards~\cite{PRW96i}. % This manual is typeset according to the conventions of the @@ -176,17 +175,17 @@ % Section~\ref{sec:usc} describes the usage of the package. % Commented source code for the package is in Section~\ref{sec:code}. % -% The package has been tested in combination with at least -% the \Lpack{tocbibind} package~\cite{TOCBIBIND}, -% the \Lpack{minitoc} package~\cite{MINITOC}, +% The package has been tested in combination with at least +% the \Lpack{tocbibind} package~\cite{TOCBIBIND}, +% the \Lpack{minitoc} package~\cite{MINITOC}, % the \Lpack{ccaption} package~\cite{CCAPTION}, % the \Lpack{subfigure} package~\cite{SUBFIGURE} (versions 2.0 and 2.1), % the \Lpack{algorithm} package~\cite{ALGORITHM} (which, in turn, calls the % \Lpack{float} package~\cite{FLOAT}) and the \Lpack{fncychap} package~\cite{FNCYCHAP}. % It also works with the \Lpack{hyperref} package. % Please send me any comments as to how you think -% that the package can be improved, or of any interesting examples of -% how you have used +% that the package can be improved, or of any interesting examples of +% how you have used % it.\footnote{Thanks to Rowland (\texttt{rebecca@astrid.u-net.com}), % John Foster (\texttt{john@isjf.demon.co.uk}), % Kasper (\texttt{kbg@dkik.dk}), @@ -203,7 +202,7 @@ % % \DescribeMacro{\addcontentsline} % \LaTeX{} generates a \file{.toc} file if the document contains a -% |\tableofcontents| command. The sectioning +% |\tableofcontents| command. The sectioning % commands\footnote{For figures and tables it is the \texttt{\bs caption} command % that populates the \file{.lof} and \file{.lot} files.} % put entries into the \file{.toc} file by calling the \LaTeX{} @@ -214,19 +213,19 @@ % there is a number, the \meta{title} argument is given in the % form |{\numberline{number} title-text}|. % -% NOTE: The \Lpack{hyperref} package dislikes authors using +% NOTE: The \Lpack{hyperref} package dislikes authors using % |\addcontentsline|. To get it to work properly with \Lpack{hyperref} % you normally have to put |\phantomsection| (a macro defined within -% the \Lpack{hyperref} package) immediately +% the \Lpack{hyperref} package) immediately % before |\addcontentsline|. % % \DescribeMacro{\contentsline} % The |\addcontentsline| command writes an entry to the given file % in the form |\contentsline{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}| % where \meta{page} is the page number. -% For each \meta{kind}, \LaTeX{} provides a command +% For each \meta{kind}, \LaTeX{} provides a command % |\l@kind{|\meta{title}|}{|\meta{page}|}| which performs the actual -% typesetting of the |\contentsline| entry. +% typesetting of the |\contentsline| entry. % % \newcommand{\maxx}{120} ^^A picture width % \newcommand{\maxxm}{118} ^^A \maxx - 2\ @@ -249,7 +248,7 @@ % \newcommand{\fyvp}{42} ^^A \fyv + 2 % \newcommand{\flin}{4} ^^A length of leader lines % \newcommand{\frmargm}{89} ^^A \frmarg (90) - a little bit -% +% % \providecommand{\bs}{\textbackslash} % \begin{figure} % \centering @@ -292,13 +291,13 @@ % \put(\frmarg,\fyi){\vector(-1,0){\flin}} % \put(\frmarg,\fyi){\vector(1,0){0}} % \put(\frmarg,\fyim){\makebox(0,0)[tr]{\texttt{\bs @dotsep}}} -% +% % \end{picture} % \setlength{\unitlength}{1pt} % \caption{Layout of a ToC (LoF, LoT) entry} \label{fig:ltoc} % \end{figure} -% -% +% +% % \DescribeMacro{\@pnumwidth} % \DescribeMacro{\@tocrmarg} % \DescribeMacro{\@dotsep} @@ -319,7 +318,7 @@ % The standard values for these internal commands are: % \begin{itemize} % \item |\@pnumwidth| = 1.55em -% \item |\@tocrmarg| = 2.55em +% \item |\@tocrmarg| = 2.55em % \item |\@dotsep| = 4.5 % \end{itemize} % The values can be changed by using |\renewcommand|, in spite of the @@ -329,15 +328,15 @@ % (nor for Section entries in the \Lpack{article} class and its derivatives). % % \DescribeMacro{\numberline} -% Each |\l@kind| macro is responsible for setting the general +% Each |\l@kind| macro is responsible for setting the general % \textit{indent} from the lefthand margin, and the \textit{numwidth}. % The |\numberline{|\meta{number}|}| macro is responsible for typesetting -% the number flushleft in a box of width +% the number flushleft in a box of width % \textit{numwidth}. If the number is too long for the box then it will % protrude into the title text. The title text is indented by % (\textit{indent + numwidth}) from the lefthand margin. That is, the title % text is typeset in a block of width \\ -% (|\linewidth| - \textit{indent} - \textit{numwidth} - |\@tocrmarg|). +% (|\linewidth| - \textit{indent} - \textit{numwidth} - |\@tocrmarg|). % % \begin{table} % \centering @@ -376,7 +375,7 @@ % having to know the \LaTeX{} internals). % % You can use the |\addcontentsline| command to add |\contentsline| -% commands to a file. +% commands to a file. % % \DescribeMacro{\addtocontents} % \LaTeX{} also provides the |\addtocontents{|\meta{file}|}{|\meta{text}|}| @@ -388,7 +387,7 @@ % % As |\addcontentsline| and |\addtocontents| write their arguments to a % file, any fragile commands used in their arguments must be |\protect|ed. -% +% % You can make certain adjustments to the ToC etc., layout without % using any package. Some examples are: % \begin{itemize} @@ -425,7 +424,7 @@ % the LoF with respect to that for the ToC. As you can see, it is much % better that all dot leaders have the same spacing. % -% \item To add a horizontal line across the whole width of the ToC below +% \item To add a horizontal line across the whole width of the ToC below % an entry for a Part: % \begin{verbatim} % \part{Part title} @@ -434,7 +433,7 @@ % Note that as both |\addtocontents| and |\addcontentsline| write their % arguments to a file, it means that any \emph{fragile} commands in % their arguments must be protected -% by preceding each fragile command with |\protect|. +% by preceding each fragile command with |\protect|. % The result of the example above % would be the following two lines in the \file{.toc} file (assuming that it % is the second Part and is on page 34): @@ -449,14 +448,14 @@ % \end{verbatim} % \end{small} % -% \item You may get undesired page breaks in the ToC. For example you +% \item You may get undesired page breaks in the ToC. For example you % may have a long multiline section title and in the ToC there is a page % break between the lines. After your document is stable you can use % |\addtocontents| at appropriate places in the body of the document % to adjust the page breaking in the ToC. As examples: % \begin{itemize} % \item |\addtocontents{toc}{\protect\newpage}| to force a page break. -% \item |\addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}| to +% \item |\addtocontents{toc}{\protect\enlargethispage{2\baselineskip}}| to % make the page longer. % \item |\addtocontents{toc}{\protect\needspace{2\baselineskip}}| to specify % that if there is not a vertical space of two baselines left on @@ -467,7 +466,7 @@ % \end{itemize} % Remember, if you are modifying any command that includes an |@| sign then this % must be done in either a \file{.sty} file or if in the document itself -% it must be +% it must be % surrounded by |\makeatletter| and |\makeatother|. For example, if you % want to modify |\@dotsep| in the preamble to your document you have % to do it like this: @@ -476,7 +475,7 @@ % \renewcommand{\@dotsep}{9.0} % \makeatother % \end{verbatim} -% +% % % \section{The \Lpack{tocloft} package} \label{sec:usc} % @@ -505,7 +504,7 @@ % \end{verbatim} % % \DescribeMacro{\tocloftpagestyle} -% The |\thispagestyle| page style of the ToC, LoF and/or LoT is set +% The |\thispagestyle| page style of the ToC, LoF and/or LoT is set % by the command % |\tocloftpagestyle{|\meta{style}|}|, where \meta{style} is one of % the available page styles. The package initially @@ -517,7 +516,7 @@ % \begin{itemize} % \item[\Lopt{subfigure}] This option is required if, and only if, % the \Lpack{tocloft} and -% \Lpack{subfigure} packages are being used together. The two packages +% \Lpack{subfigure} packages are being used together. The two packages % can be specified in any order. % % \item[\Lopt{titles}] @@ -529,7 +528,7 @@ % % \end{itemize} % -% If you use the \Lopt{titles} option you can ignore the next +% If you use the \Lopt{titles} option you can ignore the next % section and continue reading at section~\ref{sec:entries}. % % \subsection{Changing the titles} \label{sec:titles} @@ -576,7 +575,7 @@ % \\[\baselineskip]\mbox{}\hfill{\normalfont Page}} % \end{verbatim} % will put the word `Page' flushright on the line following the title. -% (If you do this, then you may need to decrease +% (If you do this, then you may need to decrease % |\cftafterZtitleskip|). % \item |\renewcommand{\cftafterZtitle}{\thispagestyle{empty}}| will % make the page with the title empty (i.e., the page @@ -592,6 +591,17 @@ % package or in~\cite[page 34]{GOOSSENS94}, and are repeated in % Figure~\ref{fig:ltoc}. % +% \DescribeMacro{\Zdepth} +% The command |\Zdepth{|\meta{number}|}| is analogous to the standard +% |\tocdepth{|\meta{number}|}| command, in that it specifies that entries +% in the new listing should not be typeset if their numbering level +% is greater +% than \meta{number}. The default definition is +% |\setcounter{Zdepth}{1}|. +% These commands are needed, for instance by users of packages such as |subcaption|, +% which will generate subfigure and subtable captions corresponding to a |lofdepth| and +% |lotdepth| of |2|. +% % \DescribeMacro{\cftdot} % In the default ToC typesetting only the more minor entries have dotted % leader lines between the sectioning title and the page number. The @@ -599,7 +609,7 @@ % The `dot' in a leader is given by the value of |\cftdot|. Its default % definition is |\newcommand{\cftdot}{.}| which gives the default % dotted leader. By changing |\cftdot| you can use symbols other than -% a period in the leader. For example +% a period in the leader. For example % \begin{verbatim} % \renewcommand{\cftdot}{\ensuremath{\ast}} % \end{verbatim} @@ -610,7 +620,7 @@ % Each kind of entry can control the separation between the dots % in its leader (see below). For consistency though, all dotted leaders % should use the same spacing. The macro |\cftdotsep| specifies the -% default spacing. Its value is a number. +% default spacing. Its value is a number. % However, if the separation is too large % then no dots will be actually typeset. The macro |\cftnodots| is % a separation value that is `too large'. @@ -621,7 +631,7 @@ % |\cftsetpnumwidth{|\meta{length}|}| can be used to change the width % of the box (\LaTeX 's internal |\@pnumwidth|). % The title texts will end before reaching the righthand margin. -% |\cftsetrmarg{|\meta{length}|}| can be used to set this distance +% |\cftsetrmarg{|\meta{length}|}| can be used to set this distance % (\LaTeX 's internal |\@tocrmarg|). % Note that the length used in |\cftsetrmarg| should be greater % than the length set in |\cftsetpnumwidth|. These values should remain @@ -662,22 +672,22 @@ % % \DescribeMacro{\cftbeforeXskip} % This controls the vertical space before an entry. It can be changed -% by using |\setlength|. +% by using |\setlength|. % % \DescribeMacro{\cftXindent} -% This controls the indentation of an entry from the left margin +% This controls the indentation of an entry from the left margin % (\textit{indent} in Figure~\ref{fig:ltoc}). It -% can be changed using |\setlength|. +% can be changed using |\setlength|. % % \DescribeMacro{\cftXnumwidth} -% This controls the space allowed for typesetting title numbers +% This controls the space allowed for typesetting title numbers % (\textit{numwidth} in Figure~\ref{fig:ltoc}). It can % be changed using |\setlength|. Second and subsequent lines of a multiline % title will be indented by this amount. % % The remaining commands are related to the specifics of typesetting % an entry. -% This is a simplified pseudo-code version for the typesetting of numbered +% This is a simplified pseudo-code version for the typesetting of numbered % and unnumbered entries. % \begin{verbatim} % {\cftXfont {\cftXpresnum SNUM\cftXaftersnum\hfil} \cftXaftersnumb TITLE}% @@ -685,13 +695,13 @@ % % {\cftXfont TITLE}{\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par % \end{verbatim} -% where |SNUM| is the section number, |TITLE| is the title text and |PAGE| +% where |SNUM| is the section number, |TITLE| is the title text and |PAGE| % is the page number. In the numbered entry the pseudo-code \\ % |{\cftXpresnum SNUM\cftaftersnum\hfil}| \\ % is typeset within a box of width |\cftXnumwidth|. % % \DescribeMacro{\cftXfont} -% This controls the appearance of the title (and its preceding number, +% This controls the appearance of the title (and its preceding number, % if any). It may be changed using |\renewcommand|. % % \DescribeMacro{\cftXpresnum} @@ -709,7 +719,7 @@ % By default they are defined to do nothing. % % In the standard classes the ToC entry for a |\part| is just typeset as -% the number and title, followed by the page number, with the +% the number and title, followed by the page number, with the % |\cftpartpresnum| % macro being called before typesetting the number and title. % Due to \LaTeX\ ideosyncracies, |\cftpartpresnum| may become doubled in the output @@ -727,7 +737,7 @@ % \DescribeMacro{\cftXdotsep} % |\cftXleader| defines the leader between the title and the page number; % it can be changed by |\renewcommand|. -% The spacing between any dots in the leader is controlled by |\cftXdotsep| +% The spacing between any dots in the leader is controlled by |\cftXdotsep| % (|\@dotsep| in Figure~\ref{fig:ltoc}). % It can be changed by |\renewcommand| and its value must be either a % number (e.g., 6.6 or |\cftdotsep|) or |\cftnodots| (to disable the dots). @@ -743,19 +753,19 @@ % is to do nothing. It can be changed by |\renewcommand|. % % \DescribeMacro{\cftsetindents} -% The command +% The command % |\cftsetindents{|\meta{entry}|}{|\meta{indent}|}{|\meta{numwidth}|}| % sets the \meta{entry}'s \textit{indent} to the length \meta{indent} and its % \textit{numwidth} to the length \meta{numwidth}. The \meta{entry} argument -% is the name of one of the standard entries (e.g., |subsection|) or the name of -% entry that has been defined with the \Lpack{tocloft} package. +% is the name of one of the standard entries (e.g., |subsection|) or the name of +% entry that has been defined with the \Lpack{tocloft} package. % For example \\ % |\cftsetindents{figure}{0em}{1.5em}| \\ % will make figure entries left justified. % % % Various effects can be achieved by changing the definitions of |\cftXfont|, -% |\cftXaftersnum|, |\cftXaftersnumb|, |\cftXleader| and |\cftXafterpnum|, +% |\cftXaftersnum|, |\cftXaftersnumb|, |\cftXleader| and |\cftXafterpnum|, % either singly or in combination. % For the sake of some examples, assume that we have the following initial % definitions @@ -768,7 +778,7 @@ % \newcommand{\cftXpagefont}{} % \newcommand{\cftXafterpnum}{} % \end{verbatim} -% (Note that the same font should be used for the title, leader and page +% (Note that the same font should be used for the title, leader and page % number to provide a coherent appearance). % % \begin{itemize} @@ -802,7 +812,7 @@ % If you are adding text in the number box in addition to the number, % then you will probably have to increase the width of the box so that % multiline titles have a neat vertical alignment; changing box widths -% usually implies that the indents will require modification as +% usually implies that the indents will require modification as % well.\footnote{Lyndon Dudding (\texttt{lyndon.dudding@totalise.co.uk}) % discovered this.} % One possible method of adjusting the box width for the above example @@ -811,7 +821,7 @@ % \newlength{\mylen} % a "scratch" length % \settowidth{\mylen}{\bfseries\cftXpresnum\cftXaftersnum} % extra space % \addtolength{\cftXnumwidth}{\mylen} % add the extra space -% \end{verbatim} +% \end{verbatim} % % \item To set the section numbers flushright:\footnote{With thanks to % David Holz (\texttt{lbda@earthlink.net}) for requesting this.} @@ -842,7 +852,7 @@ % \end{verbatim} % By default the |\parfillskip| value is locally set to fill up the last % line of a paragraph. Just changing |\cftXleader| puts horrible interword -% spaces into the last line of the title. The |\cftparfillskip| +% spaces into the last line of the title. The |\cftparfillskip| % command % is part of the \Lpack{tocloft} package and is provided just so that % the above effect can be achieved. @@ -865,13 +875,13 @@ % \meta{entry} is the name of one of the standard % kinds of entries (e.g., |subsection|, or |figure| --- including |subfigure| % if the \Lpack{subfigure} package is used --- etc.), or the name of a -% new entry defined with the \Lpack{tocloft} package. +% new entry defined with the \Lpack{tocloft} package. % % The command |\cftpagenumberson{|\meta{entry}|}| reverses % the effect of a corresponding |\cftpagenumbersoff|. -% +% % One question that appeared on the \file{comp.text.tex} newsgroup asked -% how to get the titles of Appendices list in the ToC \emph{without} +% how to get the titles of Appendices list in the ToC \emph{without} % page numbers. Here is a simple way of doing it, assuming the document % has chapters % \begin{verbatim} @@ -880,7 +890,7 @@ % \addtocontents{toc}{\cftpagenumbersoff{chapter}} % \chapter{First appendix} % \end{verbatim} -% If there are other chaptered headings to go into the ToC after the +% If there are other chaptered headings to go into the ToC after the % appendices, then it will be necessary to do a similar \\ % |\addtocontents{toc}{\cftpagenumberson{chapter}}| \\ % to restore the page numbering in the ToC. @@ -899,12 +909,12 @@ % \DescribeMacro{\newlistof} % The command |\newlistof[|\meta{within}|]{|\meta{entry}|}{|\meta{ext}|}{|\meta{listofname}|}| % creates a new List of \ldots, and assorted commands to go along with it. -% +% % The first required argument, \meta{entry} is used to define a new % counter called |entry|. The optional \meta{within} argument can -% be used so that |entry| gets reset to one every time the counter called +% be used so that |entry| gets reset to one every time the counter called % |within| is changed. That is, the first two arguments are equivalent to -% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|. +% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|. % % The next argument, \meta{ext}, is the file extension for the new List of. % The last argument, \meta{listofname}, is the text for the heading of the @@ -914,11 +924,11 @@ % \newlistof[chapter]{answer}{ans}{\listanswername} % \end{verbatim} % will create a new |answer| counter that will be reset at the start of each -% |\chapter{...}|. Any answer titles will be written to the file +% |\chapter{...}|. Any answer titles will be written to the file % \file{jobname.ans} and |\listanswername| will be used as the list heading. % A command |\listofanswer| is created which can be used just like the % |\listoftables| or |tableofcontents| commands to generate a listing. -% It is up to you to specify how the entries are put into the +% It is up to you to specify how the entries are put into the % new List of Answers. Here is a very simple example, remembering that an % |answer| counter has been created. % \begin{verbatim} @@ -927,54 +937,54 @@ % \par\noindent\textbf{Answer \theanswer. #1} % \addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par} % \end{verbatim} -% which, when used like: \\ -% |\answer{Hard} The \ldots| will print as: +% which, when used like: \\ +% |\answer{Hard} The \ldots| will print as: % \par\noindent\textbf{Answer 1. Hard}\par The \ldots % -% As mentioned above, the |\newlistof| command creates several new +% As mentioned above, the |\newlistof| command creates several new % commands, most of which you should now be familiar with. For convenience, % assume that |\newlistof{X}{Z}{...}| has been issued; so |X| is the name % of the new counter and corresponds to the |X| in section~\ref{sec:entries}, % and |Z| is the new file extension and corresponds to the |Z| in -% section~\ref{sec:titles}. Then, among others, the following new commands +% section~\ref{sec:titles}. Then, among others, the following new commands % will be made available. % -% The five commands, |\cftmarkZ|, -% |\cftbeforeZtitleskip|, -% |\cftafterZtitleskip|, +% The five commands, |\cftmarkZ|, +% |\cftbeforeZtitleskip|, +% |\cftafterZtitleskip|, % |\cftZtitlefont|, and -% |\cftafterZtitle|, +% |\cftafterZtitle|, % are analogous to the commands of the same names % described in section~\ref{sec:titles}. % % \DescribeMacro{\listofX} -% The command |\listofX| is similar to |\listoftables|, etc., +% The command |\listofX| is similar to |\listoftables|, etc., % in that it typesets % the new listing at the point where it is called. % % \DescribeMacro{\Zdepth} % The command |\Zdepth{|\meta{number}|}| is analogous to the standard % |\tocdepth{|\meta{number}|}| command, in that it specifies that entries -% in the new listing should not be typeset if their numbering level +% in the new listing should not be typeset if their numbering level % is greater -% than \meta{number}. The default definition is +% than \meta{number}. The default definition is % |\setcounter{Zdepth}{1}|. % % \DescribeMacro{\newlistentry} -% The command +% The command % |\newlistentry[|\meta{within}|]{|\meta{entry}|}{|\meta{ext}|}{|\meta{level-1}|}| creates % new commands for typesetting a new kind of entry in a listing. It is used % internally by the |\newlistof| command but may be used independently. -% +% % The first required argument, \meta{entry} is used to define a new % counter called |entry|. The optional \meta{within} argument can -% be used so that |entry| gets reset to one every time the counter called +% be used so that |entry| gets reset to one every time the counter called % |within| is changed. That is, the first two arguments are equivalent to -% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|. +% calling |\newcounter{|\meta{entry}|}[|\meta{within}|]|. % The second required argument, \meta{ext}, is the file extension for the % entry listing. % The last argument, \meta{level-1}, is a number specifying the numbering -% level minus one, +% level minus one, % of the entry in a listing. % For example, the command \\ % |\newlistof[chapter]{answer}{ans}{\listanswername}| \\ @@ -988,13 +998,13 @@ % previous uses of them, and |N| is an integer number, then the following % commands are made available. % -% The set of commands |\cftbeforeXskip|, -% |\cftXfont|, -% |\cftXpresnum|, -% |\cftXaftersnum|, -% |\cftXaftersnumb|, -% |\cftXleader|, -% |\cftXdotsep|, +% The set of commands |\cftbeforeXskip|, +% |\cftXfont|, +% |\cftXpresnum|, +% |\cftXaftersnum|, +% |\cftXaftersnumb|, +% |\cftXleader|, +% |\cftXdotsep|, % |\cftXpagefont|, and % |\cftXafterpnum|, % are analogous to the commands of the same names @@ -1003,12 +1013,12 @@ % % The default values of |\cftXindent| and |\cftXnumwidth| are set according % to the value of the \meta{level-1} argument (i.e., |N| in this example). -% For |N=0| the settings correspond to those for +% For |N=0| the settings correspond to those for % sections in non-chaptered documents, as listed in Table~\ref{tab:indents}. % For |N=4| the settings correspond % to subparagraphs in non-chaptered documents, and for intermediate values % correspond to the matching sectional division in chaptered documents. -% For values of |N| less than zero or greater than four, +% For values of |N| less than zero or greater than four, % or for non-default values, use the % |\cftsetindents| command to set the values. % @@ -1050,7 +1060,7 @@ % % By default the answer entries will appear in the List of Answers listing % (typeset by the |\listofanswer| command). -% In order to get the subanswers to appear, +% In order to get the subanswers to appear, % the |\setcounter{ansdepth}{2}| command was used above. % % To turn off page numbering for the subanswers, do \\ @@ -1059,10 +1069,10 @@ % As another example of |\newlistentry|, suppose that an extra sectioning % division below |subparagraph| is required, called |subsubpara|. % The |\subsubpara| command itself can be defined via the LaTeX kernel -% |\@startsection| command. +% |\@startsection| command. % Also it is necessary to define a |\subsubparamark| macro, % a new |subsubpara| counter, a |\thesubsubpara| macro and a |\l@subsubpara| -% macro. Using the \Lpack{tocloft} package's |\newlistentry| +% macro. Using the \Lpack{tocloft} package's |\newlistentry| % takes care of most of these as shown below (remember % the caveats about commands with |@| signs in them). % \begin{verbatim} @@ -1071,13 +1081,13 @@ % {\parindent}% indent from left margin % {3.25ex \@plus1ex \@minus .2ex}% skip above heading % {-1em}% runin heading with 1em between title & text -% {\normalfont\normalsize\itshape}% italic number and title +% {\normalfont\normalsize\itshape}% italic number and title % } % \newlistentry[subparagraph]{subsubpara}{toc}{5} % \cftsetindents{subsubpara}{14.0em}{7.0em} % \newcommand*{\subsubparamark}[1]{} % gobble heading mark % \end{verbatim} -% +% % % Each List of\ldots uses a file to store the list entries, and these % files must remain open for writing throughout the document processing. @@ -1086,14 +1096,14 @@ % that includes a ToC but no other extra ancillary files (e.g., no % index or bibliography output files) the maximum number of LoX's, including % a LoF and LoT, is no more than about eleven. If you try and create too many -% new listings LaTeX will respond with the error message: +% new listings LaTeX will respond with the error message: % \begin{center} -% |No room for a new write| +% |No room for a new write| % \end{center} % If you get such a message the only recourse is to redesign your document. % % The \Lpack{tocloft} package does not provide a simple means of specifying -% new Lists of Floats or float environments. +% new Lists of Floats or float environments. % For those, I recommend the \Lpack{ccaption} package~\cite{CCAPTION}. % % \subsection{Experimental utilities} @@ -1102,13 +1112,13 @@ % those described previously. % % \DescribeMacro{\cftchapterprecis} -% Some old style novels, and even some modern text +% Some old style novels, and even some modern text % books,\footnote{For example, Robert Sedgewick, \textit{Algorithms}, -% Addison-Wesley, 1983.} include a short synopsis of the contents of +% Addison-Wesley, 1983.} include a short synopsis of the contents of % the chapter either immediately % after the chapter heading or in the Toc, or in both places. % -% The command |\cftchapterprecis{|\meta{text}|}| prints its argument +% The command |\cftchapterprecis{|\meta{text}|}| prints its argument % both at the % point in the document where it is called, and also adds it to the \file{.toc} % file. For example: @@ -1122,8 +1132,8 @@ % \DescribeMacro{\cftchapterprecishere} % \DescribeMacro{\cftchapterprecistoc} % The |\cftchapterprecis| command calls these two commands to print the -% text in the document (the |\...here{|\meta{text}|}| command) -% and to put it into the ToC (the |\...toc{|\meta{text}|}| command). +% text in the document (the |\...here{|\meta{text}|}| command) +% and to put it into the ToC (the |\...toc{|\meta{text}|}| command). % These can be used individually if required. % % Sometimes it may be desirable to make a change to the global parameters @@ -1136,7 +1146,7 @@ % % \DescribeMacro{\cftlocalchange} % The command |\cftlocalchange{|\meta{file}|}{|\meta{pnumwidth}|}{|\meta{tocrmarg}|}| -% will write an entry into \meta{file} to reset the global parameters. +% will write an entry into \meta{file} to reset the global parameters. % The command should be called again after any special entry to reset % the parameters back to their usual values. Any fragile commands used % in the arguments must be protected. @@ -1156,23 +1166,23 @@ % |\contentsline{kind}{\numberline{num} title}{page}| \\ % Any fragile commands used in the arguments must be protected. % -% As an example of the use of these commands, -% noting that the default \LaTeX{} values for -% |\@pnumwidth| and |\@tocrmarg| are 1.55em and 2.55em respectively, +% As an example of the use of these commands, +% noting that the default \LaTeX{} values for +% |\@pnumwidth| and |\@tocrmarg| are 1.55em and 2.55em respectively, % one might do the % following for a figure on the frontispiece page. % \begin{verbatim} % ... % % this is the frontispiece page with no number % % draw or import the picture (with no \caption) -% \cftlocalchange{lof}{4em}{5em} % make pnumwidth big enough for +% \cftlocalchange{lof}{4em}{5em} % make pnumwidth big enough for % % frontispiece and change margin to suit % \cftaddtitleline{lof}{figure}{The title}{frontispiece} % \cftlocalchange{lof}{1.55em}{2.55em} % return to normal settings % ... % \end{verbatim} % Recall that a |\caption| command will put an entry in the \file{.lof} -% file, which is not wanted here. If a caption is required, then you can +% file, which is not wanted here. If a caption is required, then you can % either craft one yourself or, assuming that your general captions are not % too exotic, use the |\legend| command from the % \Lpack{ccaption} package. If the illustration is numbered, use the @@ -1207,13 +1217,9 @@ % % The \Lpack{tocloft} and \Lpack{tocbibind} packages can be used together % in the same document. The \Lpack{tocbibind} package provides easy means -% of adding document elements like the bibliography or the index to the -% Table of Contents. However there are two known potential problems: +% of adding document elements like the bibliography or the index to the +% Table of Contents. However there is one known potential problem: % \begin{itemize} -% \item The 1998/11/15 version of \Lpack{tocbibind} may give surprising -% results if the |\toctocname|, |\toclotname| or |\toclofname| commands -% have been used. You should consider getting the current version of -% \Lpack{tocbibind}. % \item If the argument to the |\tocotherhead| command is other than one % of the normal sectioning divisions (i.e., part through to sub-paragraph) % such as |\tocotherhead{clause}|, @@ -1226,25 +1232,25 @@ % \DescribeMacro{\@cftasnum} % \DescribeMacro{\@cftasnumb} % Some packages, like the \Lpack{float} package by Anselm Lingnau, -% enable the creation of other kinds of \textit{List of \ldots}. -% The \Lpack{tocloft} package is only minimally able to change the -% formatting of these, +% enable the creation of other kinds of \textit{List of \ldots}. +% The \Lpack{tocloft} package is only minimally able to change the +% formatting of these, % principally because the packages are independent of each other and, in % the case of the \Lpack{float} package, new kinds of float environments -% and their associated lists can be created on the fly at any point in -% a document. Some aspects of the typesetting +% and their associated lists can be created on the fly at any point in +% a document. Some aspects of the typesetting % are controlled by |\@cftbsnum|, |\@cftasnum| and |\@cftasnumb| commands. % These are equivalent to the |\cftXpresnum|, |\cftXaftersnum| and |\cftXaftersnumb| % commands described earlier. By default they are defined to do nothing, but % may be renewed to do something. % % The \Lpack{tocloft} and \Lpack{minitoc} packages have an unfortunate -% interaction,\footnote{Discovered by Lyndon Dudding +% interaction,\footnote{Discovered by Lyndon Dudding % (\texttt{lyndon.dudding@totalise.co.uk}).} which fortunately can be fixed. % In the normal course of events, when \Lpack{minitoc} is used in a chaptered % document it will typeset section % entries in the minitocs in bold font. If \Lpack{tocloft} is used in -% conjunction with \Lpack{minitoc}, then the minitoc section entries are +% conjunction with \Lpack{minitoc}, then the minitoc section entries are % typeset in the normal font, except for the page numbers which are in % bold font, while the ToC section entries are all in normal font. % @@ -1263,7 +1269,7 @@ % \end{verbatim} % To have the section entries in both the ToC and the minitocs in bold then % put the incantation in the preamble. To have only the minitoc section -% entries in bold while the ToC entries are in the normal font, +% entries in bold while the ToC entries are in the normal font, % put the incantation between the |\tableofcontents| % command and the first |\chapter| command. % @@ -1327,7 +1333,7 @@ % \end{macrocode} % \end{macro} % -% Issue a warning if there are no recognised sectional divisions +% Issue a warning if there are no recognised sectional divisions % and then skip the rest of the package code. % \begin{macrocode} \@cftifundefined{chapter}{% @@ -1344,7 +1350,7 @@ % \begin{macrocode} \@cftquit % \end{macrocode} -% +% % Use chapter style if |\if@cfthaschapter| is TRUE, otherwise section style. % % \begin{macro}{\if@cfttocbibind} @@ -1378,7 +1384,7 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\if@cftsubfigopt} -% A boolean used to implement the \Lopt{subfigure} option. +% A boolean used to implement the \Lopt{subfigure} option. % \begin{macrocode} \newif\if@cftsubfigopt\@cftsubfigoptfalse \DeclareOption{subfigure}{\@cftsubfigopttrue} @@ -1461,7 +1467,7 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\phantomsection} -% This is provided because the \Lopt{hyperref} package screws with +% This is provided because the \Lopt{hyperref} package screws with % |\addcontentsline|. % \changes{v2.2}{2001/04/17}{Provided \cs{phantomsection}} % \changes{v2.2}{2001/04/17}{Added \cs{phantomsection} before \cs{addcontentsline} commands} @@ -1472,7 +1478,7 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\@cftdobibtoc} -% If the \Lpack{tocbibind} package has been used and it has +% If the \Lpack{tocbibind} package has been used and it has % redefined |\tableofcontents| we need to cater for that. The contents % of the definition are defined in \Lpack{tocbibind}. % \begin{macrocode} @@ -1499,7 +1505,7 @@ Consider installing the current version of tocbibind.}} % \end{macrocode} % \end{macro} -% +% % % \begin{macro}{\tableofcontents} % This is a parameterised version of the default |\tableofcontents| command. @@ -1511,7 +1517,16 @@ Consider installing the current version of tocbibind.}} % % \begin{macrocode} \AtBeginDocument{% -\if@cftnctoc\else +\if@cftnctoc + % ensure \cftparskip is still set properly + \let\OLD@starttoc\@starttoc + \renewcommand{\@starttoc}[1]{% + \begingroup + \parskip=\cftparskip + \OLD@starttoc{#1}% + \endgroup + } +\else \renewcommand{\tableofcontents}{% \@cfttocstart % \end{macrocode} @@ -1523,7 +1538,7 @@ Consider installing the current version of tocbibind.}} \parindent\z@ \parskip\cftparskip \@cftmaketoctitle % \end{macrocode} -% If \Lpack{tocbibind} has been used, then add the ToC +% If \Lpack{tocbibind} has been used, then add the ToC % name to the ToC. % \begin{macrocode} \if@cfttocbibind @@ -1564,7 +1579,7 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\cftbeforetoctitleskip} % \begin{macro}{\cftaftertoctitleskip} -% These two lengths control the vertical spacing before and after the +% These two lengths control the vertical spacing before and after the % ToC title. % \begin{macrocode} \newlength{\cftbeforetoctitleskip} @@ -1668,23 +1683,23 @@ Consider installing the current version of tocbibind.}} % entries. % % A \file{.toc} (also \file{.lof} and \file{.lot}) file consists -% of a list of +% of a list of % |\contentsline{|\meta{kind}|}{|\meta{title}|}{|\meta{page}|}| % commands, where \meta{kind} is the kind of heading (e.g., |part| or % |section| or |figure|), \meta{title} is the title text (including the number), % and \meta{page} is the page number. The entries are inserted into the -% file by calling the +% file by calling the % |\addcontentsline{|\meta{file}|}{|\meta{kind}|}{|\meta{title}|}| % command, where \meta{file} is the file extension (e.g., |toc|, |lot|) % and the other arguments are the same as for the |\contentsline| % command. (Arbitrary stuff may also be put into the file via the % |\addtocontents{|\meta{file}|}{|\meta{text}|}| command). -% The typesetting of the |\contentsline| entries is performed by +% The typesetting of the |\contentsline| entries is performed by % commands of the form |\l@kind|. The sectioning and captioning commands % call |\addcontentsline| to insert their titles into the \file{.toc} % etc., files. % -% For the purposes at hand it is generally impossible to treat +% For the purposes at hand it is generally impossible to treat % the typesetting % of a title and its number separately, as both are bundled into the % \meta{title} argument within |\contentsline|. They could be handled @@ -1717,12 +1732,12 @@ Consider installing the current version of tocbibind.}} % \changes{v1.1}{2000/02/11}{Added \cs{@cftbsnum} to \cs{numberline}} % The purpose of the |\numberline{|\meta{secnum}|}| command is to typeset % \meta{secnum} left justified in a box of width |\@tempdima|. I redefine -% it to add three additional parameters, namely |\@cftbsnum|, -% |\@cftasnum| and |\@cftasnumb| +% it to add three additional parameters, namely |\@cftbsnum|, +% |\@cftasnum| and |\@cftasnumb| % (see \file{ltsect.dtx} for the original % definition). % \begin{macrocode} -\renewcommand{\numberline}[1]{% +\renewcommand{\numberline}[1]{% \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb} % \end{macrocode} % \end{macro} @@ -1746,8 +1761,8 @@ Consider installing the current version of tocbibind.}} % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % % \begin{macro}{\l@part} % \begin{macro}{\if@cftdopart} @@ -1764,7 +1779,7 @@ Consider installing the current version of tocbibind.}} % \changes{v0.2a}{1999/01/24}{In article class, Part level is 0 not -1} % \changes{v2.0}{2001/03/03}{Checked directly for \cs{part} definition} % \changes{v2.3a}{2002/10/03}{Added \cs{cftpartpresnum} to \cs{l@part}} -% +% % \begin{macrocode} \newif\if@cftdopart \newif\if@cfthaspart @@ -1795,7 +1810,7 @@ Consider installing the current version of tocbibind.}} \parfillskip -\rightskip \parindent \cftpartindent\relax\@afterindenttrue \interlinepenalty\@M - \leavevmode + \leavevmode \@tempdima \cftpartnumwidth\relax \let\@cftbsnum \cftpartpresnum \let\@cftasnum \cftpartaftersnum @@ -1974,7 +1989,7 @@ Consider installing the current version of tocbibind.}} % \begin{macro}{\l@section} % |\l@section{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for % a |section| heading. It is a parameterised copy of the default |\l@section| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@section}[2]{% \ifnum \c@tocdepth >\z@ @@ -2060,9 +2075,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@subsection} % |\l@subsection{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for -% a |subsection| heading. It is a parameterised copy of the default +% a |subsection| heading. It is a parameterised copy of the default % |\l@subsection| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@subsection}[2]{% % \end{macrocode} @@ -2083,7 +2098,7 @@ Consider installing the current version of tocbibind.}} % \begin{macrocode} \rightskip \@tocrmarg % \end{macrocode} -% Ensure that the last line of the entry will be filled. Setting +% Ensure that the last line of the entry will be filled. Setting % |\parfillskip| to a negative number prevents any overfull box messages. % \begin{macrocode} \parfillskip -\rightskip @@ -2101,7 +2116,7 @@ Consider installing the current version of tocbibind.}} \leavevmode % \end{macrocode} % Our version of |\numberline| expects that the width of the number box -% is in |\@tempdima|, and that the three macros |\@cftbsnum|, +% is in |\@tempdima|, and that the three macros |\@cftbsnum|, % |\@cftasnum| and |\@cftasnumb| % are defined. We set all these to the values for this entry. % \begin{macrocode} @@ -2188,9 +2203,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@subsubsection} % |\l@subsubsection{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for -% a |subsubsection| heading. It is a parameterised copy of the default +% a |subsubsection| heading. It is a parameterised copy of the default % |\l@subsubsection| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@subsubsection}[2]{% \ifnum \c@tocdepth >\tw@ @@ -2266,9 +2281,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@paragraph} % |\l@paragraph{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for -% a |paragraph| heading. It is a parameterised copy of the default +% a |paragraph| heading. It is a parameterised copy of the default % |\l@paragraph| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@paragraph}[2]{% \ifnum \c@tocdepth >3\relax @@ -2344,9 +2359,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@subparagraph} % |\l@subparagraph{|\meta{title}|}{|\meta{page}|}| typesets the ToC entry for -% a |subparagraph| heading. It is a parameterised copy of the default +% a |subparagraph| heading. It is a parameterised copy of the default % |\l@subparagraph| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@subparagraph}[2]{% \ifnum \c@tocdepth >4\relax @@ -2422,7 +2437,7 @@ Consider installing the current version of tocbibind.}} % % % \begin{macro}{\@cftdobiblof} -% If the \Lpack{tocbibind} package has been used and it has +% If the \Lpack{tocbibind} package has been used and it has % redefined |\listoffigures| we need to cater for that. The contents % of the definition are defined in \Lpack{tocbibind}. % \begin{macrocode} @@ -2501,7 +2516,7 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\cftbeforeloftitleskip} % \begin{macro}{\cftafterloftitleskip} -% These two lengths control the vertical spacing before and after the +% These two lengths control the vertical spacing before and after the % LoF title. % \begin{macrocode} \newlength{\cftbeforeloftitleskip} @@ -2546,9 +2561,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@figure} % |\l@figure{|\meta{title}|}{|\meta{page}|}| typesets the LoF entry for -% a |figure| caption heading. It is a parameterised copy of the default +% a |figure| caption heading. It is a parameterised copy of the default % |\l@figure| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@figure}[2]{% \ifnum \c@lofdepth >\z@ @@ -2620,7 +2635,7 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{lofdepth} % \begin{macro}{lotdepth} -% The counters |lofdepth| and |lotdepth| are defined by the +% The counters |lofdepth| and |lotdepth| are defined by the % \Lpack{subfigure} package. % Define them here if that package is not used. % \begin{macrocode} @@ -2634,7 +2649,7 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\@cftdobiblot} -% If the \Lpack{tocbibind} package has been used and it has +% If the \Lpack{tocbibind} package has been used and it has % redefined |\listoftables| we need to cater for that. The contents % of the definition are defined in \Lpack{tocbibind}. % \begin{macrocode} @@ -2672,7 +2687,7 @@ Consider installing the current version of tocbibind.}} % \begin{macrocode} \par \begingroup - \parindent\z@ \parskip\cftparskip + \parindent\z@ \parskip\cftparskip \@cftmakelottitle \if@cfttocbibind \@cftdobiblot @@ -2714,7 +2729,7 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\cftbeforelottitleskip} % \begin{macro}{\cftafterlottitleskip} -% These two lengths control the vertical spacing before and after the +% These two lengths control the vertical spacing before and after the % LoT title. % \begin{macrocode} \newlength{\cftbeforelottitleskip} @@ -2759,9 +2774,9 @@ Consider installing the current version of tocbibind.}} % % \begin{macro}{\l@table} % |\l@table{|\meta{title}|}{|\meta{page}|}| typesets the LoT entry for -% a |table| caption heading. It is a parameterised copy of the default +% a |table| caption heading. It is a parameterised copy of the default % |\l@table| -% (see \file{classes.dtx} for the original definition). +% (see \file{classes.dtx} for the original definition). % \begin{macrocode} \renewcommand*{\l@table}[2]{% \ifnum\c@lotdepth >\z@ @@ -2834,19 +2849,19 @@ Consider installing the current version of tocbibind.}} % \subsection{Support for the \Lpack{subfigure} package} % \changes{v1.1}{2000/02/12}{Added subfigure support} % -% The code for supporting the \Lpack{subfigure} package is, in all +% The code for supporting the \Lpack{subfigure} package is, in all % essentials, the same as that for the figure and table captions; only the % names are changed. However, the code need only be executed if the -% \Lpack{subfigure} package is actually loaded. +% \Lpack{subfigure} package is actually loaded. % % \begin{macro}{\@cftl@subfig} -% This command redefines the |\l@subfigure| command. +% This command redefines the |\l@subfigure| command. % \begin{macrocode} \newcommand{\@cftl@subfig}{% % \end{macrocode} % \begin{macro}{\l@subfigure} % |\l@subfigure{|\meta{title}|}{|\meta{page}|}| typesets the LoF entry for -% a |subfigure| caption heading. It is essentially the same as the +% a |subfigure| caption heading. It is essentially the same as the % parameterised code for |\l@figure| except that account has to be taken % of |lofdepth|. % \begin{macrocode} @@ -2940,8 +2955,8 @@ Consider installing the current version of tocbibind.}} % \end{macrocode} % \begin{macro}{\l@subtable} % |\l@subtable{|\meta{title}|}{|\meta{page}|}| typesets the LoT entry for -% a |subtable| caption heading. It is essentially the same as the -% parameterised code for |\l@table| except account has to be taken of +% a |subtable| caption heading. It is essentially the same as the +% parameterised code for |\l@table| except account has to be taken of % |lotdepth|. % \begin{macrocode} \renewcommand*{\l@subtable}[2]{% @@ -2985,7 +3000,7 @@ Consider installing the current version of tocbibind.}} % \begin{macro}{\cftsubtabafterpnum} % \begin{macro}{\toclevel@subtable} % \begin{macro}{\cftsubtabfillnum} -% These are the user commands to control the typesetting of Subtable +% These are the user commands to control the typesetting of Subtable % caption entries. % They are initialised to give the standard appearance. % \begin{macrocode} @@ -3029,7 +3044,7 @@ Consider installing the current version of tocbibind.}} % \end{macrocode} % \end{macro} % -% Call the \Lpack{subfigure} package setup code only if the +% Call the \Lpack{subfigure} package setup code only if the % \Lopt{subfigure} option is specified. The |\l@...| redefinitions have to % come after the \Lpack{subfigure} package is loaded. % \begin{macrocode} @@ -3242,7 +3257,7 @@ Consider installing the current version of tocbibind.}} % \begin{macro}{\listofX} % Typeset the listing title and entries. % \begin{macrocode} - \if@cftnctoc + \if@cftnctoc % \end{macrocode} % For the \Lopt{titles} option, basically copy the code from % the standard |\tableofcontents| command. @@ -3359,7 +3374,7 @@ Consider installing the current version of tocbibind.}} % \begin{macrocode} \newcommand{\cftsetindents}[3]{% \def\@cftemp{#1} - \ifx\@cftemp\cftchapname + \ifx\@cftemp\cftchapname \@cftsetindents{chap}{#2}{#3} \else \ifx\@cftemp\cftsecname \@cftsetindents{sec}{#2}{#3} @@ -3370,11 +3385,11 @@ Consider installing the current version of tocbibind.}} \else \ifx\@cftemp\cftparaname \@cftsetindents{para}{#2}{#3} \else - \ifx\@cftemp\cftsubparaname \@cftsetindents{subpara}{#2}{#3} + \ifx\@cftemp\cftsubparaname \@cftsetindents{subpara}{#2}{#3} \else \ifx\@cftemp\cftfigname \@cftsetindents{fig}{#2}{#3} \else - \ifx\@cftemp\cftsubfigname \@cftsetindents{subfig}{#2}{#3} + \ifx\@cftemp\cftsubfigname \@cftsetindents{subfig}{#2}{#3} \else \ifx\@cftemp\cfttabname \@cftsetindents{tab}{#2}{#3} \else @@ -3423,9 +3438,9 @@ Consider installing the current version of tocbibind.}} \newcommand{\@cftpnumoff}[1]{% \@namedef{cft#1fillnum}##1{% \cftparfillskip\@nameuse{cft#1afterpnum}\par}} - + % \end{macrocode} -% \end{macro} +% \end{macro} % % \begin{macro}{\cftchapname} % \begin{macro}{\cftsecname} @@ -3465,7 +3480,7 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\cftpagenumbersoff} -% The user level command for switching off page numbers is +% The user level command for switching off page numbers is % |\cftpagenumbersoff{|\meta{entry}|}| where \meta{entry} is the longhand % name of the entry. The principal task opf this macro is to determine % the corresponding shorthand name of the \meta{entry} and then call @@ -3474,10 +3489,10 @@ Consider installing the current version of tocbibind.}} % \begin{macrocode} \DeclareRobustCommand{\cftpagenumbersoff}[1]{% \def\@cftemp{#1} - \ifx\@cftemp\cftchapname + \ifx\@cftemp\cftchapname \@cftpnumoff{chap} \else - \ifx\@cftemp\cftsecname \@cftpnumoff{sec} + \ifx\@cftemp\cftsecname \@cftpnumoff{sec} \else \ifx\@cftemp\cftsubsecname \@cftpnumoff{subsec} \else @@ -3485,13 +3500,13 @@ Consider installing the current version of tocbibind.}} \else \ifx\@cftemp\cftparaname \@cftpnumoff{para} \else - \ifx\@cftemp\cftsubparaname \@cftpnumoff{subpara} + \ifx\@cftemp\cftsubparaname \@cftpnumoff{subpara} \else \ifx\@cftemp\cftfigname \@cftpnumoff{fig} \else - \ifx\@cftemp\cftsubfigname \@cftpnumoff{subfig} + \ifx\@cftemp\cftsubfigname \@cftpnumoff{subfig} \else - \ifx\@cftemp\cfttabname \@cftpnumoff{tab} + \ifx\@cftemp\cfttabname \@cftpnumoff{tab} \else \ifx\@cftemp\cftsubtabname \@cftpnumoff{subtab} \else @@ -3512,15 +3527,15 @@ Consider installing the current version of tocbibind.}} % \end{macro} % % \begin{macro}{\cftpagenumberson} -% |\cftpagenumberson{|\meta{entry}|}| is the user level command for +% |\cftpagenumberson{|\meta{entry}|}| is the user level command for % reversing the corresponding |\cftpagenumbersoff|. % \begin{macrocode} \DeclareRobustCommand{\cftpagenumberson}[1]{% \def\@cftemp{#1} - \ifx\@cftemp\cftchapname + \ifx\@cftemp\cftchapname \@cftpnumon{chap} \else - \ifx\@cftemp\cftsecname \@cftpnumon{sec} + \ifx\@cftemp\cftsecname \@cftpnumon{sec} \else \ifx\@cftemp\cftsubsecname \@cftpnumon{subsec} \else @@ -3528,13 +3543,13 @@ Consider installing the current version of tocbibind.}} \else \ifx\@cftemp\cftparaname \@cftpnumon{para} \else - \ifx\@cftemp\cftsubparaname \@cftpnumon{subpara} + \ifx\@cftemp\cftsubparaname \@cftpnumon{subpara} \else \ifx\@cftemp\cftfigname \@cftpnumon{fig} \else - \ifx\@cftemp\cftsubfigname \@cftpnumon{subfig} + \ifx\@cftemp\cftsubfigname \@cftpnumon{subfig} \else - \ifx\@cftemp\cfttabname \@cftpnumon{tab} + \ifx\@cftemp\cfttabname \@cftpnumon{tab} \else \ifx\@cftemp\cftsubtabname \@cftpnumon{subtab} \else @@ -3559,7 +3574,7 @@ Consider installing the current version of tocbibind.}} % |\@cftpnumon{|\meta{shorthand}|}| is the workhorse % for switching page numbering off. The \meta{shorthand} argument is the % shorthand name of the entry (e.g. |subsec| for |subsection|). -% The macro defines the |\cftXnumfill| command to correspond to +% The macro defines the |\cftXnumfill| command to correspond to % the default definition. % \begin{macrocode} \newcommand{\@cftpnumon}[1]{% @@ -3569,7 +3584,7 @@ Consider installing the current version of tocbibind.}} }% } % \end{macrocode} -% \end{macro} +% \end{macro} % % % @@ -3615,7 +3630,7 @@ Consider installing the current version of tocbibind.}} % \begin{macrocode} \newcommand{\cftchapterprecistoc}[1]{\addtocontents{toc}{% % \end{macrocode} -% Start a group to localize changes to the paragraphing. Set the +% Start a group to localize changes to the paragraphing. Set the % left margin to the chapter indent plus the chapter number width. % \begin{macrocode} {\leftskip \cftchapindent\relax @@ -3626,7 +3641,7 @@ Consider installing the current version of tocbibind.}} \rightskip \@tocrmarg\relax % \end{macrocode} % Typeset \meta{text} using an italic font, then ensure that the paragraph -% is finished (to use the local skips). Finally close the group and we +% is finished (to use the local skips). Finally close the group and we % are done. % \begin{macrocode} \textit{#1}\protect\par}}} @@ -3700,7 +3715,7 @@ Consider installing the current version of tocbibind.}} % \item multitoc % \item nccsect % \item notoccite -% \item artikel3, boek3, rapport3, +% \item artikel3, boek3, rapport3, % \item rerunfilecheck % \item parskip % \item pdfwin diff --git a/macros/latex/contrib/tocloft/tocloft.pdf b/macros/latex/contrib/tocloft/tocloft.pdf Binary files differindex 7c62630204..54349d7349 100644 --- a/macros/latex/contrib/tocloft/tocloft.pdf +++ b/macros/latex/contrib/tocloft/tocloft.pdf diff --git a/macros/latex/contrib/ulem/README b/macros/latex/contrib/ulem/README index 22dd59adca..a2fbf26028 100644 --- a/macros/latex/contrib/ulem/README +++ b/macros/latex/contrib/ulem/README @@ -5,7 +5,7 @@ A declaration of \normalem (or the \usepackage option "normalem") restores the normal \em and \emph behavior. - Copyright 1989-2011 by Donald Arseneau (Vancouver, Canada; asnd@triumf.ca) + Copyright 1989-2019 by Donald Arseneau (Vancouver, Canada; asnd@triumf.ca) This software may be freely transmitted, reproduced, or modified for any purpose provided that this copyright notice is left intact. diff --git a/macros/latex/contrib/ulem/ulem.ltx b/macros/latex/contrib/ulem/ulem.ltx index 2979659c30..4d46a2f9e9 100644 --- a/macros/latex/contrib/ulem/ulem.ltx +++ b/macros/latex/contrib/ulem/ulem.ltx @@ -2,9 +2,9 @@ % ulem.ltx Manual for ulem.sty % % -% Copyright (c) 1989-2011 by Donald Arseneau +% Copyright (c) 1989-2019 by Donald Arseneau % -% Version date 2011/03/18 +% Version date 2019/11/18 % \documentclass[12pt]{ltxdoc} \addtolength{\textwidth}{1cm} @@ -15,7 +15,7 @@ \hyphenation{normalem uwforbf ulforem} \title{The ulem package:\\ underlining for emphasis} \author{Donald Arseneau\\ asnd@triumf.ca} -\date{2011/03/18} +\date{2019/11/18} \begin{document} \maketitle @@ -46,7 +46,7 @@ \begin{footnotesize} -\noindent The ulem package is Copyright \copyright\ 1989--2011 by +\noindent The ulem package is Copyright \copyright\ 1989--2019 by Donald Arseneau (Vancouver, Canada).\\ The package (ulem.sty) and this documentation (ulem.ltx, ulem.pdf) may be freely transmitted, reproduced, or modified for any purpose provided that the @@ -104,9 +104,8 @@ Alternative package: soul. You can define your own styles of overprinting or underlining by using the \cs{markoverwith} command in the definition of your new command. -The definition should be something like:\\[3pt] -\indent - \cs{newcommand}\cs{cmd}|{|\cs{bgroup} \cs{markoverwith}|{|\meta{something}|}|\cs{ULon}|}|\\[3pt] +The definition should be something like:\\[6pt] + \cs{newcommand}\cs{cmd}|{|\cs{bgroup} \meta{settings}\cs{markoverwith}|{|\meta{something}|}|\cs{ULon}|}|\\[8pt] The `\meta{something}' can be as simple as a single character, or as complex as you can keep track of; it will likely contain some repositioning commands, perhaps \cs{raisebox}. @@ -127,26 +126,27 @@ Any type of underlining can be substituted for any font-selection command by issuing a proper \cs{useunder} declaration:\\[3pt] \cs{useunder}|{|\meta{underlinecommand}|}{|\meta{fontdeclaration}|}{|\meta{fontcommand}|}|\\[3pt] e.g., |\useunder{\uuline}{\bfseries}{\textbf}| gives a double underline -instead of bold face in \LaTeX. +instead of bold face in \LaTeX\ (but note the problem explained next). The commands \cs{normalem} and \cs{ULforem} respectively disable and enable underlining for \cs{em}/\cs{emph}, and so do the \cs{usepackage} options [normalem] and [ULforem]. There is also the \cs{usepackage} -option [UWforbf] to replace boldface with a wavey underline. These features -use the \cs{useunder} command internally. UWforbf does handle bold in -math mode, in a limited way, but it doesn't work in section titles, -unfortunately, because the titles are not delimited by explicit braces when -printed by the \cs{section} command. Currently under UWforbf the \cs{bfseries} +option [UWforbf] to replace boldface from \cs{textbf} with a wavey underline. +These features use the \cs{useunder} command internally. +UWforbf specifically employs +\cs{useunder}|{|\cs{uwave}|}|\allowbreak|{|\cs{bf}|}|\allowbreak|{|\cs{textbf}|}|, +so the \cs{bfseries} command still produces bold face, but \cs{bf} makes an -under-wave\footnote{%% no verbatim in footnotes +under-wave (if \cs{bf} is defined at all). That is +because section title formatting typically uses \cs{bfseries} not delimited by +braces, which would give errors for \cs{uwave}.\footnote{%% no verbatim in footnotes To get under-waved section titles (in ordinary \LaTeX\ classes) you could define:\\ \texttt{\string\renewcommand\string\@seccntformat[1]\string{\string\uwave \string{\string\csname\ the\#1\string\endcsname\string}\string\hskip 1em\string}}\\ and later specify \texttt{\string\section[...]\string{\string\uwave\string{...\string}\string}}. But you don't want to enter that swamp.} -(if |\bf| is defined at all). -In plain \TeX\ there is |\bf| but no \cs{textbf} so you could say |\useunder{\UWave}{\bf}{}|. +In plain \TeX\ there is \cs{bf} but no \cs{textbf} so you could say |\useunder{\uwave}{\bf}{}|. Some commands, such as |\\| and \cs{hskip} are given special treatment to work within uline, but others are not. Support for others can sometimes @@ -157,7 +157,7 @@ versions of commands should be modelled on |\UL@hskip| or |\UL@cr|, and should include the test `|\ifx\ \LA@space|'. For example, support for \cs{marginpar} is added through the hook mechanism. -All the underlining commands are robust (self-protecting) in \LaTeX. +All the underlining commands are robust in \LaTeX. \section{Complications} diff --git a/macros/latex/contrib/ulem/ulem.pdf b/macros/latex/contrib/ulem/ulem.pdf Binary files differindex e478d6ed5a..f0943c7576 100644 --- a/macros/latex/contrib/ulem/ulem.pdf +++ b/macros/latex/contrib/ulem/ulem.pdf diff --git a/macros/latex/contrib/ulem/ulem.sty b/macros/latex/contrib/ulem/ulem.sty index bdad13b20c..85ebb06642 100644 --- a/macros/latex/contrib/ulem/ulem.sty +++ b/macros/latex/contrib/ulem/ulem.sty @@ -1,5 +1,5 @@ % -% U L E M . S T Y [2012-05-18] +% U L E M . S T Y [2019-11-18] % % The ulem package provides various types of underlining that can stretch % between words and be broken across lines in LaTeX or plain TeX. @@ -21,7 +21,7 @@ % % {\em phasized\/} | In LaTeX, by default, these are underlined; use % \emph{asized} | \normalem or [normalem] to restore italics -% \useunder{\uwave}{\bfseries}{\textbf} +% \useunder{\uwave}{\bf}{\textbf} % use wavy underline in place of bold face % Use \markoverwith for defining new types of underlining. % @@ -40,20 +40,23 @@ \chardef\ULthickness\catcode\string`\@ % hold catcode temporarily \catcode\string`\@=11 -\def\uline{\relax \ifmmode\expandafter\underline +% \UL@protected = \protected, if available, else \relax + +\begingroup +\global\expandafter\let\expandafter\UL@protected\csname protected\endcsname +\endgroup + +\UL@protected\def\uline{\relax \ifmmode\expandafter\underline \else \bgroup\expandafter\ULset\fi} \newbox\UL@box \newbox\UL@hyphenbox \newskip\UL@skip \newtoks\UL@hook - -\newdimen\UL@height - +\newdimen\UL@height \UL@height=\maxdimen % flags being unused \newcount\UL@pe -\let\LA@space\ \let\LA@hskip\hskip -\def\UL@end *{\relax\relax}% something harmless unlikely to be found elsewhere +\UL@protected\def\UL@end *{\relax\relax}% something harmless but unique % For regular underlines, set the depth based on the font, or retain % the preset value, then start underlining. @@ -74,7 +77,7 @@ \def\ULon{\ifmmode \expandafter\UL@onmath\else \expandafter\UL@on\fi} % \UL@on sets the engine of underline running, and tells it -% where to stop. +% where to stop. #1 = the relevant text. \long\def\UL@on#1{\leavevmode\UL@ender \let\UL@on\UL@onin \everymath{\UL@hrest}\everyvbox{\UL@hrest}\let\hskip\UL@hskip \let\\\UL@cr \let\-\UL@dischyp \let\newline\UL@newline \let\ \UL@space @@ -84,9 +87,11 @@ \UL@word\@empty#1\xdef\UL@spfactor{\the\spacefactor} \UL@end * } % This is what \ULon does when it appears nested in an inner place. -\def\UL@onin#1{\leavevmode\UL@ender % when nested, do multiple underlining - \UL@height\ULthickness \advance\ULdepth\thr@@\UL@height - \advance\UL@height-\ULdepth \setbox\UL@box\hbox{{#1}}% +\long\def\UL@onin#1{\leavevmode\UL@ender % when nested, do multiple underlining + \ifdim\ULdepth=\maxdimen\else + \UL@height\ULthickness \advance\ULdepth\thr@@\UL@height \advance\UL@height-\ULdepth + \fi + \setbox\UL@box\hbox{{#1}}% \let\UL@start\relax\UL@putbox\egroup} % \UL@putbox is disabled in inner mode, so re-enable it by changing \UL@start % \UL@hrest is implicit due to \everyhbox. Double braces for \hbox are in @@ -103,7 +108,7 @@ % must expand to nothing outside the ifs for syntactical spaces to work. % the \expandafters get rid of the \@empty inserted at the beg. of word -\def\UL@word#1 {\expandafter\UL@start#1 % +\long\def\UL@word#1 {\expandafter\UL@start#1 % \expandafter\ifx\expandafter\UL@end#1\egroup\egroup \unskip \unskip \unskip % remove extra leader at end \spacefactor\UL@spfactor \let\UL@word\egroup @@ -134,9 +139,10 @@ % behaves properly. \def\UL@putbox{\ifx\UL@start\@empty \else % not inner - \vrule\@width\z@ \LA@penalty\@M - {\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}% - \box\UL@box \fi} + \vrule\@width\z@ \LA@penalty\@M + {\UL@skip\wd\UL@box \UL@leaders \kern-\UL@skip}% + \box\UL@box + \fi} % With interword leaders, give some overlap to avoid gaps caused by % round-off errors in the printing program. Needs \unskip \unskip \unskip @@ -152,7 +158,8 @@ % restore some things for inside math or \mbox \def\UL@hrest{\let\ \LA@space \let\-\@empty \let\penalty\LA@penalty} -\def\UL@space{\LA@space \global\UL@skip\lastskip \unskip \UL@reskip}% \ +\let\LA@space\ % +\UL@protected\def\UL@space{\LA@space \global\UL@skip\lastskip \unskip \UL@reskip}% % Hyphenation is done by explicit \discretionary. The overlapping melds % with the running overlap because it *is* part of the running overlap: @@ -160,14 +167,14 @@ % then overlapped by leaders. The discretionary may occupy this space % if a break occurs; otherwise the next syllable gets doubly-overlapped % (in registration) for a distance of the hyphen's width. -\def\UL@dischyp{\global\setbox\UL@hyphenbox\hbox +\UL@protected\def\UL@dischyp{\global\setbox\UL@hyphenbox\hbox {\ifnum \hyphenchar\font<\z@ \string-\else \char\hyphenchar\font \fi}% \kern\wd\UL@hyphenbox \LA@penalty\@M \UL@stop \kern-\wd\UL@hyphenbox \discretionary{\box\UL@hyphenbox}{}{}\UL@start} \let\LA@penalty\penalty -\def\UL@penalty{\relax\ifhmode \afterassignment\UL@@penalty\count@ +\UL@protected\def\UL@penalty{\relax\ifhmode \afterassignment\UL@@penalty\count@ \else\LA@penalty\fi} \def\UL@@penalty{\LA@penalty \ifnum\count@=\z@ \@ne \else \count@ \fi % zero penalty => no penalty, so use 1 instead. @@ -181,7 +188,8 @@ % when they're used, but saves processing in \UL@hrest called by \everymath % \everyvbox and \everyhbox. -\def\UL@hskip{\ifx\ \LA@space \LA@hskip \else +\let\LA@hskip\hskip +\UL@protected\def\UL@hskip{\ifx\ \LA@space \LA@hskip \else \afterassignment\UL@reskip \global\UL@skip \fi} \def\UL@reskip{\UL@stop \UL@leaders \UL@start} @@ -190,13 +198,13 @@ % and so the \hfil is not underlined! \\ and \newline do nothing if inside % inner braces. -\def\UL@cr{\unskip \ifx\ \LA@space \let\UL@vad\@gobble +\UL@protected\def\UL@cr{\unskip \ifx\ \LA@space \let\UL@vad\@gobble \else \UL@stop \unskip\unskip\unskip \let\UL@vad\vadjust \fi \@ifstar{\UL@vad{\LA@penalty\@M}\UL@cra}\UL@cra} \def\UL@cra{\@ifnextchar[\UL@crb\UL@newline} \def\UL@crb[#1]{\UL@vad{\vskip#1}\UL@newline} -\def\UL@newline{\ifx\UL@start\@empty % (\UL@cr may have \UL@stop-ed already) +\UL@protected\def\UL@newline{\ifx\UL@start\@empty % (\UL@cr may have \UL@stop-ed already) \unskip \ifx\ \LA@space \else \UL@stop \unskip\unskip\unskip \fi\fi \LA@hskip \z@\@plus.0001fil\LA@penalty -\@M \UL@start} @@ -213,7 +221,8 @@ \newbox\ULC@box \let\ULleaders\leaders -\def\markoverwith#1{\setbox\ULC@box\hbox{{#1}}\UL@pixel.5\wd\ULC@box +\UL@protected\def\markoverwith#1{\leavevmode + \setbox\ULC@box\hbox{{#1}}\UL@pixel.5\wd\ULC@box \ifmmode \setbox\ULC@box\hbox{\raise1.4ex\box\ULC@box}% \dp\ULC@box-1.4ex\ht\ULC@box\z@ \def\UL@leadtype{\cleaders\copy\ULC@box}% \else @@ -226,36 +235,44 @@ % For drawing a wavey underline instead of a straight one the command % is \uwave (under-wave) which uses the wiggle from 6-pt lasy font: -\def\uwave{\bgroup \markoverwith{\lower3.5\p@\hbox{\sixly \char58}}\ULon} -\font\sixly=lasy6 % does not re-load if already loaded, so no memory problem. +\UL@protected\def\uwave{\leavevmode \bgroup + \ifdim \ULdepth=\maxdimen \ULdepth 3.5\p@ + \else \advance\ULdepth2\p@ + \fi \markoverwith{\lower\ULdepth\hbox{\sixly \char58}}\ULon} +\font\sixly=lasy6 % does not re-load if already loaded, so no memory drain. % To draw a double underline under text, use \uuline{text} -\def\uuline{\bgroup \UL@setULdepth +\UL@protected\def\uuline{\leavevmode \bgroup + \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2.8\p@\fi \markoverwith{\lower\ULdepth\hbox - {\kern-.03em\vbox{\hrule width.2em\kern1.2\p@\hrule}\kern-.03em}}% + {\kern-.03em\vbox{\hrule width.2em\kern1\p@\hrule}\kern-.03em}}% \ULon} % To draw a line through text instead of under it (strike out) do % `under'-line with negative depth. Note that this one uses a real % line, not characters, so there is no \markoverwith. -\def\sout{\bgroup \ULdepth=-.55ex \ULset} +\UL@protected\def\sout{\leavevmode \bgroup \ULdepth=-.55ex \ULset} % To mark //// over text instead of underlining (x-out) % -\def\xout{\bgroup \markoverwith{\hbox to.35em{\hss/\hss}}\ULon} +\UL@protected\def\xout{\leavevmode \bgroup + \markoverwith{\hbox to.35em{\hss/\hss}}\ULon} -\def\dotuline{\bgroup +\UL@protected\def\dotuline{\leavevmode \bgroup \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2\p@\fi \markoverwith{\begingroup - \advance\ULdepth0.08ex - \lower\ULdepth\hbox{\kern.1em .\kern.04em}% + %\advance\ULdepth0.08ex + \lower\ULdepth\hbox{\kern.06em .\kern.04em}% \endgroup}% \ULon} -\def\dashuline{\bgroup +\UL@protected\def\dashuline{\leavevmode \bgroup \UL@setULdepth + \ifx\UL@on\UL@onin \advance\ULdepth2\p@\fi \markoverwith{\kern.13em \vtop{\kern\ULdepth \hrule width .3em}% \kern.13em}\ULon} @@ -266,13 +283,14 @@ % e.g.: \useunder{\uuline}{\bfseries}{\textbf} % \useunder{\uwave}{\bf}{} -\def\useunder#1#2#3{\relax +\UL@protected\def\useunder#1#2#3{\relax \ifx\relax#2\relax\else % declaration command given - \def#2{\def\@tempa{#1}\global\let\UL@ender\UL@swender + \UL@protected\def#2{\def\@tempa{#1}\global\let\UL@ender\UL@swender \expandafter\@tempa\expandafter{\ifnum\z@=\string`}\fi}% - \MakeRobust{#2}\fi + \fi \ifx\relax#3\relax\else % argumentative command - \def#3{#1}\MakeRobust{#3}\fi} + \UL@protected\def#3{#1}% + \fi} \expandafter\ifx \csname @ifundefined\endcsname \relax @@ -282,23 +300,13 @@ \def\@width{width} \def\@empty{} \long\def\@gobble#1{} - \def\MakeRobust#1{} + \long\def\@firstoftwo#1#2{#1}% + \long\def\@secondoftwo#1#2{#2}% % Do non-outer \newif with no visible \if's or \fi's when skipping \csname newif\expandafter\endcsname \csname if@ignore\endcsname \else - \def\MakeRobust#1{\expandafter\let - \csname \expandafter\@gobble\string#1 \endcsname= #1% - \edef#1{\noexpand\protect \expandafter\noexpand - \csname\expandafter\@gobble\string#1 \endcsname} - } - \MakeRobust\uline - \MakeRobust\uuline - \MakeRobust\uwave - \MakeRobust\sout - \MakeRobust\xout - \let\LA@em\em \let\LA@emph\emph \expandafter\let\expandafter\LA@Pem \csname em \endcsname \expandafter\let\expandafter\LA@Pemph \csname emph \endcsname @@ -313,17 +321,19 @@ % Process LaTeX \package options; plain TeX skips this section \expandafter\ifx\csname ProvidesPackage\endcsname \relax \else - \ProvidesPackage{ulem}[2012/05/18] + \ProvidesPackage{ulem}[2019/11/18] \DeclareOption{normalem}{\normalem} \DeclareOption{ULforem}{\ULforem} \DeclareOption{normalbf}{} \DeclareOption{UWforbf}{\useunder{\uwave}{\bf}{\textbf}} \ProcessOptions % - \AtBeginDocument{\let\UL@marginpar\marginpar}% - \newcommand\UL@marpar[2][\gDefault@pt]{\gdef\gDefault@pt{#2}% + \newcommand\UL@marpar[2][\ULmp@opt@arg]{\gdef\ULmp@opt@arg{#2}% \ifx\ \LA@space \@latexerr{Marginpar lost}% - \else \UL@stop \UL@marginpar[#1]{#2}\UL@start \fi} + \else \UL@stop \LA@marginpar[#1]{#2}\UL@start \fi} +% + \AtBeginDocument{\let\LA@marginpar\marginpar}% +% \addto@hook\UL@hook{\let\marginpar\UL@marpar} \fi @@ -336,174 +346,6 @@ \endinput -%====================== BEGIN INSTRUCTIONS =========================== -These plain text instructions may disappear soon. The primary instructions -are in ulem.ltx (ulem.pdf, ulem.dvi). - -ULEM is a package for LaTeX or plain TeX which provides various types of -underlining that can stretch between words and be broken across lines. -In LaTeX this style replaces italics with underlining in emphasized text -given by \em or \emph -- but only if the text is delimited by braces. A -declaration \normalem (or the \usepackage option [normalem]) restores the -normal \em behavior. For underlining in plain TeX, \input ulem.sty, and -use the \uline command. - -Unlike regular underlining, ulem allows line breaks, and even primitive -hyphenation, within the underlined text; but it is far from perfect. It is -most suitable for simple text like {\em \LaTeX: A document preparation -system\/} that may need to be underlined in a manuscript submitted for -publication. Again, ulem will only replace \em and \emph when the text is -delimited by explicit braces. - -The thickness of the underline rule is given by \ULthickness; use -\renewcommand or \def (not \setlength) to change it. The depth of the -underline is controlled by the length \ULdepth. The default value is a -special flag which lets the current font control the depth. You can set -a particular value to \ULdepth (using \setlength) to force a particular -depth, either locally for a special purpose, or for the document as a -whole. See the definition of \sout. - -Every word is typeset in an underlined box, so automatic hyphenation is -normally disabled, but explicit discretionary hyphens (\-) will still be -obeyed. Several text-formatting commands are specially supported within -the underlining: \-, \ , ~, \\, \newline, \linebreak, \nolinebreak, -\penalty, \hskip, \hspace, \hfil, \hfill, \hss. Displayed math and \par -are deliberately not supported to aid in the detection of runaway arguments -(missing braces). The special commands do have a problem: they end a -group so any local assignments are lost. - -The underlines continue between words, and stretch just like ordinary -spaces do. Since spaces delimit words, there may be some difficulty -with syntactical spaces (e.g. "2.3 pt"). Some effort is made to handle -such cases, but sometimes (such as \let\x= y) the space is interpreted -incorrectly. You can usually solve the problem by enclosing the offending -command in braces or in a macro (\newcommand\xeqy{\let\x= y}), but... - -One important incompatibility with braces and macro replacement: -ALL THE TEXT IN BRACES OR COMING FROM A MACRO IS TYPESET IN A BOX. -That is, braces will suppress stretching and linebreaks in the text they -enclose. Moreover, the specially-taken-care-of commands \-, \\, \newline -and \linebreak are usually ignored if they appear inside extra braces. -They operate only when the braces delimit a command parameter without -introducing a level of grouping. (Even though braces delimiting command -parameters do not normally imply grouping, many commands will add their -own grouping.) Thus, you should try to limit inner braces to short bits of -text or for delimiting parameters to commands. For emergency repairs, see -the "Marat/Sade" example below. Syntactical spaces inside braces never -cause a problem, nor do spaces in math mode. - -Text produced by expansion of a command (macro) is boxed too, but \\, \ -and \- still work properly in the expansion text: - \newcommand\iff{if and only if} {\em \iff} -does not allow any stretching or linebreaking between words, but - \newcommand\iff{if\ and\ only\ if} {\em \iff} -allows stretching and linebreaking. There is a problem though: the -\ between words closes a group and any local assignments will be lost, -in particular, font changes and color changes. - -This loss of local assignments will break some other standard commands, -(e.g., \cite) which produce multiple `words' using local assignments. -The way to protect such commands is to bury them in an \mbox: - {\em every\-one agrees~\mbox{\cite{you,me}}.} - -Nested \em commands produce multiple underlining, but heed the warnings -about braces above. To get italics without underlining, use \it. Nesting -of other types of underline is also possible, but the `underlines' may -overlap. - -HERE IS A SIMPLE EXAMPLE. - -\noindent 'Twas {\em brillig\/} and the {\em slithy~toves\/} -did {\em gyre\/} and {\em gim\-ble\/} in the {\em wabe,\\[2pt] } -All {\em mim\-sey\/} were the {\em boro\-goves\/} and -the {\em mome raths outgrabe}. - -HERE IS A DIFFICULT EXAMPLE. - -\usepackage{ulem} -\setlength\textwidth{3.3in} -\begin{document} -% \large -No, I did {\em not} act in the movie {\em \emph{The} % <<<<<<< Nested -\emph{Persecu}\-\emph{tion} \emph{and} \emph{Assassination} \emph{of} -\emph{Jean-Paul} \emph{Marat}, as per\-formed by the Inmates -of the Asylum of Charenton under the Direc\-tion of the -Marquis de~Sade!} But I {\em did} see it. -\end{document} - -In the nested emphasis, \emph had to be given for each word separately -so the spaces between could stretch and break into lines. Even the -discretionary hyphen (\-) in `Persecution' had to be outside the braces, -but the hyphen in `Direction' was just fine because it was not in nested -braces. The same applies to other special commands like \ and ~. Also, -the spaces are printed with only a single underline because they are -outside the nested \emph commands. This example really illustrates that -ulem does not handle nested emphasis very well! Nevertheless, it is fine -for simple things. - -Underlining can also be done according to \uline{this text}. To use this -type of underlining, but have \em still produce italics, put the command -\normalem in the preamble of the document or load ulem with -\usepackage[normalem]{ulem}. - -Some variations on underlining are provided, including a wavey underline -(\uwave{under-wave}), double underlines (\uuline{two lines under this}), -dashed (\dashuline{dashes underneath}) or dotted (\dotuline{dots below}) -underlines, -a line through text rather than under it (\sout{strike out}), and text -crossed-out with /////// (\xout{cross out, X out}). You can define your -own styles following the examples provided. The definition should be -something like: - -\newcommand\command{\bgroup \markoverwith{something}\ULon} - -The "something" can be as simple as a single character, or as complex as -you can keep track of. - -The various underlining commands are essentially textual, and will not -work quite the same in math mode. But since some font commands, like \bf, -serve both for text and math, math mode is handled (in an approximate way). -The performance in math mode is somewhat different from in text: there will -be no line breaks or stretching in the underlined text, and the vertical -positioning may not be right. The results should be best for \uline, -\uwave, \uuline, and any other truly UNDER-line you define. - -Any type of underlining can be substituted for any font-selection command -by issuing a proper \useunder declaration: - -\useunder{\underlinecommand}{\fontdeclaration}{\fontcommand} - -e.g., \useunder{\uuline}{\bfseries}{\textbf} gives a double underline -instead of bold face in LaTeX. The commands \normalem and \ULforem switch -underlining for \em off and on, respectively, and so do the \usepackage -options [normalem] and [ULforem]. There is also the \usepackage style -option [UWforbf] to replace boldface with a wavey underline. - -UWforbf does handle \bf in math mode, but it doesn't work in section titles, -unfortunately, because the titles are not delimited by explicit braces when -printed by the \section command. For the present version, the \bfseries -command still produces bold face, but \bf makes an under-wave. To get under- -waved section titles you can do - -\renewcommand\@seccntformat[1]{\uwave{\csname the#1\endcsname}\hskip 1em} - -and later specify \section[...]{\uwave{...}}. - -In plain TeX there is no \textbf so you should use \useunder{\UWave}{\bf}{}. -You can even skip a step and define the underline or overprint with \useunder: -\useunder{\bgroup\markoverwith{!}\ULon}{\sf}{} - -Some commands, such as \\ and \hskip are given special treatment, but -others (like \marginpar) are not. Support for others can be added by -assigning special meanings in the token register \UL@hook. (In LaTeX do -\addto@hook\UL@hook{\let\command\ULversion}.) The UL versions of commands -should be modelled on \UL@hskip or \UL@cr, and should include the test -"\ifx\ \LA@space". For example, support for "\marginpar" is added through -the hook mechanism. - -All the underlining commands are robust in LaTeX. - -%====================== END INSTRUCTIONS =========================== % Previous bug-finders: Esther Hu (\hfill in plain); Lones Smith (\tt\-); % Steve Anderson (\ooalign accents); Thanassi Protopapas ( { in tables). @@ -523,6 +365,8 @@ All the underlining commands are robust in LaTeX. % 2010: Include \dotuline and \dashuline, typeset documentation, add \UL@setULdepth % 2011: Change \dimen@ to \UL@height % 2012: Removed \let\par garbage +% 2017: Remove \makerobust +% 2019: Handle \ULdepth better. Some tweaks. % % Send problem reports to asnd@triumf.ca % |