diff options
Diffstat (limited to 'macros')
72 files changed, 10959 insertions, 1457 deletions
diff --git a/macros/latex/contrib/breqn/CHANGES.md b/macros/latex/contrib/breqn/CHANGES.md index 7d823015d6..bad962a4b7 100644 --- a/macros/latex/contrib/breqn/CHANGES.md +++ b/macros/latex/contrib/breqn/CHANGES.md @@ -1,5 +1,10 @@ # Release notes for the `breqn` packages +## v0.98i (2020/02/18) + + * Fix clash with new version of `babel` around use of the generic `\\@elt` command. + + ## v0.98h (2020/02/16) * No longer redefine LaTeX2e's `\\@ifstar` command, use a custom prefix instead. diff --git a/macros/latex/contrib/breqn/breqn.dtx b/macros/latex/contrib/breqn/breqn.dtx index 3222bb8945..9f344f3d1e 100644 --- a/macros/latex/contrib/breqn/breqn.dtx +++ b/macros/latex/contrib/breqn/breqn.dtx @@ -150,8 +150,8 @@ % % % \title{The \pkg{breqn} package} -% \def\fileversion{0.98h} -% \def\filedate{2020/02/16} +% \def\fileversion{0.98i} +% \def\filedate{2020/02/18} % \date{\pkg{breqn} bundle: \filedate\space\fileversion} % \author{Authors: Michael J. Downes, Morten H\o gholm\\ Maintained by Morten H\o gholm, Will Robertson\\ Feedback: \texttt{https://github.com/wspr/breqn/issues}} % @@ -1381,7 +1381,7 @@ % Declare package name and date. % \begin{macrocode} \RequirePackage{expl3} -\ProvidesExplPackage{breqn}{2020/02/16}{0.98h}{Breaking equations} +\ProvidesExplPackage{breqn}{2020/02/18}{0.98i}{Breaking equations} % \end{macrocode} % Regrettably, \pkg{breqn} is internally a mess, so we have to take % some odd steps. @@ -1786,17 +1786,6 @@ % \end{macro} % % -% \begin{macro}{\eq@cons} -% -% \latex 's \cs{@cons} appends to the end of a list, but we need -% a function that adds material at the beginning. -% \begin{macrocode} -\def\eq@cons#1#2{% - \begingroup \let\@elt\relax \xdef#1{\@elt{#2}#1}\endgroup -} -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\@saveprimitive} % If some preceding package redefined one of the % primitives that we must change, we had better do some checking to make @@ -4238,17 +4227,17 @@ \def\debug@showmeasurements{% \breqn@debugmsg{=> \number\eq@lines\space lines}% \begingroup - \def\@elt##1X##2{\MessageBreak==== \space\space##1/##2}% - \let\@endelt\@empty + \def\breqn@elt##1X##2{\MessageBreak==== \space\space##1/##2}% + \let\breqn@endelt\@empty \breqn@debugmsg{=> trial info:\eq@measurements}% \breqn@debugmsg{=> bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness}% - \let\@elt\relax \let\@endelt\relax + \let\breqn@elt\relax \let\breqn@endelt\relax \endgroup } \def\debug@showmeasurements{% \begingroup - \def\@elt##1X##2{\MessageBreak==== ##1/##2}% - \let\@endelt\@empty + \def\breqn@elt##1X##2{\MessageBreak==== ##1/##2}% + \let\breqn@endelt\@empty \breqn@debugmsg{===> Measurements: \number\eq@lines\space lines \eq@measurements \MessageBreak @@ -4417,9 +4406,9 @@ % \begin{macrocode} \def\eq@trial@save#1{% %<*trace> -% \begingroup \def\@elt##1X##2{\MessageBreak==== \space\space##1/##2}\let\@endelt\@empty\breqn@debugmsg{=> trial info:\eq@measurements}% +% \begingroup \def\breqn@elt##1X##2{\MessageBreak==== \space\space##1/##2}\let\breqn@endelt\@empty\breqn@debugmsg{=> trial info:\eq@measurements}% % \breqn@debugmsg{=> bounding box: \the\eq@wdT x\the\eq@vspan, badness=\the\eq@badness\MessageBreak}% -% \let\@elt\relax \let\@endelt\relax +% \let\breqn@elt\relax \let\breqn@endelt\relax % \endgroup %</trace> \xdef#1{% @@ -4571,7 +4560,7 @@ % \begin{macrocode} \def\eq@recalc{% \eq@wdT\z@ \eq@wdMin\maxdimen \eq@vspan\z@skip \eq@badness\z@ - \let\@elt\eq@recalc@a \eq@measurements \let\@elt\relax + \let\breqn@elt\eq@recalc@a \eq@measurements \let\breqn@elt\relax } % \end{macrocode} % \end{macro} @@ -4579,10 +4568,10 @@ % % \begin{macro}{\eq@recalc@a} % \begin{macrocode} -\def\eq@recalc@a#1x#2+#3\@endelt{% +\def\eq@recalc@a#1x#2+#3\breqn@endelt{% \eq@firstht#2\relax - \let\@elt\eq@recalc@b - \@elt#1x#2+#3\@endelt + \let\breqn@elt\eq@recalc@b + \breqn@elt#1x#2+#3\breqn@endelt } % \end{macrocode} % \end{macro} @@ -4590,7 +4579,7 @@ % % \begin{macro}{\eq@recalc@b} % \begin{macrocode} -\def\eq@recalc@b#1X#2,#3x#4+#5@#6\@endelt{% +\def\eq@recalc@b#1X#2,#3x#4+#5@#6\breqn@endelt{% \setlength\dim@a{#2+#3}% \ifdim\dim@a>\eq@wdT \eq@wdT\dim@a \fi \ifdim\dim@a<\eq@wdMin \eq@wdMin\dim@a \fi @@ -5001,12 +4990,12 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@endelt} +% \begin{macro}{\breqn@endelt} % This is a scan marker. % It should get a non-expandable definition. % It could be \cs{relax}, but let's try a chardef instead. % \begin{macrocode} -\chardef\@endelt=`\? +\chardef\breqn@endelt=`\? % \end{macrocode} % \end{macro} % @@ -5015,8 +5004,10 @@ % This is similar to a parshape spec but for each line we record more % info: space above, indent, width x height + dp, and badness. % \begin{macrocode} +\let\breqn@elt\relax +\let\breqn@endelt\relax \def\eq@measurements{% - \@elt 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\@endelt + \breqn@elt 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\breqn@endelt ... } % \end{macrocode} @@ -5074,14 +5065,14 @@ \fi }% \fi - \edef\eq@measurements{\@elt + \edef\eq@measurements{\breqn@elt \the\skip@a\space X% extra space to facilitate extracting only the % dimen part later \csname eq@i% \ifnum\eq@curline<\parshape \number\eq@curline \else\number\parshape \fi - \endcsname,\the\dim@a x\the\ht\tw@+\the\dp\tw@ @\the\eq@badness\@endelt + \endcsname,\the\dim@a x\the\ht\tw@+\the\dp\tw@ @\the\eq@badness\breqn@endelt \eq@measurements }% \advance\eq@curline\m@ne @@ -5170,7 +5161,7 @@ \ifnum\eq@lines>\sixt@@n \eq@dense@enough@b \else - \dim@b\z@ \let\@elt\eq@delt \eq@measurements + \dim@b\z@ \let\breqn@elt\eq@delt \eq@measurements \dim@c\eq@density@factor\eq@wdT \multiply\dim@c\eq@lines %<trace> \breqn@debugmsg{Density check: black \the\dim@b/\eq@density@factor total \the\dim@c}% \ifdim\dim@b>\dim@c \true@false@true \else \false@false@false \fi @@ -5183,7 +5174,7 @@ % \begin{macro}{\eq@delt} % Args are space-above, indent, width, height, depth, badness. % \begin{macrocode} -\def\eq@delt#1X#2,#3x#4+#5@#6\@endelt{\addtolength\dim@b{#3}}% +\def\eq@delt#1X#2,#3x#4+#5@#6\breqn@endelt{\addtolength\dim@b{#3}}% % \end{macrocode} % \end{macro} % @@ -6526,7 +6517,7 @@ % \begin{macrocode} \def\grp@push{% \global\GRP@queue\@xp\@xp\@xp{\@xp\the\@xp\GRP@queue - \@xp\@elt\@xp{\EQ@trial}% + \@xp\breqn@elt\@xp{\EQ@trial}% }% \global\setbox\GRP@box\vbox{% \hbox{\box\EQ@box\box\EQ@copy\penalty\@ne\copy\EQ@numbox}% @@ -6606,7 +6597,7 @@ % in a \cs{vbox} % \begin{macrocode} \setbox\GRP@wholebox\vbox{% - \let\@elt\eqgrp@elt + \let\breqn@elt\eqgrp@elt \the\GRP@queue }% % \end{macrocode} @@ -6647,7 +6638,7 @@ %\debug@box\GRP@wholebox %</trace> \unvbox\GRP@wholebox - \let\@elt\relax + \let\breqn@elt\relax % \end{macrocode} % We'd need to handle shifted, right number here, too!!! % \begin{macrocode} @@ -6925,7 +6916,7 @@ % Need to add a dummy element to \cs{GRP@queue}. % \begin{macrocode} \global\GRP@queue\@xp{\the\GRP@queue - \@elt{\gdef\EQ@trial{}}% + \breqn@elt{\gdef\EQ@trial{}}% }% } % \end{macrocode} @@ -6942,8 +6933,8 @@ \unvbox\GRP@box }% \global\GRP@queue\@xp{\the\GRP@queue -% \@elt{\gdef\EQ@trial{\let\eq@isIntertext\@True}}% - \@elt{\let\eq@isIntertext\@True}% +% \breqn@elt{\gdef\EQ@trial{\let\eq@isIntertext\@True}}% + \breqn@elt{\let\eq@isIntertext\@True}% }% } % \end{macrocode} diff --git a/macros/latex/contrib/breqn/breqn.pdf b/macros/latex/contrib/breqn/breqn.pdf Binary files differindex 6491bca5f8..900eee8636 100644 --- a/macros/latex/contrib/breqn/breqn.pdf +++ b/macros/latex/contrib/breqn/breqn.pdf diff --git a/macros/latex/contrib/breqn/breqnbundle.ins b/macros/latex/contrib/breqn/breqnbundle.ins index e48619eeb2..69b303c5e5 100644 --- a/macros/latex/contrib/breqn/breqnbundle.ins +++ b/macros/latex/contrib/breqn/breqnbundle.ins @@ -34,13 +34,11 @@ flexisym.dtx, and mathstyle.dtx. \endpreamble \generate{% - \file{breqn.ins}{\from{breqn.dtx}{install}}% \usedir{tex/latex/breqn}% \file{breqn.sty}{\from{breqn.dtx}{package}}% } \generate{% - \file{flexisym.ins}{\from{flexisym.dtx}{install}}% \usedir{tex/latex/breqn}% \file{flexisym.sty}{\from{flexisym.dtx}{package}}% \file{cmbase.sym}{\from{flexisym.dtx}{cmbase}}% @@ -50,7 +48,6 @@ flexisym.dtx, and mathstyle.dtx. } \generate{% - \file{mathstyle.ins}{\from{mathstyle.dtx}{install}}% \usedir{tex/latex/breqn}% \file{mathstyle.sty}{\from{mathstyle.dtx}{package}}% } diff --git a/macros/latex/contrib/breqn/flexisym.dtx b/macros/latex/contrib/breqn/flexisym.dtx index caf76eea74..cb9206c14e 100644 --- a/macros/latex/contrib/breqn/flexisym.dtx +++ b/macros/latex/contrib/breqn/flexisym.dtx @@ -78,8 +78,8 @@ % \fi % % \title{The \textsf{flexisym} package} -% \def\fileversion{0.98h} -% \def\filedate{2020/02/16} +% \def\fileversion{0.98i} +% \def\filedate{2020/02/18} % \date{\filedate\space\fileversion} % \author{Authors: Michael J. Downes, Morten H\o gholm\\ Maintained by Morten H\o gholm, Will Robertson\\ Feedback: \texttt{https://github.com/wspr/breqn/issues}} % @@ -97,7 +97,7 @@ % \begin{macrocode} %<*package> \RequirePackage{expl3}[2009/08/05] -\ProvidesExplPackage{flexisym}{2020/02/16}{0.98h}{Make math characters macros} +\ProvidesExplPackage{flexisym}{2020/02/18}{0.98i}{Make math characters macros} \edef\do{% \noexpand\AtEndOfPackage{% diff --git a/macros/latex/contrib/breqn/flexisym.pdf b/macros/latex/contrib/breqn/flexisym.pdf Binary files differindex 54f47e4ab4..0fddf92710 100644 --- a/macros/latex/contrib/breqn/flexisym.pdf +++ b/macros/latex/contrib/breqn/flexisym.pdf diff --git a/macros/latex/contrib/breqn/mathstyle.dtx b/macros/latex/contrib/breqn/mathstyle.dtx index 6a3e99e001..6df4e9426a 100644 --- a/macros/latex/contrib/breqn/mathstyle.dtx +++ b/macros/latex/contrib/breqn/mathstyle.dtx @@ -57,8 +57,8 @@ % \fi % % \title{The \textsf{mathstyle} package} -% \def\fileversion{0.98h} -% \def\filedate{2020/02/16} +% \def\fileversion{0.98i} +% \def\filedate{2020/02/18} % \date{\filedate\quad\fileversion} % \author{Authors: Michael J. Downes, Morten H\o gholm\\ Maintained by Morten H\o gholm, Will Robertson\\ Feedback: \texttt{https://github.com/wspr/breqn/issues}} % @@ -151,7 +151,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\ProvidesExplPackage{mathstyle}{2020/02/16}{0.98h}{Tracking mathstyle implicitly} +\ProvidesExplPackage{mathstyle}{2020/02/18}{0.98i}{Tracking mathstyle implicitly} \ExplSyntaxOff % \end{macrocode} % diff --git a/macros/latex/contrib/breqn/mathstyle.pdf b/macros/latex/contrib/breqn/mathstyle.pdf Binary files differindex 39e9fe3456..c9d84aee9a 100644 --- a/macros/latex/contrib/breqn/mathstyle.pdf +++ b/macros/latex/contrib/breqn/mathstyle.pdf diff --git a/macros/latex/contrib/hitszthesis/Makefile b/macros/latex/contrib/hitszthesis/Makefile new file mode 100644 index 0000000000..ce3df42ab9 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/Makefile @@ -0,0 +1,83 @@ +# Makefile for HITSZThesis + +PACKAGE = hitszthesis +THESIS = main +SPINE = spine + +SOURCES = $(PACKAGE).ins $(PACKAGE).dtx +CLSFILE = dtx-style.sty $(PACKAGE).cls + +LATEXMK = latexmk + +# make deletion work on Windows +ifdef SystemRoot + RM = del /Q +else + RM = rm -f +endif + +.PHONY: all all-dev clean distclean dist thesis viewthesis spine viewspine doc viewdoc cls check save savepdf test FORCE_MAKE + +thesis: $(THESIS).pdf + +all: thesis spine + +all-dev: doc all + +cls: $(CLSFILE) + +$(CLSFILE): $(SOURCES) + xetex $(PACKAGE).ins + +doc: $(PACKAGE).pdf + +spine: $(SPINE).pdf + +$(PACKAGE).pdf: cls FORCE_MAKE + $(LATEXMK) $(PACKAGE).dtx + +$(THESIS).pdf: cls FORCE_MAKE + $(LATEXMK) $(THESIS) + +$(SPINE).pdf: cls FORCE_MAKE + $(LATEXMK) $(SPINE) + +viewdoc: doc + $(LATEXMK) -pv $(PACKAGE).dtx + +viewthesis: thesis + $(LATEXMK) -pv $(THESIS) + +viewspine: spine + $(LATEXMK) -pv $(SPINE) + +save: + bash testfiles/save.sh + +savepdf: + bash testfiles/save-pdf.sh + +test: + l3build check + +clean: + $(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE) + -@$(RM) *~ main-survey.* + +cleanall: clean + -@$(RM) $(PACKAGE).pdf $(THESIS).pdf $(SPINE).pdf + +distclean: cleanall + -@$(RM) $(CLSFILE) + -@$(RM) -r dist + +check: FORCE_MAKE +ifeq ($(version),) + @echo "Error: version missing: \"make [check|dist] version=X.Y\""; exit 1 +else + @[[ $(shell grep -E -c '$(version) A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen|\\def\\version\{$(version)\}' hitszthesis.dtx) -eq 3 ]] || (echo "update version in hitszthesis.dtx before release"; exit 1) + @[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version in package.json before release"; exit 1) +endif + +dist: check all-dev + npm run build -- --version=$(version)
\ No newline at end of file diff --git a/macros/latex/contrib/hitszthesis/README.md b/macros/latex/contrib/hitszthesis/README.md index 838f63a599..c915afa624 100644 --- a/macros/latex/contrib/hitszthesis/README.md +++ b/macros/latex/contrib/hitszthesis/README.md @@ -1,27 +1,54 @@ <!-- Author : Jingxuan Yang--> <!-- Program Email: yanglatex2e@gmail.com --> -[Github](https://github.com/YangLaTeX/YangThesis) | [Download](https://github.com/YangLaTeX/YangThesis/releases) | [Wiki](https://github.com/YangLaTeX/YangThesis/wiki) +[Github](https://github.com/YangLaTeX/YangThesis) | [Download](https://github.com/YangLaTeX/YangThesis/releases) | [Wiki](https://github.com/YangLaTeX/YangThesis/wiki) | [CTAN](https://www.ctan.org/pkg/hitszthesis) -# HITSZThesis +# Introduction to hitszthesis -## Introduction +HITSZThesis is a **bachelor dissertation** LaTeX template for **Harbin Institute of Technology, ShenZhen** (HITSZ). Current version is 2.0, updated on 2020/2/18. -HITSZThesis is a **bachelor dissertation** LaTeX template for **Harbin Institute of Technology, ShenZhen** (HITSZ). +# Documentation +Download and unzip the template. Specific usage documentation and examples can be found in the files below. At present, these documents are <b>only available in Chinese</b>: +* Template usage (hitszthesis.pdf) +* Template example (main.pdf) -## Requirements +# Downloads +* Published version: [CTAN](https://www.ctan.org/pkg/hitszthesis) +* Developer version: [GitHub](https://github.com/YangLaTeX/hitszthesis) -This package uses `mtpro2` as math font, you can install this font from [here](https://www.latexstudio.net/archives/51742.html). +# Updates +## Automatic +Get the most up-to-date published version with your TeX distribution from [CTAN](https://www.ctan.org/pkg/hitszthesis). -## Version +## Manual +Download the package from [GitHub](https://github.com/YangLaTeX/hitszthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here" from the popup menu): -This is version 1.2, updated on 2/15/2020. +```shell +xetex hitszthesis.ins +``` -## Issues -If you have any questions or advice, you can create an issue at [https://github.com/YangLaTeX/YangThesis/issues](https://github.com/YangLaTeX/YangThesis/issues) +You'll get `hitszthesis.cls` along with other template files. -## Contact -Email: [yanglatex2e@gmail.com](mailto:yanglatex2e@gmail.com) +# Reporting Issues +Please follow the procedure below: -## License -This material is subject to the [LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3) or any later version.
\ No newline at end of file +* Check the [FAQ](https://github.com/YangLaTeX/hitszthesis/wiki/FAQ) +* [GitHub Issues](https://github.com/YangLaTeX/hitszthesis/issues) + +# Makefile Usage + +```shell +make [{all|thesis|spine|doc|clean|cleanall|distclean}] +``` + +## Targets +* `make thesis` generate thesis main.pdf; +* `make spine` generate book spine for printing spine.pdf; +* `make doc` generate template documentation hitszthesis.pdf; +* `make all` generate thesis and spine, same as `make thesis && make spine`; +* `make clean` delete all examples' files (excluding main.pdf); +* `make cleanall` delete all examples' files and main.pdf; +* `make distclean` delete all examples' and templates' files and PDFs. + +# License +This material is subject to the [LATEX Project Public License 1.3c](https://ctan.org/license/lppl1.3) or any later version. diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.cls b/macros/latex/contrib/hitszthesis/hitszthesis.cls deleted file mode 100644 index d6d1815d32..0000000000 --- a/macros/latex/contrib/hitszthesis/hitszthesis.cls +++ /dev/null @@ -1,822 +0,0 @@ -%%============================================== -%% start of file `HITSZThesis.cls'. -%% Copyright 2019-2020 YangLaTeX (yanglatex2e@gmail.com) -%% -%% This work is available at GitHub: -%% https://github.com/YangLaTeX/YangThesis -%% -%% This material is subject to the LATEX Project Public License 1.3c -%% (https://ctan.org/license/lppl1.3) or any later version -%%============================================== - -% 开始写类文件 -% 设置需要的LaTeX版本 -\NeedsTeXFormat{LaTeX2e} - -% 定义提供的类文件名称以及说明文字 -\ProvidesClass{hitszthesis}[2020/02/15 v1.2 HITSZThesis document class] - -% 键值对设置 -\RequirePackage{kvoptions} - -% 对宏包、环境、命令进行操作 -\RequirePackage{etoolbox} - -% 设置关键词 -\SetupKeyvalOptions{family=Yang, prefix=Yang@, setkeys=\kvsetkeys} - -% 定义设置关键词命令 -\newcommand{\ykv}[1]{\kvsetkeys{Yang}{#1}} - -% 表格信息对齐 -\DeclareStringOption[infocenter]{infoalign} -\DeclareVoidOption{infocenter}{\ykv{infoalign = infocenter}} -\DeclareVoidOption{infoleft}{\ykv{infoalign = infoleft}} - -% 封面标题行数 -\DeclareStringOption[onerow]{covertitle} -\DeclareVoidOption{onerow}{\ykv{covertitle = onerow}} -\DeclareVoidOption{tworow}{\ykv{covertitle = tworow}} - -% 默认选项 -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}} - -% 禁用键值对操作 -\ProcessKeyvalOptions*\relax - -% 加载book类,A4大小,正文12磅,单面打印 -\LoadClass[12pt,a4paper,openany,oneside]{book} - -% 使用xelatex编译mtpro2宏包必须加载此宏包 -\RequirePackage{etex} - -% 加载支持中文的ctex宏包 -\RequirePackage[UTF8,space=auto,scheme=plain]{ctex} - -% 正文和数学字体设置 -\RequirePackage{amsmath} -\RequirePackage[T1]{fontenc} -\RequirePackage{newtxtext} -\RequirePackage[mtphrb,mtpcal,zswash,subscriptcorrection,uprightGreek,nofontinfo]{mtpro2} -\renewcommand{\rmdefault}{ptm} -\RequirePackage[scaled=0.92]{helvet} -\RequirePackage{type1cm} -\RequirePackage{lipsum} - -% 使字体设置生效,排除其他干扰 -\RequirePackage{mathdesign} - -% 设置中文加粗字体 -\setCJKfamilyfont{kai}[AutoFakeBold]{simkai.ttf} -\newcommand*{\kai}{\CJKfamily{kai}} -\setCJKfamilyfont{song}[AutoFakeBold]{SimSun} -\newcommand*{\song}{\CJKfamily{song}} - -% 行间距,设为1.3,due to 12pt与小四号字的大小微差 -\linespread{1.3} - -%%===============常用宏包========================= -% 在一页上可以使用单栏和多栏样式 -\RequirePackage{multicol} -% 自定义颜色 -\RequirePackage{xcolor} -% 排版代码 -\RequirePackage{fancyvrb} -% 自定义目录格式 -\RequirePackage{titletoc} -% 设置颜色 -\RequirePackage{xcolor} -% 插入图片 -\RequirePackage{graphicx} -% 表格 -\RequirePackage{array} -% 长表格 -\RequirePackage{longtable} -% booktabs 提供了\toprule 等命令. -\RequirePackage{booktabs} -% multirow 支持在表格中跨行 -\RequirePackage{multirow} -% 调整间隔, 让表格更好看些 -\RequirePackage{bigstrut} -% 在跨行表格中输入定界符 -\RequirePackage{bigdelim} -% 保护脆落命令 -\RequirePackage{cprotect} -% 定制列表环境 -\RequirePackage{enumitem} -% 设置代码环境 -\RequirePackage{listings} -% 超链接格式设置 -\RequirePackage{hyperref} -% 首行缩进 -\RequirePackage{indentfirst} -\setlength\parindent{2em} -% 设置浮动体的标题 -\RequirePackage{caption} -% 浮动环境 -\RequirePackage{float} -% 下划线 -\RequirePackage{ulem} -% 尺寸计算 -\RequirePackage{calc} -% tikz绘图 -\RequirePackage{tikz} -% 公式字母加粗 -\RequirePackage{bm} -% 子公式编号 -\RequirePackage{cases} -% 单位 -\RequirePackage{siunitx} -% 排版代码 -\RequirePackage{listings} -\renewcommand{\ttdefault}{cmtt} -% 定义<ystyle>样式 -\lstdefinestyle{ystyle}{ - basicstyle=% - \ttfamily - \lst@ifdisplaystyle\small\fi -} -% 使用<ystyle>样式 -\lstset{basicstyle = \ttfamily, style = ystyle, breaklines = true} -% 定义代码颜色 -\definecolor{lightgrey}{rgb}{0.9,0.9,0.9} -\definecolor{frenchplum}{RGB}{190,20,83} -\definecolor{winered}{rgb}{0.5,0,0} -% 设置LaTeX代码排版样式 -\lstset{language = [LaTeX]TeX, - texcsstyle = *\color{winered}, - numbers = none, - mathescape, - breaklines = true, - keywordstyle = \color{winered}, - commentstyle = \color{gray}, - emph = {Yangpaper,fontenc,fontspec,xeCJK,FiraMono,xunicode,newtxmath, figure,fig,image,img,table,itemize,enumerate,newtxtext,newtxtt,ctex, microtype,description,times,newtx,booktabs,tabular,PDFLaTeX, XeLaTeX,type1cm,BibTeX,device,color,mode,lang,amsthm,tcolorbox, titlestyle,cite,marginnote,ctex,listings,base,subnumcases}, - emphstyle = {\color{frenchplum}}, - morekeywords = {DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule, institute,version,includegraphics,setmainfont,setsansfont,setmonofont, setCJKmainfont,setCJKsansfont,setCJKmonofont,RequirePackage,figref, tabref,email,maketitle,keywords,definecolor,extrainfo,logo,cover,subtitle, appendix,chapter,hypersetup,mainmatter,frontmatter,tableofcontents, Yangpar,heiti,kaishu,lstset,pagecolor,zhnumber,marginpar,part, equote,marginnote}, - frame = single, - tabsize = 2, - rulecolor = \color{black}, - framerule = 0.2pt, - columns = flexible, - % backgroundcolor = \color{lightgrey} -} -%%============================================== - -% 定义输入常量<tokens> -% 论文标题 -\newcommand\Yang@tokens@thesistitle{} -% 关键词,中文 -\newcommand\Yang@tokens@keywords{} -% 关键词,英文 -\newcommand\Yang@tokens@keywordsen{} -% 论文类别 -\newcommand*\Yang@tokens@papercategory{} -% 学校名称 -\newcommand*\Yang@tokens@schoolname{} -% 院系 -\newcommand*\Yang@tokens@departname{} -% 班级 -\newcommand*\Yang@tokens@classnumber{} -% 日期 -\newcommand*\Yang@tokens@dateinput{} -% 姓名 -\newcommand*\Yang@tokens@authorname{} -% 学号 -\newcommand*\Yang@tokens@studentID{} -% 专业 -\newcommand*\Yang@tokens@majorin{} -% 指导教师 -\newcommand*\Yang@tokens@instructor{} -% 第一行标题 -\newcommand*\Yang@tokens@titleone{} -% 第二行标题 -\newcommand*\Yang@tokens@titletwo{} - -% 定义与常量有关的新命令 -% 输入论文标题 -\newcommand*\thesistitle[1]{% - \renewcommand{\Yang@tokens@thesistitle}{#1}} -% 输入论文类别 -\newcommand*\papercategory[1]{% - \renewcommand{\Yang@tokens@papercategory}{#1}} -% 输入校名 -\newcommand*\schoolname[1]{% - \renewcommand{\Yang@tokens@schoolname}{#1}} -% 输入院系名称 -\newcommand*\departname[1]{% - \renewcommand{\Yang@tokens@departname}{#1}} -% 输入班级 -\newcommand*\classnumber[1]{% - \renewcommand{\Yang@tokens@classnumber}{#1}} -% 输入日期 -\newcommand*\dateinput[1]{% - \renewcommand{\Yang@tokens@dateinput}{#1}} -% 输入姓名 -\newcommand*\authorname[1]{% - \renewcommand{\Yang@tokens@authorname}{#1}} -% 输入学号 -\newcommand*\studentID[1]{% - \renewcommand{\Yang@tokens@studentID}{#1}} -% 输入专业 -\newcommand*\majorin[1]{% - \renewcommand{\Yang@tokens@majorin}{#1}} -% 输入指导教师 -\newcommand*\instructor[1]{% - \renewcommand{\Yang@tokens@instructor}{#1}} -% 输入第一行标题 -\newcommand*\titleone[1]{% - \renewcommand{\Yang@tokens@titleone}{#1}} -% 输入第二行标题 -\newcommand*\titletwo[1]{% - \renewcommand{\Yang@tokens@titletwo}{#1}} - -% 定义常量的值 -% 中文标题名称设置 - -\renewcommand\listfigurename{插图目录} -\renewcommand\listtablename{附表目录} -\renewcommand\abstractname{摘\quad 要} -\newcommand{\keywordsname}{关键词} -\newcommand{\keywordsenname}{Keywords} -%%中文结构名字 -\renewcommand{\contentsname}{目\quad 录} -\renewcommand{\figurename}{图} -\renewcommand{\tablename}{表} -\renewcommand{\partname}{部分} -\renewcommand{\listfigurename}{插图目录} -\renewcommand{\listtablename}{表格目录} -\renewcommand{\bibname}{参考文献} -\renewcommand{\appendixname}{附录} -\renewcommand{\indexname}{索\quad 引} - -\newcommand{\notename}{笔记} -\renewcommand*{\proofname}{证明} -\newcommand{\problemname}{例题} -\newcommand{\definitionname}{定义} -\newcommand{\theoremname}{定理} -\newcommand{\axiomname}{公理} -\newcommand{\postulatename}{公设} -\newcommand{\lemmaname}{引理} -\newcommand{\propositionname}{命题} -\newcommand{\corollaryname}{推论} -\newcommand{\examplename}{例} -\newcommand{\exercisename}{练习} -\newcommand{\remarkname}{注} -\newcommand{\assumptionname}{假设} -\newcommand{\conclusionname}{结论} -\newcommand{\solutionname}{解} -\newcommand{\propertyname}{性质} - -% 中英字号转换 -\def\Yang@def@fontsize#1#2{% - \expandafter\newcommand\csname #1\endcsname[1][1.3]{% - \fontsize{#2}{##1\dimexpr #2}\selectfont}} - -% 定义字号 -\Yang@def@fontsize{chuhao}{42bp} -\Yang@def@fontsize{xiaochu}{36bp} -\Yang@def@fontsize{yihao}{26bp} -\Yang@def@fontsize{xiaoyi}{24bp} -\Yang@def@fontsize{erhao}{22bp} -\Yang@def@fontsize{xiaoer}{18bp} -\Yang@def@fontsize{sanhao}{16bp} -\Yang@def@fontsize{xiaosan}{15bp} -\Yang@def@fontsize{sihao}{14bp} -\Yang@def@fontsize{banxiaosi}{13bp} -\Yang@def@fontsize{xiaosi}{12bp} -\Yang@def@fontsize{dawu}{11bp} -\Yang@def@fontsize{wuhao}{10.5bp} -\Yang@def@fontsize{xiaowu}{9bp} -\Yang@def@fontsize{liuhao}{7.5bp} -\Yang@def@fontsize{xiaoliu}{6.5bp} -\Yang@def@fontsize{qihao}{5.5bp} -\Yang@def@fontsize{bahao}{5bp} - -% 图片搜索目录 -\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}{./front/}} - -% 页面设置 -\RequirePackage{geometry} -\geometry{ - a4paper, - left=30mm, - right=30mm, - top=41mm, - bottom=30mm, - headheight = 2.17cm, - headsep = 1mm, - footskip = 0cm, -} - -% 超链接设置 -\RequirePackage{hyperref} -\hypersetup{ - breaklinks, - unicode, - linktoc=all, - bookmarksnumbered=true, - bookmarksopen=true, - pdfsubject=\@author \@title Book, - pdftitle = {哈尔滨工业大学(深圳)本科毕业设计(论文)}, - pdfauthor = {\@author}, - pdfkeywords={YangBook}, - pdfcreator={XeLaTeX with YangThesis class}, - colorlinks, - linkcolor=black, - citecolor=black, - plainpages=false, - pdfstartview=FitH, - pdfborder={0 0 0}, -} - -% 章节设置 -\RequirePackage[pagestyles]{titlesec} -\RequirePackage{apptools} -\RequirePackage[toc,page]{appendix} - -% 更改章节编号样式 -\setcounter{secnumdepth}{3} -\renewcommand{\chaptername}{第 \thechapter\;章} - -% 设置章节标题样式 -\titleformat{\chapter}[hang]{\centering\heiti} -{\filcenter\xiaoer\enspace\heiti{\IfAppendix{\appendixname}{\chaptername}\enspace}}{1pt}{\xiaoer} - -% 设置节标题样式 -\titleformat{\section}[hang]{\heiti} -{\xiaosan\heiti{\thesection}\enspace}{1pt}{\xiaosan\heiti\filright} - -% 设置条标题样式 -\titleformat{\subsection}[hang]{\heiti} -{\sihao\heiti\thesubsection\enspace}{1pt}{\sihao\heiti\filright} - -% 设置四级标题样式 -\titleformat{\subsubsection}[hang]{\heiti} -{\xiaosi\heiti\thesubsubsection\enspace}{1pt}{\xiaosi\heiti\filright} - -% 设置标题与上下文间距 -% \titlespacing*{<command>}{<left>}{<before-sep>}{<after-sep>}[<right-sep>] -\titlespacing{\chapter}{0pt}{0bp}{14.4bp} -\titlespacing{\section}{0pt}{7.5bp}{7.5bp} -\titlespacing{\subsection}{0pt}{7bp}{7bp} -\titlespacing{\subsubsection}{0pt}{6bp}{6bp} - -% 图表标题设置,字号为small,分割符为空格 -\RequirePackage[font=small,labelsep=quad]{caption} - -% 标题与图表的间距为3pt -\captionsetup[table]{skip=3pt} -\captionsetup[figure]{skip=10pt} - -% 图表的引用格式 -\newcommand\figref[1]{图\ref{#1}} -\newcommand\tabref[1]{表\ref{#1}} -\newcommand\equref[1]{式(\ref{#1})} - -% 设置列表环境各项间无自动间距 -\setlist{nolistsep} - -% 定义各类定理样式 -\RequirePackage{amsthm} -\let\proof\relax -\let\endproof\relax - -% 定义新定义样式 -\newtheoremstyle{ydefstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} - -% 定义新定理样式 -\newtheoremstyle{ythmstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} - -% 定义新命题样式 -\newtheoremstyle{yprostyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} - -% 应用定义样式 -\theoremstyle{ydefstyle} -\newtheorem{ydefinition}{\definitionname }[chapter] - -% 应用定理样式 -\theoremstyle{ythmstyle} -\newtheorem{ytheorem}{\theoremname }[chapter] -\newtheorem{ylemma}{\lemmaname }[chapter] -\newtheorem{ycorollary}{\corollaryname }[chapter] -\newtheorem{ypostulate}{\postulatename }[chapter] -\newtheorem{yaxiom}{\axiomname }[chapter] - -% 应用命题样式 -\theoremstyle{yprostyle} -\newtheorem{yproposition}{\propositionname }[chapter] - -% 定义新定理环境 -\newenvironment{theorem}[2] - {\ifstrempty{#1}{\ytheorem}{\ytheorem[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endytheorem} - -% 定义新定义环境 -\newenvironment{definition}[2] - {\ifstrempty{#1}{\ydefinition}{\ydefinition[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endydefinition} - -% 定义新引理环境 -\newenvironment{lemma}[2] - {\ifstrempty{#1}{\ylemma}{\ylemma[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endylemma} - -% 定义新推论环境 -\newenvironment{corollary}[2] - {\ifstrempty{#1}{\ycorollary}{\ycorollary[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endycorollary} - -% 定义新公设环境 -\newenvironment{postulate}[2] - {\ifstrempty{#1}{\ypostulate}{\ypostulate[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endypostulate} - -% 定义新公理环境 -\newenvironment{axiom}[2] - {\ifstrempty{#1}{\yaxiom}{\yaxiom[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endyaxiom} - -% 定义新命题环境 -\newenvironment{proposition}[2] - {\ifstrempty{#1}{\yproposition}{\yproposition[#1]}\ifstrempty{#2}{}{\label{#2}}} - {\endyproposition} - -% 定义新注解环境 -\newenvironment{note}{ - \par\noindent\textbf{\notename\,} - \itshape}{\par} - -% 定义新证明环境 -\newenvironment{proof}{ - \par\noindent\textbf{\proofname\;} -}{\hfill$\Box$\quad\par} - -% 定义新解答环境 -\newenvironment{solution}{\medskip\par\noindent\textbf{\solutionname} \itshape}{\par} - -% 定义新注释环境 -\newenvironment{remark}{\noindent\textbf{\remarkname}}{\par} - -% 定义新假设环境 -\newenvironment{assumption}{\par\noindent\textbf{\assumptionname}}{\par} - -% 定义新结论环境 -\newenvironment{conclusion}{\par\noindent\textbf{\conclusionname}}{\par} - -% 定义新性质环境 -\newenvironment{property}{\par\noindent\textbf{\propertyname}}{\par} - - -% 重定义<\maketitle>命令 -\renewcommand{\maketitle}{\par - \begingroup - \newgeometry{left=20mm,right=20mm,top=30mm,bottom=35mm} - \newpage - % 禁止图片位于页面最上方 - \global\@topnum\z@ - \@maketitle % 下面再设置封面具体内容 - \endgroup - % 先取消原来封面样式的所有设置,以便后面重写此命令 - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax -} - -% 定义封面具体内容 -\newdimen\infowidth -\infowidth = 6.5cm -\def\@maketitle{% - \newpage - % 开始写封面 - \thispagestyle{empty} - \vspace*{2cm} - %%------------------------ - \begin{center} - \ifdefstring{\Yang@covertitle}{tworow}{ - \parbox[t][1.4cm][t]{\textwidth}{ - \begin{center}\erhao[0]\bfseries\Yang@tokens@titleone\end{center} - }\par - \parbox[t][2.5cm][t]{\textwidth}{ - \begin{center}\erhao[0]\bfseries\Yang@tokens@titletwo\end{center} - }\par - }{\relax} - \ifdefstring{\Yang@covertitle}{onerow}{ - \parbox[t][3.4cm][t]{\textwidth}{ - \begin{center}\erhao[0]\bfseries\Yang@tokens@thesistitle\end{center} - } - }{\relax} - \parbox[t][8.7cm][t]{\textwidth}{ - \begin{center}\xiaoer[0]\song\textbf{\ziju{0.2}\Yang@tokens@authorname}\end{center} - } - \begin{center} - \bfseries - \begin{tabular}{rl} -{\xiaosi 学\hphantom{教师}院:} & \xiaosi\Yang@tokens@departname\\[14pt] -{\xiaosi 学\hphantom{教师}号:} & \xiaosi\Yang@tokens@studentID - \end{tabular} - \hspace{0.5cm} - \begin{tabular}{rl} -{\xiaosi 专\hphantom{教师}业:} & \xiaosi\Yang@tokens@majorin\\[14pt] -{\xiaosi 指导教师:} & \xiaosi\Yang@tokens@instructor - \end{tabular} - \end{center} - % 日期 - \vspace{2.6cm} - {\xiaosi[0]\song\textbf{2020年7月}} - \end{center} - %%---------------------------- -%% 第二页 -\clearpage -\thispagestyle{empty} - \vspace*{0.8cm} - \centering\includegraphics[width=8cm]{HITSZname} - \vspace{1.3cm} - \begin{center} - \centering\includegraphics[width=10.5cm]{thesistitle} - \vfill - \parbox[t][14.2cm][b]{\textwidth} - {\heiti\xiaosan - \begin{center} \renewcommand{\arraystretch}{2.6} \bfseries - % 居中对齐 - \ifdefstring{\Yang@infoalign}{infocenter}{ - \begin{tabular}{l@{\ \ }c} - - {\xiaoer 题\hphantom{\ 导\ \ \ }目} & \underline{\makebox[\infowidth]{\xiaoer \Yang@tokens@titleone}}\\ - & \underline{\makebox[\infowidth]{\xiaoer \Yang@tokens@titletwo}}\\ - & \\ - {\xiaosan 专\hphantom{\ 导\ 教\ }业} & \underline{\makebox[\infowidth]{\xiaosan\Yang@tokens@majorin}}\\ - {\xiaosan 学\hphantom{\ 导\ 教\ }号} & \underline{\makebox[\infowidth]{\xiaosan\Yang@tokens@studentID}}\\ - {\xiaosan 学\hphantom{\ 导\ 教\ }生} & \underline{\makebox[\infowidth]{\xiaosan\Yang@tokens@authorname}}\\ - {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth]{\xiaosan\Yang@tokens@instructor}}\\ - {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth]{\xiaosan\Yang@tokens@dateinput}} - \end{tabular} \renewcommand{\arraystretch}{1} - }{\relax} - % 左对齐 - \ifdefstring{\Yang@infoalign}{infoleft}{ - \begin{tabular}{l@{\ \ }c} - - {\xiaoer 题\hphantom{\ 导\ \ \ }目} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaoer \Yang@tokens@titleone}}\\ - & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaoer \Yang@tokens@titletwo}}\\ - & \\ - {\xiaosan 专\hphantom{\ 导\ 教\ }业} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaosan\Yang@tokens@majorin}}\\ - {\xiaosan 学\hphantom{\ 导\ 教\ }号} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaosan\Yang@tokens@studentID}}\\ - {\xiaosan 学\hphantom{\ 导\ 教\ }生} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaosan\Yang@tokens@authorname}}\\ - {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaosan\Yang@tokens@instructor}}\\ - {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth][l]{\hspace*{1em}\xiaosan\Yang@tokens@dateinput}} - \end{tabular} \renewcommand{\arraystretch}{1} - }{\relax} - \end{center} - } - \end{center} - \restoregeometry - \clearpage -} - -%% 中文摘要环境 -\newenvironment{abstract}{\chapter*{\abstractname} -\addcontentsline{toc}{chapter}{\abstractname} -}{\if@twocolumn\else\null\fi} - -% 中文关键词环境 -\newcommand\keywords[1]{% - \renewcommand{\Yang@tokens@keywords}{#1} - {\vskip18pt - \hspace{-30bp}\begin{tabular}{lp{132mm}} - {\zihao{-4}\heiti\keywordsname:}& - {\xiaosi\Yang@tokens@keywords} - \end{tabular}} - } - -% 英文摘要环境 -\newenvironment{abstracten}{\chapter*{\bfseries Abstract} -\addcontentsline{toc}{chapter}{ABSTRACT} -}{\if@twocolumn\else\null\fi} - -% 英文关键词环境 -\newcommand\keywordsen[1]{% - \renewcommand{\Yang@tokens@keywordsen}{#1} - {\vskip 18pt - \hspace{-30bp}\begin{tabular}{lp{127mm}} - {\zihao{-4}\bf\keywordsenname:}& - {\xiaosi\Yang@tokens@keywordsen} - \end{tabular}} - } - -% 定义原创性声明命令 -\newcommand{\declaration}{\par - \begingroup - \@declaration - \endgroup -} - -% 定义原创性声明具体内容 -\def\@declaration{ -\chapter*{\sanhao 哈尔滨工业大学(深圳)本科毕业设计(论文)原创性声明} -\addcontentsline{toc}{chapter}{原创性声明}\par -本人郑重声明:在哈尔滨工业大学(深圳)攻读学士学位期间,所提交的毕业设计(论文)《\Yang@tokens@thesistitle》,是本人在导师指导下独立进行研究工作所取得的成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明,其它未注明部分不包含他人已发表或撰写过的研究成果,不存在购买、由他人代写、剽窃和伪造数据等作假行为。 -\par -本人愿为此声明承担法律责任。\par -\vspace{30pt} -\hspace{6em}作者签名:\hspace{8em}日期:\hspace{3em}年\hspace{1.5em}月\hspace{1.5em}日 -} - -% 定义附录,编号格式为大写字母 -\renewcommand\appendix{\par - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \gdef\thesection{\appendixname\@Alph\c@section}} - -% 重定义参考文献环境 -\renewenvironment{thebibliography}[1] - {\chapter*{\bibname}% - \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -% 定义页眉页脚 -\RequirePackage{fancyhdr} -\RequirePackage{lastpage} -\pagestyle{fancy} -% 页眉 -\lhead{} -\chead{\wuhao 哈尔滨工业大学(深圳)本科毕业设计(论文)} -\rhead{} -% 页脚 -\lfoot{} -\cfoot{\wuhao -\thepage-} -\rfoot{} - -% 定义页眉双横线样式 -% 注意下面代码中的<%>不能删 -\newcommand{\makeheadrule}{% -\makebox[0pt][l]{\rule[1mm]{\headwidth}{0.4mm}}% -\rule[0.35\baselineskip]{\headwidth}{0.8mm}} - -% 定义页眉横线为双横线 -\renewcommand{\headrule}{% -{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi% -\makeheadrule}} - -% 设置目录格式,目录只有三级 -% 1级目录格式 -\titlecontents{chapter}[0pt]{\vspace{1mm}\heiti} -{第\thecontentslabel 章\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} -% 2级目录格式 -\titlecontents{section}[25pt]{\songti} -{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} -% 3级目录格式 -\titlecontents{subsection}[47pt]{\songti} -{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} - -% 修改表格字号,注意tabular要放在table环境里 -\BeforeBeginEnvironment{tabular}{\wuhao} -% 修改表格与后文间距,缩短1cm -\AfterEndEnvironment{table}{\vspace{-1cm}} - -% 新计数器,编排表格编号用 -\newcounter{rowno} - -% 使公式图表的编号随章节编号更新 -%\numberwithin{equation}{chapter} -%\numberwithin{figure}{chapter} -%\numberwithin{table}{chapter} - -% 设置图表公式编号格式为1-1 -\renewcommand{\thefigure}{\arabic{chapter}-\arabic{figure}} -\renewcommand{\thetable}{\arabic{chapter}-\arabic{table}} -\renewcommand{\theequation}{\arabic{chapter}-\arabic{equation}} - -% 使用tikz配置流程图基本图形 -\usetikzlibrary{shapes.geometric, arrows} -% 开始 -\tikzstyle{startstop} = [rectangle, rounded corners, minimum width = 2cm, minimum height=1cm,text centered, draw = black] -% 输入输出 -\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=2cm, minimum height=1cm, text centered, draw=black] -% 过程 -\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black] -% 判断 -\tikzstyle{decision} = [diamond, aspect = 3, text centered, draw=black] -% 箭头形式 -\tikzstyle{arrow} = [->,>=stealth] - -% 参考文献标号为上标 -\newcommand{\upcite}[1]{\textsuperscript{\textsuperscript{\cite{#1}}}} - -% 设置脚注编号格式 -\renewcommand{\thefootnote}{\fnsymbol{footnote}} - -% 解决book类文档章首页和目录页没有页眉页脚的问题 -\makeatletter -\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi - \thispagestyle{fancy} % original style: plain - \global\@topnum\z@ - \@afterindentfalse - \secdef\@chapter\@schapter} -\makeatother - -%%=====新数学命令================================ -\newcommand\dif{\text{d}} -\newcommand\no{\noindent} -\newcommand\dis{\displaystyle} -\newcommand\ls{\leqslant} -\newcommand\gs{\geqslant} - -\newcommand\limit{\dis\lim\limits} -\newcommand\limn{\dis\lim\limits_{n\to\infty}} -\newcommand\limxz{\dis\lim\limits_{x\to0}} -\newcommand\limxi{\dis\lim\limits_{x\to\infty}} -\newcommand\limxpi{\dis\lim\limits_{x\to+\infty}} -\newcommand\limxni{\dis\lim\limits_{x\to-\infty}} -\newcommand\limtpi{\dis\lim\limits_{t\to+\infty}} -\newcommand\limtni{\dis\lim\limits_{t\to-\infty}} - -\newcommand\sumn{\dis\sum\limits_{n=1}^{\infty}} -\newcommand\sumnz{\dis\sum\limits_{n=0}^{\infty}} - -\newcommand\sumi{\dis\sum\limits_{i=1}^{\infty}} -\newcommand\sumiz{\dis\sum\limits_{i=0}^{\infty}} -\newcommand\sumin{\dis\sum\limits_{i=1}^{n}} -\newcommand\sumizn{\dis\sum\limits_{i=0}^{n}} - -\newcommand\sumk{\dis\sum\limits_{k=1}^{\infty}} -\newcommand\sumkz{\dis\sum\limits_{k=0}^{\infty}} -\newcommand\sumkn{\dis\sum\limits_{k=0}^n} -\newcommand\sumkfn{\dis\sum\limits_{k=1}^n} - -\newcommand\pzx{\dis\frac{\partial z}{\partial x}} -\newcommand\pzy{\dis\frac{\partial z}{\partial y}} - -\newcommand\pfx{\dis\frac{\partial f}{\partial x}} -\newcommand\pfy{\dis\frac{\partial f}{\partial y}} - -\newcommand\pzxx{\dis\frac{\partial^2 z}{\partial x^2}} -\newcommand\pzxy{\dis\frac{\partial^2 z}{\partial x\partial y}} -\newcommand\pzyx{\dis\frac{\partial^2 z}{\partial y\partial x}} -\newcommand\pzyy{\dis\frac{\partial^2 z}{\partial y^2}} - -\newcommand\pfxx{\dis\frac{\partial^2 f}{\partial x^2}} -\newcommand\pfxy{\dis\frac{\partial^2 f}{\partial x\partial y}} -\newcommand\pfyx{\dis\frac{\partial^2 f}{\partial y\partial x}} -\newcommand\pfyy{\dis\frac{\partial^2 f}{\partial y^2}} - -\newcommand\intzi{\dis\int_{0}^{+\infty}} -\newcommand\intd{\dis\int} -\newcommand\intab{\dis\int_a^b} - -\newcommand{\degree}{^\circ} - -\newcommand\ma{\mathcal{A}} -\newcommand\mb{\mathcal{B}} -\newcommand\mc{\mathcal{C}} -\newcommand\me{\mathcal{E}} -\newcommand\mg{\mathcal{g}} - -\newcommand\mcc{\mathbb{C}} -\newcommand\mrr{\mathbb{R}} -\newcommand\mzz{\mathbb{Z}} - -\newcommand\mx{\bf{x}} -\newcommand\mX{\bf{X}} -\newcommand\my{\bf{y}} -\newcommand\mY{\bf{Y}} -%%============================================= - -%%=====定义新数学符号=============================== -\DeclareMathOperator{\sgn}{sgn} -\DeclareMathOperator{\arccot}{arccot} -\DeclareMathOperator{\arccosh}{arccosh} -\DeclareMathOperator{\arcsinh}{arcsinh} -\DeclareMathOperator{\arctanh}{arctanh} -\DeclareMathOperator{\arccoth}{arccoth} -\DeclareMathOperator{\grad}{\bf{grad}} -\DeclareMathOperator{\argmax}{argmax} -\DeclareMathOperator{\argmin}{argmin} -\DeclareMathOperator{\diag}{diag} -\DeclareMathOperator{\csign}{csign} -%=============================================== - -%%=============================================== -%% End of file `HITSZThesis.cls' -%%===============================================
\ No newline at end of file diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.dtx b/macros/latex/contrib/hitszthesis/hitszthesis.dtx new file mode 100644 index 0000000000..ffb6069343 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/hitszthesis.dtx @@ -0,0 +1,2401 @@ +% \iffalse meta-comment +% +% Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{hitszthesis.dtx}[2020/02/18 v2.0 A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen (HITSZ) ] +\documentclass{ltxdoc} +\usepackage{dtx-style} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \GetFileInfo{\jobname.dtx} +% +% \DoNotIndex{\newenvironment,\@bsphack,\@empty,\@esphack,\sfcode} +% \DoNotIndex{\addtocounter,\label,\let,\linewidth,\newcounter} +% \DoNotIndex{\noindent,\normalfont,\par,\parskip,\phantomsection} +% \DoNotIndex{\providecommand,\ProvidesPackage,\refstepcounter} +% \DoNotIndex{\RequirePackage,\setcounter,\setlength,\string,\strut} +% \DoNotIndex{\textbackslash,\texttt,\ttfamily,\usepackage} +% \DoNotIndex{\begin,\end,\begingroup,\endgroup,\par,\\} +% \DoNotIndex{\if,\ifx,\ifdim,\ifnum,\ifcase,\else,\or,\fi} +% \DoNotIndex{\let,\def,\xdef,\edef,\newcommand,\renewcommand} +% \DoNotIndex{\expandafter,\csname,\endcsname,\relax,\protect} +% \DoNotIndex{\Huge,\huge,\LARGE,\Large,\large,\normalsize} +% \DoNotIndex{\small,\footnotesize,\scriptsize,\tiny} +% \DoNotIndex{\normalfont,\bfseries,\slshape,\sffamily,\interlinepenalty} +% \DoNotIndex{\textbf,\textit,\textsf,\textsc} +% \DoNotIndex{\hfil,\par,\hskip,\vskip,\vspace,\quad} +% \DoNotIndex{\centering,\raggedright,\ref} +% \DoNotIndex{\c@secnumdepth,\@startsection,\@setfontsize} +% \DoNotIndex{\ ,\@plus,\@minus,\p@,\z@,\@m,\@M,\@ne,\m@ne} +% \DoNotIndex{\@@par,\DeclareOperation,\RequirePackage,\LoadClass} +% \DoNotIndex{\AtBeginDocument,\AtEndDocument} +% \DoNotIndex{\widowpenalty,\vfill,\usetikzlibrary,\usecounter} +% \DoNotIndex{\underline,\to,\text,\textsuperscript,\textwidth} +% \DoNotIndex{\thanks,\subsubsection,\subsection,\sloppy,\rule} +% \DoNotIndex{\ProvidesClass,\makebox,\makeatletter,\makeatother} +% \DoNotIndex{\,,\.,\;} +% +% \changes{v1.0}{2019/9/26}{Initial creation} +% \changes{v1.1}{2019/10/30}{Fix loading \pkg{mtpro2} bug, add \pkg{etex} package} +% \changes{v1.2}{2020/02/15}{Add two options: onerow or tworow, infoleft or infocenter, migrate settings file into cls file, initial commit on ctan} +% \changes{v2.0}{2020/02/18}{Format cls file to dtx file, regulate thesis template for HITSZ} +% +% \def\indexname{索引} +% \def\glossaryname{修改记录} +% \IndexPrologue{\section{\indexname}} +% \GlossaryPrologue{\section{\glossaryname}} +% +% \definecolor{hitcolor}{RGB}{21,95,130} +% \title{\bfseries\color{hitcolor}\hitszthesis:哈尔滨工业大学(深圳)\\ 本科毕业设计(论文)模板} +% \author{{\Large\fangsong 杨敬轩}\\[5pt]\texttt{yanglatex2e@gmail.com}\\[5pt]\texttt{yangjingxuan@stu.hit.edu.cn}} +% \date{\fileversion\ (\filedate)} +% \maketitle\thispagestyle{empty} +% +% \vskip0.5cm +% +% \def\abstractname{\Large 摘要} +% \begin{abstract}\normalsize\vskip0.5cm +% \hitszthesis 宏包旨在建立一个规格严格、功夫到家的哈尔滨工业大学(深圳)学位论文模板,目前只包含本科毕业设计(论文)模板。模板的构建基于 \pkg{hitszthesis.dtx} 与 \pkg{hitszthesis.ins},在使用本模板之前,请仔细阅读\file{hitszthesis.pdf}(本文件)、\file{main.tex}(撰写示例)及\file{main.pdf}(撰写效果)。 +% \end{abstract} +% +% \vskip1.5cm +% \def\abstractname{\Large 免责声明} +% \begin{abstract} +% \normalsize\noindent +% \begin{enumerate} +% \item 本模板的发布遵守 \href{http://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License},使用前请认真阅读协议内 +% 容。 +% \item 本模板为作者根据哈尔滨工业大学(深圳)教务处颁发的《本科毕业设计(论文)撰写规范》、《书写范例》 +% 编写而成,旨在供哈尔滨工业大学(深圳)本科毕业生撰写学位论文使用。 +% \item 哈尔滨工业大学(深圳)教务处只提供毕业论文写作指南,不提供官方模板,也不会授 +% 权第三方模板为官方模板,所以此模板仅为写作指南的参考实现,不保证格式审查老师 +% 不提意见。任何由于使用本模板而引起的论文格式审查问题均与本模板作者无关。 +% \item 任何个人或组织以本模板为基础进行修改、扩展而生成的新的专用模板,请严格遵 +% 守 \href{http://www.latex-project.org/lppl.txt}{\LaTeX\ Project Public License} 协议。由于违犯协议而引起的任何纠纷争端均与 +% 本模板作者无关。 +% \end{enumerate} +% \end{abstract} +% +% +% \clearpage +% \pagestyle{fancy} +% \begin{multicols}{2}[ +% \setlength{\columnseprule}{.4pt} +% \setlength{\columnsep}{18pt}] +% \large +% \tableofcontents +% \end{multicols} +% \clearpage +% +% \section{模板介绍} +% \hitszthesis\ (\textbf{H}arbin \textbf{I}nstitute of \textbf{T}echnology, +% \textbf{S}hen\textbf{Z}hen \LaTeX\ +% \textbf{Thesis} Template) 是为了帮助哈尔滨工业大学(深圳)本科毕业生撰写毕业论文而编写 +% 的 \LaTeX\ 论文模板。 +% +% 本文档将尽量完整的介绍模板的使用方法,如有不清楚之处可以参考示例文档或者根据 +% 第~\ref{sec:howtoask} 节说明提问,有兴趣者可以联系作者参与完善此手册,非常欢迎窝工学子对本代码作出贡献。 +% +% \note[注意:]{模板的作用在于减少论文写作过程中格式调整的时间。前提是遵守模板的 +% 用法,否则即便用了 \textup{\hitszthesis}\ 也难以保证输出的论文符合学校规范。} +% +% +% \section{安装} +% \label{sec:installation} +% +% \hitszthesis\ 已经上传CTAN,将包含在2020年主要的 \TeX\ 发行版中。% 安装方法:打开命令行,输入以下命令即可 +% \begin{shell} +% $ tlmgr install hitszthesis +% \end{shell} +% 阅读本说明文档可以使用以下命令: +% \begin{shell} +% $ texdoc hitszthesis +% \end{shell} +% +% 如果要使用开发版,需自己下载,\hitszthesis\ 相关链接: +% \begin{itemize} +% \item 主页:\href{https://github.com/YangLaTeX/hitszthesis}{GitHub} +% \item 下载:\href{http://www.ctan.org/pkg/hitszthesis}{CTAN} +% \end{itemize} +% +% \subsection{模板的组成} +% 下表列出了 \hitszthesis\ 的主要文件及其功能介绍: +% +% \begin{longtable}{l|p{8cm}} +% \toprule +% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule +% \endfirsthead +% \midrule +% {\heiti 文件(夹)} & {\heiti 功能描述}\\\midrule +% \endhead +% \endfoot +% \endlastfoot +% hitszthesis.ins & \textsc{DocStrip} 驱动文件(开发用) \\ +% hitszthesis.dtx & \textsc{DocStrip} 源文件(开发用)\\\midrule +% hitszthesis.cls & 模板类文件(由上述两个文件生成)\\\midrule +% main.tex & 示例文档主文件\\ +% spine.tex & 书脊示例文档\\ +% figure/ & 示例文档插图路径\\ +% front/ & 示例文档封面插图路径\\ +% hitszthesis.sty & 为示例文档加载其它宏包\\\midrule +% Makefile & Makefile\\ +% latexmkrc & latexmk 配置文件 \\ +% README.md & Readme\\ +% \textbf{hitszthesis.pdf} & 用户手册(本文档)\\\bottomrule +% \end{longtable} +% +% 几点说明: +% \begin{itemize} +% \item \file{hitszthesis.cls} 可由 \file{hitszthesis.ins} +% 和 \file{hitszthesis.dtx} 生成,但为了降低同学们的使用难度,故 +% 将 \file{hitszthesis.cls} 文件一起发布。 +% \item 使用前请一定阅读文档:\file{hitszthesis.pdf}。 +% \end{itemize} +% +% \subsection{生成模板} +% \label{sec:generate-cls} +% \note[提示:]{若使用 \TeX 发行版自带的 \textup{\hitszthesis}\ 或 Github 上发布的版本,可忽 +% 略此节,直接阅读第~\ref{sec:generate-thesis} 节。若下载 CTAN 包或者 Github 开发 +% 代码,请阅读本节了解生成模板文件的步骤。} +% +% 模板解压缩后生成文件夹 \file{hitszthesis-vX.Y}\footnote{\texttt{vX.Y} 为版本 +% 号。},其中包括:模板源文件(\file{hitszthesis.ins} 和 \file{hitszthesis.dtx}),示例文档 +% (\file{main.tex},\file{spine.tex},\file{hitszthesis.sty}\footnote{可能用到的包 +% 以及一些命令定义都放在这里,以免 \file{hitszthesis.cls} 过分臃 +% 肿。},文件夹\file{figure/} 和 \file{front/} 。在使用之前需要先生成模 +% 板文件和配置文件(具体命令细节请参考 \file{README.md} 和 \file{Makefile}): +% +% \begin{shell} +% $ cd hitszthesis-vX.Y +% # 生成 hitszthesis.cls 与 dtx-style.sty +% $ xetex hitszthesis.ins +% +% # 下面的命令用来生成用户手册,首先生成索引 +% $ xelatex hitszthesis.dtx +% $ makeindex -s gind.ist -o hitszthesis.ind hitszthesis.idx +% $ makeindex -s gglo.ist -o hitszthesis.gls hitszthesis.glo +% +% # 最后两次编译生成说明文档 hitszthesis.pdf +% $ xelatex hitszthesis.dtx +% $ xelatex hitszthesis.dtx +% \end{shell} +% +% \subsection{生成论文} +% \label{sec:generate-thesis} +% 本节介绍几种常见的生成论文的方法。用户可根据自己的情况选择。 +% +% \subsubsection{\XeLaTeX} +% \label{sec:xelatex} +% 很多用户对 \LaTeX\ 命令执行的次数不太清楚。一个基本的原则是多次运行 \LaTeX\ 命 +% 令直至不再出现警告。下面给出生成示例文档的详细过程(\texttt{\#} 开头的行为注 +% 释),首先来看推荐的 \texttt{xelatex} 方式: +% \begin{shell} +% # 1. 发现里面的引用关系,文件后缀 .tex 可以省略 +% $ xelatex main +% +% # 2. 编译参考文件源文件,生成 bbl 文件 +% $ bibtex main +% +% # 3. 下面解决引用 +% $ xelatex main +% $ xelatex main # 此时生成完整的 pdf 文件 +% \end{shell} +% +% \subsubsection{latexmk} +% \label{sec:latexmk} +% \texttt{latexmk} 命令支持全自动生成 \LaTeX\ 编写的文档,并且支持使用不同的工具 +% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用 +% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例: +% \begin{shell} +% $ latexmk main.tex # 生成论文 main.pdf +% $ latexmk spine.tex # 生成书脊 spine.pdf +% $ latexmk hitszthesis.dtx # 生成说明文档 hitszthesis.pdf +% $ latexmk -c # 清理编译生成的辅助文件 +% \end{shell} +% +% \subsubsection{GNU make} +% \label{sec:make} +% \note[提示:]{若要使用 \texttt{make} 编译,需自行下载模板。因为 \TeX\ 发行版中 +% 的 \file{Makefile} 不在当前目录。} +% +% 上面的方法虽然不困难,但是每次都输入还是非常麻烦,所以 \hitszthesis\ 提供了一 +% 个 \file{Makefile}。如果可以使用 GNU make 工具, +% 则使用 \texttt{make} 生成文件是最方便的办法。 +% +% \begin{shell} +% $ make clean # 清理辅助文件 +% $ make cls # 生成 hitszthesis.cls +% $ make doc # 生成说明文档 hitszthesis.pdf +% $ make thesis # 生成示例文档 main.pdf +% $ make spine # 生成书脊 spine.pdf +% \end{shell} +% +% \hitszthesis\ 的 \file{Makefile} 默认用 \texttt{latexmk} 调用\texttt{xelatex} 编 +% 译。如有需要可修 +% 改 \file{Makefile} 开头的参数或通过命令行传递参数(请参看 \file{README.md}), +% 进一步还可以修改 \file{latexmkrc} 进行定制。 +% +% \subsection{升级} +% \label{sec:updgrade} +% \hitszthesis\ 升级非常简单,可以通过 \TeX\ 发行版的包管理工具自动更新发行版, +% \begin{shell} +% # 更新 hitszthesis 宏包 +% $ tlmgr update hitszthesis +% # 或者直接更新全部宏包至最新版 +% $ tlmgr update --all +% \end{shell} +% +% 也可以下载最新的开发版,将 \file{hitszthesis.ins},\file{hitszthesis.dtx},拷贝至工作目录覆盖相应的文件,然后运行: +% \begin{shell} +% $ xetex hitszthesis.ins +% \end{shell} +% 生成新的类文件和配置文件即可。 +% +% 还可以直接拷贝 \file{hitszthesis.cls}替换原有文件,避免执行上面的命令行。 +% +% \section{使用说明} +% \label{sec:usage} +% 本手册假定用户已经能处理一般的 \LaTeX\ 文档,并对 \BibTeX\ 有一定了解。如果 +% 从来没有接触过 \TeX\ 和 \LaTeX,建议先学习相关的基础知识。 +% +% \subsection{关于提问} +% \label{sec:howtoask} +% 按照优先级推荐提问的位置如下: +% +% \begin{itemize} +% \item Github Issues: \href{http://github.com/YangLaTeX/hitszthesis/issues}{http://github.com/YangLaTeX/hitszthesis/issues} +% \item QQ group: 1039392552 +% \item Email: \href{mailto:yanglatex2e@gmail.com}{yanglatex2e@gmail.com}, \href{mailto:yangjingxuan@stu.hit.edu.cn}{yangjingxuan@stu.hit.edu.cn} +% \end{itemize} +% +% \subsection{示例文件} +% \label{sec:userguide} +% +% 模板核心文件为:\file{hitszthesis.cls}, +% 但如果没有示例文档会很难下手,所以推荐从模板自带的示例文档入手,其中包括了论文 +% 写作用到的所有命令及其使用方法,只需要用自己的内容进行相应替换就可以。对于不清 +% 楚的命令可以查阅本手册。下面的例子描述了模板中章节的组织形式,来自于示例文档, +% 具体内容可以参考模板附带的 \file{main.tex}。 +% +% \lstinputlisting[style=lstStyleLaTeX]{main.tex} +% +% \subsection{论文选项} +% \label{sec:option} +% +% \DescribeOption{covertitle} +% 选择论文类型,当前支持:\option{onerow},\option{tworow},其中 +% \option{onerow}为默认选项。 +% \begin{latex} +% % 封面标题两行 +% \documentclass[covertitle=tworow]{hitszthesis} +% \end{latex} +% +% \DescribeOption{infoalign} +% 论文封面第二页下划线部分内容对齐方式。可选:\option{infoleft},\option{infocenter},其中\option{infocenter}为默认选项。 +% \begin{latex} +% % 封面第二页信息居左对齐 +% \documentclass[infoalign=infoleft]{hitszthesis} +% \end{latex} +% +% \subsection{引用方式} +% \label{sec:citestyle} +% +% \myentry{引用} +% \DescribeMacro{\upcite} +% 学校要求的参考文献引用有两种模式:(1)上标模式。比如“同样的工作有很 +% 多$^{[1,2]}$\ldots”。(2)正文模式。比如“文[3] 中详细说明了\ldots”。其中上标 +% 模式采用 \cs{upcite}\marg{key},而 \cs{cite}\marg{key} 则用来生成正文模式。 +% +% 关于参考文献表推荐使用 \cs{thebibliography} 环境,虽然有些麻烦, +% 但是避免了使用 \BibTeX 带来的很多格式设置问题。 +% 有余力者可以尝试使用 \BibTeX, +% \BibTeX 默认情况下可以自动识别文献语言, +% 并自动处理文献类型和载体类型标识,也可以手动指定,如: +% \begin{latex} +% @misc{citekey, +% language = {japanese}, +% mark = {Z}, +% medium = {DK}, +% ... +% \end{latex} +% 可选的语言有 english, chinese, japanese, russian。 +% +% \subsection{中文字体} +% \label{sec:chinese-fonts} +% +% \subsubsection{字体配置} +% \label{sec:font-config} +% 模板默认使用 \CTeX\ 的字体配置。关于中文字体安装、配置的所有问题不在本模板讨论 +% 范围。 +% +% \subsubsection{字体命令} +% \label{sec:fontcmds} +% \myentry{字体} +% \DescribeMacro{\songti} +% \DescribeMacro{\fangsong} +% \DescribeMacro{\heiti} +% \DescribeMacro{\kaishu} +% 用来切换宋体、仿宋、黑体、楷体四种基本字体。 +% +% \begin{latex} +% {\songti 乾:元,亨,利贞} +% {\fangsong 初九,潜龙勿用} +% {\heiti 九二,见龙在田,利见大人} +% {\kaishu 九三,君子终日乾乾,夕惕若,厉,无咎} +% \end{latex} +% +% \myentry{字号} +% \DescribeMacro{\chuhao} +% \DescribeMacro{\xiaochu} +% \DescribeMacro{\yihao} +% \DescribeMacro{\xiaoyi} +% \DescribeMacro{\bahao} +% 定义字体大小,分别为: +% +% \begin{center} +% \begin{tabular}{llllll} +% \toprule +% \cs{chuhao} & \cs{xiaochu} & \cs{yihao} & \cs{xiaoyi} & \cs{erhao} & \cs{xiaoer}\\ +% \cs{sanhao} & \cs{xiaosan} & \cs{sihao} & \cs{xiaosi} & \cs{wuhao} & \cs{xiaowu}\\ +% \cs{liuhao} & \cs{xiaoliu} & \cs{qihao} & \cs{bahao}\\\bottomrule +% \end{tabular} +% \end{center} +% +% 使用方法为:\cs{command}\oarg{num},其中 \cs{command} 为字号命令,\meta{num} 为行距。比 +% 如 \cs{xiaosi}[1.5] 表示选择小四字体,行距 1.5 倍。 +% +% \begin{latex} +% {\erhao 二号} +% {\sanhao[1.5] 三号,一点五倍行距} +% {\sihao 四号} +% {\qihao[2] 七号,两倍行距} +% \end{latex} +% +% 也可以使用 \CTeX\ 定义的 \cs{zihao}\marg{num} 来切换字号,具体用法参看其文 +% 档。 +% +% \subsection{封面信息} +% \label{sec:titlepage} +% 封面信息配置方法:每个信息利用命令独立设置,大多数命令的使用方法都是 \cs{command}\marg{arg},例外者将具体指出。 +% +% \myentry{封面信息} +% \DescribeMacro{\thesistitle} +% \cs{thesistitle}\marg{arg},输入论文标题 +% +% \DescribeMacro{\titleone} +% \cs{titleone}\marg{arg},输入论文标题第一行 +% +% \DescribeMacro{\titletwo} +% \cs{titletwo}\marg{arg},输入论文标题第二行 +% +% \DescribeMacro{\schoolname} +% \cs{schoolname}\marg{arg},输入学校名称 +% +% \DescribeMacro{\departname} +% \cs{departname}\marg{arg},输入学院名称 +% +% \DescribeMacro{\majorin} +% \cs{majorin}\marg{arg},输入专业 +% +% \DescribeMacro{\authorname} +% \cs{authorname}\marg{arg},输入姓名 +% +% \DescribeMacro{\studentID} +% \cs{studentID}\marg{arg},输入学号 +% +% \DescribeMacro{\dateinput} +% \cs{dateinput}\marg{arg},输入答辩日期 +% +% \DescribeMacro{\instructor} +% \cs{instructor}\marg{arg},输入指导教师 +% +% \subsubsection{摘要} +% \myentry{摘要关键词} +% \DescribeEnv{abstract} +% \DescribeEnv{abstracten} +% \DescribeMacro{\keywords} +% \DescribeMacro{\keywordsen} +% \begin{latex} +% \begin{abstract} +% 摘要请写在这里... +% \keywords{xxx} +% \end{abstract} +% +% \begin{abstracten} +% Here comes the abstract in English... +% \keywordsen{xxx} +% \end{abstracten} +% \end{latex} +% +% \subsection{目录和索引表} +% 目录、插图和表格等索引命令分别如下, +% 将其插入到期望的位置即可 +% (带星号的命令表示对应的索引表不会出现在目录中): +% +% \myentry{目录索引} +% \DescribeMacro{\tableofcontents} +% \DescribeMacro{\listoffigures} +% \DescribeMacro{\listoffigures*} +% \DescribeMacro{\listoftables} +% \DescribeMacro{\listoftables*} +% \begin{longtable}{ll} +% \toprule +% {\heiti 用途} & {\heiti 命令} \\\midrule +% 目录 & \cs{tableofcontents} \\\midrule +% 插图索引 & \cs{listoffigures} \\ +% & \cs{listoffigures*} \\\midrule +% 表格索引 & \cs{listoftables} \\ +% & \cs{listoftables*} \\\bottomrule +% \end{longtable} +% +% \LaTeX\ 默认支持插图和表格索引,是通过 \cs{caption} 命令完成的,因此它们必须出 +% 现在浮动环境中,否则不被计数。 +% +% 如果不想让某个表格或者图片出现在索引里面,那么请使用命令 \cs{caption*},这 +% 个命令不会给表格编号,也就是出来的只有标题文字而没有“表~xx”,“图~xx”, +% +% \subsection{封底部分} +% +% \subsubsection{原创性声明} +% \myentry{声明} +% \DescribeMacro{\declaration} +% \cs{declaration}会自动生成原创性声明的全部内容,其中签字部分需要打印后手签。 +% +% \subsubsection{附录} +% \myentry{附录} +% \DescribeMacro{\appendix} +% 附录里主要是外文资料以及翻译,放置在 |\appendix| 后面即可。 +% +% \subsection{自定义} +% \label{sec:othercmd} +% +% \subsubsection{数学环境} +% \label{sec:math} +% \hitszthesis\ 定义了常用的数学环境: +% +% \begin{center} +% \begin{tabular}{*{8}{l}}\toprule +% axiom & theorem & definition & proposition & lemma & postulate ¬e& conclusion\\ +% 公理 & 定理 & 定义 & 命题 & 引理 & 公设 &笔记& 结论\\\midrule +% proof & corollary & example & exercise & assumption & remark & problem & property\\ +% 证明 & 推论 & 例& 练习 & 假设 & 注 & 问题 & 性质\\\bottomrule +% \end{tabular} +% \end{center} +% +% 比如: +% \begin{latex} +% \begin{definition} +% 道千乘之国,敬事而信,节用而爱人,使民以时。 +% \end{definition} +% \end{latex} +% 产生(自动编号): +% \medskip +% +% \noindent\framebox[\linewidth][l]{{\heiti 定义~1.1~~~} % {道千乘之国,敬事而信,节用而爱人,使民以时。}} +% +% \smallskip +% 列举出来的数学环境毕竟是有限的,如果想用\emph{胡说}这样的数学环境,那么可以定义: +% \begin{latex} +% \theoremstyle{ydefstyle} +% \newtheorem{ydefinition}{nonsense}[chapter] +% \end{latex} +% +% 然后这样使用: +% \begin{latex} +% \begin{nonsense} +% 契丹武士要来中原夺武林秘笈。—— 慕容博 +% \end{nonsense} +% \end{latex} +% 产生(自动编号): +% +% \medskip +% \noindent\framebox[\linewidth][l]{{\heiti 胡说~1.1~~~} % {契丹武士要来中原夺武林秘笈。—— 慕容博}} +% +% \subsubsection{列表环境} +% \myentry{列表} +% \DescribeEnv{itemize} +% \DescribeEnv{enumerate} +% \DescribeEnv{description} +% 为了适合中文习惯,模板将这三个常用的列表环境用 \pkg{enumitem} 进行了纵向间距压 +% 缩。一方面清除了多余空间,另一方面用户可以自己指定列表环境的样式(如标签符号, +% 缩进等)。细节请参看 \pkg{enumitem} 文档,此处不再赘述。 +% +% \subsection{书脊} +% \myentry{书脊} +% \DescribeMacro{\spine} +% 生成装订的书脊,为竖排格式,命令格式:\cs{spine}\oarg{标题}\oarg{作者}。默认参 +% 数为论文中文题目和中文作者。如果中文题目中没有英文字母,那么直接调用此命令即可。 +% 否则,可参考参看模板示例文件 \file{spine.tex} 进行微调: +% +% \lstinputlisting[style=lstStyleLaTeX]{spine.tex} +% +% \section{致谢} +% \label{sec:thanks} +% 感谢|thuthesis|、|hithesis|、|elegantbook|模板的作者,本模板基于他们改编而来! +% +% 欢迎各位到 \href{http://github.com/YangLaTeX/hitszthesis/}{\hitszthesis\ Github 主页}贡献! +% +% \StopEventually{\PrintChanges\PrintIndex} +% \clearpage +% +% \section{实现细节} +% +% \subsection{基本信息} +% 设置需要的 \LaTeX 版本,定义提供的类文件名称以及说明文字 +% \begin{macrocode} +%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<cls>\ProvidesClass{hitszthesis} +%<cls>[2020/02/18 v2.0 A Bachelor Thesis Template for Harbin Institute of Technology, ShenZhen +%<cls> (HITSZ)] +% \end{macrocode} +% +% 检查编译引擎,要求使用 \XeLaTeX,否则提示错误 +% \begin{macrocode} +\RequirePackage{ifxetex} +\ifxetex\else + \ClassError{hitszthesis}{Please use XeLaTeX to compile the file}{} + \end{document} +\fi +% \end{macrocode} +% +% \subsection{定义选项} +% 加载键值对设置宏包 +% \begin{macrocode} +%<*cls> +\RequirePackage{kvoptions} +% \end{macrocode} +% +% 加载对宏包、环境、命令进行操作的强大宏包 +% \begin{macrocode} +\RequirePackage{etoolbox} +% \end{macrocode} +% +% 设置关键词:|hitsz| +% \begin{macrocode} +\SetupKeyvalOptions{family=hitsz, prefix=hitsz@, setkeys=\kvsetkeys} +% \end{macrocode} +% +% \begin{macro}{\ykv} +% 定义设置关键词命令 \cs{ykv} +% \begin{macrocode} +\newcommand{\ykv}[1]{\kvsetkeys{hitsz}{#1}} +% \end{macrocode} +% \end{macro} +% +% 表格信息对齐 +% \begin{macrocode} +\DeclareStringOption[infocenter]{infoalign} +\DeclareVoidOption{infocenter}{\ykv{infoalign = infocenter}} +\DeclareVoidOption{infoleft}{\ykv{infoalign = infoleft}} +% \end{macrocode} +% +% 封面标题行数 +% \begin{macrocode} +\DeclareStringOption[onerow]{covertitle} +\DeclareVoidOption{onerow}{\ykv{covertitle = onerow}} +\DeclareVoidOption{tworow}{\ykv{covertitle = tworow}} +% \end{macrocode} +% +% 数学字体选择 +% \begin{macrocode} +\DeclareStringOption[newtxmath]{mathfont} +\DeclareVoidOption{newtxmath}{\ykv{mathfont = newtxmath}} +\DeclareVoidOption{mtpro2}{\ykv{mathfont = mtpro2}} +% \end{macrocode} +% +% 默认选项 +% \begin{macrocode} +\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}} +% \end{macrocode} +% +% 禁用键值对操作 +% \begin{macrocode} +\ProcessKeyvalOptions*\relax +% \end{macrocode} +% +% 加载 |book| 类,A4大小,正文12磅,单面打印 +% \begin{macrocode} +\LoadClass[12pt,a4paper,openany,oneside]{book} +% \end{macrocode} +% +% \subsection{加载宏包} +% 使用 \XeLaTeX 编译 \pkg{mtpro2} 宏包必须加载此宏包 +% \begin{macrocode} +\RequirePackage{etex} +% \end{macrocode} +% +% 加载支持中文的 \pkg{ctex} 宏包 +% \begin{macrocode} +\RequirePackage[UTF8,space=auto,scheme=plain]{ctex} +% \end{macrocode} +% +% 正文和数学字体设置 +% \begin{macrocode} +\RequirePackage{amsmath} +\RequirePackage[T1]{fontenc} +\RequirePackage{newtxtext} +\ifdefstring{\hitsz@mathfont}{mtpro2}{ +\RequirePackage[mtphrb,mtpcal,zswash,uprightGreek]{mtpro2} +}{\relax} +\ifdefstring{\hitsz@mathfont}{newtxmath}{ +\RequirePackage{newtxmath} +\let\openbox\relax +}{\relax} +\renewcommand{\rmdefault}{ptm} +\RequirePackage[scaled=0.92]{helvet} +\RequirePackage{type1cm} +\RequirePackage{lipsum} +% \end{macrocode} +% +% 使字体设置生效,排除其他干扰,不一定起作用,但为防万一需要保留 +% \begin{macrocode} +\RequirePackage{mathdesign} +% \end{macrocode} +% +% \begin{macro}{\kai} +% \begin{macro}{\song} +% 设置中文加粗字体 +% \begin{macrocode} +\setCJKfamilyfont{kai}[AutoFakeBold]{simkai.ttf} +\newcommand*{\kai}{\CJKfamily{kai}} +\setCJKfamilyfont{song}[AutoFakeBold]{SimSun} +\newcommand*{\song}{\CJKfamily{song}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\linespread} +% 行间距,设为1.3,due to 12pt与小四号字的大小微差 +% \begin{macrocode} +\linespread{1.3} +% \end{macrocode} +% \end{macro} +% +% 加载常用宏包 +% 在一页上可以使用单栏和多栏样式 +% \begin{macrocode} +\RequirePackage{multicol} +% \end{macrocode} +% +% 排版代码 +% \begin{macrocode} +\RequirePackage{fancyvrb} +% \end{macrocode} +% +% 自定义目录格式 +% \begin{macrocode} +\RequirePackage{titletoc} +% \end{macrocode} +% +% 设置颜色 +% \begin{macrocode} +\RequirePackage{xcolor} +% \end{macrocode} +% +% 插入图片 +% \begin{macrocode} +\RequirePackage{graphicx} +% \end{macrocode} +% +% 表格 +% \begin{macrocode} +\RequirePackage{array} +% \end{macrocode} +% +% 长表格 +% \begin{macrocode} +\RequirePackage{longtable} +% \end{macrocode} +% +% \pkg{booktabs} 提供了\cs{toprule} 等命令 +% \begin{macrocode} +\RequirePackage{booktabs} +% \end{macrocode} +% +% \pkg{multirow} 支持在表格中跨行 +% \begin{macrocode} +\RequirePackage{multirow} +% \end{macrocode} +% +% 调整间隔, 让表格更好看些 +% \begin{macrocode} +\RequirePackage{bigstrut} +% \end{macrocode} +% +% 在跨行表格中输入定界符 +% \begin{macrocode} +\RequirePackage{bigdelim} +% \end{macrocode} +% +% 保护脆落命令 +% \begin{macrocode} +\RequirePackage{cprotect} +% \end{macrocode} +% +% 定制列表环境 +% \begin{macrocode} +\RequirePackage{enumitem} +% \end{macrocode} +% +% 设置代码环境 +% \begin{macrocode} +\RequirePackage{listings} +% \end{macrocode} +% +% 超链接格式设置 +% \begin{macrocode} +\RequirePackage{hyperref} +% \end{macrocode} +% +% \begin{macro}{\parindent} +% 首行缩进 +% \begin{macrocode} +\RequirePackage{indentfirst} +\setlength\parindent{2em} +% \end{macrocode} +% \end{macro} +% +% 设置浮动体的标题 +% \begin{macrocode} +\RequirePackage{caption} +% \end{macrocode} +% +% 浮动环境 +% \begin{macrocode} +\RequirePackage{float} +% \end{macrocode} +% +% 下划线 +% \begin{macrocode} +\RequirePackage{ulem} +% \end{macrocode} +% +% 尺寸计算 +% \begin{macrocode} +\RequirePackage{calc} +% \end{macrocode} +% +% \pkg{tikz} 绘图 +% \begin{macrocode} +\RequirePackage{tikz} +% \end{macrocode} +% +% 公式字母加粗 +% \begin{macrocode} +\RequirePackage{bm} +% \end{macrocode} +% +% 子公式编号 +% \begin{macrocode} +\RequirePackage{cases} +% \end{macrocode} +% +% 书写单位 +% \begin{macrocode} +\RequirePackage{siunitx} +% \end{macrocode} +% +% \pkg{pdfpages} 宏包便于我们插入扫描后的授权页和声明页 PDF 文档。 +% \begin{macrocode} +\RequirePackage{pdfpages} +\includepdfset{fitpaper=true} +% \end{macrocode} +% +% \begin{macro}{\ttdefault} +% 排版代码 +% \begin{macrocode} +\RequirePackage{listings} +\renewcommand{\ttdefault}{cmtt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lstdefinestyle} +% 定义 |ystyle| 样式 +% \begin{macrocode} +\lstdefinestyle{ystyle}{ + basicstyle=% + \ttfamily + \lst@ifdisplaystyle\small\fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lstset} +% 使用 |ystyle| 样式 +% \begin{macrocode} +\lstset{basicstyle = \ttfamily, style = ystyle, breaklines = true} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\definecolor} +% 定义代码颜色 +% \begin{macrocode} +\definecolor{lightgrey}{rgb}{0.9,0.9,0.9} +\definecolor{frenchplum}{RGB}{190,20,83} +\definecolor{winered}{rgb}{0.5,0,0} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lstset} +% 设置 \LaTeX 代码排版样式 +% \begin{macrocode} +\lstset{language = [LaTeX]TeX, + texcsstyle = *\color{winered}, + numbers = none, + mathescape, + breaklines = true, + keywordstyle = \color{winered}, + commentstyle = \color{gray}, + emph = {hitszpaper,fontenc,fontspec,xeCJK,FiraMono,xunicode,newtxmath, + figure,fig,image,img,table,itemize,enumerate,newtxtext,newtxtt, + ctex, microtype,description,times,newtx,booktabs,tabular, + PDFLaTeX,XeLaTeX,type1cm,BibTeX,device,color,mode,lang, + amsthm,tcolorbox,titlestyle,cite,marginnote,ctex,listings,base, + subnumcases}, + emphstyle = {\color{frenchplum}}, + morekeywords = {DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule, + institute,version,includegraphics,setmainfont,setsansfont, + setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont, + RequirePackage,figref, tabref,email,maketitle,keywords,definecolor, + extrainfo,logo,cover,subtitle,appendix,chapter,hypersetup, + mainmatter,frontmatter,tableofcontents, hitszpar,heiti,kaishu,lstset, + pagecolor,zhnumber,marginpar,part, equote,marginnote}, + frame = single, + tabsize = 2, + rulecolor = \color{black}, + framerule = 0.2pt, + columns = flexible, + % backgroundcolor = \color{lightgrey} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{输入信息} +% \subsubsection{定义输入常量} +% \begin{macro}{\hitsz@tokens@thesistitle} +% 论文标题 +% \begin{macrocode} +\newcommand\hitsz@tokens@thesistitle{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@keywords} +% 关键词,中文 +% \begin{macrocode} +\newcommand\hitsz@tokens@keywords{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@keywordsen} +% 关键词,英文 +% \begin{macrocode} +\newcommand\hitsz@tokens@keywordsen{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@papercategory} +% 论文类别 +% \begin{macrocode} +\newcommand*\hitsz@tokens@papercategory{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@schoolname} +% 学校名称 +% \begin{macrocode} +\newcommand*\hitsz@tokens@schoolname{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@departname} +% 院系 +% \begin{macrocode} +\newcommand*\hitsz@tokens@departname{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@dateinput} +% 日期 +% \begin{macrocode} +\newcommand*\hitsz@tokens@dateinput{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@authorname} +% 姓名 +% \begin{macrocode} +\newcommand*\hitsz@tokens@authorname{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@studentID} +% 学号 +% \begin{macrocode} +\newcommand*\hitsz@tokens@studentID{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@majorin} +% 专业 +% \begin{macrocode} +\newcommand*\hitsz@tokens@majorin{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@instructor} +% 指导教师 +% \begin{macrocode} +\newcommand*\hitsz@tokens@instructor{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@titleone} +% 第一行标题 +% \begin{macrocode} +\newcommand*\hitsz@tokens@titleone{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hitsz@tokens@titletwo} +% 第二行标题 +% \begin{macrocode} +\newcommand*\hitsz@tokens@titletwo{} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{定义与常量有关的新命令} +% +% \begin{macro}{\thesistitle} +% 输入论文标题 +% \begin{macrocode} +\newcommand*\thesistitle[1]{% + \renewcommand{\hitsz@tokens@thesistitle}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\papercategory} +% 输入论文类别 +% \begin{macrocode} +\newcommand*\papercategory[1]{% + \renewcommand{\hitsz@tokens@papercategory}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\schoolname} +% 输入校名 +% \begin{macrocode} +\newcommand*\schoolname[1]{% + \renewcommand{\hitsz@tokens@schoolname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\departname} +% 输入院系名称 +% \begin{macrocode} +\newcommand*\departname[1]{% + \renewcommand{\hitsz@tokens@departname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateinput} +% 输入日期 +% \begin{macrocode} +\newcommand*\dateinput[1]{% + \renewcommand{\hitsz@tokens@dateinput}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\authorname} +% 输入姓名 +% \begin{macrocode} +\newcommand*\authorname[1]{% + \renewcommand{\hitsz@tokens@authorname}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\studentID} +% 输入学号 +% \begin{macrocode} +\newcommand*\studentID[1]{% + \renewcommand{\hitsz@tokens@studentID}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\majorin} +% 输入专业 +% \begin{macrocode} +\newcommand*\majorin[1]{% + \renewcommand{\hitsz@tokens@majorin}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\instructor} +% 输入指导教师 +% \begin{macrocode} +\newcommand*\instructor[1]{% + \renewcommand{\hitsz@tokens@instructor}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\titleone} +% 输入第一行标题 +% \begin{macrocode} +\newcommand*\titleone[1]{% + \renewcommand{\hitsz@tokens@titleone}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\titletwo} +% 输入第二行标题 +% \begin{macrocode} +\newcommand*\titletwo[1]{% + \renewcommand{\hitsz@tokens@titletwo}{#1}} +% \end{macrocode} +% \end{macro} +% +% \subsection{定义常量的值} +% \begin{macro}{\listfigurename} +% \begin{macro}{\listtablename} +% \begin{macro}{\abstractname} +% \begin{macro}{\keywordsname} +% \begin{macro}{\keywordsenname} +% \begin{macro}{\contentsname} +% \begin{macro}{\figurename} +% \begin{macro}{\tablename} +% \begin{macro}{\partname} +% \begin{macro}{\bibname} +% \begin{macro}{\appendixname} +% \begin{macro}{\indexname} +% \begin{macro}{\notename} +% \begin{macro}{\proofname} +% \begin{macro}{\problemname} +% \begin{macro}{\definitionname} +% \begin{macro}{\theoremname} +% \begin{macro}{\axiomname} +% \begin{macro}{\postulatename} +% \begin{macro}{\lemmaname} +% \begin{macro}{\propositionname} +% \begin{macro}{\corollaryname} +% \begin{macro}{\examplename} +% \begin{macro}{\exercisename} +% \begin{macro}{\remarkname} +% \begin{macro}{\assumptionname} +% \begin{macro}{\conclusionname} +% 中文标题名称设置 +% \begin{macrocode} +\renewcommand\listfigurename{插图目录} +\renewcommand\listtablename{附表目录} +\renewcommand\abstractname{摘\quad 要} +\newcommand{\keywordsname}{关键词} +\newcommand{\keywordsenname}{Keywords} +\renewcommand{\contentsname}{目\quad 录} +\renewcommand{\figurename}{图} +\renewcommand{\tablename}{表} +\renewcommand{\partname}{部分} +\renewcommand{\bibname}{参考文献} +\renewcommand{\appendixname}{附录~\thechapter} +\renewcommand{\indexname}{索\quad 引} +\newcommand{\notename}{笔记} +\renewcommand*{\proofname}{证明} +\newcommand{\problemname}{问题} +\newcommand{\definitionname}{定义} +\newcommand{\theoremname}{定理} +\newcommand{\axiomname}{公理} +\newcommand{\postulatename}{公设} +\newcommand{\lemmaname}{引理} +\newcommand{\propositionname}{命题} +\newcommand{\corollaryname}{推论} +\newcommand{\examplename}{例} +\newcommand{\exercisename}{练习} +\newcommand{\remarkname}{注} +\newcommand{\assumptionname}{假设} +\newcommand{\conclusionname}{结论} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\solutionname} +% \begin{macro}{\propertyname} +% 继续定义 +% \begin{macrocode} +\newcommand{\solutionname}{解} +\newcommand{\propertyname}{性质} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \vskip0.3cm +% \subsection{字号设置} +% \begin{macro}{\hitsz@def@fontsize} +% 中英字号转换 +% \begin{macrocode} +\def\hitsz@def@fontsize#1#2{% + \expandafter\newcommand\csname #1\endcsname[1][1.3]{% + \fontsize{#2}{##1\dimexpr #2}\selectfont}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\chuhao} +% \begin{macro}{\xiaochu} +% \begin{macro}{\yihao} +% \begin{macro}{\xiaoyi} +% \begin{macro}{\erhao} +% 定义一组字号 +% \begin{macrocode} +\hitsz@def@fontsize{chuhao}{42bp} +\hitsz@def@fontsize{xiaochu}{36bp} +\hitsz@def@fontsize{yihao}{26bp} +\hitsz@def@fontsize{xiaoyi}{24bp} +\hitsz@def@fontsize{erhao}{22bp} +% \end{macrocode} +% \begin{macro}{\xiaoer} +% \begin{macro}{\sanhao} +% \begin{macro}{\xiaosan} +% \begin{macro}{\sihao} +% \begin{macro}{\banxiaosi} +% \begin{macro}{\xiaosi} +% \begin{macro}{\dawu} +% \begin{macro}{\wuhao} +% \begin{macro}{\xiaowu} +% \begin{macro}{\liuhao} +% \begin{macro}{\xiaoliu} +% \begin{macro}{\qihao} +% \begin{macro}{\bahao} +% 继续定义字号 +% \begin{macrocode} +\hitsz@def@fontsize{xiaoer}{18bp} +\hitsz@def@fontsize{sanhao}{16bp} +\hitsz@def@fontsize{xiaosan}{15bp} +\hitsz@def@fontsize{sihao}{14bp} +\hitsz@def@fontsize{banxiaosi}{13bp} +\hitsz@def@fontsize{xiaosi}{12bp} +\hitsz@def@fontsize{dawu}{11bp} +\hitsz@def@fontsize{wuhao}{10.5bp} +\hitsz@def@fontsize{xiaowu}{9bp} +\hitsz@def@fontsize{liuhao}{7.5bp} +\hitsz@def@fontsize{xiaoliu}{6.5bp} +\hitsz@def@fontsize{qihao}{5.5bp} +\hitsz@def@fontsize{bahao}{5bp} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{图片搜索目录设置} +% \begin{macro}{\graphicspath} +% 图片搜索目录 +% \begin{macrocode} +\graphicspath{{./figure/}{./figures/}{./image/}{./images/} +{./graphics/}{./graphic/}{./pictures/}{./picture/}{./front/}} +% \end{macrocode} +% \end{macro} +% +% \subsection{页面设置} +% \begin{macro}{\geometry} +% 页面设置,按照撰写示例word模板设置页边距 +% \begin{macrocode} +\RequirePackage{geometry} +\geometry{ + a4paper, + left=30mm, + right=30mm, + top=41mm, + bottom=30mm, + headheight = 2.17cm, + headsep = 1mm, + footskip = 0cm, +} +% \end{macrocode} +% \end{macro} +% +% \subsection{超链接设置} +% \begin{macro}{\hypersetup} +% 超链接设置,设置目录、图表公式引用的跳转 +% \begin{macrocode} +\RequirePackage{hyperref} +\hypersetup{ + breaklinks, + unicode, + linktoc=all, + bookmarksnumbered=true, + bookmarksopen=true, + pdfsubject={哈尔滨工业大学(深圳)本科毕业设计(论文)}, + pdftitle = {哈尔滨工业大学(深圳)本科毕业设计(论文)}, + pdfauthor = {杨敬轩}, + pdfkeywords={HITSZThesis, Dissertation}, + pdfcreator={XeLaTeX with hitszthesis class}, + colorlinks, + linkcolor=black, + citecolor=black, + plainpages=false, + pdfstartview=FitH, + pdfborder={0 0 0}, +} +% \end{macrocode} +% \end{macro} +% +% \subsection{正文内容设置} +% 章节设置 +% \begin{macrocode} +\RequirePackage[pagestyles]{titlesec} +\RequirePackage{apptools} +% \end{macrocode} +% +% \begin{macro}{\setcounter} +% \begin{macro}{\chaptername} +% 更改章节编号样式 +% \begin{macrocode} +\setcounter{secnumdepth}{3} +\renewcommand{\chaptername}{第 \thechapter\;章} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\titleformat} +% 设置章节标题样式 +% \begin{macrocode} +\titleformat{\chapter}[hang]{\centering\heiti} +{\filcenter\xiaoer\enspace\heiti{% +\IfAppendix{\appendixname}{\chaptername}\enspace}}{1pt}{\xiaoer} +% \end{macrocode} +% +% 设置节标题样式 +% \begin{macrocode} +\titleformat{\section}[hang]{\heiti} +{\xiaosan\heiti{\thesection}\enspace}{1pt}{\xiaosan\heiti\filright} +% \end{macrocode} +% +% 设置条标题样式 +% \begin{macrocode} +\titleformat{\subsection}[hang]{\heiti} +{\sihao\heiti\thesubsection\enspace}{1pt}{\sihao\heiti\filright} +% \end{macrocode} +% +% 设置四级标题样式 +% \begin{macrocode} +\titleformat{\subsubsection}[hang]{\heiti} +{\xiaosi\heiti\thesubsubsection\enspace}{1pt}{\xiaosi\heiti\filright} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\titlespacing} +% 设置标题与上下文间距 +% \begin{macrocode} +\titlespacing{\chapter}{0pt}{0bp}{14.4bp} +\titlespacing{\section}{0pt}{7.5bp}{7.5bp} +\titlespacing{\subsection}{0pt}{7bp}{7bp} +\titlespacing{\subsubsection}{0pt}{6bp}{6bp} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionsetup} +% 图表标题设置,字号为small,分割符为空格 +% \begin{macrocode} +\RequirePackage[font=small,labelsep=quad]{caption} +% \end{macrocode} +% +% 标题与图表的间距为3pt +% \begin{macrocode} +\captionsetup[table]{skip=3pt} +\captionsetup[figure]{skip=10pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\figref} +% \begin{macro}{\tabref} +% \begin{macro}{\equref} +% 图表的引用格式 +% \begin{macrocode} +\newcommand\figref[1]{图\ref{#1}} +\newcommand\tabref[1]{表\ref{#1}} +\newcommand\equref[1]{式(\ref{#1})} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\setlist} +% 设置列表环境各项间无自动间距 +% \begin{macrocode} +\setlist{nolistsep} +% \end{macrocode} +% \end{macro} +% +% \subsection{定理样式设置} +% 定义各类定理样式 +% \begin{macrocode} +\RequirePackage{amsthm} +\let\proof\relax +\let\endproof\relax +% \end{macrocode} +% +% \begin{macro}{\newtheoremstyle} +% 定义新定义样式 +% \begin{macrocode} +\newtheoremstyle{ydefstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{% + 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} +% \end{macrocode} +% +% 定义新定理样式 +% \begin{macrocode} +\newtheoremstyle{ythmstyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{% + 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} +% \end{macrocode} +% +% 定义新命题样式 +% \begin{macrocode} +\newtheoremstyle{yprostyle}{3pt}{3pt}{\itshape}{}{\bfseries}{}{% + 0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\theoremstyle} +% \begin{macro}{\newtheorem} +% 应用定义样式 +% \begin{macrocode} +\theoremstyle{ydefstyle} +\newtheorem{ydefinition}{\definitionname }[chapter] +% \end{macrocode} +% +% 应用定理样式 +% \begin{macrocode} +\theoremstyle{ythmstyle} +\newtheorem{ytheorem}{\theoremname }[chapter] +\newtheorem{ylemma}{\lemmaname }[chapter] +\newtheorem{ycorollary}{\corollaryname }[chapter] +\newtheorem{ypostulate}{\postulatename }[chapter] +\newtheorem{yaxiom}{\axiomname }[chapter] +% \end{macrocode} +% +% 应用命题样式 +% \begin{macrocode} +\theoremstyle{yprostyle} +\newtheorem{yproposition}{\propositionname }[chapter] +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{environment}{theorem} +% 定义新定理环境 +% \begin{macrocode} +\newenvironment{theorem}[2] + {\ifstrempty{#1}{\ytheorem}{\ytheorem[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endytheorem} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{definition} +% 定义新定义环境 +% \begin{macrocode} +\newenvironment{definition}[2] + {\ifstrempty{#1}{\ydefinition}{\ydefinition[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endydefinition} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{lemma} +% 定义新引理环境 +% \begin{macrocode} +\newenvironment{lemma}[2] + {\ifstrempty{#1}{\ylemma}{\ylemma[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endylemma} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{corollary} +% 定义新推论环境 +% \begin{macrocode} +\newenvironment{corollary}[2] + {\ifstrempty{#1}{\ycorollary}{\ycorollary[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endycorollary} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{postulate} +% 定义新公设环境 +% \begin{macrocode} +\newenvironment{postulate}[2] + {\ifstrempty{#1}{\ypostulate}{\ypostulate[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endypostulate} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{axiom} +% 定义新公理环境 +% \begin{macrocode} +\newenvironment{axiom}[2] + {\ifstrempty{#1}{\yaxiom}{\yaxiom[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endyaxiom} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{proposition} +% 定义新命题环境 +% \begin{macrocode} +\newenvironment{proposition}[2] + {\ifstrempty{#1}{\yproposition}{\yproposition[#1]}\ifstrempty{#2}{}{\label{#2}}} + {\endyproposition} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{note} +% 定义新注解环境 +% \begin{macrocode} +\newenvironment{note}{ + \par\noindent\textbf{\notename\,} + \itshape}{\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{proof} +% 定义新证明环境 +% \begin{macrocode} +\newenvironment{proof}{ + \par\noindent\textbf{\proofname\;} +}{\hfill$\Box$\quad\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{solution} +% 定义新解答环境 +% \begin{macrocode} +\newenvironment{solution}{\medskip\par\noindent\textbf{\solutionname} \itshape}{\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{remark} +% 定义新注释环境 +% \begin{macrocode} +\newenvironment{remark}{\noindent\textbf{\remarkname}}{\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{assumption} +% 定义新假设环境 +% \begin{macrocode} +\newenvironment{assumption}{\par\noindent\textbf{\assumptionname}}{\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{conclusion} +% 定义新结论环境 +% \begin{macrocode} +\newenvironment{conclusion}{\par\noindent\textbf{\conclusionname}}{\par} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{property} +% 定义新性质环境 +% \begin{macrocode} +\newenvironment{property}{\par\noindent\textbf{\propertyname}}{\par} +% \end{macrocode} +% \end{environment} +% +% \subsection{封面设置} +% \begin{macro}{\maketitle} +% 重定义\cs{maketitle}命令 +% \begin{macrocode} +\renewcommand{\maketitle}{\par + \begingroup + \newgeometry{left=20mm,right=20mm,top=30mm,bottom=35mm} + \newpage + % 禁止图片位于页面最上方 + \global\@topnum\z@ + \@maketitle % 下面再设置封面具体内容 + \endgroup + % 先取消原来封面样式的所有设置,以便后面重写此命令 + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty + \global\let\@author\@empty + \global\let\@date\@empty + \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +% 定义封面具体内容 +\newdimen\infowidth +\infowidth = 6.5cm +\def\@maketitle{% + \newpage + % 开始写封面 + \thispagestyle{empty} + \vspace*{2cm} + %%------------------------ + \begin{center} + \ifdefstring{\hitsz@covertitle}{tworow}{ + \parbox[t][1.4cm][t]{\textwidth}{ + \begin{center}\erhao[0]\bfseries\hitsz@tokens@titleone\end{center} + }\par + \parbox[t][2.5cm][t]{\textwidth}{ + \begin{center}\erhao[0]\bfseries\hitsz@tokens@titletwo\end{center} + }\par + }{\relax} + \ifdefstring{\hitsz@covertitle}{onerow}{ + \parbox[t][3.4cm][t]{\textwidth}{ + \begin{center}\erhao[0]\bfseries\hitsz@tokens@thesistitle\end{center} + } + }{\relax} + \parbox[t][8.7cm][t]{\textwidth}{ + \begin{center}\xiaoer[0]\song\textbf{\ziju{0.2}\hitsz@tokens@authorname}\end{center} + } + \begin{center} + \bfseries + \begin{tabular}{rl} +{\xiaosi 学\hphantom{教师}院:} & \xiaosi\hitsz@tokens@departname\\[14pt] +{\xiaosi 学\hphantom{教师}号:} & \xiaosi\hitsz@tokens@studentID + \end{tabular} + \hspace{0.5cm} + \begin{tabular}{rl} +{\xiaosi 专\hphantom{教师}业:} & \xiaosi\hitsz@tokens@majorin\\[14pt] +{\xiaosi 指导教师:} & \xiaosi\hitsz@tokens@instructor + \end{tabular} + \end{center} + % 日期 + \vspace{2.6cm} + {\xiaosi[0]\song\textbf{2020年7月}} + \end{center} + %%---------------------------- +%% 第二页 +\clearpage +\thispagestyle{empty} + \vspace*{0.8cm} + \centering\includegraphics[width=8cm]{HITSZname} + \vspace{1.3cm} + \begin{center} + \centering\includegraphics[width=10.5cm]{thesistitle} + \vfill + \parbox[t][14.2cm][b]{\textwidth} + {\heiti\xiaosan + \begin{center} \renewcommand{\arraystretch}{2.6} \bfseries + % 居中对齐 + \ifdefstring{\hitsz@infoalign}{infocenter}{ + \begin{tabular}{l@{\ \ }c} + {\xiaoer 题\hphantom{\ 导\ \ \ }目} & + \underline{\makebox[\infowidth]{% + \xiaoer \hitsz@tokens@titleone}}\\ + & \underline{\makebox[\infowidth]{% + \xiaoer \hitsz@tokens@titletwo}}\\ + & \\ + {\xiaosan 专\hphantom{\ 导\ 教\ }业} & + \underline{\makebox[\infowidth]{% + \xiaosan\hitsz@tokens@majorin}}\\ + {\xiaosan 学\hphantom{\ 导\ 教\ }号} & + \underline{\makebox[\infowidth]{% + \xiaosan\hitsz@tokens@studentID}}\\ + {\xiaosan 学\hphantom{\ 导\ 教\ }生} & + \underline{\makebox[\infowidth]{% + \xiaosan\hitsz@tokens@authorname}}\\ + {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth]{% + \xiaosan\hitsz@tokens@instructor}}\\ + {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth]{% + \xiaosan\hitsz@tokens@dateinput}} + \end{tabular} \renewcommand{\arraystretch}{1} + }{\relax} + % 左对齐 + \ifdefstring{\hitsz@infoalign}{infoleft}{ + \begin{tabular}{l@{\ \ }c} + {\xiaoer 题\hphantom{\ 导\ \ \ }目} & + \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaoer \hitsz@tokens@titleone}}\\ + & \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaoer \hitsz@tokens@titletwo}}\\ + & \\ + {\xiaosan 专\hphantom{\ 导\ 教\ }业} & + \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaosan\hitsz@tokens@majorin}}\\ + {\xiaosan 学\hphantom{\ 导\ 教\ }号} & + \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaosan\hitsz@tokens@studentID}}\\ + {\xiaosan 学\hphantom{\ 导\ 教\ }生} & + \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaosan\hitsz@tokens@authorname}}\\ + {\xiaosan 指\ 导\ 教\ 师} & \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaosan\hitsz@tokens@instructor}}\\ + {\xiaosan 答\ 辩\ 日\ 期} & \underline{\makebox[\infowidth][l]{% + \hspace*{1em}\xiaosan\hitsz@tokens@dateinput}} + \end{tabular} \renewcommand{\arraystretch}{1} + }{\relax} + \end{center} + } + \end{center} + \restoregeometry + \clearpage +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter} +% 设置前言页码编号为大写罗马数字 +% \begin{macrocode} +\renewcommand{\frontmatter}{% +\cleardoublepage +\@mainmatterfalse +\pagenumbering{Roman} +} +% \end{macrocode} +% \end{macro} +% +% \subsection{中英文摘要环境与关键词命令设置} +% \begin{environment}{abstract} +%% 中文摘要环境 +% \begin{macrocode} +\newenvironment{abstract}{\chapter*{\abstractname} +\addcontentsline{toc}{chapter}{\abstractname} +}{\if@twocolumn\else\null\fi} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{keywords} +% 中文关键词环境 +% \begin{macrocode} +\newcommand\keywords[1]{% + \renewcommand{\hitsz@tokens@keywords}{#1} + {\vskip18pt + \hspace{-30bp}\begin{tabular}{lp{132mm}} + {\zihao{-4}\heiti\keywordsname:}& + {\xiaosi\hitsz@tokens@keywords} + \end{tabular}} +} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{abstracten} +% 英文摘要环境 +% \begin{macrocode} +\newenvironment{abstracten}{\chapter*{\bfseries Abstract} +\addcontentsline{toc}{chapter}{ABSTRACT} +}{\if@twocolumn\else\null\fi} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{keywordsen} +% 英文关键词环境 +% \begin{macrocode} +\newcommand\keywordsen[1]{% + \renewcommand{\hitsz@tokens@keywordsen}{#1} + {\vskip 18pt + \hspace{-30bp}\begin{tabular}{lp{127mm}} + {\zihao{-4}\bf\keywordsenname:}& + {\xiaosi\hitsz@tokens@keywordsen} + \end{tabular}} +} +% \end{macrocode} +% \end{environment} +% +% \subsection{原创性声明设置} +% \begin{macro}{\declaration} +% 定义原创性声明命令 +% \begin{macrocode} +\newcommand{\declaration}{\par + \begingroup + \hitsz@declaration + \endgroup +} +% \end{macrocode} +% +% 定义原创性声明具体内容 +% \begin{macrocode} +\def\hitsztitle{\hitsz@tokens@thesistitle} +\def\hitszauthor{\hitsz@tokens@authorname} +\def\hitsz@declaration{ +\chapter*{\sanhao 哈尔滨工业大学(深圳)本科毕业设计(论文)原创性声明} +\addcontentsline{toc}{chapter}{原创性声明}\par +本人郑重声明:在哈尔滨工业大学(深圳)攻读学士学位期间,所提交的毕业设计(论文)《\hitsztitle》,是本人在导师指导下独立进行研究工作所取得的成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中以明确方式注明,其它未注明部分不包含他人已发表或撰写过的研究成果,不存在购买、由他人代写、剽窃和伪造数据等作假行为。 +\par +本人愿为此声明承担法律责任。\par +\vspace{30pt} +\hspace{6em}作者签名:\hspace{8em}日期:\hspace{3em}年\hspace{1.5em}月\hspace{1.5em}日 +} +% \end{macrocode} +% \end{macro} +% +% \subsection{参考文献设置} +% \begin{environment}{thebibliography} +% 重定义参考文献环境 +% \begin{macrocode} +\renewenvironment{thebibliography}[1] + {\chapter*{\bibname}% + \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +% \end{macrocode} +% \end{environment} +% +% \subsection{页眉页脚设置} +% \begin{macro}{\pagestyle} +% 定义页眉页脚 +% \begin{macrocode} +\RequirePackage{fancyhdr} +\RequirePackage{lastpage} +\pagestyle{fancy} +% \end{macrocode} +% +% 页眉 +% \begin{macrocode} +\lhead{} +\chead{\wuhao 哈尔滨工业大学(深圳)本科毕业设计(论文)} +\rhead{} +% \end{macrocode} +% +% 页脚 +% \begin{macrocode} +\lfoot{} +\cfoot{\wuhao -\thepage-} +\rfoot{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\makeheadrule} +% 定义页眉双横线样式,注意下面代码中的\pkg{\%}不能删 +% \begin{macrocode} +\newcommand{\makeheadrule}{% +\makebox[0pt][l]{\rule[1mm]{\headwidth}{0.4mm}}% +\rule[0.35\baselineskip]{\headwidth}{0.8mm}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\headrule} +% 定义页眉横线为双横线 +% \begin{macrocode} +\renewcommand{\headrule}{% +{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi% +\makeheadrule}} +% \end{macrocode} +% \end{macro} +% +% \subsection{目录格式设置} +% +% \begin{macro}{\titlecontents} +% 设置目录格式,目录只有三级 +% +% 1级目录格式 +% \begin{macrocode} +\titlecontents{chapter}[0pt]{\vspace{1mm}\heiti} +{第\thecontentslabel\,\,章\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} +% \end{macrocode} +% +% 2级目录格式 +% \begin{macrocode} +\titlecontents{section}[25pt]{\songti} +{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} +% \end{macrocode} +% +% 3级目录格式 +% \begin{macrocode} +\titlecontents{subsection}[47pt]{\songti} +{\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} +% \end{macrocode} +% \end{macro} +% +% 附录环境设置,暂时无用 +% \begin{macrocode} +\RequirePackage[title,titletoc]{appendix} +% \end{macrocode} +% +% \begin{environment}{tabular} +% 修改表格字号,注意 |tabular| 要放在 |table| 环境里 +% \begin{macrocode} +\BeforeBeginEnvironment{tabular}{\wuhao} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{table} +% 修改表格与后文间距,缩短1cm +% \begin{macrocode} +\AfterEndEnvironment{table}{\vspace{-1cm}} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\newcounter} +% 新计数器,编排表格编号用 +% \begin{macrocode} +\newcounter{rowno} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thefigure} +% \begin{macro}{\thetable} +% \begin{macro}{\theequation} +% 设置图表公式编号格式为1-1 +% \begin{macrocode} +\renewcommand{\thefigure}{\thechapter-\arabic{figure}} +\renewcommand{\thetable}{\thechapter-\arabic{table}} +\renewcommand{\theequation}{\thechapter-\arabic{equation}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{其他杂项设置} +% \begin{macro}{\usetikzlibrary} +% 使用\pkg{tikz}配置流程图基本图形 +% \begin{macrocode} +\usetikzlibrary{shapes.geometric, arrows} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{startstop} +% 开始 +% \begin{macrocode} +\tikzstyle{startstop} = [rectangle, rounded corners, minimum width = 2cm, +minimum height=1cm,text centered, draw = black] +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{io} +% 输入输出 +% \begin{macrocode} +\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, +minimum width=2cm, minimum height=1cm, text centered, draw=black] +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{process} +% 过程 +% \begin{macrocode} +\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, +text centered, draw=black] +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{decision} +% 判断 +% \begin{macrocode} +\tikzstyle{decision} = [diamond, aspect = 3, text centered, draw=black] +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{arrow} +% 箭头形式 +% \begin{macrocode} +\tikzstyle{arrow} = [->,>=stealth] +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\upcite} +% 参考文献标号为上标 +% \begin{macrocode} +\newcommand{\upcite}[1]{\textsuperscript{\textsuperscript{\cite{#1}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thefootnote} +% 设置脚注编号格式 +% \begin{macrocode} +\renewcommand{\thefootnote}{\fnsymbol{footnote}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\chapter} +% 解决book类文档章首页和目录页没有页眉页脚的问题 +% \begin{macrocode} +\makeatletter +\renewcommand\chapter{ + \if@openright\cleardoublepage + \else\clearpage + \fi + \thispagestyle{fancy} + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter +} +\makeatother +% \end{macrocode} +% \end{macro} +% +% \subsection{新数学命令设置} +% \begin{macro}{\dif} +% \begin{macro}{\no} +% \begin{macro}{\dis} +% \begin{macro}{\ls} +% \begin{macro}{\gs} +% 新简记数学命令 +% \begin{macrocode} +\newcommand\dif{\text{d}} +\newcommand\no{\noindent} +\newcommand\dis{\displaystyle} +\newcommand\ls{\leqslant} +\newcommand\gs{\geqslant} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\limit} +% \begin{macro}{\limn} +% \begin{macro}{\limxz} +% \begin{macro}{\limxi} +% \begin{macro}{\limxpi} +% \begin{macro}{\limxni} +% \begin{macro}{\limtpi} +% \begin{macro}{\limtni} +% 极限 +% \begin{macrocode} +\newcommand\limit{\dis\lim\limits} +\newcommand\limn{\dis\lim\limits_{n\to\infty}} +\newcommand\limxz{\dis\lim\limits_{x\to0}} +\newcommand\limxi{\dis\lim\limits_{x\to\infty}} +\newcommand\limxpi{\dis\lim\limits_{x\to+\infty}} +\newcommand\limxni{\dis\lim\limits_{x\to-\infty}} +\newcommand\limtpi{\dis\lim\limits_{t\to+\infty}} +\newcommand\limtni{\dis\lim\limits_{t\to-\infty}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sumn} +% \begin{macro}{\sumnz} +% $n$求和 +% \begin{macrocode} +\newcommand\sumn{\dis\sum\limits_{n=1}^{\infty}} +\newcommand\sumnz{\dis\sum\limits_{n=0}^{\infty}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sumi} +% \begin{macro}{\sumiz} +% \begin{macro}{\sumin} +% \begin{macro}{\sumizn} +% $i$求和 +% \begin{macrocode} +\newcommand\sumi{\dis\sum\limits_{i=1}^{\infty}} +\newcommand\sumiz{\dis\sum\limits_{i=0}^{\infty}} +\newcommand\sumin{\dis\sum\limits_{i=1}^{n}} +\newcommand\sumizn{\dis\sum\limits_{i=0}^{n}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sumk} +% \begin{macro}{\sumkz} +% \begin{macro}{\sumkn} +% \begin{macro}{\sumkfn} +% $k$求和 +% \begin{macrocode} +\newcommand\sumk{\dis\sum\limits_{k=1}^{\infty}} +\newcommand\sumkz{\dis\sum\limits_{k=0}^{\infty}} +\newcommand\sumkn{\dis\sum\limits_{k=0}^n} +\newcommand\sumkfn{\dis\sum\limits_{k=1}^n} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pzx} +% \begin{macro}{\pzy} +% $z$偏微分 +% \begin{macrocode} +\newcommand\pzx{\dis\frac{\partial z}{\partial x}} +\newcommand\pzy{\dis\frac{\partial z}{\partial y}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pfx} +% \begin{macro}{\pfy} +% $f$偏微分 +% \begin{macrocode} +\newcommand\pfx{\dis\frac{\partial f}{\partial x}} +\newcommand\pfy{\dis\frac{\partial f}{\partial y}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pzxx} +% \begin{macro}{\pzxy} +% \begin{macro}{\pzyx} +% \begin{macro}{\pzyy} +% $z$二重偏微分 +% \begin{macrocode} +\newcommand\pzxx{\dis\frac{\partial^2 z}{\partial x^2}} +\newcommand\pzxy{\dis\frac{\partial^2 z}{\partial x\partial y}} +\newcommand\pzyx{\dis\frac{\partial^2 z}{\partial y\partial x}} +\newcommand\pzyy{\dis\frac{\partial^2 z}{\partial y^2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\pfxx} +% \begin{macro}{\pfxy} +% \begin{macro}{\pfyx} +% \begin{macro}{\pfyy} +% $f$二重偏微分 +% \begin{macrocode} +\newcommand\pfxx{\dis\frac{\partial^2 f}{\partial x^2}} +\newcommand\pfxy{\dis\frac{\partial^2 f}{\partial x\partial y}} +\newcommand\pfyx{\dis\frac{\partial^2 f}{\partial y\partial x}} +\newcommand\pfyy{\dis\frac{\partial^2 f}{\partial y^2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\intzi} +% \begin{macro}{\intd} +% \begin{macro}{\intab} +% 积分 +% \begin{macrocode} +\newcommand\intzi{\dis\int_{0}^{+\infty}} +\newcommand\intd{\dis\int} +\newcommand\intab{\dis\int_a^b} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\degree} +% 角度符号 +% \begin{macrocode} +\newcommand{\degree}{^\circ} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ma} +% 花体 +% \begin{macrocode} +\newcommand\ma{\mathcal{A}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mb} +% \begin{macro}{\mc} +% \begin{macro}{\me} +% \begin{macro}{\mg} +% 继续定义 +% \begin{macrocode} +\newcommand\mb{\mathcal{B}} +\newcommand\mc{\mathcal{C}} +\newcommand\me{\mathcal{E}} +\newcommand\mg{\mathcal{g}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\mcc} +% \begin{macro}{\mrr} +% \begin{macro}{\mzz} +% 重体 +% \begin{macrocode} +\newcommand\mcc{\mathbb{C}} +\newcommand\mrr{\mathbb{R}} +\newcommand\mzz{\mathbb{Z}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vx} +% \begin{macro}{\vX} +% \begin{macro}{\vy} +% \begin{macro}{\vY} +% 向量 +% \begin{macrocode} +\newcommand\vx{\bf{x}} +\newcommand\vX{\bf{X}} +\newcommand\vy{\bf{y}} +\newcommand\vY{\bf{Y}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sgn} +% \begin{macro}{\arccot} +% \begin{macro}{\arccosh} +% 定义新数学符号 +% \begin{macrocode} +\DeclareMathOperator{\sgn}{sgn} +\DeclareMathOperator{\arccot}{arccot} +\DeclareMathOperator{\arccosh}{arccosh} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\arcsinh} +% \begin{macro}{\arctanh} +% \begin{macro}{\arccoth} +% \begin{macro}{\grad} +% \begin{macro}{\argmax} +% \begin{macro}{\argmin} +% \begin{macro}{\diag} +% \begin{macro}{\csign} +% 继续定义数学符号 +% \begin{macrocode} +\DeclareMathOperator{\arcsinh}{arcsinh} +\DeclareMathOperator{\arctanh}{arctanh} +\DeclareMathOperator{\arccoth}{arccoth} +\DeclareMathOperator{\grad}{\bf{grad}} +\DeclareMathOperator{\argmax}{argmax} +\DeclareMathOperator{\argmin}{argmin} +\DeclareMathOperator{\diag}{diag} +\DeclareMathOperator{\csign}{csign} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{书脊} +% \label{sec:spine} +% \begin{macro}{\spine} +% 单独使用书脊命令会在新的一页产生竖排书脊。 +% \begin{macrocode} +\newcommand{\spine}{% + \begingroup + \hitsz@spine + \endgroup +} +\def\hitsz@spine{% + \newpage\thispagestyle{empty}% + \fangsong\addCJKfontfeatures*{RawFeature={vertical:}} + \xiaosan\ziju{0.4}% + \noindent\hfill\rotatebox[origin=lt]{-90}{% + \makebox[\textheight]{\hitsztitle \hfill \hitszauthor} + } +} +% \end{macrocode} +% \end{macro} +% +% \subsection{其它} +% \label{sec:other} +% +% 在模板文档结束时即装入配置文件,这样用户就能在导言区进行相应的修改。 +% \begin{macrocode} +\AtEndOfClass{\sloppy} +%</cls> +% \end{macrocode} +% +% \iffalse +% \begin{macrocode} +%<*dtx-style> +\ProvidesPackage{dtx-style} +\RequirePackage{hypdoc} +\RequirePackage{ifthen} +\RequirePackage[UTF8,scheme=chinese]{ctex} +\RequirePackage{newtxtext} +\RequirePackage{newtxmath} +\RequirePackage[ + top=2.5cm, bottom=2.5cm, + left=5cm, right=1.5cm, + headsep=8mm]{geometry} +\RequirePackage{array,longtable,booktabs} +\RequirePackage{listings} +\RequirePackage{fancyhdr} +\RequirePackage{xcolor} +\RequirePackage{enumitem} +\RequirePackage{etoolbox} +\RequirePackage{metalogo} + +\ifthenelse{\equal{\@nameuse{g__ctex_fontset_tl}}{mac}}{% + \xeCJKsetwidth{‘’“”}{1em} +}{} + +\colorlet{hitsz@macro}{blue!60!black} +\colorlet{hitsz@env}{blue!70!black} +\colorlet{hitsz@option}{purple} +\patchcmd{\PrintMacroName}{\MacroFont}{\MacroFont\bfseries\color{hitsz@macro}}{}{} +\patchcmd{\PrintDescribeMacro}{\MacroFont}{\MacroFont\bfseries\color{hitsz@macro}}{}{} +\patchcmd{\PrintDescribeEnv}{\MacroFont}{\MacroFont\bfseries\color{hitsz@env}}{}{} +\patchcmd{\PrintEnvName}{\MacroFont}{\MacroFont\bfseries\color{hitsz@env}}{}{} + +\def\DescribeOption{% + \leavevmode\@bsphack\begingroup\MakePrivateLetters% + \Describe@Option} +\def\Describe@Option#1{\endgroup + \marginpar{\raggedleft\PrintDescribeOption{#1}}% + \hitsz@special@index{option}{#1}\@esphack\ignorespaces} +\def\PrintDescribeOption#1{\strut \MacroFont\bfseries\sffamily\color{hitsz@option} #1\ } +\def\hitsz@special@index#1#2{\@bsphack + \begingroup + \HD@target + \let\HDorg@encapchar\encapchar + \edef\encapchar usage{% + \HDorg@encapchar hdclindex{\the\c@HD@hypercount}{usage}% + }% + \index{#2\actualchar{\string\ttfamily\space#2} + (#1)\encapchar usage}% + \index{#1:\levelchar#2\actualchar + {\string\ttfamily\space#2}\encapchar usage}% + \endgroup + \@esphack} + +\lstdefinestyle{lstStyleBase}{% + basicstyle=\small\ttfamily, + aboveskip=\medskipamount, + belowskip=\medskipamount, + lineskip=0pt, + boxpos=c, + showlines=false, + extendedchars=true, + upquote=true, + tabsize=2, + showtabs=false, + showspaces=false, + showstringspaces=false, + numbers=none, + linewidth=\linewidth, + xleftmargin=4pt, + xrightmargin=0pt, + resetmargins=false, + breaklines=true, + breakatwhitespace=false, + breakindent=0pt, + breakautoindent=true, + columns=flexible, + keepspaces=true, + gobble=2, + framesep=3pt, + rulesep=1pt, + framerule=1pt, + backgroundcolor=\color{gray!5}, + stringstyle=\color{green!40!black!100}, + keywordstyle=\bfseries\color{blue!50!black}, + commentstyle=\slshape\color{black!60}} + +\lstdefinestyle{lstStyleShell}{% + style=lstStyleBase, + frame=l, + rulecolor=\color{purple}, + language=bash} + +\definecolor{hitcolor}{RGB}{21,95,130} +\lstdefinestyle{lstStyleLaTeX}{% + style=lstStyleBase, + frame=l, + rulecolor=\color{hitcolor}, + language=[LaTeX]TeX} + +\lstnewenvironment{latex}{\lstset{style=lstStyleLaTeX}}{} +\lstnewenvironment{shell}{\lstset{style=lstStyleShell}}{} + +\setlist{nosep} + +\DeclareDocumentCommand{\option}{m}{\textsf{#1}} +\DeclareDocumentCommand{\env}{m}{\texttt{#1}} +\DeclareDocumentCommand{\pkg}{s m}{% + \texttt{#2}\IfBooleanF#1{\hitsz@special@index{package}{#2}}} +\DeclareDocumentCommand{\file}{s m}{% + \texttt{#2}\IfBooleanF#1{\hitsz@special@index{file}{#2}}} +\newcommand{\myentry}[1]{% + \marginpar{\raggedleft\color{purple}\bfseries\strut #1}} +\newcommand{\note}[2][Note]{{% + \color{magenta}{\bfseries #1}\emph{#2}}} + +\def\hitszthesis{\textsc{Hitsz}\-\textsc{Thesis}} +%</dtx-style> +% \end{macrocode} +% \fi +% +% \Finale +% +\endinput +% \iffalse +% Local Variables: +% mode: doctex +% TeX-master: t +% End: +% \fi diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.ins b/macros/latex/contrib/hitszthesis/hitszthesis.ins new file mode 100644 index 0000000000..bdcb66f961 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/hitszthesis.ins @@ -0,0 +1,66 @@ +%% +%% Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com> +%% +%% This file is part of the HITSZThesis package project. +%% ------------------------------------------------------------------------------ +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. + +\input docstrip + +\askforoverwritefalse +\showprogress +\keepsilent + +\usedir{tex/latex/hitszthesis} + +\preamble + +This is a generated file. + +Copyright (C) 2019-\the\year by Jingxuan Yang <yanglatex2e@gmail.com> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +To produce the documentation run the original source files ending with `.dtx' +through LaTeX. + +\endpreamble + +\generate{\file{\jobname.cls}{\from{\jobname.dtx}{cls}} + \usepreamble\defaultpreamble\usepostamble\defaultpostamble + \file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}} + +\ifToplevel{% + \Msg{***********************************************************} + \Msg{*} + \Msg{* To finish the installation you have to move the following} + \Msg{* files into a directory searched by TeX:} + \Msg{*} + \Msg{* The recommended directory is TEXMF/tex/latex/hitszthesis} + \Msg{*} + \Msg{* \space\space hitszthesis.cls} + \Msg{* \space\space hitszthesis-author-year.bst} + \Msg{* \space\space hitszthesis-numeric.bst} + \Msg{*} + \Msg{* To produce the documentation run the file hitszthesis.dtx} + \Msg{* through LaTeX.} + \Msg{*} + \Msg{* Happy TeXing!} + \Msg{***********************************************************}} + +\endbatchfile diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.pdf b/macros/latex/contrib/hitszthesis/hitszthesis.pdf Binary files differindex d5deb617d1..01ea746ab8 100644 --- a/macros/latex/contrib/hitszthesis/hitszthesis.pdf +++ b/macros/latex/contrib/hitszthesis/hitszthesis.pdf diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.sty b/macros/latex/contrib/hitszthesis/hitszthesis.sty new file mode 100644 index 0000000000..e27d8309cf --- /dev/null +++ b/macros/latex/contrib/hitszthesis/hitszthesis.sty @@ -0,0 +1,32 @@ +% +% Copyright (C) 2019-2020 by Jingxuan Yang <yanglatex2e@gmail.com> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +\ProvidesPackage{hitszthesis}[2020/02/18 v2.0 A Collection of Styles for Bachelor Thesis of Harbin Institute of Technology, ShenZhen] + +% 将引入的宏包以及各种自定义命令都放在这里 +% 在 \file{main.tex} 中使用 |\usepackage{hitszthesis}| 引入本文件 + +% 加载宏包 +% \RequirePackage{package} + +% 自定义命令 +% \newcommand\totallynewcommand{command details} +% \renewcommand\existedcommand{command details} + +% etc + + + + +% 结束输入 +\endinput diff --git a/macros/latex/contrib/hitszthesis/latexmkrc b/macros/latex/contrib/hitszthesis/latexmkrc new file mode 100644 index 0000000000..3ba7612943 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/latexmkrc @@ -0,0 +1,23 @@ +# vim: set ft=perl: + +$pdf_mode = 5; + +$xelatex = "xelatex -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S"; +$xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S"; + +$bibtex_use = 1.5; + +$clean_ext = "hd loe synctex.gz thm xdv"; + +$makeindex = "makeindex -s gind.ist %O -o %D %S"; +add_cus_dep('glo', 'gls', 0, 'glo2gls'); +sub glo2gls { + system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\""); +} +push @generated_exts, 'glo', 'gls'; + +add_cus_dep('nlo', 'nls', 0, 'nlo2nls'); +sub nlo2nls { + system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\""); +} +push @generated_exts, 'nlo', 'nls'; diff --git a/macros/latex/contrib/hitszthesis/main.pdf b/macros/latex/contrib/hitszthesis/main.pdf Binary files differnew file mode 100644 index 0000000000..96295c1920 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/main.pdf diff --git a/macros/latex/contrib/hitszthesis/hitszthesis.tex b/macros/latex/contrib/hitszthesis/main.tex index 1cf3905598..466bc54b8c 100644 --- a/macros/latex/contrib/hitszthesis/hitszthesis.tex +++ b/macros/latex/contrib/hitszthesis/main.tex @@ -3,39 +3,42 @@ % !TEX program = XeLaTeX %%============================================= % 模板名称:HITSZThesis -% 模板版本:V1.2 -% 模板作者:JingXuan Yang +% 模板版本:V2.0 +% 模板作者:杨敬轩(Jingxuan Yang) % 联系作者:yangjingxuan@stu.hit.edu.cn & yanglatex2e@gmail.com -% 模板来源:yangtemplate、hithesis与elegantbook综合 +% 模板交流:QQ群:1039392552,加群请备注LaTeX、HITSZThesis相关说明 % 模板适用:哈尔滨工业大学(深圳)本科毕业设计(论文) % 模板编译:XeLaTeX,编译两次,两次,两次!!! -% 更新时间:02/15/2020 -% 模板依赖:mtpro2公式字体,安装方法参见: -% https://www.latexstudio.net/archives/51742.html -% 模板说明:本模板尽量把接口留在了类文件外面,但是顾名思义,模板即为 -% 部分样式的集合,有些样式是定义在类文件里面的,在外面无法 -% 修改。类文件中注释齐全,很多样式可以个性化定义,建议拥有 -% 一定LaTeX基础以后再尝试修改类文件(YangThesis.cls),请 -% 善用命令行<texdoc xxx>查询帮助文档 -% 模板命令:设置字号可以直接用<\yihao,...,\xiaosi>等命令; -% 文献引用两种方式:右上角<\upcite{}>,正文<\cite{}>; -% 图表及公式引用:<\figref{}>,<\tabref{}>,<\equref{}>; -% 模板使用<siunitx>宏包书写单位 -% 模板交流:QQ群:1039392552,加群请备注LaTeX、HITSZThesis相关说明 +% GNU make 工具:make thesis +% 更多编译细节详见说明文档:hitszthesis.pdf +% 更新时间:02/18/2020 +% 模板帮助:请**务必务必务必**阅读 hitszthesis.pdf 说明文档,文档查看方法: +% cmd 命令行:texdoc hitszthesis +% 推荐前往模板的GitHub仓库获取最新文件,地址: +% https://github.com/YangLaTeX/hitszthesis %%============================================= % 设置文档类别为<hitszthesis> \documentclass{hitszthesis} -% 模板提供两个选项 +% 模板提供以下选项 % 1. 封面标题单行或多行显示: %% onerow(默认,单行),tworow(两行) % 2. 封面第二页下划线内容居中或居左显示: %% infocenter(默认,居中),infoleft(居左) +% 3. 正文数学字体选项: +%% newtxmath(默认,凑合),mtpro2(非常推荐) +%% 将 newtxmath 设置为默认数学字体仅为了避免同学未安装mtpro2字体 +%% 会产生的编译错误 +%% !mtpro2为非免费字体,CTAN禁止提供下载链接,需自行下载该字体 -% 示例:两行,居左,将<\documentclass{hitszthesis}>注释, +% 示例:两行,居左,mtpro2字体,将<\documentclass{hitszthesis}>注释, % 且将下面语句取消注释 -%\documentclass[tworow, infoleft]{hitszthesis} +%\documentclass[tworow, infoleft, mtpro2]{hitszthesis} + +% 自定义设置与额外加载的宏包请写在 \file{hitszthesis.sty} 里 +% 预设该文件为空 +\usepackage{hitszthesis} % 填写封面信息 % 论文标题 @@ -65,19 +68,14 @@ % !!注意本文仅作为排版格式示例,并不作为毕业论文规范 \begin{document} -% 若题目过长,则需使用一下命令调整封面第二页下划线宽度 +% 若题目过长,则需使用以下命令调整封面第二页下划线长度 %\infowidth = 8cm % 生成封面两页 \maketitle -% 封面页与正文布局不同,此处恢复正文的布局设置 -\restoregeometry - -% 页码从1开始计数 -\setcounter{page}{1} -% 页码采用罗马数字格式 -\pagenumbering{Roman} +% 开始写前言部分 +\frontmatter % 开始写摘要 \begin{abstract} @@ -116,17 +114,12 @@ Finally, based on the method of cascade convolution neural network, a convolutio % 生成目录 \tableofcontents -% 分页,撰写正文 -\clearpage +% 开始写正文 +\mainmatter % 第1章的标题 \chapter{绪论} -% 页码从1开始计数 -\setcounter{page}{1} -% 页码格式采用阿拉伯数字 -\pagenumbering{arabic} - % 正文内容,注意LaTeX分段有两种方法,直接空一行或者使用<\par> % 默认首行缩进,不需要在代码编辑区手动敲空格 随着社会发展,人口老龄化,劳动力短缺等问题逐渐凸显,对服务机器人的需求也越来越大,但是服务机器人所工作的非结构化环境也带来了许多技术难题,其中十分主要的一个问题就是非结构环境中机器人的自动抓取,因为抓取是机器人与现实世界交互的主要方式之一。不同于工业机器人在结构化环境中对工件的抓取,服务机器人在非结构化环境下的自动抓取面临着诸多挑战,例如动态化环境、光照变化、物体间存在相互遮挡,以及最主要的,非结构化环境中除了已知的物体,还有大量未知物体。对于非结构化环境中工作的服务机器人,预先获取所有需要进行抓取的物体的模型是不现实的,因此机器人必须能够对未知的物体在线进行快速稳定可靠的抓取规划。 @@ -404,6 +397,7 @@ SqueezeNet 通过 f\/ire 模块和自身优化结构,采用了以下几种常 \begin{equation} G(u(t), v(t), \theta(t), l(t)) = F(X (t)) \end{equation} + 其中,$F$为级联机器人平面抓取位姿检测模型,$G$为“点线法”表示的抓取检测结果。 % 条标题 @@ -440,7 +434,6 @@ r_c(i,j\mid\theta)=\sum_{(x,y)\in(i,j)}\frac{z_{i,j,c}(x+x_0,\ y+y_0|\Theta)}{n} 其中,$r_c(i,j\mid\theta)$表示$ (i, j) $块对第$ C $类的池化响应;$z_{i,j,c}$是 $k^2(4 + 1)$分数图中的一个,$(x_0, y_0)$ 表示 RoI 的左上角;$n$表示的是每一块当中的像素值,$\Theta$为待学习参数。 池化操作后输出$k^2$个位置敏感的分数图,利用\equref{eqrc}和\equref{eqsc}得到每一类最终的分数,用于计算损失。 - \begin{equation} r_c(\Theta)=\sum_{i,j}r_c(i,j\mid\theta) \label{eqrc} @@ -496,11 +489,8 @@ L=\frac{1}{N}\left(\Big|\theta'-\theta_0\Big|+\sum\limits_i^n\lambda\omega_i^2\r \end{table} \end{center} -定义定理等环境示例: -% 模板支持以下环境:definition、theorem、proposition、corollary、lemma -% remark、exam、exer、note、proof、assumption、conclusion、solution -% 第二对{}内的内容为此定理的label,可以用此label引用 -\begin{theorem}{正弦定理}{theoremsin} +定义定理等环境示例:模板支持以下环境:definition、theorem、proposition、corollary、lemma、remark、exam、exer、note、proof、assumption、conclusion、solution,第二对\{\}内的内容为此定理的label,可以用此label引用,定理\ref{thm:sin}如下。 +\begin{theorem}{正弦定理}{thm:sin} \begin{equation} \frac{a}{\sin A}=\frac{b}{\sin B}=\frac{c}{\sin C} \end{equation} @@ -508,7 +498,7 @@ L=\frac{1}{N}\left(\Big|\theta'-\theta_0\Big|+\sum\limits_i^n\lambda\omega_i^2\r \end{theorem} % 证明环境 \begin{proof} -\lipsum[5] +以下是一段无意义文字:\lipsum[5] \end{proof} % 结论 @@ -611,5 +601,70 @@ Multiple-Layer Feature Representations of lightweight convolutional neural netwo $\cdots$ +% 开始写附录 +\appendix + +% 注意:由于模板的一些限制,附录部分章节需要手动编号 +% 附录的章节均需要使用带星号的版本 +\chapter*{附录A\hskip.5em 外文资料翻译} +\addcontentsline{toc}{chapter}{附录A\hskip.5em 外文资料翻译} +% 设置章节编号为1,即A +\setcounter{chapter}{1} +% 重置所有计数器 +\setcounter{equation}{0} +\setcounter{figure}{0} +\setcounter{table}{0} + +题目:基于驾驶员—车辆—道路交互的驾驶安全场 + +期刊:IEEE Transactions on Intelligent Transportation Systems, 2015, 16: 2203-2214. + +摘要:车辆驾驶安全受许多因素的影响,包括驾驶员、车辆和道路环境,它们之间的相互作用非常复杂。现有的评估驾驶安全性的方法仅考虑有限的因素及其相互作用,基于运动学和动力学的车辆驾驶安全辅助系统难以适应日益复杂的交通环境。在本文中,我们提出了一个新的概念——驾驶安全场。驾驶安全场利用场论来表示由驾驶员、车辆、道路状况和其他交通因素引起的风险因素。本文构建了一个统一的驾驶安全场模型,包括以下三个部分:(1)势能场,由道路上的静止物体构成,例如停止的车辆;(2)动能场,由道路上的移动物体构成,例如车辆和行人;(3)行为场,由驾驶员的个人特征构成。 + +\section*{A.1\hskip.5em 求和算子} + +\textbf{求和算子} 是用以表达多个数求和运算的一个缩略符号,它在统计学和计量经济学分析中扮演着重要作用。如果 $\{x_i: i=1, 2, \cdots, n\}$ 表示 $n$ 个数的一个序列,那么我们就把这 $n$ 个数的和写为\equref{eq:1}: +\begin{equation} +\label{eq:1} +\sum_{i=1}^n x_i \equiv x_1 + x_2 +\cdots + x_n +\end{equation} + +引用图片示例:\figref{appen:angle} + +\begin{figure}[!htbp] + \centering + \includegraphics[width=0.6\textwidth]{3angle} + \caption{附录插图示例:Angle-Net 结构} + \label{appen:angle} +\end{figure} + +\chapter*{附录B\hskip.5em 其他附录文本} +\addcontentsline{toc}{chapter}{附录B\hskip.5em 其他附录文本} +% 设置章节编号为1,即A +\setcounter{chapter}{2} +% 重置所有计数器 +\setcounter{equation}{0} +\setcounter{figure}{0} +\setcounter{table}{0} + +\lipsum[2] + +\section*{B.1\hskip.5em 求和算子} + +\textbf{求和算子} 是用以表达多个数求和运算的一个缩略符号,它在统计学和计量经济学分析中扮演着重要作用。如果 $\{x_i: i=1, 2, \cdots, n\}$ 表示 $n$ 个数的一个序列,那么我们就把这 $n$ 个数的和写为\equref{eq:2}: +\begin{equation} +\label{eq:2} +a^2+b^2=c^2 +\end{equation} + +引用图片示例:\figref{appen:fire} + +\begin{figure}[!htbp] + \centering + \includegraphics[width=0.6\textwidth]{less3} + \caption{附录插图示例:f\/ire模块} + \label{appen:fire} +\end{figure} + % 结束文档撰写 -\end{document}
\ No newline at end of file +\end{document} diff --git a/macros/latex/contrib/hitszthesis/spine.pdf b/macros/latex/contrib/hitszthesis/spine.pdf Binary files differnew file mode 100644 index 0000000000..68581cc563 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/spine.pdf diff --git a/macros/latex/contrib/hitszthesis/spine.tex b/macros/latex/contrib/hitszthesis/spine.tex new file mode 100644 index 0000000000..b4144230d8 --- /dev/null +++ b/macros/latex/contrib/hitszthesis/spine.tex @@ -0,0 +1,14 @@ +\documentclass{hitszthesis} + +% 论文标题 +\thesistitle{基于神经网络的机器人智能抓取研究} + +% 姓名 +\authorname{杨敬轩} + +\begin{document} + +% 使用默认标题和默认作者 +\spine + +\end{document} diff --git a/macros/luatex/optex/README b/macros/luatex/optex/README index 066037a0f9..8cc02a11bf 100644 --- a/macros/luatex/optex/README +++ b/macros/luatex/optex/README @@ -5,3 +5,15 @@ Author: Petr Olsak, <petr@olsak.net> This software is in public domain. See http://petr.olsak.net/optex + +History: + +<0.03> optex-doc optex.1 included, + verbatim.opm re-implmented, + math-unicode implemented, + usebib.opm + bib-style.opm included + \catcodetable stack implemented + bugfixing of macros. + catcodes.opl: removed, one can use \catcodetable, ... primitives, + pdfuni-string: lua code for lua5.3 fixed. +<0.02> Released. diff --git a/macros/luatex/optex/alloc.opm b/macros/luatex/optex/alloc.opm index 1e27d0cc23..6ca5939ab1 100644 --- a/macros/luatex/optex/alloc.opm +++ b/macros/luatex/optex/alloc.opm @@ -55,6 +55,14 @@ \_fi } +\_newcount \_attributealloc \_attributealloc=0 +\_chardef\_maiattribute=\_maicount +\_def\_newattribute #1{\_allocator #1{attribute}\_attributedef} + +\_newcount \_catcodetablealloc \_catcodetablealloc=10 +\_chardef\_maicatcodetable=32767 +\_def\_newcatcodetable #1{\_allocator #1{catcodetable}\_chardef} + \_newcount \tmpnum \_newcount \_tmpnum \_newdimen \tmpdim \_newdimen \_tmpdim @@ -65,8 +73,8 @@ \_newbox\_voidbox % permanently void box register \_public - \maicount \maidimen \maiskip \maimuskip \maibox \maitoks \mairead \maiwrite \maimath \newcount \newdimen \newskip \newmuskip \newbox \newtoks \newread \newwrite \newmath + \newattribute \newcatcodetable \insertmin \newinsert \maxdimen \hideskip \centering \zoskip \voidbox ; diff --git a/macros/luatex/optex/basics-a.opm b/macros/luatex/optex/basics-a.opm deleted file mode 100644 index 988457837d..0000000000 --- a/macros/luatex/optex/basics-a.opm +++ /dev/null @@ -1,47 +0,0 @@ -%% This is part of OpTeX project, see http://petr.olsak.net/optex - -\_codedecl \sdef {Basic macros for OpTeX <2019-05-21>} - -\let\_bgroup={ \let\_egroup=} - -\_bgroup \_lccode`\.=`\\ \_lowercase{\_egroup \_def\_nbackslash {.}} -\_def\_empty {} -\_def\_wlog {\_immediate\_write-1 } % write on log file (only) - -\_def\_sdef #1{\_ea\_def \_csname#1\_endcsname} -\_def\_sxdef #1{\_ea\_xdef \_csname#1\_endcsname} -\_def\_slet#1#2{\_ea\_let \_csname#1\_ea\_endcsname \_csname#2\_endcsname} -\_def\_adef#1{\_catcode`#1=13 \_begingroup \_lccode`\~=`#1\_lowercase{\_endgroup\_def~}} -\_def\_cs #1{\_csname#1\_endcsname} - -\_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}} -\_ea\_def \_ea\_meaningsepare \_ea#\_ea1\_string m#2:#3->#4^{{#1}{#3}{#4}} - -\_long\_def\_isinlist #1#2#3{% \isinlist \list{word}\iftrue - \_long\_def\_isinlistA ##1#2##2\_end{% - \_def\_isinlistA {##2}% - \_unless\_ifx\_isinlistA\_empty - }% - \_ea \_isinlistA #1\_endlistsep#2\_end -} -\_bgroup \_catcode`!=3 \_catcode`?=3 -\_gdef\_replstring #1#2#3{% \replstring #1{stringA}{stringB} - \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}% - \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}% - \_ea\_replacestringsB\_fi}% - \_ea\_replacestringsA #1?#2!#2% - \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1} -\_egroup - -\_def\_loggingall{\_tracingcommands=3 \tracingstats=2 \tracingassigns=1 - \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 - \tracingmacros=2 \tracingparagraphs=1 \tracingrestores=1 } -\_def\_tracingall{\tracingonline=1 \loggingall} - -\_public - \bgroup \egroup \nbackslash \sdef \sxdef \slet \adef - \addto \meaningsepare \wlog \empty - \isinlist \replstring \loggingall \tracingall ; - -\_endcode % ------------------------------------- - diff --git a/macros/luatex/optex/basics-macros.opm b/macros/luatex/optex/basics-macros.opm index 368b9bd332..638270d38b 100644 --- a/macros/luatex/optex/basics-macros.opm +++ b/macros/luatex/optex/basics-macros.opm @@ -1,17 +1,16 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \sdef {Basic macros for OpTeX <2019-05-21>} +\_codedecl \sdef {Basic macros for OpTeX <2020-02-14>} \let\_bgroup={ \let\_egroup=} \_bgroup \_lccode`\.=`\\ \_lowercase{\_egroup \_def\_nbackslash {.}} \_edef \_nbb {\_nbackslash\_nbackslash} -\_edef \_pcent{\_xstring\%} +\_edef \_pcent{\_csstring\%} \_def \_empty {} \_def \_space { } \_def \_null {\_hbox{}} \_def \_wlog {\_immediate\_write-1 } % write on log file (only) -\_def \_wterm {\_immediate\_write16 } \_def \_opwarning #1{\_wterm{WARNING: #1.}} \_def \_sdef #1{\_ea\_def \_csname#1\_endcsname} @@ -21,16 +20,6 @@ \_def \_cs #1{\_csname#1\_endcsname} \_long\_def \_addto #1#2{\_ea\_def\_ea#1\_ea{#1#2}} -\_ea\_def \_ea\_meaningsepare \_ea#\_ea1\_string m#2:#3->#4^{{#1}{#3}{#4}} - -\_bgroup \_catcode`!=3 \_catcode`?=3 -\_gdef\_replstring #1#2#3{% \replstring #1{stringA}{stringB} - \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}% - \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}% - \_ea\_replacestringsB\_fi}% - \_ea\_replacestringsA #1?#2!#2% - \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1} -\_egroup \_def\_loggingall{\_tracingcommands=3 \tracingstats=2 \tracingassigns=1 \tracingpages=1 \tracingoutput=1 \tracinglostchars=1 @@ -41,10 +30,11 @@ \_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi} \_public - \bgroup \egroup \nbackslash \sdef \sxdef \slet \cs \adef - \addto \meaningsepare \wlog \wterm \opwarning + \bgroup \egroup \nbackslash \empty \space \null \nbb \pcent \ncaret - \isinlist \replstring \remfirstunderscore \loggingall \tracingall ; + \sdef \sxdef \slet \cs \adef + \addto \wlog \opwarning + \loggingall \tracingall ; \_endcode % ------------------------------------- diff --git a/macros/luatex/optex/bib-iso690.opm b/macros/luatex/optex/bib-iso690.opm new file mode 100644 index 0000000000..a104e58921 --- /dev/null +++ b/macros/luatex/optex/bib-iso690.opm @@ -0,0 +1,922 @@ +% opmac-bib-iso690 ... the OPmac bib style for reading .bib databases +% Petr Olsak, Apr. 2015 (beta) +% +% The bibliography printing from .bib files by ISO 690 standard is defied here. +% See the end of this file and the file opmac-bib.tex for more information. + +\ifx\opmacbibstyle\undefined \errmessage + {This file can be read by ``\string\usebib/? (simple) bibfiles'' command only} + \endinput \fi + +% misc: + +\def\maybedot{\ifnum\spacefactor=\sfcode`\.\relax\else.\fi} +\tmpnum=\sfcode`\. \advance\tmpnum by-2 \sfcode`\.=\tmpnum \sfcode`\?=\tmpnum \sfcode`\!=\tmpnum +\let\.=\maybedot % prevents from double periods + +\CreateField {option} +\def\isbiboption#1#2{\edef\tmp{\noexpand\isbiboptionA{#1}}\tmp} +\def\isbiboptionA#1{\def\tmp##1 #1 ##2\relax{% + \if^##2^\csname iffalse\expandafter\endcsname \else\csname iftrue\expandafter\endcsname \fi}% + \expandafter\tmp\biboptionsi #1 \relax} +\def\bibopt[#1]#2#3{\isbiboption{#1}\iftrue\def\tmp{#2}\else\def\tmp{#3}\fi\tmp} +\def\biboptionvalue#1#2{\def\tmp##1 #1:##2 ##3\relax{\def#2{##2}}% + \expandafter\tmp\biboptionsi #1: \relax} + +\def\readbiboptions{% + \RetrieveFieldIn{option}\biboptionsi + \toks1=\expandafter{\biboptionsi}% + \ifx\biboptions\undefined \toks2={}\else \toks2=\expandafter{\biboptions}\fi + \edef\biboptionsi{\space \the\toks1 \space \the\toks2 \space}% +} + +% Formating of Author/Editor lists: + +\def\firstauthorformat{% + \upper{\Lastname}\bprintc\Firstname{, *}\bprintc\Von{ *}\bprintc\Junior{, *}% +} +\def\otherauthorformat{% + \bprintc\Firstname{* }\bprintc\Von{* }\upper{\Lastname}\bprintc\Junior{, *}% +} +\def\commonname{% + \ifnum\NameCount=1 + \firstauthorformat + \ifx\dobibmark\undefined \edef\dobibmark{\Lastname}\fi + \else + \ifnum0\namecount=\NameCount + \ifx\maybeetal\empty \bibconjunctionand\else , \fi + \else , \fi + \otherauthorformat + \fi +} +\def\authorname{% + \ifnum\NameCount>0\namecount\relax\else \commonname \fi + \ifnum\NameCount=0\namecount\relax \maybeetal \fi +} +\let\editorname=\authorname + +\def\prepareauedoptions#1{% + \def\mabyetal{}\csname lb@abbreviatefalse\endcsname + \biboptionvalue{#1max}\authormax + \biboptionvalue{#1min}\authormin + \biboptionvalue{#1pre}\authorpre + \biboptionvalue{#1print}\authorprint + \isbiboption{#1etal}\iftrue \def\maybeetal{\Mtext{bib.etal}}\fi + \biboptionvalue{#1trim}\autrim + \let\namecountraw=\namecount + \ifx\authormax\empty \else + \ifnum 0\authormax<0\namecount + \edef\namecount{\ifx\authormin\empty\authormax\else\authormin\fi}% + \def\maybeetal{\Mtext{bib.etal}}% + \fi\fi + \ifx\autrim\empty \def\autrim{10000}\fi + \ifnum\autrim=0 \def\autrim{10000}\fi + \ifnum 0\namecount<\autrim\relax \else \AbbreviateFirstname \fi +} +\def\maybeetal{} + +\ifx\upper\undefined + \ifx\sc\undefined \def\upper{\uppercase\expandafter}\else \def\upper#1{{\sc#1}}\fi +\fi + +% Preparing bib-mark (used when \nonumcitations is set): + +\def\setbibmark{% + \ifx\dobibmark\undefined \def\dobibmark{}\fi + \RetrieveFieldIn{bibmark}\tmp + \ifx\tmp\empty \RetrieveFieldIn{year}\tmp \edef\tmp{\dobibmark, \tmp}\fi + \bibmark=\expandafter{\tmp}% +} + +% Multilinguals: English Czech Slovak + +\mtdef{bib.and} {, and } { a } {} +\mtdef{bib.etal} { et al.} { a~kol.} {} +\mtdef{bib.edition} { ed.} { vyd.} {} +\mtdef{bib.bachthesis} {Bachelor's Thesis} {Bakalářská práce} {Bakalárska práca} +\mtdef{bib.masthesis} {Master's Thesis} {Diplomová práce} {Diplomová práca} +\mtdef{bib.phdthesis} {Ph.D. Thesis} {Disertační práce} {Dizertačná práca} +\mtdef{bib.available} {Available from } {Dostupné na } {} +\mtdef{bib.availablealso} {Available also from } {Dostupné též na } {Dotupné tiež na } +\mtdef{bib.citedate} {cit.~} {vid.~} {} +\mtdef{bib.volume} {Vol.~} {ročník~} {} +\mtdef{bib.number} {No.~} {č.~} {} +\mtdef{bib.prepages} {pp.~} {s.~} {} +\mtdef{bib.postpages} {~p.} {~s.} {} +\mtdef{bib.editor} {,~ed.} {,~editor} {} +\mtdef{bib.editors} {,~eds.} {,~editoři} {,~editori} + + +\def\bibconjunctionand{\Mtext{bib.and}} +\def\preurl{\Mtext{bib.available}} +\let\predoi=\preurl +\def\postedition{\mtext{bib.edition}} +\def\Inclause{In:~} +\def\prevolume{\mtext{bib.volume}} +\def\prenumber{\mtext{bib.number}} +\def\prepages{\mtext{bib.prepages}} +\def\posteditor{\ifnum0\namecountraw>1 \Mtext{bib.editors}\else\Mtext{bib.editor}\fi} + + +\chardef\documentlanguage=\language +\def\Mtext#1{\csname _mt:#1:\csname lan:\the\documentlanguage\endcsname\endcsname} + +\CreateField {lang} +\def\setlang#1{\ifx#1\empty \else + \expandafter \ifx \csname #1Patt\endcsname \relax + \opwarning{The language "#1" used in .bib file is unknown} + \else \language=\csname #1Patt\endcsname + \fi\fi +} +\ifx\USenglish\undefined \chardef\USenglish=0 \fi +\let\enPatt=\USenglish \let\usPatt=\USenglish +\ifx\csPatt \undefined \let\csPatt=\czPatt \else \let\czPatt=\csPatt \fi + +% Non-standard fieldnames: + +\CreateField {ednote} +\CreateField {citedate} +\CreateField {numbering} +\CreateField {isbn} +\CreateField {issn} +\CreateField {doi} +\CreateField {url} +\CreateField {bibmark} + +% Sorting: + +\SortingOrder{name,year}{lfvj} +\SpecialSort {key} + +% Misc: + +\def\bibwarninga{\bibwarning} +\def\bibwarningb{\bibwarning} + +\def\docitedate #1/#2/#3/#4\relax{[\Mtext{bib.citedate}% + \if^#2^#1\else + \if^#3^#1/#2\else + \docitedateA{#1}{#2}{#3}% + \fi\fi ]% +} +\def\docitedateA#1#2#3{% + \ifx\csPatt\undefined \mathchardef\csPatt=10000 \fi + \ifx\skPatt\undefined \mathchardef\skPatt=10000 \fi + \ifnum\documentlanguage=\csPatt \docitedateCS{#1}{#2}{#3}% + \else \ifnum\documentlanguage=\skPatt \docitedateSK{#1}{#2}{#3}% + \else \docitedateEN{#1}{#2}{#3}% + \fi\fi +} +\def\docitedateEN#1#2#3{#1-#2-#3} +\def\docitedateCS#1#2#3{\hbox{\tmpnum=#3 \the\tmpnum. \tmpnum=#2 \the\tmpnum. #1}} +\let\docitedateSK=\docitedateCS + +\def\doyear#1{ + \biboptionvalue{yearprint}\yearprint + \ifx\yearprint\empty#1\else\def\YEAR{#1}\yearprint\fi +} +\def\preparenumbering{% + \def\VOL{\RetrieveField{volume}}% + \def\NO{\RetrieveField{number}}% + \def\PP{\RetrieveField{pages}}% +} +\def\prepareednote{% + \def\EDN{\RetrieveField{edition}}% + \def\ADDR{\RetrieveField{address}}% + \def\PUBL{\RetrieveField{publisher}}% + \def\YEAR{\RetrieveField{year}}% + \def\AU{\bprintb[!author]{\doauthor0{####1}}{}}% + \def\ED{\bprintb[!editor]{\doeditor0{####1}}{}}% + \preparenumbering +} +\def\doedition#1{% + \biboptionvalue{editionprint}\editionprint + \ifx\editionprint\empty#1\postedition\else\def\ED{#1}\editionprint\fi +} +\def\doauthor#1#2{\prepareauedoptions{au}\let\iseditorlist=\undefined + \if1#1\def\AU{#2}\else\let\authorprint=\empty\fi + \ifx\authorprint\empty #2\else \authorprint\fi +} +\def\doeditor#1#2{\prepareauedoptions{ed}\let\firstauthorformat=\otherauthorformat + \if1#1\def\ED{#2}\else\let\authorprint=\empty\fi + \ifx\authorprint\empty #2\posteditor\else \authorprint\fi +} + +% Entry types: + +\sdef{print:BEGIN}{% + \readbiboptions + \biboptionvalue{titlepost}\titlepost + \isbiboption{unpublished}\iftrue \let\bibwarninga=\relax \let\bibwarningb=\relax \fi + \isbiboption{nowarn}\iftrue \let\bibwarning=\relax \fi + \isbiboption{urlalso}\iftrue \def\preurl{\Mtext{bib.availablealso}}\fi + \RetrieveFieldIn{lang}\langentry \setlang\langentry +} +\sdef{print:END}{% + \bprinta [note] {*.}{}% + \setbibmark +} +\def\bookgeneric#1{% + \bprinta [howpublished] {[*].\ }{}% + \bprintb [edition] {\doedition{##1}\.\ }{}% + \bprinta [ednote] {*.\ }{}% + \bprinta [address] {*\bprintv[publisher]{:}{\bprintv[year]{,}{.}}\ }{\bibwarninga}% + \bprinta [publisher] {*\bprintv[year]{,}{.}\ }{\bibwarninga}% + \bprintb [year] {\doyear{##1}\bprintv[citedate]{\bprintv[numbering]{.}{}}{.}\ }{\bibwarning}% + \bprinta [numbering] {\preparenumbering*\bprintv[citedate]{}{\.}\ }{}% + \bprinta [citedate] {\docitedate*///\relax.\ }{}% + #1% + \bprinta [series] {*.\ }{}% + \bprinta [isbn] {ISBN~*.\ }{\bibwarningb}% + \bprinta [issn] {ISSN~*.\ }{}% + \bprintb [doi] {\predoi DOI \ulink[http://dx.doi.org/##1]{##1}.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:book}{% + \bprintb [!author] {\doauthor1{##1}\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\bprintc\titlepost{\.\ *}\bprintv[howpublished]{}{\.}\ }{\bibwarning}% + \bookgeneric{}% +} +\sdef{print:article}{% + \biboptionvalue{journalpost}\journalpost + \bprintb [!author] {\doauthor1{##1}\.\ }{\bibwarning}% + \bprinta [title] {*.\ \bprintc\titlepost{*.\ }}{\bibwarning}% + \bprintb [journal] {{\em##1}\bprintc\journalpost{\.\ *}\bprintv[howpublished]{}{\.}\ }{\bibwarninga}% + \bprinta [howpublished] {[*].\ }{}% + \bprinta [address] {*\bprintb[publisher]{:}{,}\ }{}% + \bprinta [publisher] {*, }{}% + \bprinta [month] {*, }{}% + \bprintb [year] {\doyear{##1}\bprintv[volume,number,pages]{,}{\.}\ }{}% + \bprinta [numbering] {\preparenumbering*\bprintv[citedate]{}{\.}\ } + {\bprinta [volume] {\prevolume*\bprintv[number,pages]{,}{\.}\ }{}% + \bprinta [number] {\prenumber*\bprintv[pages]{,}{\.}\ }{}% + \bprintb [pages] {\prepages\hbox{##1}\bprintv[citedate]{}{\.}\ }{\bibwarninga}}% + \bprinta [citedate] {\docitedate*///\relax.\ }{}% + \bprinta [issn] {ISSN~*.\ }{}% + \bprintb [doi] {\predoi DOI \ulink[http://dx.doi.org/##1]{##1}.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:inbook}{% + \let\bibwarningb=\relax + \bprintb [!author] {\doauthor1{##1}\.\ }{\bibwarning}% + \bprinta [title] {*.\ }{\bibwarning}% + \Inclause + \bprintb [!editor] {\doeditor1{##1}\.\ }{}% + \bprintb [booktitle] {{\em##1}\bprintc\titlepost{\.\ *}\bprintv[howpublished]{}{\.}\ }{\bibwarning}% + \bookgeneric{\bprintb [pages] {\prepages\hbox{##1}. }{}}% +} +\slet{print:inproceedings}{print:inbook} +\slet{print:conference}{print:inbook} + +\sdef{print:thesis}{% + \bprintb [!author] {\doauthor1{##1}\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\bprintc\titlepost{\.\ *}\bprintv[howpublished]{}{\.}\ }{\bibwarning}% + \bprinta [howpublished] {[*].\ }{}% + \bprinta [address] {*\bprintv[school]{:}{\bprintv[year]{,}{.}}\ }{\bibwarning}% + \bprinta [school] {*\bprintv[year]{,}{.}\ }{\bibwarning}% + \bprinta [month] {*, }{}% + \bprintb [year] {\doyear{##1}\bprintv[citedate]{}{.}\ }{\bibwarninga}% + \bprinta [citedate] {\docitedate*///\relax.\ }{}% + \bprinta [type] {*\bprintv[ednote]{,}{.}\ }% + {\ifx\thesistype\undefined\bibwarning\else\thesistype\bprintv[ednote]{,}{.}\ \fi}% + \bprinta [ednote] {*.\ }{}% + \bprintb [doi] {\predoi DOI \ulink[http://dx.doi.org/##1]{##1}.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:phdthesis}{\def\thesistype{\Mtext{bib.phdthesis}}\csname print:thesis\endcsname} +\sdef{print:mastershesis}{\def\thesistype{\Mtext{bib.masthesis}}\csname print:thesis\endcsname} +\sdef{print:bachelorsthesis}{\def\thesistype{\Mtext{bib.bachthesis}}\csname print:thesis\endcsname} + +\sdef{print:generic}{% + \bprintb [!author] {\doauthor1{##1}\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\bprintc\titlepost{\.\ *}\bprintv[howpublished]{}{\.}\ }{\bibwarning}% + \bprinta [howpublished] {[*].\ }{}% + \bprinta [ednote] {\prepareednote*\bprintv[citedate]{}{.}\ }{\bibwarning}% + \bprinta [year] {}{\bibwarning}% + \bprinta [citedate] {\docitedate*///\relax.\ }{}% + \bprintb [doi] {\predoi DOI \ulink[http://dx.doi.org/##1]{##1}.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\slet{print:booklet}{print:generic} +\slet{print:incolleciton}{print:generic} +\slet{print:manual}{print:generic} +\slet{print:proceedings}{print:generic} +\slet{print:techreport}{print:generic} +\slet{print:unpublished}{print:generic} + +\sdef{print:misc}{\let\bibwarning=\relax \csname print:generic\endcsname} + +\endinput + + +opmac-bib-iso690.tex +==================== + +This is the iso690 bibliographic style used by opmac-bib.tex package. + +See op-example.bib for an example of the .bib input. You can try it by: + +\input opmac-bib +\nocite[*] +\usebib/s (iso690) op-example +\end + + +Common rules in .bib files: +-------------------------- + +There are entries of type @FOO{...} in the .bib file. Each entry consists of +fields in the form name = "value", or name = {value}. No matter which form is +used. If the value is pure numeric then you can say simply name = value. +Warning: the comma after each field value is mandatory! If it is missing then the +next field is ignored or bad interpreted. + +The entry names and field names are case insensitive. If there exist a data +field no mentioned here then it is simply ignored. You can use it to store +more information (abstract, for example). + +There are ``standard fields'' used in ancient bibTeX (author, title, editor, edition, +etc., see http://en.wikipedia.org/wiki/BibTeX). The iso690 style introduces +several ``non-standard'' fields: ednote, numbering, isbn, issn, doi, url, +citedate, key, bibmark. They are documented here. + +Moreover, there are two optional special fields: + +lang = language of the entry. The hyphenation plus autogenerated phrases and + abbreviations will be typeset by this language. +option = options by which you can control special printing of vairous fields. + +There can be only one option field per each entry with (may be) more options +separated by spaces. You can declare the global option(s) in your document +applied for each entry by \def\biboptions{...}. + + +The author field +---------------- + +All names in the author list have to be separated by " and ". Each author +can be written by various formats (the ``von'' part is typically missing): + + Firstname(s) von Lastname + or + von Lastname, Firstname(s) + or + von Lastname, After, Firstname(s) + +Only the Lastname part is mandatory. Examples: + + Petr Olšák + or + Olšák, Petr + + Leonardo Piero da Vinci + or + da Vinci, Leonardo Piero + or + da Vinci, painter, Leonardo Piero + +The separator " and " between authors will be converted to comma during +printing, but between semifinal and final author the word "and" (or something +different depending on current language) is printed. + +The first author is printed in reverse order: ``LASTNAME, Firstname(s) von, +After'' and the others author are printed in normal order: ``Firstname(s) +von LASTNAME, After''. This feature follows the ISO 690 norm. The Lastname +is capitalised using uppercase letters, but if the \sc command is defined, +then it is used as an font switcher in the form {\sc Lastname}. You can +declare the ``Caps and small caps'' font here. + +You can specify the option "aumax:<number>". The <number> denotes the +maximum authors to be printed. The rest of authors are ignored and the +"et~al." is appended to the list of printed authors. This text is +printed only if the "aumax" value is less than the real number of authors. +If you have the same number of authors in the .bib file as you need to print +but you want to append "et~al." then you can use "auetal" option. + +There is a "aumin:<number>" option which denotes the definitive number of +printed authors if the author list is not fully printed due to "aumax". +If "aumin" is unused then "aumax" authors is printed in such case. + +All authors are printed if "aumax:<number>" option isn't given. +There is no internal limit. But you can set the global options in +your document by setting the \biboptions macro. For example: + + \def\biboptions {aumax:7 aumin:1} + % if there is 8 or more authors then only first author is printed. + +Examples: + + author = "John Green and Bob Brown and Alice Black", + +output: GREEN, John, Bob BROWN, and Alice BLACK. + + author = "John Green and Bob Brown and Alice Black", + option = "aumax:1", + +output: GREEN, John~et~al. + + author = "John Green and Bob Brown and Alice Black", + option = "aumax:2", + +output: GREEN, John, Bob BROWN~et~al. + + author = "John Green and Bob Brown and Alice Black", + option = "aumax:3", + +output: GREEN, John, Bob BROWN, and Alice BLACK. + + author = "John Green and Bob Brown and Alice Black", + option = "auetal", + +output: GREEN, John, Bob BROWN, Alice BLACK~et~al. + +If you need to add a text before or after authors list, you can use +the "auprint:{<value>}" option. The <value> will be printed instead of the +authors list. The <value> can include \AU macro which expands to the authors +list. Example: + + author = "Robert Calbraith", + option = "auprint:{\AU\space [pseudonym of J. K. Rowling]}", + +output: CALBRAITH Robert [pseudonym of J. K. Rowling]. + +You can use the "autrim:<number>" option. All Firstnames of all authors +are trimmed (i. e. reduced to initials) iff the number of authors in the +author field is greater than or equal to <number>. There is an exception: +"autrim:0" means that no Firstnames are trimmed. This is default behavior. +Another example: "autrim:1" means that all Firstnames are trimmed. + + author = "John Green and Bob Brown and Alice Black", + option = "auetal autrim:1", + +output: GREEN, J., B. BROWN, A. BLACK~et~al. + +If you need to write a team name or institution instead authors, replace all +spaces by \<space> in this name. Such text is interpreted as Lastname. You +can add the secondary name (interpreted as Firstname) after comma. Example: + + author = "Czech\ Technical\ University\ in\ Prague, Faculty\ of\ Electrical\ Engeneering", + +output: CZECH TECHNICAL UNIVERSITY IN PRAGUE, Faculty of Electrical Engeneering. + + +The editor field +---------------- + +The editor field is used for list of the authors of the collection. The +analogous rules as in author field are used here. It means that the +authors are separated by " and ", the Firstnames, Lastnames etc. are +interpreted and you can use the options "edmax:<number>", "edmin:<number>", +"edetal", "edtrim:<number>" and "edprint:<value>" (with \ED macro). +Example: + + editor = "Jan Tomek and Petr Karas", + option = "edprint:{\ED, editors.} edtrim:1", + +Output: J. TOMEK and P. KARAS, editors. + +If edprint option is not set then {\ED, eds.} or {\ED, ed.} is used +depending on the entry language and on the singular or plural of +the editor(s). + + +The ednote field +---------------- + +The ednote is used as the secondary authors and more editional info. The +value is read as raw data without any interpretation of Lastname, Firstname +etc. + + ednote = "Illustrations by Robert \upper{Agarwal}, edited by Tom \upper{Nowak}", + +output: Illustrations by Robert AGARWAL, edited by Tom NOWAK. + +The \upper command have to be used for Lastnames in ednote field. + + +The title field +--------------- + +This is the title of the work. It will be printed (in common entry types) by +italics. The ISO 690 norm declares, that the title plus optional subtitle +are in italics and they are separated by colon. Next, the optional secondary +title have to be printed in upright font. This can be added by +"titlepost:{<value>}". Example: + + title = "The Simple Title of The Work", +or + title = "Main Title: Subtitle", +or + title = "Main Title: Subtitle", + option = "titlepost:{Secondary title}", + +The output of the last example: + +{\it Main Title: Subtitle}. Secondary title. + + +The edition field +----------------- + +This field is used only for second or more edition of cited work. Write +only the number without the word "edition". The shortcut "ed." (or something +else depending on current language) is added automatically. Examples: + + edition = "Second", + edition = "2nd", + edition = "2$^{\rm nd}$", + edition = "2.", + +Output of the last example: 2. ed. + + edition = "2." + lang = "cs", + +Output: 2. vyd. + +Note, that the example edition = "Second" may cause problems. If you are +using language "cs" then the output is bad: Second vyd. So, you need to +say: + + edition = "Second", + lang = "en", + +You can use "ednprint:{<value>}" option. The the <value> is printed +instead of edition field and shortcut. The edition field must be set. Example: + + edition = "whatever", + option = "ednprint:{Second full revised edition}", + +Output: Second full revised edition. + +You can use \EDN macro in "ednprint" value. This macro is expanded +to the edition value. Example: + + edition = "Second", + option = "ednprint:{\EDN\space full revised edition}", + +or + + edition = "Second full revised edition", + option = "ednprint:{\EDN}", + + +The address, publisher, year fields +----------------------------------- + +This is an anachronism from ancient BibTeX (unfortunately no exclusive) that +the address field includes only the city of the publisher residence. No more +data are here. The publisher field includes the name of the publisher. + + address = "Berlin", + publisher = "Springer Verlag", + year = 2012, + +Output: Berlin: Springer Verlag, 2012. + +Note, that the year needn't to be inserted into quotes because it is pure +numeric. + +The letter a, b etc. are appended to the year automatically, if two or more +subsequent entries in the bibliography list are not distinct by the first +author and year fields. If you needn't this feature, you can use the +"noautoletters" option. + +You can use "yearprint:{<value>}" option. If it is set then the <value> +is used for printing year instead the real field value. The reason: year is +sort sensitive, may be you need to print something else than sorting key. +Example: + + year = 2000, + option = "yearpint:{\copyright 2000}", + +Output: \copyright 2000, sorted by: 2000. + + year = "2012a", + option = "yearprint:{2012}", + +Output: 2012, sorted by: 2012a. + +The address, publisher and year are typically mandatory fields. If they are +missing then the OPmac warning occurs. But you can set "unpublished" +option. Then this warning is suppressed. There is no difference in the +printed output. + + +The url field +------------- + +Use it without \url macro, but with http:// prefix. Example: + + url = "http://petr.olsak.net/opmac.html", + +The ISO 690 norm recommends to add the text ``Available from'' (or +something else if different current language is used) before URL. +It means, that the output of previous example is: + +Available from \url{http://petr.olsak.net/opmac.html}. + +If the "cs" language is the current one than the output is: + +Dostupné z: \url{http://petr.olsak.net/opmac.html}. + +If the "urlalso" option is used, then the added text has the form +``Available also from'' or ``Dostupné také z:'' (if "cs" language is +current). + + +The citedate field +------------------ + +This is the citation date. The field must be in the form year/month/day. It +means, that the two slashes must be written here. The output depends on the +current language. Example: + + citedate = "2004/05/21", + +Output when "en" is current: [cit. 2004-05-21]. +Output when "cs" is current: [vid. 21.~5.~2004]. + + +The howpublished field +---------------------- + +This declares the available medium for cited document if it is not in printed +form. Alternatives: online, CD, DVD, etc. Example: + + howpublished = "online", + +Output: [online]. + + +The volume, number, pages and numbering fields +---------------------------------------------- + +The volume is the ``big mark'' of the journal issue and the number is the +``small mark'' of the journal issue and pages includes the page range of +the cited article in the journal. The volume is prefixed by Vol.~, +the number by No.~ and the pages by pp.~. But these prefixes depends on the +language of the entry. + +Example: + + volume = 31, + number = 3, + pages = "37--42", + +Output: Vol.~31, No.~3, pp.~37--42. + + volume = 31, + number = 3, + pages = "37--42", + lang = "cs", + +Output: ročník~31, č.~3, s.~37--42. + +If you disagree with the default prefixes, you can use the numbering field. +When it is set then it is is used instead of volume, number, pages fields +and instead of any mentioned prefixes. The numbering can include macros \VOL, +\NO, \PP, which are expanded to the respective values of fields. Example: + + volume = 31, + number = 3, + pages = "37--42" + numbering = "Issue~\VOL/\NO, pages~\PP", + +Output: Issue~31/3, pages~37--42 + +Note: The volume, numbers and pages fields are printed without numbering +filed only in the @ARTICLE entry. It means, that if you need to visible them +in the @INBOOK, @INPROCEEDINGS etc. fields, then you must to use numbering field. + + +Common notes about entries +-------------------------- + +The order of the fields in the entry is irrelevant. We use the printed order +in this manual. The exclamation mark (!) denotes the mandatory field. If +such field is missing then the warning occurs during processing. + +If the "unpublished" option is set then the fields address, publisher, year, +isbn and pages are not mandatory. If the "nowarn" option is set then no +warnings about missing mandatory fields occurs. + +If the field is used but not mentioned in the entry documentation below then +it is silently ignored. + +The @BOOK entry +--------------- + +This is used for book-like entries. + +Fields: author(!), title(!), howpublished, edition, ednote, address(!), +publisher(!), year(!), citedate, series, isbn(!), doi, url, note. + +The ednote field here means the secondary authors (illustrator, cover design +etc.). + + +The @ARTICLE entry +------------------ + +This is used for articles published in a journal. + +Fields: author(!), title(!), journal(!), howpublished, address, publisher, +month, year, [numbering or volume, number, pages(!)], citedate, issn, +doi, url, note. + +If the numbering is used then it is used instead volume, number, pages. + + +The @INBOOK entry +----------------- + +This is used for the part of a book. + +Fields: author(!), title(!), booktitle(!), howpublished, edition, ednote, +address(!), publisher(!), year(!), numbering, citedate, series, isbn or +issn, doi, url, note. + +The author field is used for author(s) of the part, the editor field +includes author(s) or editor(s) of whole document. The pages field specifies +the page range of the part. The series field can include more information +about the part (chapter numbers etc.). + +The @INPROCEEDINGS and @CONFERENCE entries are equivalent to @INBOOK entry. + + +The @THESIS entry +----------------- + +This is used for student's thesis. + +Fields: author(!), title(!), howpublished, address(!), school(!), +month, year(!), citedate, type(!), ednote, doi, url, note. + +The type field must include the text "Master's Thesis" or something +similar (depending on the language of the outer document). + +There are nearly equivalent entries: @BACHELORSTHESIS, @MASTERSTHESIS and +@PHDTHESIS. These entries sets the type field to an appropriate value +automatically. The type field is optional in such case. If it is used then +it has a precedence before default setting. + + +The @MISC entry +--------------- + +It is intended for various usage. + +Fields: author, title, howpublished, ednote, citedate, doi, url, note. + +You can use \AU, \ED, \EDN, \VOL, \NO, \PP, \ADDR, \PUBL, \YEAR +macros in ednote field. These macros print authors list, editors list, +edition, volume, number, pages, address, publisher and year field values +respecitively. If they are are missing then the appropriate macro is empty. + +The reason of this entry is to give to you the possibility to set the format of +entry by your own decision. The most of data are concentrated in ednote +field. + + +The @BOOKLET, @INCOLLECION, @MANUAL, @PROCEEDINGS, @TECHREPORT, @UNPUBLISHED entries +------------------------------------------------------------------------------------- + +These entries are equivalent to @MICS entry because we need to save the +simplicity. They are implemented only for (almost) backward compatibility +with the ancient BibTeX. But the ednote is mandatory field here, so you +cannot use these entries from the old databases without warnings and without +some additional work in the .bib file. + + +The cite-marks (bibmark) used when \nonumcitations is set +--------------------------------------------------------- + +When \nonumcitations is set then \cite prints the cite-marks (called +bibmark) instead numbers. This style file autogenerates these marks in the +form "Lastname of the first author, comma, space, the year" if bibmark field +isn't declared. If you need to set an exception from this common format, +then you can use bibmark field. + +The OPmac trick http://petr.olsak.net/opmac-tricks-e.html#bibmark +describes how to redefine the algorithm for bibmark auto-generating when you +need the short form of the type [Au13]. + + +Sorting +------- + +If \usebib/c is used then entries are sorted by citation order in the text. +If \usebib/s is used then entries are sorted by ``Lastname, Firstname(s)'' of +the first author and if more entries have this value equal, then the year is +used (from older to newer). This feature follows the recommendation of the +ISO 690 norm. + +If you have the same authors and the same year, you can control the sorting +by setting years as 2013, 2013a, 2013b, etc. You can print something +different to the list using "yearprint{<value>}" option, see the section about +address, publisher and year above. The real value of year field (ie. not +yearprint value) is also used in citations when \nonumcitations is set. + +If you have some problems with name sorting, you can use the hidden field +"key", which is used for sorting instead of the ``Lastname Firstname(s)'' +of authors. If the "key" field is unset then the ``Lastname Firstname(s)'' +is used for sorting normally. Example: + + author = "Světla Čmejrková", + key = "Czzmejrkova Svetla", + +This entry is now sorted between C and D. + +The norm recommends to place the autocitations to the top of the list of +references. You can do this by setting key = "@", to each entry with your +name because the "@" character is sorted before A. + + +Languages +--------- + +There is the language of the outer document and the languages of each entry. +The ISO 690 norm recommends that the technical notes (the prefix before URL, +the media type, the ``and'' conjunction between semifinal and final author) +may be printed in the language of the outer document. The data of the entry +have to be printed in the entry language (edition ed./vyd., Vol./ročník, +No./č. etc.). Finally there are the phrases independent on the language +(for example In:). Unfortunately, the bibTeX supposes that the entry data +are not fully included in value parts of the fields (see edition, volume +etc. fields) so the automaton have to add some text during processing. +But what language have to be chosen? + +The current value of the \language register at the start of the .bib +processing is decided as the language of the outer document. This language +is used for technical notes regardless of the entry language. Each entry can +have the lang field with the two-letter mark of the entry language. This +language is used for ed./vyd., vol./ročník etc. and it is used for +hyphenation too. If the entry language is not set then the outer document +language is used. + +If the outer document language is know before creating of the .bib file, you +can store some language-dependent phrases into it. On the other hand, if the +main document language is unknown, you can use the \Mtext macro to +create the text multilingual. Example: + + howpublished = "\Mtext{bue-ray}" + +Now, you can set the variants of blue-ray into your macros: + + \mtdef {blue-ray} {Blue-ray disc} {Blue-ray disk} {} + + +Tips for using more languages +----------------------------- + +OPmac prefers English, Czech and Slovak languages. However, you can add +more languages. If you are using csplain, you can download the +hyphen-patterns for many languages, see the hyphen.lan file. For example, +you have had \dePatt and \plPatt downloaded (for German and Polish +languages). Now, you can do + +\sdef{lan:21}{de} \sdef{lan:121}{de} +\sdef{lan:23}{pl} \sdef{lan:123}{pl} +\def\mtdefx#1#2#3{\sdef{_mt:#1:de}{#2}\sdef{_mt:#1:pl}{#3}} + + % German % Polish +\mtdefx {bib.and} { und } { a } +\mtdefx {bib.phdthesis} {Ph.D. Dissertation} {Praca doktorska} +... + + +Summary of non-standard fields +------------------------------ + +This style uses the following fields unkown by bibTeX: + +option ... options separated by spaces +lang ... the language two-letter code of one entry +ednote ... editional info (secondary authors etc.) or + global data in @MISC-like entries +citedate ... the date of the citation in year/month/day format +numbering ... format for volume, number, pages +isbn ... ISBN +issn ... ISSN +doi ... DOI +url ... URL + + +Summary of options +------------------ + +aumax:<number> ... maximum number of printed authors +aumin:<number> ... number of printed authors if aumax exceedes +autrim:<number> ... full Firstnames iff number of authors are less than this +auprint:{<value>} ... text instead auhors list (\AU macro may be used) +edmax, edmin, edtrim ... similar as above for editors list +edprint:{<value>} ... text instead editors list (\ED macro may be used) +titlepost:{<value>} ... text after title +yearprint:{<value>} ... text instead real year (\YEAR macro may be used) +ednprint:{<value>} ... text instead real edition (\EDN macro may be used) +urlalso ... the ``available also from'' is used instead ``available from'' +unpublished ... the publisher etc. fields are not mandatory +nowarn ... no mandatory fields + +Another options in the option field are silently ignored. diff --git a/macros/luatex/optex/bib-simple.opm b/macros/luatex/optex/bib-simple.opm new file mode 100644 index 0000000000..642c6d8482 --- /dev/null +++ b/macros/luatex/optex/bib-simple.opm @@ -0,0 +1,183 @@ +% opmac-bib-simple ... the OPmac bib style for reading .bib databases +% Petr Olsak, version Apr. 2015 (beta) +% See the end of the file opmac-bib.tex for more information. +% You can compare this file with the old Forth-like BibTeX .bst files. +% What seems to be more understandable? + +\ifx\opmacbibstyle\undefined \errmessage + {This file can be read by ``\string\usebib/? (simple) bibfiles'' command only} + \endinput \fi + +% misc: + +\def\maybedot{\ifnum\spacefactor=\sfcode`\.\relax\else.\fi} +\tmpnum=\sfcode`\. \advance\tmpnum by-2 \sfcode`\.=\tmpnum +\sfcode`\?=\tmpnum \sfcode`\!=\tmpnum +\let\.=\maybedot % prevents from double periods + +% Formating of Author/Editor lists: + +\def\authorname{% + \ifnum\NameCount>1 + \ifnum0\namecount=\NameCount \mtext{bib.and}\else , \fi + \else + \ifx\dobibmark\undefined \edef\dobibmark{\Lastname}\fi + \fi + \bprintc\Firstname{* }\bprintc\Von{* }\Lastname\bprintc\Junior{, *}% +} +\let\editorname=\authorname + +% Preparing bib-mark (used when \nonumcitations is set): + +\def\setbibmark{% + \ifx\dobibmark\undefined \def\dobibmark{}\fi + \RetrieveFieldIn{bibmark}\tmp + \ifx\tmp\empty \RetrieveFieldIn{year}\tmp \edef\tmp{\dobibmark, \tmp}\fi + \bibmark=\expandafter{\tmp}% +} + +% Multilinguals: English Czech Slovak + +\mtdef{bib.and} {, and } { a } {} +\mtdef{bib.edition} {edition} {vydání} {vydanie} +\mtdef{bib.masterthesis} {Master's Thesis} {Diplomová práce} {Diplomová práca} +\mtdef{bib.phdthesis} {Ph.D. Thesis} {Disertační práce} {Dizertačná práca} + + +\def\preurl{\hfil\break} + +% Non-standard fieldnames: + +\CreateField {isbn} +\CreateField {doi} +\CreateField {url} +\CreateField {bibmark} + +% Sorting: + +\SortingOrder{name,year}{lfvj} +\SpecialSort {key} + +% Entry types: + +\sdef{print:END}{% + \bprinta [note] {*.}{}% + \setbibmark +} +\sdef{print:book}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}.\ }{\bibwarning}% + \bprinta [edition] {*~\mtext{bib.edition}.\ }{}% + \bprinta [address] {*: }{\bibwarning}% + \bprinta [publisher] {*, }{\bibwarning}% + \bprinta [year] {*.\ }{\bibwarning}% + \bprinta [isbn] {ISBN~*.\ }{\bibwarning}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:article}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprinta [title] {*.\ }{\bibwarning}% + \bprintb [journal] {{\em##1}.\ }{\bibwarning}% + \bprinta [year] {*, }{}% + \bprinta [volume] {* }{}% + \bprinta [number] {(*), }{}% + \bprinta [pages] {*.\ }{}% + \bprintb [doi] {DOI~\ulink[http://dx.doi.org/##1]{##1}.\ }{}% +} +\sdef{print:inbook}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1.}\ }{\bibwarning}% + In:~% + \bprinta [!editor] {*,~eds.\ }{}% + \bprintb [booktitle] {{\em##1}.\ }{\bibwarning}% + \bprinta [address] {*: }{\bibwarning}% + \bprinta [publisher] {*, }{\bibwarning}% + \bprinta [year] {*.\ }{\bibwarning}% + \bprinta [chapter] {*.\ }{% + \bprinta [pages] {*.\ }{}}% + \bprinta [isbn] {ISBN~*.\ }{\bibwarning}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\slet{print:inproceedings}{print:inbook} + +\sdef{print:incolection}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}.\ }{\bibwarning}% + \bprinta [crossreff] {In~\cite[*]. }{% + \bprinta [booktitle] {*. }{\bibwarning}% + \bprinta [!editor] {*,~eds.\ }{\bibwarning}% + \bprinta [edition] {*~\mtext{bib.edition}.\ }{\bibwarning}% + \bprinta [address] {*: }{\bibwarning}% + \bprinta [publisher] {*, }{\bibwarning}% + \bprinta [year] {*.\ }{\bibwarning}% + \bprinta [pages] {*.\ }{}% + \bprintb [url] {\preurl\url{####1}. }{}}% +} +\sdef{print:conference}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \bprinta [edition] {*~\mtext{bib.edition}.\ }{}% + \bprinta [address] {*: }{\bibwarning}% + \bprinta [publisher] {*, }{\bibwarning}% + \bprinta [year] {*.\ }{\bibwarning}% + \bprinta [isbn] {ISBN~*.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:phdthesis}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \mtext{bib.phdthesis}, % + \bprinta [school] {*.\ }{}% + \bprinta [address] {*, }{}% + \bprinta [year] {*.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:mastersthesis}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \mtext{bib.masterthesis}, % + \bprinta [school] {*.\ }{}% + \bprinta [address] {*, }{}% + \bprinta [year] {*.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:proceedings}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \bprinta [publisher] {*.\ }{% + \bprinta [organization] {*.\ }{\bibwarning}}% +} +\sdef{print:techreport}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \mtext{bib.techreport}. + \bprinta [institution] {*.\ }{}% +} +\sdef{print:booklet}{% + \bprinta [!author] {*\.\ }{\bibwarning}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \bprinta [howpublished] {*.\ }{\bibwarning}% +} +\sdef{print:manual}{% + \bprinta [!author] {*\.\ }{}% + \bprintb [title] {{\em##1}\.\ }{\bibwarning}% + \bprinta [year] {*.\ }{}% + \bprinta [institution] {*.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} +\sdef{print:misc}{% + \bprinta [!author] {*\.\ }{}% + \bprintb [title] {{\em##1}\.\ }{}% + \bprinta [howpublished] {*.\ }{}% + \bprinta [institution] {*.\ }{}% + \bprinta [series] {*.\ }{}% + \bprinta [year] {*.\ }{}% + \bprintb [url] {\preurl\url{##1}. }{}% +} + +%%% end of the style file + +\endinput + +You can copy this file to opmac-bib-yourname.tex and modify it by your +needs... diff --git a/macros/luatex/optex/catcodes.opm b/macros/luatex/optex/catcodes.opm deleted file mode 100644 index d675e482be..0000000000 --- a/macros/luatex/optex/catcodes.opm +++ /dev/null @@ -1,137 +0,0 @@ -%% This is part of OpTeX project, see http://petr.olsak.net/optex - -\_codedecl \setcatcode {Initialization category codes <2020-01-23>} - -\_def \_optexcatcodes {% - \_setcatcode `\\=0 % backlslash starts control sequences - \_setcatcode `\{=1 % left brace is begin-group character - \_setcatcode `\}=2 % right brace is end-group character - \_setcatcode `\$=3 % dollar sign is math shift - \_setcatcode `\&=4 % ampersand is alignment tab - \_setcatcode `\^^M=5 % ascii return is end-line - \_setcatcode `\#=6 % hash mark is macro parameter character - \_setcatcode `\^=7 - \_setcatcode `\^^K=7 % circumflex and uparrow are for superscripts - \_setcatcode `\^^A=8 % downarrow is for subscripts - \_setcatcode `\ =10 % ascii space is blank space - \_setcatcode `\^^I=10 % ascii tab is a blank space - \_setcatcode `\_=11 % underline can be used in control sequences - \_setcatcode `\~=13 % tilde is active - \_setcatcode `\%=14 % percent sign is comment character - \_setcatcode 127=12 % normal character -} -\_let \_setcatcode =\catcode \_optexcatcodes % catcode initialization - -\_def \_normalasciicatcodes {% - \_setcatcodes 33-34: 12 - \_setcatcodes 39-64: 12 - \_setcatcodes 65-90: 11 - \_setcatcode `\[=12 - \_setcatcode `\]=12 - \_setcatcode `\`=12 - \_setcatcodes 97-122: 11 - \_setcatcode `\|=12 - \_optexcatcodes -} -\_def \_setcatcodes #1-#2: #3 {% - \_tmpnum=#1 - \_loop - \_setcatcode \_the\_tmpnum =#3 - \_advance \_tmpnum by1 - \_unless \_ifnum \_tmpnum >#2 \_repeat -} -\_def \_setcatcode #1=#2 {% - \_ifx \_setcatcode \_empty \_errmessage {Use \_noexpand\savecatcode before \_noexpand\setcatcode}\_fi - \_unless \_ifnum \_catcode #1=#2 - \_ea \_setcatcodeA \_catcodelist \_end {#1}% - \_catcode #1=#2 - \_fi -} -\_def \_setcatcodeA #1#2\_end #3{\_edef \_catcodelist{{#1}\_catcode #3=\_the\_catcode #3 #2}} -\_def \_savecatcodes {\_edef\_catcodelist {{\_catcodelist}}} -\_def \_restorecatcodes {\_ea\_def \_ea\_catcodelist \_catcodelist} -\_def \_catcodelist{{}} - -\_chardef\_active=13 \_catcode`\~=\_active % tilde is active -%\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par", obsolete - -\public - \optexcatcodes \normalasciicatcodes \setcatcodes \setcatcode - \savecatcodes \restorecatcodes \active ; - -\_endcode % ---------------------------------------- - -Basic category codes inspired by plain \TeX/ are set here. The only -difference is underline: it can be used in control sequences in \SpTeX/, so -its category code is 11. But plain \TeX/ sets it to 8 for subscripts. We'll -define `_` subscript only in math mode, see `math-basics.spm`. - -Second differnece from plain \TeX/ is `\catcode127`, which is set to invalid -character in plain \TeX/ but we set it as normal character. - -`\normalasciicatodes` sets catcodes of all ascii visible characters to its -"normal" values used in \SpTeX/. - -We implement catcodes stack by three macros: `\savecatcodes`, `\setcatcode` -and `\restorecatcodes` which bahaves with catcode values like -`\begingroup`, `\catcode` and `\endgroup` but it does not -open/close any \TeX/ group. You can use it for eaxample - -\begtt -\savecatcodes \normalasciicatcodes \input macrofile.tex \restorecatcodes -\endtt -% -and you are sure that - -\begitems -* `macrofile.tex` is read with normal catodes, -* previous catcode setting is restored after the `macrofile.tex` is read. -\enditems - -The catcodes stack cannot be crossed by \TeX/ groups. But it is not -problem to re-implement it to global setting if you want. - -You can use `\setcatcodes <from>-<to>: <value>` to set a range of characters. -This macro uses `\setcatcode` repeatedly. - - -\sec Implemetation details: - -First, we define `\_plaintexcatcodes` and use it macro with -`\_let\_setcatcode=\catcode`. This code sets the "normal" catcodes. - -The main idea of catcode stack implementation is that the macro -`\_setcatcode` does nothing if previus catcode value is the same as desired -value. Else it saves previous value into `\_catcodelist` and sets desired -value. Finally `\_restorecatcodes` restores values from the `\_catcodelist`. - -We need to support stack behavior, it means that nested pairs -`\_savecatcodes` and `\_restorecatcodes` work well. This is a reason why the -current value of the `\_catcodelist` looks like this: - -\begtt -{data actual before last \_savecatcodes} currently generated data -\endtt -% -Then `\_restorecatcodes` does - -\begtt -\_def \_catcodelist {data actual before savecatcodes} apply currently generated data -\endtt - -We need to apply currently generated data in reverse order. This is done by -the macro `\setcatcodeA` (invoked by the `\setcatcode`) which inserts new -data HERE-NEW: - -\begtt -{data actual before last savecatdodes} HERE-NEW currently generated data -\endtt - -One record of data is in the form `\catode char-code=previous-value`, so we -need simply to "run" the currently generated data in order to restore -values. - -Notice: the `\_codedecl` and `\_endcode` macros are redefined and explained in basic.opm - - - diff --git a/macros/luatex/optex/doc/optex-doc.pdf b/macros/luatex/optex/doc/optex-doc.pdf Binary files differnew file mode 100644 index 0000000000..93a6d13eb3 --- /dev/null +++ b/macros/luatex/optex/doc/optex-doc.pdf diff --git a/macros/luatex/optex/doc/optex-doc.tex b/macros/luatex/optex/doc/optex-doc.tex new file mode 100644 index 0000000000..514a322dd7 --- /dev/null +++ b/macros/luatex/optex/doc/optex-doc.tex @@ -0,0 +1,1546 @@ + +\fontfam[LMfonts] +\typosize[11/13] +\enlang + +\localcolor +\catcode`<=13 +\def<#1>{\hbox{$\langle$\it#1\/$\rangle$}} +\intthook={\catcode`\<=13} +\tthook=\intthook +\chardef\"="201C + +\def\new{\mnote{\Red$\blacktriangleleft$}} +\fixmnotes\right + +\activettchar` + +\hyperlinks{\Blue}{\Green} +\insertoutline{CONTENTS} \outlines{0} + + +\tit \OpTeX/\nl Format Based on Plain \TeX/ and OPmac\fnotemark1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hfill Version Alpha 0.03 + +\centerline{\it Petr Olšák, 2020} + +\bigskip +\centerline{\url{http://petr.olsak.net/optex}} + + +\fnotetext {The OPmac package is a set of simple additional macros to plain\TeX{}. It +enables users to take advantage of basic \LaTeX/ functionality but keeps +plain \TeX/ simplicity. See +\url{http://petr.olsak.net/opmac-e.html} for more information about it. +For OPmac users: the red triangle {\Red$\blacktriangleleft$} in the right margin +means that there is a difference from standard OPmac features.} + +\notoc\nonum \sec Contents +\maketoc + +\nonum \sec Introduction +%%%%%%%%%%%% + +\OpTeX/ is \LuaTeX/ format with plain \TeX/ and OPmac. Only \LuaTeX/ engine +is supported. The main goal of \OpTeX/ is: + +\begitems +* \OpTeX/ keeps the simplicity (like in plain \TeX/ and OPmac macros). +* There is no old obscurities concerning with various 8-bit encodings and + various engines. +* \OpTeX/ provides a powerful font selection system (for Unicode font + families, of course). +* \OpTeX/ supports hyphenations of all languages installed in your \TeX/ system. +* All features from OPmac macros are copied (for example, you can see + opmac-prospectus.pdf) +* Macros are documented in the same place where code is (macros for printing + this documentation will come in the future). +* User name space of control sequences is separated from internal name space + of OpTeX and primitives (`\foo` versus `\_foo`). +\enditems + +\OpTeX/ should be a modern plain \TeX/ with power from OPmac (fonts selection +system, colors, external graphics, references, hyperlinks...) with unicode +fonts. + +\OpTeX/ (like OPmac) offers a markup language for authors of texts (like \LaTeX), +i.e. the fixed set of tags to define the structure of the document. This +markup is different from the \LaTeX{} markup. It may offer to write the +source text of the document somewhat clearer and more attractive. + +\new +{\bf Disclaimer:} This software is under construction. +It is possible that some features documented here will be changed in future. + + +\sec Using \OpTeX/ +%%%%%%%%%%%%%%%%%% + +\new +\OpTeX/ is compiled as a format for \LuaTeX/. Maybe there is a command +`optex` in your \TeX/ distribution. Then you can write into command line + +\begtt +optex document +\endtt +% +You can try to process `optex demo` or `optex optex-doc`. + +If there is no `optex` command, see more information about installation +\OpTeX/ at \url{http://petr.olsak.net/optex}. + +A minimal document should be + +\begtt +\fontfam[LMfonts] +Hello World! \bye +\endtt + +The first line `\fontfam[LMfonts]` tells that Unicode Latin Modern +fonts (derived from Computer Modern) are used. If you omit this line then +preloaded Latin Modern fonts are used but preloaded fonts cannot be in +Unicode\fnote +{This is technical limitations of \LuaTeX/ for fonts in formats: +only 8bit fonts can be preloaded.}. +So the sentence `Hello World` will be OK without the first line, but you +cannot print such sentence in another languges (like `Ahoj světe!`) +where Unicode fonts are needed +because of the characters like `ě` are not mapped correctly in preloaded +font. + +A somewhat larger example with common settings shoud be: + +\begtt +\fontfam[Termes] % selecting Unicode font family Termes +\typosize[11/13] % setting the basic font size and the baselineskip +\margins/1 a4 (1,1,1,1)in % setting 1in margins for A4 paper +\cslang % Czech hyphenation patterns + +Tady je text. +\bye +\endtt +% +You can look at `demo.tex` file for more examples. + + +\sec Compatibility with Plain \TeX/ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +All macros of plain \TeX/ are re-written in \OpTeX/. Common macros should be +work in the same sense as in original plain \TeX. Internal control sequences +\new +like `\p@` or `\f@@t` are removed and mostly replaced by control sequences +prefixed by `_` (like `\_this`). All primitives and common macros have two +control sequences in prefixed and unprefixed form with the same +meaning. For example `\hbox` is equal to `\_hbox`. +Internal macros of \OpTeX/ have and use only prefixed form. User should use +unprefixed forms, but prefixed forms are accessibe too, bacause the `_` is +set as a letter globally (in macro files and in users document too). User +should re-define unprefixed forms of control sequences with no worries that +something internal will be broken (only the sequence `\par` cannot be +re-defined without internal change of \TeX/ behavior because it is +hard-coded in \TeX/s tokenization processor). + +\new +The Latin Modern 8bit fonts instead Computer Modern 7bit fonts are +preloaded in the format, but only few ones. The full family set is ready to +use after the command `\fontfam[LMfonts]` which reads the fonts in OTF +format. + +\new +The `\tenrm`, `\tenbf` etc. selectors are not defined. There are internal +selectors `\_tenrm`, `\_tenbf` etc. instead them. Don't use them directly +until you understand the \OpTeX/ font selection system from +internal point of view. + +\new +The accents macros like `\'`, `\v` are undefined in \OpTeX/. Use real +letters like ř, ž in your soucre document instead these old accents macros. +If you really want to use them, you can initialize them by `\oldaccents` +command. + +\new +The paper size is not set as letter with 1\,in margins but as a4 with 2\,cm +marins. You can change it by `\margins/1 letter (1,1,1,1)in` (this example +sets the classical plainTeX parameters). + +\new +The origin for typographical area is not at top left 1\,in 1\,in coordinates +but at top left paper corner exactly. For example, `\hoffset` includes directly left +margin. + + +\sec Selection of font family +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +You can select the font family by `\fontfam[<Family_name>]`. +The argument <Family_Name> is case insensitive and spaces are ignored. So, +`\fontfam[LM Fonts]` is equal to `\fontfam[LMfonts]` and it is equal +to `\fontfam[lmfonts]`. Several aliases are prepared, thus +`\fontfam[Latin Modern]` can be used for loading Latin Modern family too. + +If you write `\fontfam[?]` then all font families registered in \OpTeX/ +are listed on the terminal and in the log file. + +If you write `\fontfam[catalog]` then a catalogue of all fonts registered in +\OpTeX/ and available in your \TeX/ system is printed. And the instructions +how to register your own font family is appedned in such catalogue. + +If the family is loaded then {\em font modifiers} applicable in such font family +are listed on the terminal: (`\caps`, `\cond` for example). +And there are four basic {\em varinat selectors} (`\rm`, `\bf`, `\it`, `\bi`). +The font modifiers of basic variants (`\caps`, `\cond` for example) can +be used immediately before a basic variant selector and they +can be (independently) combined: `\caps\it` or `\cond\caps\bf`. The +modifiers keeps their internal setting until group ends or until another +modifier which negates the previous feature is used. So +`\caps \rm... \it...` uses normal and italics in Caps and SmallCaps. + +\new +There is one special variant selector `\currvar` which does not change the +selected variant but reloads the font in respect of tne (maybe newly +specified) font slector(s). + +\new Most declared font families are configured with recommended Unicode +Math font. This font is automaticlally loaded unless you specify +`\noloadmath` before first `\fontfam` command. See log file for more +information about loading Text font family and UnicodeMath fonts. If you +prefer another Unicode Math font, specify it by `\loadmath{[<font_file>]}` +or `\loadmath{font_name}` before first `\loadfam` command. + +The `\em` macro acts as `\it` if the current font is `\rm`, acts as `\rm` if +the current font is `\it`, acts as `\bi` if the current font is `\bf` and +acts as `\bf` if the current font is `\bi`. The `\/` spaces are inserted +automatically. Example: + +\begtt +This is {\em important} text. % = This is {\it important\/} text. +\it This is {\em important} text. % = This is\/ {\rm important} text. +\bf This is {\em important} text. % = This is {\bi important\/} text. +\bi This is {\em important} text. % = This is\/ {\bf important} text. +\endtt + +\new +More about the \OpTeX/ font selection system is written the file +`fonts-select.opm`. You can mix more font families in your document, you can +declare your variant selectors o modifiers etc. + +\new +The `\boldify` macro can be used for titles. It sets `\it` to `\bi` and +`\rm` to `\bf`. It means that user can write `{\it something}` in the title +and the result is the same as `{\bi something}`. Math formulae are in bold +variant too. The `\boldify` macro has local validity like others font +modifiers. Example: + +\begtt +{\boldify\typosize[14/16] Title in {\it bold}\par} +\endtt + + +\sec Font sizes +%%%%%%%%%%%%%%% + +The commands for font size setting described below, for variant selectors and +modifiers desribed above have local validity. If you put them into a group, +the font features are selected locally. + +The command `\typosize[<fontsize>/<baselineskip>]` sets the font size of text and +math fonts and baselineskip. If one of these two parameters is empty, the +corresponding feature stays unchanged. Don't write the unit of these +parameters. The unit is internally set to `\ptunit` which is 1pt by default. +You can change the unit by the command `\ptunit=<something-else>`, +for instance `\ptunit=1mm` enlages all font sizes declared by `\typosize`. +Examples: + +\begtt +\typosize[10/12] % default of plainTeX +\typosize[11/12.5] % font 11pt, baseline 12.5pt +\typosize[8/] % font 8pt, baseline unchanged +\endtt + +The command +`\typoscale[<font-factor>/<baselineskip-factor>]` +sets the text and math fonts +size and baselineskip as a multiple of the current fonts size and +baselineskip. The factor is written in \"scaled"-like way, it means that 1000 +means factor one. The empty parameter is equal to the parameter 1000, +i.e. the value stays unchanged. Examples: + +\begtt +\typoscale[800/800] % fonts and baselineskip re-size to 80 % +\typoscale[\magstep2/] % fonts bigger 1,44times +\endtt + +First usage of `\typosize` or `\typoscale` macro in your document sets so +called {\em main values}, i.\ e. main font size and main baselineskip. They are internally +saved in registers `\mainfosize` and `\mainbaselineskip`. + +\new +The `\typoscale` comand does scaling in respect to current values by default. +If you want to do it in respect to main values, type `\scalemain` immediately +before `\typoscale` command. + +\begtt +\typosize[12/14.4] % first usage in document, sets main values internally +\typosize[15/18] % bigger font +\scalemain \typoscale[800/800] % reduces from main values, no from current. +\endtt + +The size of the current font can be changed by the command +`\thefontsize[<font-size>]` or can be rescaled by +`\thefontscale[<factor>]`. These macros don't change math fonts sizes nor +baselineskip. + +\new +There is `\setfontsize{<size_spec>}` command which behaves like other +font modifiers. For example `\setfontsize{at15pt}\currvar`. + +More information about resizing of fonts is documented in `fonts-resize.opm` +file. + + +\sec Parts of the document +%%%%%%%%%%%%%%%%%%%%%%%%%% + +The document can be divided into chapters, sections and subsections and titled +by `\tit` command. The parameters are separed by the end of current line (no +braces are used): + +\begtt +\tit Document title <end of line> +\chap Chapter title <end of line> +\sec Section title <end of line> +\secc Subsection title <end of line> +\endtt + +The chapters are numbered by one number, sections by two numbers +(chapter.section) and subsections by three numbers. If there are no chapters +then section have only one number and subsection two. + +The implicit design of the titles of chapter etc.\ are implemented in the +macros `\printchap`, `\printsec` and `\printsecc`. User can simply change +these macros if he/she needs another behavior. + +The first paragraph after the title of chapter, section and subsection is +not indented but you can type `\let\firstnoindent=\relax` if you need all +paragraphs indented. + +If a title is so long then it breaks to more lines. It is better to hint the +breakpoints because \TeX/ does not interpret the meaning of the title. +User can put the `\nl` (it means newline) macro to the breakpoints. + +The chapter, section or subsection isn't numbered if the `\nonum` precedes. +And the chapter, section or subsection isn't delivered to the table of +contents if `\notoc` precedes. + + +\sec Another numbered objects +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Apart from chapters, sections and subsections, there are another +automatically numbered objects: equations and captions for tables and +figures. + +If user write the `\eqmark` as the last element of the display mode then +this equation is numbered. The format is one number in brackets. This number +is reset in each section. + +If the `\eqalignno` is used, then user can put `\eqmark` to the last column +before `\cr`. For example: + +\begtt +\eqalignno{ + a^2+b^2 &= c^2 \cr + c &= \sqrt{a^2+b^2} & \eqmark \cr} +\endtt + +The next numbered object is caption which is tagged by `\caption/t` for +tables and `\caption/f` for figures. Example: + +\begtt +\hfil\table{rl}{ + age & value \crl\noalign{\smallskip} + 0--1 & unmeasured \cr + 1--6 & observable \cr + 6--12 & significant \cr + 12--20 & extremal \cr + 20--40 & normal \cr + 40--60 & various \cr + 60--$\infty$ & moderate} +\par\nobreak\medskip +\caption/t The dependency of the computer-dependency on the age. +\endtt + +This example produces: + +\bigskip +{\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} +\hfil\table{rl}{age & value \crl\noalign{\smallskip} + 0--1 & unmeasured \cr + 1--6 & observable \cr + 6--12 & significant \cr + 12--20 & extremal \cr + 20--40 & normal \cr + 40--60 & various \cr + 60--$\infty$ & moderate} +\par\nobreak\medskip +{ \leftskip=\parindent plus1fil + \rightskip=\parindent plus-1fil + \parfillskip=0pt plus2fil \noindent +{\bf Table 2.3} The dependency of the com\-puter-dependency on the age.\par} +} +\bigskip + +The word \"Table" followed by a number is added by the macro +`\caption/t`. + +The macro `\caption/f` creates the word figure. +The caption text is centered. If it occupies more lines then the +last line is centered. + +The added word (table, figure) depends on the actual number of the +`\language` register. \OpTeX/ implements the mapping from `\language` +numbers to the languages and the mapping from languages to the generated +words. + +If you wish to make the table or figure as floating object, you need to use +plain \TeX/ macros `\midinsert`, `\topinsert` and `\endinsert`. + +Each automatically numbered object can be referenced, if the +`\label[<label>]` command precedes. The reference commands are +`\ref[<label>]` and `\pgref[<label>]`. Example: + +\begtt +\label[beatle] \sec About Beatles + +\label[comp-dependence] +\hfil\table{rl}{...} % the table +\caption/t The dependency of the computer-dependency on the age. + +\label[pythagoras] +$$ a^2 + b^2 = c^2 \eqmark $$ + +Now we can point to the section~\ref[beatle] on the page~\pgref[beatle] +or write about the equation~\ref[pythagoras]. Finally there +is an interesting Table~\ref[comp-dependence]. +\endtt + +If there are forward referenced objects then user have to run \TeX{} twice. +During each pass, the working `*.ref` file (with refereces data) is created +and this file is used (if it exists) at the begin of the document. + +You can create a reference to whatever else by commands +`\label[<label>]\wlabel{<text>}`. The connection between <label> and +<text> is established. The `\ref[<label>]` will print <text>. + + +\sec Lists +%%%%%%%%%% + +The list of items is surrounded by `\begitems` and `\enditems` commands. +The asterisk (`*`) is active within this environment and it starts one item. +The item style can be chosen by `\style` parameter written after `\begitems`: + +\begtt +\style o % small bullet +\style O % big bullet (default) +\style - % hyphen char +\style n % numbered items 1., 2., 3., ... +\style N % numbered items 1), 2), 3), ... +\style i % numbered items (i), (ii), (iii), ... +\style I % numbered items I, II, III, IV, ... +\style a % items of type a), b), c), ... +\style A % items of type A), B), C), ... +\style x % small rectangle +\style X % big rectangle +\endtt + +Another style can be defined by the command `\sdef{_item:<style>}{<text>}`. +Default item can be redefined by `\def\normalitem{<text>}`. +The list environments can be nested. Each new level of item is indented by +next multiple of `\iindent` which is set to `\parindent` by default. +The vertical space at begin and end of the environment is inserted by the +macro `\iiskip`. + + +\sec Table of contents +%%%%%%%%%%%%%%%%%%%%%% + +The `\maketoc` command prints the table of contents of all `\chap`, `\sec` +and `\secc` used in the document. These data are read from external `*.ref` file, so +you have to run \TeX/ more than once (typically three times if the table of +contents is at the beginning of the document). + +The name of the section with table of contents is not printed. The direct usage +of `\chap` or `\sec` isn't recommended here because the table of contents +is typically not referenced to itself. You can print the unnumbered and unreferenced +title of the section by the code: + +\begtt +\nonum\notoc\sec Table of Contents +\endtt + + +\sec Making the index +%%%%%%%%%%%%%%%%%%%%% + +The index can be included into document by `\makeindex` macro. No external +program is needed, the alphabetical sorting are done inside \TeX/ at macro +level. + +The `\ii` command (insert to index) declares the word separated by the space +as the index item. This declaration is represented as invisible atom on the +page connected to the next visible word. The page number of the page where +this atom occurs is listed in the index entry. So you can type: + +\begtt +The \ii resistor resistor is a passive electrical component ... +\endtt + +You cannot double the word if you use the `\iid` instead `\ii`: + +\begtt +The \iid resistor is a passive electrical component ... +or: +Now we'll deal with the \iid resistor . +\endtt + +Note that the dot or comma have to be separated by space when `\iid` is +used. This space (before dot or comma) is removed by the macro in +the current text. + +The multiple-words entries are commonly organized in the index by the format +(for example): + +\medskip + +linear~dependency 11, 40--50 + +--- independency 12, 42--53 + +--- space 57, 76 + +--- subspace 58 + +\medskip + +To do this you have to declare the parts of the words by the `/` separator. +Example: + +\begtt +{\bf Definition.} +\ii linear/space,vector/space +{\em Linear space} (or {\em vector space}) is a nonempty set of... +\endtt + +The number of the parts of one index entry is unlimited. Note, that you can +spare your typing by the comma in the `\ii` parameter. The previous example +is equivalent to `\ii linear/space` `\ii vector/space`. + +Maybe you need to propagate to the index the similar entry to the +linear/space in the form space/linear. You can do this by the shorthand `,@` +at the end of the `\ii` parameter. Example: + +\begtt +\ii linear/space,vector/space,@ +is equivalent to: +\ii linear/space,vector/space \ii space/linear,space/vector +\endtt + +If you really need to insert the space into the index entry, write `~`. + +The `\makeindex` creates the list of alphabetically sorted index entries +without the title of the section and without creating more columns. \OpTeX/ +provides another macros for more columns: + +\begtt +\begmulti <number of columns> +<text> +\endmulti +\endtt + +The columns will be balanced. The Index can be printed by the following +code: + +\begtt +\sec Index\par +\begmulti 3 \makeindex \endmulti +\endtt + +Only {\em pure words} can be propagated to the index by the `\ii` command. It +means that there cannot be any macro, \TeX/ primitive, math selector etc. +But there is another possibility to create such complex index entry. Use +``pure equivalent'' in the `\ii` parameter and map this equivalent to the +real word which is printed in the index by `\iis` command. Example: + +\begtt +The \ii chiquadrat $\chi$-quadrat method is +... +If the \ii relax `\relax` command is used then \TeX/ is relaxing. +... +\iis chiquadrat {$\chi$-quadrat} +\iis relax {{\tt \char`\\relax}} +... +\endtt + +The `\iis <equivalent> {<text>}` creates one entry in the {\em dictionary +of the exceptions}. The sorting is done by the <equivalent> but the +<text> is printed in the index entry list. + +The special sorting by the Czech or Slovak standard of alphabetical sorting +can be activated by `\cssort`. Another languages should be implemented in +future. + + +\sec Colors +%%%%%%%%%%% + +\OpTeX/ provides a small number of color selectors: +{\localcolor\Blue `\Blue`}, +{\localcolor\Red `\Red`}, +{\localcolor\Brown `\Brown`}, +{\localcolor\Green `\Green`}, +{\localcolor\Yellow `\Yellow`}, +{\localcolor\Cyan `\Cyan`}, +{\localcolor\Magenta `\Magenta`}, +{`\White`}, +{\localcolor\Grey `\Grey`}, +{\localcolor\LightGrey `\LightGrey`} and +`\Black`. User can define more +such selectors by setting the CMYK components. For example + +\begtt +\def\Orange{\setcmykcolor{0 0.5 1 0}} +\endtt + +The current color in CMYK format is saved in the `\currentcolor` macro, thus you +can save it to your macro by `\let\yourmacro=\currentcolor` and you can return to +this color by the command `\setcmykcolor\yourmacro`. + +The color selectors work globally by default. It means that colors don't +respect the \TeX/ groups and you have to return back to the black +typesetting explicitly by the `\Black` selector. + +\OpTeX/ provides the macro `\localcolor`. If it is used then the +colors return back to the original value after \TeX/ groups automatically. +The macro has local validity. You can use it at begin of your document +(for all \TeX/ groups) or only in selected \TeX/ group (for this group +and nested goups). Example: + +\begtt +\Red The text is red +{\localcolor \Blue here is blue {\Green and green} + restored blue \Brown and brown} +now the text is red. +\endtt + +\def\coloron#1#2#3{% + \setbox0=\hbox{#3}\leavevmode + {\localcolor\rlap{#1\strut \vrule width\wd0}#2\box0}% +} +The more usable example follows. It defines a macro which creates the +\coloron\Yellow\Brown{colored text on the} +\coloron\Yellow\Brown{colored background}. Usage: +`\coloron<background><foreground>{<text>}` + +The `\coloron` can be defined as follows: + +\begtt +\def\coloron#1#2#3{% + \setbox0=\hbox{#3}\leavevmode + {\localcolor\rlap{#1\strut \vrule width\wd0}#2\box0}% +} +\coloron\Yellow\Brown{The brown text on the yellow backround} +\endtt + +{\bf The watermark} is grey text on the backrounf of the page. \OpTeX/ offers +an example: the macro `\draft` which creates grey scaled and rotated text +DRAFT on the background of every page. + + +\sec Hyperlinks, outlines +%%%%%%%%%%%%%%%%%%%%%%%%% + +If the command `\hyperlinks{<color-in>}{<color-out>}` is used at the beginning of +the file, then the following objects are hyperlinked when PDF output is used: + +\begitems +* numbers generated by `\ref` or `\pgref`, +* numbers of chapters, sections and subsections in the table of contents, +* numbers or marks generated by `\cite` command (bibliography references), +* texts printed by `\url` command. +\enditems + +The last object is an external link and it is colored by +`<color-out>`. Others links are internal and they are colored by +`<color-in>`. Example: + +\begtt +\hyperlinks \Blue \Green % internal links blue, URLs green. +\endtt + +You can use another marking of active links: by frames which are visible in +the PDF viewer but invisible when the document is printed. The way to do it +is to define the macros `\pgborder`, `\tocborder`, `\citeborder`, +`\refborder` and `\urlborder` as the triple of RGB components of the used +color. Example: + +\begtt +\def\tocborder {1 0 0} % links in table of contents: red frame +\def\pgborder {0 1 0} % links to pages: green frame +\def\citeborder {0 0 1} % links to references: blue frame +\endtt + +By default these macros are not defined. It means that no frames are created. + +There are {\em low level} commands to create the links. You can specify the +destination of the internal link by `\dest[<type>:<label>]`. The +active text linked to the `\dest` can be created by +`\link[<type>:<label>]{<color>}{<text>}`. The `<type>` parameter is one of +the `toc`, `pg`, `cite`, `ref` or another special for your purpose. + +The `\url` macro prints its parameter in `\tt` font and creates a potential +breakpoints in it (after slash or dot, for example). If `\hyperlinks` +declaration is used then the parameter of `\url` is treated as an external URL link. +An example: `\url{http://www.olsak.net}` creates \url{http://www.olsak.net}. +The charecters \code{\%}, `\`, `#`, `{` and `}` have to be protected by +backslash in the `\url` argument, the other special charecters `~`, +`^`, `&` can be written as single character\fnote +{More exactly, there is the same rules as for \code{\\code} command, see +section~\ref[verbatim].}. +You can insert the `\|` command +in the `\url` argument as a potential breakpoint. + +If the linked text have to be different than the URL, you can use +`\ulink[<url>]{text}` macro. For example: + +\begtt +\ulink[http://petr.olsak.net/optex]{\OpTeX/ page} +\endtt +creates +\ulink[http://petr.olsak.net/optex]{\OpTeX/ page}. + +The PDF format provides {\em outlines} which are notes placed in the special frame of +the PDF viewer. These notes can be managed as structured and hyperlinked +table of contents of the document. The command `\outlines{<level>}` creates +such outlines from data used for table of contents in the document. The +<level> parameter gives the level of opened sub-outlines +in the default view. The deeper levels can be open by mouse click on the +triangle symbol after that. + +The command `\insertoutline{<text>}` inserts next entry into PDF outlines at +the main level~0. This entry can be placed before table of contents (created +by `\outlines`) or after it. + + +\label[verbatim]\sec Verbatim +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The display verbatim text have to be surrounded by the `\begtt` and +`\endtt` couple. +The in-line verbatim have to be tagged (before and after) +by a character which is declared by +`\activettchar<char>`. For example \code{\\activettchar`} +declares the character \code{`} +for in-line verbatim markup. +And you can use \code{`\\relax`} for +verbatim `\relax` (for example). +\new +Another alternative of printing in-line +verbatim text is `\code{<text>}` (see below). + +If the numerical register `\ttline` is set to the non-negative value then +display verbatim will number the lines. The first line has the number +`\ttline+1` and when the verbatim ends then the `\ttline` value is equal to the +number of last line printed. Next `\begtt...\endtt` environment will follow +the line numbering. \OpTeX/ sets `\ttline=-1` by default. + +The indentation of each line in display verbatim is controlled by +`\ttindent` register. This register is set to the `\parindent` by default. +User can change values of the `\parindent` and `\ttindent` independently. + +The `\begtt` command starts internal group in which the catcodes are changed. +\new +Then the `\tthook` string reister is run. It is empty by default and user can +control fine behavior by it. For example the cactodes can be reset here. If +you need to define active character in the `\tthook`, use `\adef` as in the +following example: + +\begtt \adef@{\string\endtt} +\tthook={\adef!{?}\adef?{!}} +\begtt +Each occurrence of the exclamation mark will be changed to +the question mark and vice versa. Really? You can try it! +@ +\endtt + +The `\adef` command sets its parameter as active {\it after\/} +the body of `\tthook` is read. So you can't worry about active +categories. + +The `\tthook` is applied to all `\begtt...\endtt` environments (if it is not +decared in a group). There are tips for such global `\tthook` definitions here: + +\begtt +\tthook={\typosize[9/11]} % setting font size for verbatim +\tthook={\ttline=0} % each listing will be numbered from one +\tthook={\adef{ }{\char9251 }} % visualisation of spaces (unicode fonts) +\endtt + +\new +If you want to apply a `\tthook` material only for one `\begtt...\endtt` +environment then don't set any `\tthook` but put desired material at the +same line where `\begtt` is. For example: + +\begtt \adef@{\string\endtt} +\begtt \adef!{?}\adef?{!} +Each occurrence of ? will be changed to ! and vice versa. +@ +\endtt + +The in-line verbatim surrounded by an `\activettchar` doesn't work in +parameter of macros and macro definitions, especially in titles declared by +`\chap`, `\sec` etc. +\new +You ca use more robust command `\code{<text>}` in such +situations, but you must escape following charaters in the <text>: +`\`, `#`, `%`, braces (if the braces are unmatched in the <text>), +and space or `^` (if there are more than one subsequent spaces or `^` in +the <text>). Examples: + +\begtt +\code{\\text, \%\#} ... prints \text, %# +\code{@{..}*&^$ $} ... prints @{..}*&^$ $ without escaping, but you can + escape these characters too, if you want. +\code{a \ b} ... two spaces between a b, the second one must be escaped +\code{xy\{z} ... xy{z ... unbalanced brace must be escaped +\code{^\^M} ... prints ^^M, the second ^ must be escaped +\endtt + +There is an alternative to `\tthook` named `\intthook` which is used for +in-line verbatim surrounded by an `\activettchar` or processed by the `\code` +command. + +You can print verbatim listing from external files by `\verbinput` command. +Examples: + +\begtt +\verbinput (12-42) program.c % listing from program.c, only lines 12-42 +\verbinput (-60) program.c % print from begin to the line 60 +\verbinput (61-) program.c % from line 61 to the end +\verbinput (-) program.c % whole file is printed +\verbinput (70+10) program.c % from line 70, only 10 lines printed +\verbinput (+10) program.c % from the last line read, print 10 lines +\vebrinput (-5+7) program.c % from the last line read, skip 5, print 7 +\verbinput (+) program.c % from the last line read to the end +\endtt + + +The `\ttline` influences the line numbering by the same way as in +`\begtt...\endtt` environment. If `\ttline=-1` then real line numbers are +printed (this is default). If \code{\\ttline<-1} then no line +numbers are printed. + +The `\verbinput` can be controlled by `\tthook`, `\ttindent` just like +in `\begtt...\endtt`. + + +\sec Tables +%%%%%%%%%%% + +The macro `\table{<declaration>}{<data>}` provides similar <declaration> +as in \LaTeX: you can use letters `l`, `r`, `c`, each letter declares +one column (aligned to left, right, center respectively). +These letters can be combined by the `|` character (vertical line). Example + +\begtt +\table{||lc|r||}{ \crl + Month & commodity & price \crli \tskip.2em + January & notebook & \$ 700 \cr + February & skateboard & \$ 100 \cr + July & yacht & k\$ 170 \crl} +\endtt +% +generates the following result: + +\bigskip +\hfil\table{||lc|r||}{ \crl + Month & commodity & price \crli + \tskip.2em + January & notebook & \$ 700 \cr + February & skateboard & \$ 100 \cr + July & yacht & k\$ 170 \crl} +\bigskip + +Apart from `l`, `r`, `c` declarators, you can use the `p{<size>}` declarator +which declares the column of given width. More preciselly, a long text in +the table cell is printed as an paragraph with given width. +To avoid the problems with narrow left-right aligned paragraphs you can write +`p{<size>\raggedright}`, then the paragraph will be only left aligned. + +You can use `(<text>)` in the <declaration>. Then this text is applied in +each line of table. For example `r(\kern10pt)l` adds more 10\,pt space +between `r` and `l` rows. + +An arbitrary part of the <declaration> can be repeated by a <number> +prefixed. For example `3c` means `ccc` or `c 3{|c}` means +`c|c|c|c`. Note that spaces in the <declaration> are ignored and you +can use them in order to more legibility. + +The command `\cr` used in the <data> part of the table (the end row +separator) is generally known. +Moreover \OpTeX/ defines following similar commands: + +\begitems +* `\crl` \dots\ the end of the row with a horizontal line after it. +* `\crli` \dots\ like `\crl` but the horizontal line doesn't intersect the + vertical double lines. +* `\crlli` \dots\ like `\crli` but horizontal line is doubled. +* `\crlp{<list>}` \dots\ like `\crli` but the lines are drawn only in the + columns mentioned in comma separated `<list>` of their numbers. + The <list> can include `<from>-<to>` declarators, for example + `\crlp{1-3,5}` is equal to `\crlp{1,2,3,5}`. +\enditems + +The `\tskip<dimen>` command works like the `\noalign{\vskip<dimen>}` +after `\cr*` commands but it doesn't interrupt the vertical lines. + +The configuration macros for `\table` are defined in the following listing +with their default values: + +\begtt +\def\tabiteml{\enspace} % left material in each column +\def\tabitemr{\enspace} % right material in each column +\def\tabstrut{\strut} % strut inserted in each line +\def\vvkern{1pt} % space between double vertical line +\def\hhkern{1pt} % space between double horizontal line +\endtt + +If you do `\def\tabiteml{$\enspace}\def\tabitemr{\enspace$}` then +the `\table` acts like \LaTeX's array environment. + +If there is an item which spans to more than one column in the table then +`\multispan{<number>}` macro from plain \TeX{} can help you or, you can use +`\mspan<number>[<declaration>]{<text>}` +which spans <number> columns and formats the <text> by the +<declaration>. The <declaration> must include a declaration of right one column +with the same syntax as comon `\table` <declaration>. +If your table includes vertical rules and you want to +create continuous vertical rules by `\mspan`, then use rules +only after `c`, `l` or `r` letter in `\mspan` <declaration>. The +exception is only in the case when `\mspan` includes first +column and the table have rules on the left side. The example of `\mspan` usage is below. + +The `\frame{<text>}` makes a frame around <text>. You can put the whole `\table` +into `\frame` if you need double-ruled border of the table. Example: + +\begtt +\frame{\table{|c||l||r|}{ \crl + \mspan3[|c|]{\bf Title} \crl \noalign{\kern\hhkern}\crli + first & second & third \crlli + seven & eight & nine \crli}} +\endtt +% +creates the following result: + +%\bigskip +\hfil\frame{\table{|c||l||r|}{\crl + \mspan3[|c|]{\bf Title} \crl \noalign{\kern\hhkern}\crli + first & second & third \crlli + seven & eight & nine \crli}} +\bigskip + +The `c`, `l`, `r` and `p` are default <declaration> letters but you can define +more such letters by `\def\tabdeclare<letter>{<left>##<right>}`. More about +it is in technical documentation in the file `table.opm`. + +The rule width of tables (and implicit width of all `\vrule`s and `\hrule`s) +can be set by the command `\rulewidth=<dimen>`. The default value given +by \TeX/ is 0.4\,pt. + +Many tips about tables can be seen on +\url{http://petr.olsak.net/opmac-tricks-e.html}. + + +\sec Images +%%%%%%%%%%% + +The `\inspic <filename>.<extension><space>` inserts the picture stored in +the graphics file with the name `<filename>.<extension>`. +You can set the picture width by `\picw=<dimen>` +before `\inspic` command which declares the width of the picture +The image files can be in the PNG, JPG, JBIG2 or PDF format. + +The `\picwidth` is an equivalent the register to `\picw`. Moreover there is an +`\picheight` register which denotes the height of the picture. If both +registers are set then the picture will be (probably) deformed. + +The image files are searched in `\picdir`. This macro is empty by default, this +means that the image files are searched in the current directory. + + + +\sec PDF transformations +%%%%%%%%%%%%%%%%%%%%%%%% + +All typesetting elements are transformed in pdf\TeX{} by linear +transformation given by the current transformation matrix. The +`\pdfsetmatrix {<a> <b> <c> <d>}` command makes the internal multiplication +with the current matrix so linear transformations can be composed. The +stack-oriented commands `\pdfsave` and `\pdfrestore` gives a possibility of +storing and restoring the current transformation matrix and current point. +The possition of current point have to be the same from \TeX{}'s point of +view as from transformation point of view when `\pdfrestore` is processed. +Due to this fact the `\pdfsave\rlap{<transformed text>}\pdfrestore` +or something similar is recomeded. + +\OpTeX/ provides the macros + +\begtt +\pdfscale{<horizontal-factor>}{<vertical-factor>} +\pdfrotate{<angle-in-degrees>} +\endtt + +These macros simply calls the +properly `\pdfsetmatrix` primitive command. + +It is known that the comosition of transformations is not commutative. It +means that the order is important. You have to read the tranformation +matrices from right to left. Example: + +\begtt +First: \pdfsave \pdfrotate{30}\pdfscale{-2}{2}\rlap{text1}\pdfrestore + % text1 is scaled two times and it is reflected about vertical axis + % and next it is rotated by 30 degrees left. +second: \pdfsave \pdfscale{-2}{2}\pdfrotate{30}\rlap{text2}\pdfrestore + % text2 is rotated by 30 degrees left then it is scaled two times + % and reflected about vertical axis. +third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}% + \pdfrestore % first slanted, then rotated by 15.3 degrees right +\endtt +% +\par\nobreak\bigskip\smallskip +This gives the following result. +First: \pdfsave \pdfrotate{30}\pdfscale{-2}{2}\rlap{text1}\pdfrestore +second: \pdfsave \pdfscale{-2}{2}\pdfrotate{30}\rlap{text2}\pdfrestore +third: \pdfsave \pdfrotate{-15.3}\pdfsetmatrix{2 0 1.5 2}\rlap{text3}\pdfrestore +\bigskip\bigskip + + +\sec Footnotes and marginal notes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The plain \TeX/'s macro `\footnote` can be used as usual. But a new macro +`\fnote{<text>}` is defined. The footnote mark is added automatically and it +is numbered on each page from one\fnote +{This behavior is changed if \code{\\runningfnotes} is used: +the footnotes are numbered from one in whole document in such case. +Alternatives are possible, see OPmac tricks.}. +The <text> is scaled by +`\typoscale[800]`. The implicit visual aspect of the footnote mark is defined by +`\def\thefnote{$^{\locfnum}$}`. +%\fnote{% +% Note the right parenthesis in the mark. This isn't bug, this is used in Czech +% traditional typography. If you need to remove it, you can define +% {\def\s{\string}\tt\s\def\s\thefnote\s{\$\s^\s{\s\locfnum\s}\$\s}}. +% }. +User can redefine it, for example: + +\begtt +\def\thefnote{\ifcase\locfnum\or *\or**\or***\or$^{\dag}$\or + $^{\ddag}$\or$^{\dag\dag}$\fi} +\endtt + +The `\fnote` macro is fully applicable only in \"normal outer" paragraph. +It doesn't work inside boxes (tables for example). If you are solving such +case you can use `\fnotemark<number>` inside the box (only the footnote mark is +generated). When the box is finished you can use `\fnotetext{<text>}`. This +macro puts the <text> to the footnote. The <number> after `\fnotemark` +have to be "1" if only one such command is in the box. Second `\fnotemark` +inside the same box have to have the parameter `2` etc. +The same number of `\fnotetext`s have to be written +after the box as the number of `\fnotemark`s inserted inside the box. + +The marginal note can be printed by the `\mnote{<text>}` macro. The <text> +is placed to the right margin on the odd pages and it is placed to the left +margin on the even pages. This is done after second \TeX{} run because the +relevant information is stored in an external file. If you need to place the +notes only to the fixed margin write `\fixmnotes\right` or +`\fixmnotes\left`. + +The <text> is formatted as a little paragraph with the maximal width +`\mnotesize` ragged left on the left margins or ragged right on the right +margins. The first line of this little paragraph is at the same height as +the invisible mark created by `\mnote` in the current paragraph. The +exceptions are possible by `\mnoteskip` register. You can implement such +exceptions to each `\mnote` manually in final printing in order to margin +notes do not overlap. The positive value of `\mnoteskip` shifts the note up +and negative value shifts it down. For example +`\mnoteskip=2\baselineskip \mnote{<text>}` shifts this (and only this) note +two lines up. + + +\sec Bib\TeX/ing +%%%%%%%%%%%%%%%% + +The command `\cite[<label>]` or its variants of the type +\hbox{`\cite[<label-1>,<label-2>,<label-3>]`} +create the citations in the form [42] or [15,~19,~26]. +If `\shortcitations` is declared at the beginning of the document then +continuous sequences of numbers are re-printed like this: +\hbox{[3--5,~7,~9--11]}. If +`\sortcitations` is declared then numbers generated by one `\cite` command +are sorted upward. + +If `\nonumcitations` is used then the marks instead numbers are generated +depending on the used bib\TeX{} style. For example the citations look like +[Now08] or [Nowak, 2008], it depends on <style> used (see below). + +The `\rcite[<labels>]` creates the same list as `\cite[<labels>]` but without +the outer brackets. Example: `[\rcite[tbn], pg.~13]` creates [4,~pg.13]. + +The `\ecite[<label>]{<text>}` prints the `<text>` only, but the entry labeled +<label> is decided as to be cited. If `\hyperlinks` is used then <text> +is linked to the references list. + +You can define alternative formating of `\cite` command. Example: + +\begtt +\def\cite[#1]{(\rcite[#1])} % \cite[<label>] creates (27) +\def\cite[#1]{$^{\rcite[#1]}$} % \cite[<label>] creates^{27} +\endtt + +The numbers printed by `\cite` correspond to the same numbers generated in +the list of references. +There are two possibilities to generate this +references list: + +\begitems +* Manually using `\bib[<label>]` commands. +* By `\usebib/<type> (<style>) <bbl-base>` command which reads `*.bib` + databases directly. +\enditems + +\new +Note that another two possibilities documented in OPmac (using external +Bib\TeX/ program) isn't supported because Bib\TeX/ is old program which does not +supports Unicode. And Biber seems to be not compliant with Plain \TeX. + +\medskip\noindent +{\bf References created manually using `\bib[<label>]` command.} + +\begtt +\bib [tbn] P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 1997. +\bib [tst] P. Olšák. {\it Typografický systém \TeX.} + 269~s. Praha: CSTUG, 1995. +\endtt + +If you are using `\nonumcitations` then you need to declare the <marks> +used by `\cite` command. To do it you must use long form of the `\bib` +command in the format `\bib[<label>] = {<mark>}`. The spaces around +equal sign are mandatory. Example: + +\begtt +\bib [tbn] = {Olšák, 2001} + P. Olšák. {\it\TeX{}book naruby.} 468~s. Brno: Konvoj, 2001. +\endtt + +\noindent +{\bf Direct reading of `.bib` files} is possible by `\usebib` macro. +This macro reads macro package `opmac-bib.tex` (on demand) which uses the external +package `librarian.tex` by Paul Isambert. The usage is: + +\begtt +\usebib/c (<style>) <bib-base> % sorted by \cite-order (c=cite), +\usebib/s (<style>) <bib-base> % sorted by style (s=style). +% example: +\usebib/s (simple) op-example +\endtt + +The <bib-base> is one or more `*.bib` database source files (separated by +spaces and without extension) and the <style> is the part of the filename +`bib-<style>.opm` where the formatting of the references list is +defined. Possible styles are `simple` or `iso690`. The behavior of +`opmac-bib.tex` and `opmac-bib-iso690.tex` is full documented in these files +(after `\endinput` command). + +The command `\usebib` select from database files only such bib-records which +were used in `\cite` or `\nocite` commands in your document. It means, not +all records are printed. The `\nocite` behaves as `\cite` but prints +nothing. It only tels that mentioned bib-record should be printed in +the reference list. If `\notcite[*]` is used then all records from <bib-base> +are printed. + +\medskip\noindent +{\bf Formatting of the references list} is controlled by the `\printb` macro. +It is called at the begin of each entry. The default `\printb` macro prints +the number of the entry in square brackets. If the `\nonumcitations` is set +then no numbers are printed, only all lines (but no first one) are indented. +The `\printb` macro can use the following values: `\the\bibnum` (the number +of the entry) and `\the\bibmark` (the mark of the entry used when +`\nonumcitations` is set). Examples: + +\begtt +% The numbers are without square brackets: +\def\printbib{\hangindent=\parindent \indent \llap{\the\bibnum. }} +% Printing of <marks> when \nonumcitations is set: +\def\printbib{\hangindent=\parindent \noindent [\the\bibmark]\quad} +\endtt + +Another examples can be found on the +\ulink[http://petr.olsak.net/opmac-tricks-e.html]{OPmac tricks WWW page}. + + +\sec Typesetting math +%%%%%%%%%%%%%%%%%%%%% + +\OpTeX/ preloads a collection of 7bit Computer modern and AMS fonts. +You can use them in any size and in the `\boldmath` variant. + +Hundreds math symbols and operators like in AMS\TeX/ are accesible. +For example `\alpha` $\alpha$, `\geq` $\geq$, `\sum` $\sum$, +`\sphericalangle` $\sphericalangle$, `\bumpeq`, $\bumpeq$. See AMS\TeX/ +manual for complete list of symbols. + +The following math alphabets are available: + +\begtt \catcode`\$=3 \catcode`/=0 \medmuskip=0mu \adef{ }{ } +\mit % mathematical variables $abc-xyz,ABC-XYZ$ +\it % text italics $/it abc-xyz,ABC-XYZ$ +\rm % text roman $/rm abc-xyz,ABC-XYZ$ +\cal % normal calligraphics $/cal ABC-XYZ$ +\script % script $/script ABC-XYZ$ +\frak % fracture $/frak abc-xyz,ABC-XYZ$ +\bbchar % double stroked letters $/bbchar ABC-XYZ$ +\bf % sans serif bold $/bf abc-xyz,ABC-XYZ$ +\bi % sans serif bold slanted $/bi abc-xyz,ABC-XYZ$ +\endtt + +The last two selectors `\bf` and `\bi` select the sans serif fonts regardless +current text font family. + +You can use `\noloadmath` before first `\fontfam` command in your document. +Then `\fontfam` loads only text fonts. On the other case, by default, first +`\fontfam` command loads Unicode-math fonts related to given text font +family and Computer Modern nor AMS fonts are not used in math formulae. +(note, that in version Feb 2020, the Unicode math fonts are in TODO list, +`\fontfam` commands loads only text fonts now). + +The math fonts can be scaled by `\typosize` and `\typoscale` macros. +Two math fonts collections are prepared: `\normalmath` for normal weight +and `\boldmath` for bold. The first one is set by default. + + +\sec Setting the margins +%%%%%%%%%%%%%%%%%%%%%%%% + +\OpTeX/ declares paper formats a4, a4l (landscape~a4), a5, a5l, b5, letter and +user can declare another own format by `\sdef`: + +\begtt +\sdef{pgs:b5l}{(250,176)mm} +\sdef{pgs:letterl}{(11,8.5)in} +\endtt + +The `\margins` command declares margins of the document. This command have +the following parameters: + +\begtt +\margins/<pg> <fmt> (<left>,<right>,<top>,<bot>)<unit> + example: +\margins/1 a4 (2.5,2.5,2,2)cm +\endtt + +Parameters are: + +\begitems +* <pg> \dots\ `1` or `2` specifies one-page or two-pages design. +* <fmt> \dots\ paper format (a4, a4l, a5, letter, etc. or user defined). +* <left>, <right>, <top>, <bot> \dots\ gives the amount of left, right, + top and bottom margins. +* <unit> \dots\ unit used for values <left>, <right>, <top>, <bot>. +\enditems + +Each of the parameters <left>, <right>, <top>, <bot> can be empty. +If both <left> and <right> are nonempty then `\hsize` is set. Else `\hsize` +is unchanged. If both <left> and <right> are empty then typesetting area is +centered in the paper format. The analogical rule works when <top> or <bot> +parameter is empty (`\vsize` instead `\hsize` is used). Examples: + +\begtt +\margins/1 a4 (,,,)mm % \hsize, \vsize untouched, + % typesetting area centered +\margins/1 a4 (,2,,)cm % right margin set to 2cm + % \hsize, \vsize untouched, vertically centered +\endtt + +If `<pg>=1` then all pages have the same margins. If `<pg>=2` then the +declared margins are true for odd pages. The margins at the even pages are +mirrored in such case, it means that <left> is replaced by <right> and vice +versa. + +The `<fmt>` can be in the form `(<width>,<height>)<unit>` where `<unit>` is +optional. If it is missing then `<unit>` after margins specification is +used. For example: + +\begtt +\margins/1 (100,200) (7,7,7,7)mm +\endtt +% +declares the paper 100$\times$200\,mm with all four margins 7\,mm. The spaces +before and after <fmt> parameter are necessery. + +The command `\magscale[<factor>]` scales the whole typesetting area. +\new The fixed point of such scaling is the upper left corner of the paper sheet. +Typesetting (breakpoints etc.) is unchanged. All units are relative after +such scaling. Only paper formats dimensions stays unscaled. Example: + +\begtt +\margins/2 a5 (22,17,19,21)mm +\magscale[1414] \margins/1 a4 (,,,)mm +\endtt +% +The first line sets the `\hsize` and `\vsize` and margins for final +printing at a5 format. The setting on the second line centers the scaled +typesetting area to the true a4 paper while breaking points for paragraphs +and pages are unchanged. It may be usable for +review printing. After review is done, the second line can be commented out. + + +\sec The last page +%%%%%%%%%%%%%%%%%% + +The number of the last page (it may be different from number of pages) is +stored in the `\lastpage` register after first \TeX/ run if the working `*.ref` +file is open. This file isn't open for every documents; only for those +where the forward references are printed or table of contents is created. +If the `*.ref` file isn't open for your document and you need to use the +`\lastpage` register then you have to write the command `\openref`. This command opens +the `*.ref` file immediatelly. + +There is an example for footlines in the format \"current page / last page": + +\begtt +\footline={\hss \rm \thefontsize[10]\the\pageno/\the\lastpage \hss} +\endtt + + +\sec Using more languages +%%%%%%%%%%%%%%%%%%%%%%%%% + +\OpTeX/ prepares hyphenation patterns for all languafes if such patterns are +available in your \TeX/ system. +\new +Only USenglish patterns (original from Plain \TeX/) are preloaded. +Hyphenation patterns of all aother languages are loaded on demand when you first use +the `\<iso-code>lang` command in your document. +For example `\delang` for German, `\cslang` for +Czech, `\pllang` for Polish. The <iso-code> is a shortcut +of the language (mostly from ISO 639-1). +You can list all available languages by `\langlist` +macro. This macro prints now: + +\medskip +{\typosize[9/11.5]\emergencystretch=4em \hbadness=2000 +\noindent \langlist +\par} +\medskip + +\new +For compatibility with e-plain macros, there is the command +`\uselanguege{<language>}`. The parameter <language> is long form of +language name, i.e.\ `\uselanguage{Czech}` does the same work as `\cslang`. +The `\uselanguage` parameter is case insensitive. + +For compatibility with \csplain/ these are macros `\ehyph`, `\chyph`, +`\shyph` which are equivalent to `\enlang`, `\cslang` and `\sklang`. + +You can switch between language patterns by `\<iso-code>lang` commands mentioned +above. + +\OpTeX/ needs to know three words for catpions and titles in technical +articles: \"Chapter", \"Table" and \"Figure". THese words needs to be know +in used language. \OpTeX/ declares these words only for few languages: +Czech, Slovak, English. If you need to use these words in another languages, +you can declare them by `\sdef` command +\new +with `_mt:chap:` `_mt:t:` and `_mt:f` +followed by the <iso-code> of your language. Example is for Spanish + + +\begtt +\input lmfonts % Unicode fonts + +\sdef{_mt:chap:es}{Capítulo} % Chapter in es +\sdef{_mt:t:es}{Cuadro} % Table in es +\sdef{_mt:f:es}{Figura} % Figure in es + +\eslang % Spanish hyphenation + activation of declated "es" words + +\sec Mañana + +Mañana. + +\caption/f Test % generates the text "Figura 1.1 Test" + +\bye +\endtt + +The declaration of the Spanish words \"Capítulo", \"Cuadro" and \"Figura" +is shown in this example. You can see that such declaration is based on the +<iso-code> `es`. The declared words are activated +after the hyphenation selector `\eslang` is used. + +If you want to use sorting rules given for your language +(used in `\makeindex` command, for example) then +you must define the macro `\sortingdata<iso-code>`. And you can optionally +define the `\specsortingdata<iso-code>` macro. Example: +%{\emergencystretch=2em\par} + +\begtt +\def\sortingdataes {aAäÄáÁ,bB,cCçÇ,^^P^^Q^^R,dD,...,zZ,.} +\def\specsortingdataes {ch:^^P Ch:^^Q CH:^^R} +\endtt + +There are groups of letters separated by comma and ended by comma-dot in +the parameter of the macro `\sortingdata<iso-code>`. (In the example above, three dots must +be replaced by real data by the user.) All letters in one group are not +distinguished during first step of sorting (primary sorting). If some items +are equal from this point of view then the secondary sorting is processed +for such items where all mentioned letters are distinguished in the order +given in the macro. + +Sorting algorithm can treat couple of letters (like Dz, Ch etc.) as one letter +if the parameter of the macro `\specsortingdata<iso-code>` is defined. There is +a space separated list of items in the form `<couple>:<one-token>`. The +replacing from <couple> to <one-token> is done before sorting, so you can +use `<one-token>` in the `\sortingdata<iso-code>` macro. The `<one-token>` +must be something special not used as the letter of the alphabet. The usage of +`^^A`, `^^B` etc. is recommended but you must avoid the `^^I` and `^^M` because +these characters have special catcode. + +The macros `\sortingdata<iso-code>` and `\specsortingdata<iso-code>` are +active when the language selector `\<iso-code>lang` is used. + +The list of ignored characters for sorting point of view is defined in the +`\setignoredchars` macro. \OpTeX/ defines this macro like: + +{\catcode`\<=12 +\begtt +\def\setignoredchars{\setlccodes ,.;.?.!.:.'.".|.(.).[.].<.>.=.+.{}{}} +\endtt +}% +It means that comma, semicolon, question mark, \dots, plus mark are treated +as dot and dot is ignored by sorting algorithm. You can redefine this macro, +but you must keep the format, keep `\setlccodes` in the front and `{}{}` in +the end. + + +\sec Pre-defined styles +%%%%%%%%%%%%%%%%%%%%%%% + +\OpTeX/ defines two style-declaration macros `\report` and `\letter` +You can use them at the beginning of your document if you are +preparing these types of document and you don't need to create your own +macros. + +The `\report` declaration is intended to create reports. It +sets default font size to 11\,pt and `\parindent` (paragraph indentation) to 1.2\,em. +The `\tit` macro uses smaller font because we assume that \"chapter" level +will be not used in reports. The first page has no page number, but next pages +are numbered (from number~2). Footnotes are numbered from one in whole +document. The macro `\author <authors><end-line>` can be used when +`\report` is declared. It prints `<authors>` in italics at center of the +line. You can separate authors by `\nl` to more lines. + +The `\letter` declaration is intended to create letters. It sets default +font size to 11\,pt and `\parindent` to 0\,pt. It sets half-line space +between paragraphs. The page numbers are not printed. The `\subject` macro +can be used, it prints the word \"Subject:" or \"Věc" in bold +depending on used language if `\sdef{_mt:subj:<iso-code>}` is defined. +Moreover, the `\address` macro +can be used when `\letter` is declared. The usage of the `\address` macro +looks like: + +\begtt +\address + <first line of address> + <second line of address> + <etc.> + <empty line> +\endtt + +It means that you need not to use any special mark at the end of lines: end +of lines in the source file are the same as in printed output. The +`\address` macro creates `\vtop` with address lines. The width of such +`\vtop` is equal to the most wide line used in it. So, you can use +`\hfill\address...` in order to put the address box to the right side of the +document. Or you can use `<prefixed text>\address...` to put +`<prefixed text>` before first line of the address. + +Analogical declaration macros `\book` or `\slides` are not prepared. Each +book needs an individual typographical care so you need to cerate specific +macros for design. And you can find an inspiration of slides in OPmac tricks +\ulink[http://petr.olsak.net/opmac-tricks-e.html\#slidy]{0017 and 0022}. + + +\sec Summary +%%%%%%%%%%%% + +\begtt \typosize[10/12]\adef!{\string\endtt}\adef&{\kern.25em} +\tit Title (terminated by end of line) +\chap Chapter Title (terminated by end of line) +\sec Section Title (terminated by end of line) +\secc Subsection Title (terminanted by end of line) + +\maketoc % table of contents generation +\ii item1,item2 % insertion the items to the index +\makeindex % the index is generated + +\label [labname] % link target location +\ref [labname] % link to the chapter, section, subsection, equation +\pgref [labname] % link to the page of the chapter, section, ... + +\caption/t % a numbered table caption +\caption/f % a numbered caption for the picture +\eqmark % a numbered equation + +\begitems % start list of the items +\enditems % end of list of the items +\begtt % start verbatim text +! % end verbatim text +\activettchar X % initialization character X for in-text verbatim +\code % another alternative for in-text vrbatim +\verbinput % verbatim extract from the external file +\begmulti num % start multicolumn text (num columns) +\endmulti % end multicolumn text + +\cite [labnames] % refers to the item in the lits of references +\rcite [labnames] % similar to \cite but [] are not printed. +\sortcitations \shortcitations \nonumcitations % cite format +\bib [labname] % an item in the list of references +\usebib/? (style) bib-base % direct using of .bib file, ? in {s,c} + +\fontfam [FamilyName] % selection of font family +\typosize [font-size/baselineskip] % size setting of typesetting +\typoscale [factor-font/factor-baselineskip] % size scaling +\thefontsize [size] \thefontscale [factor] % current font size + +\inspic file.ext % insert a picture, extensions: jpg, png, pdf +\table {rule}{data} % simple macro for the tables like in LaTeX + +\fnote % footnote (local numbering on each page) +\mnote % note in the margin (left or right by page number) + +\hyperlinks {color-in}{color-out} % PDF links activate as clickable +\outlines {level} % PDF will have a table of contents in the left tab + +\magscale[factor] % resize typesetting, line/page breaking unchanged +\margins/pg format (left, right, top, bottom)unit % margins setting + +\report \letter % style declaration macros +\endtt + +\end diff --git a/macros/luatex/optex/doc/optex.1 b/macros/luatex/optex/doc/optex.1 new file mode 100644 index 0000000000..7b912e12a8 --- /dev/null +++ b/macros/luatex/optex/doc/optex.1 @@ -0,0 +1,42 @@ +.TH OPTEX 1 "17 Feb. 2020" "Petr Olsak" +.\"===================================================================== +.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP +.if n .ds TX TeX +.ie t .ds OX \fIT\v'+0.25m'E\v'-0.25m'X\fP\" for troff +.el .ds OX TeX\" for nroff +.\" the same but obliqued +.\" BX definition must follow TX so BX can use TX +.if t .ds BX \fRB\s-2IB\s0\fP\*(TX +.if n .ds BX BibTeX +.\" LX definition must follow TX so LX can use TX +.if t .ds LX \fRL\\h'-0.36m'\\v'-0.15v'\s-2A\s0\\h'-0.15m'\\v'0.15v'\fP\*(TX +.if n .ds LX LaTeX +.\"===================================================================== +.SH NAME +optex \- OPmac and Plain TeX for LuaTeX engine. +.SH SYNOPSIS +.B optex +[ first line ] +.\"===================================================================== +.SH DESCRIPTION +This manual page was derived from the manual page for \*(LX and is not meant +to be exhaustive. The complete +documentation for this version of \*(TX can be found in the info file +or manual +.IR "Web2C: A TeX implementation" . +.PP +.B OpTeX +is LuaTeX macro package initialized as the LuaTeX format optex.fmt. +It is based on Plain TeX macros by Donlad Knuth and on OPmac macros from +csplain package. For more information about it see +http://petr.olsak.net/optex web page. +.\"===================================================================== +.SH "SEE ALSO" +.BR luatex (1), +.BR tex (1), +.br +.SH AUTHORS +The author of +.B OpTeX +is Petr Olsak. +.PP diff --git a/macros/luatex/optex/f-adventor.opm b/macros/luatex/optex/f-adventor.opm index 54986c0512..93afbee787 100644 --- a/macros/luatex/optex/f-adventor.opm +++ b/macros/luatex/optex/f-adventor.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Adventor] \Adventor {TeX Gyre Adventor based on Avantgarde Book} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {} "[texgyreadventor-regular]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-antt.opm b/macros/luatex/optex/f-antt.opm index 6a1fe50688..efbdb9a1d6 100644 --- a/macros/luatex/optex/f-antt.opm +++ b/macros/luatex/optex/f-antt.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Antykwa Torunska] \Antt {Traditional Polish font family} - {\cond \medium \light \caps} {\rm \bf \it \bi} {TX} + {\cond \medium \light \caps} {\rm \bf \it \bi} {Pagella} "[AntykwaTorunska-Regular]" \_wlog{\_detokenize{% @@ -23,6 +23,8 @@ Modifier:^^J \_initfontfamily % new font family must be initialized +\_loadmath{[texgyrepagella-math]} + \_endcode See the file `f-heros.opm` for information about principles of such diff --git a/macros/luatex/optex/f-baskerville.opm b/macros/luatex/optex/f-baskerville.opm index 9d8974939d..c493f7e0b5 100644 --- a/macros/luatex/optex/f-baskerville.opm +++ b/macros/luatex/optex/f-baskerville.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Baskerville] \Baskerville {Free vaiants of classical Baskerville} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {} "[BaskervilleF-Regular]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-bonum.opm b/macros/luatex/optex/f-bonum.opm index 89131175a0..e1fc78680b 100644 --- a/macros/luatex/optex/f-bonum.opm +++ b/macros/luatex/optex/f-bonum.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Bonum] \Bonum {TeX Gyre Bonum fonts based on Bookman} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {Bonum} "[texgyrebonum-regular]" \_wlog{\_detokenize{% @@ -19,6 +19,8 @@ Modifier:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[texgyrebonum-math]} + \_endcode See the file `f-heros.opm` for information about principles of such diff --git a/macros/luatex/optex/f-cursor.opm b/macros/luatex/optex/f-cursor.opm index 00097831a6..b89a4a7411 100644 --- a/macros/luatex/optex/f-cursor.opm +++ b/macros/luatex/optex/f-cursor.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Cursor] \Cursor {TeX Gyre Cursor fonts based on Courier} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {} "[texgyrecursor-regular]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-gfsbodoni.opm b/macros/luatex/optex/f-gfsbodoni.opm index ccdef2126d..7afbe001cc 100644 --- a/macros/luatex/optex/f-gfsbodoni.opm +++ b/macros/luatex/optex/f-gfsbodoni.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [GFS Bodoni] \GFSBodoni {Based on Bodoni with greek letters} - {} {\rm \bf \it \bi} {TX} + {} {\rm \bf \it \bi} {} "[GFSBodoni]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-heros.opm b/macros/luatex/optex/f-heros.opm index 7e466432a3..6bea7a2642 100644 --- a/macros/luatex/optex/f-heros.opm +++ b/macros/luatex/optex/f-heros.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Heros] \Heros {TeX Gyre Heros fonts based on Helvetica} - {\caps \cond} {\rm \bf \it \bi} {TX} + {\caps \cond} {\rm \bf \it \bi} {FiraMath} "[texgyreheros-regular]" \_wlog{\_detokenize{% @@ -23,6 +23,8 @@ Modifiers:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[FiraMath-Regular]} + \_endcode diff --git a/macros/luatex/optex/f-libertine-s.opm b/macros/luatex/optex/f-libertine-s.opm index 351a55fc57..1eb2933faa 100644 --- a/macros/luatex/optex/f-libertine-s.opm +++ b/macros/luatex/optex/f-libertine-s.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Linux Libertine] \libertine {Free Linux Libertine fonts} - {\sans \mono \caps} {\rm \bf \it \bi \initials \displ \keybr} {TX} + {\sans \mono \caps} {\rm \bf \it \bi \initials \displ \keybr} {} "Linux Libertine O" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-libertine.opm b/macros/luatex/optex/f-libertine.opm index 8b45f06e7c..adc0961f7a 100644 --- a/macros/luatex/optex/f-libertine.opm +++ b/macros/luatex/optex/f-libertine.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Linux Libertine] \Libertine {Free Linux Libertine fonts} - {\sans \mono \caps \semi} {\rm \bf \it \bi \initials \displ \keybr} {TX} + {\sans \mono \caps \semi} {\rm \bf \it \bi \initials \displ \keybr} {Libertinus} "[LinLibertine_R]" \_wlog{\_detokenize{% @@ -34,6 +34,8 @@ Special variants:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[LibertinusMath-Regular]} + \_endcode This file declares Linux Libertine font family from font files. The diff --git a/macros/luatex/optex/f-lmfonts.opm b/macros/luatex/optex/f-lmfonts.opm index bfd63fd00f..5be1362b0b 100644 --- a/macros/luatex/optex/f-lmfonts.opm +++ b/macros/luatex/optex/f-lmfonts.opm @@ -2,7 +2,7 @@ \_fontdecl [Latin Modern] \LMfonts {TeX Gyre fonts based on Coputer Modern} {\roman \sans \quotset \ttset \ttprop \ttlight \ttcond \upital - \dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {CM+AMS} + \dunhill submods:\caps \slant \nbold \bolder} {\rm \bf \it \bi \tt} {LM} "[lmroman10-regular]" \_wlog{\_detokenize{% @@ -114,6 +114,8 @@ Submodifiers (setlects special variants of given subfamily):^^J \_initfontfamily % new font family must be initialized +\_loadmath {[latinmodern-math]} + \_endcode \sec How to wite font-macro-file with optical sizes for \OpTeX/ diff --git a/macros/luatex/optex/f-pagella.opm b/macros/luatex/optex/f-pagella.opm index 77d4d53877..1f9b8dac80 100644 --- a/macros/luatex/optex/f-pagella.opm +++ b/macros/luatex/optex/f-pagella.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Pagella] \Pagella {TeX Gyre Pagella fonts based on Palatino} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {Pagella} "[texgyrepagella-regular]" \_wlog{\_detokenize{% @@ -19,6 +19,8 @@ Modifier:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[texgyrepagella-math]} + \_endcode See the file `f-heros.opm` for information about principles of such diff --git a/macros/luatex/optex/f-schola.opm b/macros/luatex/optex/f-schola.opm index b29444166c..649515e4a1 100644 --- a/macros/luatex/optex/f-schola.opm +++ b/macros/luatex/optex/f-schola.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Schola] \Schola {TeX Gyre Schola fonts based on New Century} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {Schola} "[texgyreschola-regular]" \_wlog{\_detokenize{% @@ -19,6 +19,8 @@ Modifier:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[texgyreschola-math]} + \_endcode See the file `f-heros.opm` for information about principles of such diff --git a/macros/luatex/optex/f-technika.opm b/macros/luatex/optex/f-technika.opm index d7f006d6f4..cf9a197dda 100644 --- a/macros/luatex/optex/f-technika.opm +++ b/macros/luatex/optex/f-technika.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Technika] \Technika {Fonts from visual style of CTU in Prague} - {\caps \light} {\rm \bf \it \bi \stencil} {TX} + {\caps \light} {\rm \bf \it \bi \stencil} {} "[Technika-Regular]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/f-termes.opm b/macros/luatex/optex/f-termes.opm index 25d9ef1911..d64d6a463e 100644 --- a/macros/luatex/optex/f-termes.opm +++ b/macros/luatex/optex/f-termes.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [Termes] \Termes {TeX Gyre Termes fonts based on Times} - {\caps} {\rm \bf \it \bi} {TX} + {\caps} {\rm \bf \it \bi} {Termes} "[texgyretermes-regular]" \_wlog{\_detokenize{% @@ -19,6 +19,8 @@ Modifier:^^J \_initfontfamily % new font family must be initialized +\_loadmath {[texgyretermes-math]} + \_endcode See the file `f-heros.opm` for information about principles of such diff --git a/macros/luatex/optex/f-xcharter.opm b/macros/luatex/optex/f-xcharter.opm index 98db483ea4..d7b4d47548 100644 --- a/macros/luatex/optex/f-xcharter.opm +++ b/macros/luatex/optex/f-xcharter.opm @@ -1,7 +1,7 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex \_fontdecl [XCharter] \XCharter {An extension of Bitstream Charter} - {\caps \slant} {\rm \bf \it \bi} {TX} + {\caps \slant} {\rm \bf \it \bi} {} "[XCharter-Roman]" \_wlog{\_detokenize{% diff --git a/macros/luatex/optex/fams-ini.opm b/macros/luatex/optex/fams-ini.opm index 3d9c568577..096e32df5c 100644 --- a/macros/luatex/optex/fams-ini.opm +++ b/macros/luatex/optex/fams-ini.opm @@ -108,25 +108,5 @@ The `\_famtext` writes a line to the terminal and to the log file when all families are listed. For modifiers and variants declared by `\_faminfo` the sample of letters -and other characters from is printed from `\catalogsample` register. -You can redeclare the printed sample by: - -\begtt - \catalogsample={Hello world!} -\endtt - -You can restrict the families to be printed in catalogue by: - -\begtt - \catalogonly={Termes, Latin Modern, Heros} -\endtt - -If `\catalogonly` is empty (this is default value) then all families are -printed but no families listed in `\catalogexclude`, for example - -\begtt - \catalogexclude={Latin Modern, XCharter} -\endtt - -The `\cataogexclude` is empty by default. +and other characters is printed. from `\catalogsample` register. diff --git a/macros/luatex/optex/fonts-catalog.opm b/macros/luatex/optex/fonts-catalog.opm index 88d0d1174f..f771fe92eb 100644 --- a/macros/luatex/optex/fonts-catalog.opm +++ b/macros/luatex/optex/fonts-catalog.opm @@ -3,6 +3,7 @@ \_initunifonts \_begingroup +\_noloadmath \_let\_ttfixed=\_tentt \_suppressfontnotfounderror=1 @@ -63,9 +64,42 @@ \_input fams-ini.opm \_isfile {fams-user.opm}\_iftrue \_input fams-user.opm \_fi -\_vfil\_break \_endgroup +\parindent=0pt + +\nonum\sec Customization of the catalogue + + +You can redeclare the printed sample of each font by: + +\begtt +\catalogsample={Hello world!} +\endtt + +before \code{\\fontfam[catalog]} command is used. +You can restrict the families to be printed in catalogue by: + +\begtt +\catalogonly={Termes, Latin Modern, Heros} +\endtt + +If the \code{\\catalogonly} is empty (this is default value) then all families are +printed but families listed in the \code{\\catalogexclude} are excluded. For example + +\begtt +\catalogexclude={Latin Modern, XCharter} +\endtt + +The \code{\\cataogexclude} is empty by default. + +\bigskip The font families printed in the catalogue must be declared by the +\code{\\_faminfo} command in the file \code{fams-ini.opm} (declarations used +as default for \OpTeX/) or in the file \code{fams-user.opm}. The second file +does not exist by default but user can create it. The syntax rules are +described in the \code{fams-ini.opm} file. + + \_endcode % -------------------------------------
\ No newline at end of file diff --git a/macros/luatex/optex/fonts-opmac.opm b/macros/luatex/optex/fonts-opmac.opm index 2224d722b0..40f3f4dd50 100644 --- a/macros/luatex/optex/fonts-opmac.opm +++ b/macros/luatex/optex/fonts-opmac.opm @@ -132,7 +132,7 @@ before `\typoscale` command. \begtt \typosize[12/14.4] % first usage in document, sets main values internally - \typosize[15/18 bigger font + \typosize[15/18] % bigger font \scalemain \typoscale[800/800] % reduces from main values, no from current values. \endtt diff --git a/macros/luatex/optex/fonts-resize.opm b/macros/luatex/optex/fonts-resize.opm index 4a7bf75468..b537c2d722 100644 --- a/macros/luatex/optex/fonts-resize.opm +++ b/macros/luatex/optex/fonts-resize.opm @@ -1,6 +1,6 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \setfontsize {Font resizing macros <2020-01-23>} +\_codedecl \setfontsize {Font resizing macros <2020-02-14>} %% resizefont variant-name \fontswitch, for example \resizefont{bf}\_tenbf @@ -33,7 +33,7 @@ \_def\_reloading{\_loadf{rm}\_tenrm \_loadf{bf}\_tenbf \_loadf{it}\_tenit \_loadf{bi}\_tenbi } -\_def\_loadf#1#2{\sdef{_tryload#1}{\_resizefont{#1}#2}} +\_def\_loadf#1#2{\sdef{_tryload#1}{\_ifmmode \_else \_resizefont{#1}#2\_fi}} \_def\_tryloadtt{\fontlet\_tentt=\_tentt \_sizespec\_relax} \_def\_setoptsize {\_isnextchar a{\_setoptsizeA} @@ -83,7 +83,7 @@ \_def \_keepmeaning #1#2{\_global\_let\_keepmeaningdata=#1% #2\_let#1=\_keepmeaningdata \_global\_let\_keepmeaningdata=\_undefined } -\_protected \_def \_currvar{\_cs{_currvar:\_ea \_xstring \_the\_font}} +\_protected \_def \_currvar{\_cs{_currvar:\_ea \_csstring \_the\_font}} \_sdef{_currvar:_tenrm}{\_rm} \_sdef{_currvar:_tenbf}{\_bf} \_sdef{_currvar:_tenit}{\_it} @@ -91,7 +91,7 @@ \_sdef{_currvar:_tentt}{\_tt} \_def \_newcurrfontsize #1{% \newcurrfontsize{at25pt} - \_edef\_tmp{\_ea\_xstring \_the\_font}% + \_edef\_tmp{\_ea\_csstring \_the\_font}% \_ea \_fontlet \_csname \_tmp\_ea\_endcsname \_the\_font \_space #1\_relax \_csname \_tmp\_endcsname } diff --git a/macros/luatex/optex/fonts-select.opm b/macros/luatex/optex/fonts-select.opm index f9d6355639..ee8fa7709b 100644 --- a/macros/luatex/optex/fonts-select.opm +++ b/macros/luatex/optex/fonts-select.opm @@ -1,6 +1,6 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \fontfam {Fonts selection system <2020-01-23>} +\_codedecl \fontfam {Fonts selection system <2020-02-14>} \_def\_initunifonts {% \_ea\_newcount \_csname e@alloc@attribute@count\_endcsname @@ -12,8 +12,9 @@ \_gdef\_rfskipatX ##1" ##2\_relax{"##1"}% \_gdef\_doresizefont ##1{\_logfont{##1}% \_font##1=\_fontnamegen\_space \_sizespec \_relax}% - \_def \_fontnamegen{lmr10}% + \_def \_fontnamegen{ec-lmr10}% \_global\_let\_initunifonts=\_relax % we need not to do this work twice + \_global\_let\initunifonts=\_relax } \_def\_fontdecl [#1]#2#3#4#5#6#7"#8"{% \_initunifonts \_uniaccents @@ -21,7 +22,7 @@ \_isfont"#8"\_iffalse \_opwarning{Family [#1] skipped, font "#7" not found}\_ea\_ea\_ea\_endinput \_else \_def\_textfamily{#1}% - \_edef\_currfamily {\_xstring #2}% + \_edef\_currfamily {\_csstring #2}% \_def\_mainfamcommand{#2}% \_wterm {FONT: [#1] -- \string#2 \_detokenize{(#3)^^J mods:{#4} vars:{#5} math:{#6}}}% \_fi @@ -71,7 +72,7 @@ \_edef\_act{\_noexpand\_isinlist{,#2,}{,\_cs{_#1V},}}\_act \_iftrue #3\_fi } -\_def \_moddef #1#2{\_edef\_tmp{\_xstring#1}\_remfirstunderscore\_tmp +\_def \_moddef #1#2{\_edef\_tmp{\_csstring#1}\_remfirstunderscore\_tmp \_sdef{_f:\_currfamily:\_tmp}{#2\_reloading}% \_protected \_edef #1{\noexpand\_famdepend\noexpand#1{_f:\noexpand\_currfamily:\_tmp}}% \_ea \_ifx \_csname\_tmp\_endcsname #1\_else @@ -82,7 +83,7 @@ \_def\_famdepend#1#2{\_ifcsname#2\_endcsname \_csname#2\_ea\_endcsname \_else \_opwarning{\string#1 is undeclared in current family "\_currfamily", ignored}\_fi } -\_def\_famvardef#1{\_edef\_tmp{\_xstring#1}\_remfirstunderscore\_tmp +\_def\_famvardef#1{\_edef\_tmp{\_csstring#1}\_remfirstunderscore\_tmp \_ea\_famvardefA \_ea#1\_csname _ten\_tmp\_ea\_endcsname \_csname _tryload\_tmp\_ea\_endcsname \_csname \_tmp\_endcsname } @@ -95,7 +96,7 @@ \_sdef{_f:\_currfamily:\_tmp}{#3#2}% \_def#3{\_fontdef#2{\_reloading#5}}% \_ifx#1\tt \addto#1{\_fam\_ttfam}\fi - \_sdef{_currvar:\xstring#2}{#1}% + \_sdef{_currvar:\csstring#2}{#1}% \_ifx#1#4\_else \_public#4;\_fi \_fi } @@ -108,11 +109,11 @@ \_else \_edef\_famfile{f-\_famname}\_fi \_ifx \_famfile\_empty \_listfamnames \_fi \_isfile {f-\_famname.opm}\_iftrue - \_input "f-\_famname.opm"% - \_else \_isfile {fams-user.opm}\_iftrue \_input fams-user.opm \_fi + \_opinput {f-\_famname.opm} + \_else \_isfile {fams-user.opm}\_iftrue \_opinput {fams-user.opm} \_fi \_ifcsname _famf:\_famname\_endcsname \_edef\_famfile{\_cs{_famf:\_famname}}% \_else \_edef\_famfile{f-\_famname}\_fi - \_isfile {\_famfile.opm}\_iftrue \_input "\_famfile.opm"% + \_isfile {\_famfile.opm}\_iftrue \_opinput {\_famfile.opm} \_else \_opwarning{Family [#1] undeclared, "\_famfile.opm" not found}% \_fi \_fi \_relax } @@ -122,10 +123,10 @@ \_begingroup \_let\_famtext=\_wterm \_def\_faminfo [##1]##2##3##4{% - \_wterm{ \_space\_noexpand\_fontfam [##1] -- ##2}% + \_wterm{ \_space\_noexpand\fontfam [##1] -- ##2}% \_let\_famalias=\_famaliasA}% - \_input fams-ini.opm - \_isfile {fams-declared.opm}\_iftrue \_input fams-declared.opm \_fi + \_opinput {fams-ini.opm} + \_isfile {fams-user.opm}\_iftrue \_opinput {fams-user.opm} \_fi \_message{^^J}% \_endgroup } @@ -149,7 +150,8 @@ \_catalogsample={ABCDabcd Qsty fi fl áéíóúüů řžč ÁÉÍÓÚ ŘŽČ 0123456789} \_public - \fontfam \isfont \famvardef \moddef \catalogonly \catalogexclude \catalogsample ; + \fontfam \initunifonts \isfont \famvardef \moddef + \catalogonly \catalogexclude \catalogsample ; \_endcode %--------------------------------------------------- @@ -270,6 +272,19 @@ Maybe, one needs a context switching between `\rm`<-->`\bf` and `\it`<-->`\bi`. This is done by `\em` macro, see opmac-fonts.ofm. +\secc Math Fonts +%--------------- + +First usage of `\fontfam` loads UnicodeMath fonts too if the specified font +family is configured with an UnicodeMath font. If you neeed not this feature +(because preloaded 8bit math fonts seem to be sufficient for you) then write +`\noloadmath` before first `\fontfam`. + +If you want to use your specially selected UnicodeMath font then use +`\loadmath{[<font_file>]}` or `\loadmath{<font_name>}` before first +`\fontfam` is used. + + \secc Defining a font commands %----------------------------- diff --git a/macros/luatex/optex/hyphen-lan.opm b/macros/luatex/optex/hyphen-lan.opm index 9532243eba..86df5cdc46 100644 --- a/macros/luatex/optex/hyphen-lan.opm +++ b/macros/luatex/optex/hyphen-lan.opm @@ -4,21 +4,21 @@ \_chardef\_enPatt=0 \_def\_pattlist{\_enPatt=0} -\_def\_langlist{en(USpreloaded)} +\_def\_langlist{en(USenglish)} \_sdef{_lan:0}{en} -\_sdef{_ulan:USpreloaded}{en} +\_sdef{_ulan:usenglish}{en} \_def\enlang{\_uselang{en}\_enPatt23} % \lefthyph=2 \righthyph=3 \_sdef{langspecific:en}{\_nonfrenchspacing} \_lefthyphenmin=2 \_righthyphenmin=3 % disallow x- or -xx breaks -\_input hyphen % en(USpreloaded) patterns from TeX82 +\_input hyphen % en(USenglish) patterns from TeX82 \_def\_preplang #1 #2 #3#4 #5 {% \_chardef#3=#4 - \_sdef{_lan:#4}{#1}\_sdef{_ulan:#2}{#1}% + \_sdef{_lan:#4}{#1}\_lowercase{\_sdef{_ulan:#2}}{#1}% \_def\_next{\_expandafter\_noexpand\_csname #1lang\_endcsname} - \_expandafter\_edef \_csname #1lang\_endcsname {% - \_noexpand\_loadpattrs #2 #4 + \_ea\_edef \_csname #1lang\_endcsname {% + \_lowercase{\_noexpand\_loadpattrs #2} #4 \_gdef\_next{\_noexpand\_uselang{#1}#3#5}% \_next } @@ -32,68 +32,68 @@ } \_def\_uselang#1#2#3#4{\_language=#2\_lefthyphenmin=#3\_righthyphenmin=#4\_relax \_frenchspacing % \nonfrenchspacing can be set in \cs{langspecific:lan} - \_cs{langscpecific:#1}% + \_cs{langspecific:#1}% } -\_def\_uselanguage#1{\_cs{\_cs{_ulan:#1}lan}} +\_def\_uselanguage#1{\_lowercase{\_cs{\_cs{_ulan:#1}lang}}} -\_preplang enus usenglishmax \_enusPatt 100 23 -\_preplang engb ukenglish \_engbPatt 101 23 -\_preplang it italian \_itPatt 102 22 -\_preplang ia interlingua \_iaPatt 103 22 -\_preplang id indonesian \_idPatt 104 22 +\_preplang enus USenglishmax \_enusPatt 100 23 +\_preplang engb UKenglish \_engbPatt 101 23 +\_preplang it Italian \_itPatt 102 22 +\_preplang ia Interlingua \_iaPatt 103 22 +\_preplang id Indonesian \_idPatt 104 22 -\_preplang cs czech \_csPatt 115 23 -\_preplang sk slovak \_skPatt 116 23 -\_preplang de ngerman \_dePatt 121 22 -\_preplang fr french \_frPatt 122 22 -\_preplang pl polish \_plPatt 123 22 -\_preplang cy welsh \_cyPatt 124 23 -\_preplang da danish \_daPatt 125 22 -\_preplang es spanish \_esPatt 126 22 -\_preplang sl slovenian \_slPatt 128 22 -\_preplang fi finnish \_fiPatt 129 22 -\_preplang hy hungarian \_huPatt 130 22 -\_preplang tr turkish \_trPatt 131 22 -\_preplang et estoniak \_etPatt 132 23 -\_preplang eu basque \_euPatt 133 22 -\_preplang ga irish \_gaPatt 134 23 -\_preplang nb bokmal \_nbPatt 135 22 -\_preplang nn nynorsk \_nnPatt 136 22 -\_preplang nl dutch \_nlPatt 137 22 -\_preplang pt portuguese \_ptPatt 138 23 -\_preplang ro romanian \_roPatt 139 22 -\_preplang hr croatian \_hrPatt 140 22 -\_preplang zh pinyin \_zhPatt 141 11 -\_preplang is icelandic \_isPatt 142 22 -\_preplang hsb uppersorbian \_hsbPatt 143 22 -\_preplang af afrikaans \_afPatt 144 12 -\_preplang gl galician \_glPatt 145 22 -\_preplang kmr kurmanji \_kmrPatt 146 22 -\_preplang tk turkmen \_tkPatt 147 22 -\_preplang la latin \_laPatt 148 22 -\_preplang lac classiclatin \_lacPatt 149 22 -\_preplang lal liturgicallatin \_lalPatt 150 22 -\_preplang elm monogreek \_elmPatt 201 11 -\_preplang elp greek \_elpPatt 202 11 -\_preplang grc ancientgreek \_grcPatt 203 11 -\_preplang ca catalan \_caPatt 204 22 -\_preplang cop coptic \_copPatt 205 11 -\_preplang mn mongolian \_mnPatt 206 22 -\_preplang sa sanskrit \_saPatt 207 13 -\_preplang ru russian \_ruPatt 208 22 -\_preplang uk ukrainian \_ukPatt 209 22 -\_preplang hy armenian \_hyPatt 210 12 -\_preplang as assamese \_asPatt 211 11 -\_preplang hi hindi \_hiPatt 212 11 -\_preplang kn kannada \_knPatt 213 11 -\_preplang lv latvian \_lvPatt 215 22 -\_preplang lt lithuanian \_ltPatt 216 22 -\_preplang ml malayalam \_mlPatt 217 11 -\_preplang mr marathi \_mrPatt 218 11 -\_preplang or oriya \_orPatt 219 11 -\_preplang pa panjabi \_paPatt 220 11 -\_preplang ta tamil \_taPatt 221 11 -\_preplang te telugu \_tePatt 222 11 +\_preplang cs Czech \_csPatt 115 23 +\_preplang sk Slovak \_skPatt 116 23 +\_preplang de nGerman \_dePatt 121 22 +\_preplang fr French \_frPatt 122 22 +\_preplang pl Polish \_plPatt 123 22 +\_preplang cy Welsh \_cyPatt 124 23 +\_preplang da Danish \_daPatt 125 22 +\_preplang es Spanish \_esPatt 126 22 +\_preplang sl Slovenian \_slPatt 128 22 +\_preplang fi Finnish \_fiPatt 129 22 +\_preplang hy Hungarian \_huPatt 130 22 +\_preplang tr Turkish \_trPatt 131 22 +\_preplang et Estoniak \_etPatt 132 23 +\_preplang eu Basque \_euPatt 133 22 +\_preplang ga Irish \_gaPatt 134 23 +\_preplang nb Bokmal \_nbPatt 135 22 +\_preplang nn Nynorsk \_nnPatt 136 22 +\_preplang nl Dutch \_nlPatt 137 22 +\_preplang pt Portuguese \_ptPatt 138 23 +\_preplang ro Romanian \_roPatt 139 22 +\_preplang hr Croatian \_hrPatt 140 22 +\_preplang zh Pinyin \_zhPatt 141 11 +\_preplang is Icelandic \_isPatt 142 22 +\_preplang hsb Uppersorbian \_hsbPatt 143 22 +\_preplang af Afrikaans \_afPatt 144 12 +\_preplang gl Galician \_glPatt 145 22 +\_preplang kmr Kurmanji \_kmrPatt 146 22 +\_preplang tk Turkmen \_tkPatt 147 22 +\_preplang la Latin \_laPatt 148 22 +\_preplang lac classicLatin \_lacPatt 149 22 +\_preplang lal liturgicalLatin \_lalPatt 150 22 +\_preplang elm monoGreek \_elmPatt 201 11 +\_preplang elp Greek \_elpPatt 202 11 +\_preplang grc ancientGreek \_grcPatt 203 11 +\_preplang ca Catalan \_caPatt 204 22 +\_preplang cop Coptic \_copPatt 205 11 +\_preplang mn Mongolian \_mnPatt 206 22 +\_preplang sa Sanskrit \_saPatt 207 13 +\_preplang ru Russian \_ruPatt 208 22 +\_preplang uk Ukrainian \_ukPatt 209 22 +\_preplang hy Armenian \_hyPatt 210 12 +\_preplang as Assamese \_asPatt 211 11 +\_preplang hi Hindi \_hiPatt 212 11 +\_preplang kn Kannada \_knPatt 213 11 +\_preplang lv Latvian \_lvPatt 215 22 +\_preplang lt Lithuanian \_ltPatt 216 22 +\_preplang ml Malayalam \_mlPatt 217 11 +\_preplang mr Marathi \_mrPatt 218 11 +\_preplang or Oriya \_orPatt 219 11 +\_preplang pa Panjabi \_paPatt 220 11 +\_preplang ta Tamil \_taPatt 221 11 +\_preplang te Telugu \_tePatt 222 11 \message{Language hyph.patterns ready to load: \_langlist. Use \string\<shortname>lang to initialize language, diff --git a/macros/luatex/optex/if-macros.opm b/macros/luatex/optex/if-macros.opm index c3e4619110..5f3f4d91cf 100644 --- a/macros/luatex/optex/if-macros.opm +++ b/macros/luatex/optex/if-macros.opm @@ -19,9 +19,11 @@ % \loop like in plain\TeX/: -\_def \_loop #1\repeat{\_def\_body{#1}\_iterate} +\_def \_loop #1\_repeat{\_def\_body{#1}\_iterate} +\_def \loop #1\repeat{\_def\_body{#1}\_iterate} +\_let \_repeat=\_fi % this makes \loop...\if...\repeat skippable +\_let \repeat=\_fi \_def \_iterate {\_body \_ea \_iterate \_fi} -\_let \repeat=\fi % this makes \loop...\if...\repeat skippable % \isempty{text}\iftrue, \isempty{text}\iffalse: @@ -38,6 +40,15 @@ \_ea\_tmp#1\_endlistsep#2\_end/_% } +% \isequal{text}{text}\iftrue ... + +\_def\_isequal#1#2#3{\_directlua{% + if "\_luaescapestring{#1}"=="\_luaescapestring{#2}" then else tex.print("\_nbb unless") end}#3} + +% \ismacro\macro{text}\iftrue ... + +\_def\_ismacro#1{\_ea\_isequal\_ea{#1}} + % \isnextchar <char>{exec if true}{exec if false} \_long\_def\_isnextchar#1#2#3{\_begingroup\_toks0={\_endgroup#2}\_toks1={\_endgroup#3}% @@ -62,8 +73,8 @@ \_public - \newif \loop \repeat \isempty \istoksempty \isinlist \isnextchar - \isfile \removespaces ; + \newif \isempty \istoksempty \isinlist \isnextchar + \isfile \ismacro \isequal \removespaces ; \_endcode %--------------------------------------------------------- diff --git a/macros/luatex/optex/logos.opm b/macros/luatex/optex/logos.opm index 8d96d332ff..f691aa0b61 100644 --- a/macros/luatex/optex/logos.opm +++ b/macros/luatex/optex/logos.opm @@ -5,7 +5,7 @@ \_protected\_def \_TeX {T\_kern-.1667em\_lower.5ex\_hbox{E}\_kern-.125emX\_ignoreslash} \_protected\_def \_OpTeX {Op\kern-.1em\_TeX} \_protected\_def \_LuaTeX {Lua\_TeX} -\_protected\_def \XeTeX {X\_kern-.125em\_phantom E% +\_protected\_def \_XeTeX {X\_kern-.125em\_phantom E% \_pdfsave\_rlap{\_pdfscale{-1}{1}\_lower.5ex\_hbox{E}}\_pdfrestore \_kern-.1667em \_TeX} \_def\_LaTeX{\_tmpdim=.42ex L\_kern-.36em \_kern \_slantcorr % slant correction \_raise \_tmpdim \_hbox{\_thefontscale[710]A}% @@ -20,8 +20,15 @@ \_def\_OPmac{\_leavevmode \_lower.2ex\_hbox{\_thefontscale[1400]O}\_kern-.86em P{\_em mac}\_ignoreslash} \_def\_CS{$\_cal C$\_kern-.1667em\_lower.5ex\_hbox{$\_cal S$}\_ignoreslash} -\_def\_csplain{\_CS plain} - +\_def\_csplain{\_CS plain\_ignoreslash} +\_def\_ignslash#1{\_ifx/#1\_else #1\_fi} + +\_toksapp \_pdfstringout {% conversion for PDF outlines + \_def\TeX{TeX\_ignslash}\_def\OpTeX{OpTeX\_ignslash}% + \_def\LuaTeX{LuaTeX\_ignslash}\_def\XeTeX{XeTeX\_ignslash}% + \_def\LaTeX{LaTeX\_ignslash}\_def\OPmac{OPmac\_ignslash}% + \_def\CS{CS}\_def\csplain{csplain\_ignslash}% +} \_public \TeX \OpTeX \LuaTeX \XeTeX \LaTeX \OPmac \CS \csplain diff --git a/macros/luatex/optex/luatex-ini.opm b/macros/luatex/optex/luatex-ini.opm index 7ce9667f79..d84e0da8b1 100644 --- a/macros/luatex/optex/luatex-ini.opm +++ b/macros/luatex/optex/luatex-ini.opm @@ -2,13 +2,6 @@ \_codedecl \pdfprimitive {LuaTeX initialization code <2020-01-23>} -\_directlua { - % enable all primitives without prefixing - tex.enableprimitives('', tex.extraprimitives()) - % enable all primitives with _ prefix - tex.enableprimitives('_', tex.extraprimitives()) -} - \_let\_pdfpagewidth \pagewidth \_let\_pdfpageheight \pageheight \_let\_pdfadjustspacing \adjustspacing diff --git a/macros/luatex/optex/math-macros.opm b/macros/luatex/optex/math-macros.opm index a71a089ab2..27bea8dcc4 100644 --- a/macros/luatex/optex/math-macros.opm +++ b/macros/luatex/optex/math-macros.opm @@ -1,6 +1,6 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \sin {Math macros plus mathchardefs <2020-01-23>} +\_codedecl \sin {Math macros plus mathchardefs <2020-02-14>} %% The character _ as subscript prefix: @@ -274,8 +274,8 @@ \_protected\_def\lg {\_mathop{\_rm lg}\_nolimits} \_protected\_def\ln {\_mathop{\_rm ln}\_nolimits} \_protected\_def\lim {\_mathop{\_rm lim}} -\_protected\_def\limsup {\_mathop{\_rm lim\_,sup}} -\_protected\_def\liminf {\_mathop{\_rm lim\_,inf}} +\_protected\_def\limsup {\_mathop{\_rm lim\_thinsk sup}} +\_protected\_def\liminf {\_mathop{\_rm lim\_thinsk inf}} \_protected\_def\sin {\_mathop{\_rm sin}\_nolimits} \_protected\_def\arcsin {\_mathop{\_rm arcsin}\_nolimits} \_protected\_def\sinh {\_mathop{\_rm sinh}\_nolimits} @@ -495,7 +495,7 @@ \_protected\_def\_cases#1{\_left\{\_thinsk\_vcenter{\_normalbaselines\_math \_ialign{$##\_hfil$&\_quad##\_hfil\_crcr#1\_crcr}}\_right.} -\_protected\_def\_matrix#1{\_null\_,\_vcenter{\_normalbaselines\_math +\_protected\_def\_matrix#1{\_null\_thinsk\_vcenter{\_normalbaselines\_math \_ialign{\_hfil$##$\_hfil&&\_quad\_hfil$##$\_hfil\_crcr \_mathstrut\_crcr\_noalign{\_kern-\_baselineskip} #1\_crcr\_mathstrut\_crcr\_noalign{\_kern-\_baselineskip}}}\_thinsk} @@ -521,7 +521,7 @@ \_def\_openupA{\_advance\_lineskip by\_dimen0 \_advance\_baselineskip by\_dimen0 \_advance\_lineskiplimit by\_dimen0 } -\_def\_eqalign#1{\_null\_,\_vcenter{\_openup\_jot\_math +\_def\_eqalign#1{\_null\_thinsk\_vcenter{\_openup\_jot\_math \_ialign{\_strut\_hfil$\_displaystyle{##}$&$\_displaystyle{{}##}$\_hfil \_crcr#1\_crcr}}\_thinsk} \_newifi\_ifdtop @@ -796,7 +796,7 @@ \_protected\_def \_not#1{% \_ifx #1<\_nless \_else \_ifx #1>\_ngtr \_else - \_edef\_tmpn{\_xstring#1}% + \_edef\_tmpn{\_csstring#1}% \_ifcsname _not\tmpn\_endcsname \_csname _not\tmpn\_endcsname \_else \_ifcsname _n\tmpn\_endcsname \_csname _n\tmpn\_endcsname \_else \_mathrel{\_mathord{\_notchar}\_mathord{#1}}% diff --git a/macros/luatex/optex/math-preload.opm b/macros/luatex/optex/math-preload.opm index 70cc5e798f..a2a5669831 100644 --- a/macros/luatex/optex/math-preload.opm +++ b/macros/luatex/optex/math-preload.opm @@ -130,9 +130,12 @@ \_newdimen\_ptunit \_ptunit=1pt \_newdimen\_ptmunit \_ptmunit=1\_ptunit +\_suppressfontnotfounderror=1 \_setmathsizes[10/7/5]\_normalmath +\_suppressfontnotfounderror=0 -\_public \normalmath \boldmath \setmathsizes +\_public + \normalmath \boldmath \setmathsizes \bf \it \bi \tt \mit \cal \bbchar \frak \script \ptunit ; \_endcode %--------------------------------------------------- diff --git a/macros/luatex/optex/math-unicode.opm b/macros/luatex/optex/math-unicode.opm new file mode 100644 index 0000000000..9b4cf60acb --- /dev/null +++ b/macros/luatex/optex/math-unicode.opm @@ -0,0 +1,155 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \loadmath {Unicode Math fonts <2020-02-14>} + +\_newifi \_ifmathloading \_mathloadingtrue + +\_def\_noloadmath{\_mathloadingfalse} +\_def\_doloadmath{\_mathloadingtrue} + +\_def\_loadmath#1{% + \_ifmathloading + \_initunifonts + \_isfont"#1"\_iffalse + \_opwarning{Math font "#1" not found, skipped...}% + \_else + \_def\_unimathfont{#1}% + \_def\_normalmath{% + \_loadumathfamily 1 {\_unimathfont}{} % Base font + \_loadmathfamily 4 rsfs % script + \_setmathdimens + }% + \_let\_boldmath=\_normalmath + \_addto\_boldmath{\_pdfliteral direct {2 Tr .3 w}\_aftergroup\_noboldmath}% + \_def\_noboldmath{\_pdfliteral direct {0 Tr 0 w}}% faked bold only :-( + \_normalmath + \_wterm {MATH-FONT: "#1" -- unicode math prepared.}% + \_setctable\_optexcatcodes \_input unimath-codes.opm \_restorectable + \_mathloadingfalse + \_fi\_fi} + +\_def\_loadboldmath#1#2\to #3{% + \_def\_tmp{#3}\_ifx\_unimathfont\_tmp % do work only if #3 is loaded as normal Math + \_isfont"#1"\_iffalse + \_opwarning{Bold-Math font "#1" not found, skipped...} + \_else + \_def\_unimathboldfont{#1}% + \_def\_boldmath{% + \_loadumathfamily 1 {\_unimathboldfont}{} % Base font + \_loadmathfamily 4 rsfs % script + \_setmathdimens + }% + \_wterm {MATH-FONT: "#1" -- unicode math bold prepared.}% + \_fi\_fi} + +\_def\_umathname#1#2{"#1:\_mfontfeatures#2"} +\_def\_mfontfeatures{mode=base;script=math;} + +\_def\_loadumathfamily #1 #2#3 {% + \_edef\_optsizesave{\_the\_optsize}% + \_optsize=\_sizemtext \_font\_mF=\_umathname{#2}{#3} at\_optsize \_textfont#1=\_mF + \_ifnum#1=1 \_textfont2=\_mF \_textfont3=\_mF \_fi + \_optsize=\_sizemscript \_font\_mF=\_umathname{#2}{+ssty=0;#3} at\_optsize \_scriptfont#1=\_mF + \_ifnum#1=1 \_scriptfont2=\_mF \_scriptfont3=\_mF \_fi + \_optsize=\_sizemsscript \_font\_mF=\_umathname{#2}{+ssty=1;#3} at\_optsize \_scriptscriptfont#1=\_mF + \_ifnum#1=1 \_scriptscriptfont2=\_mF \_scriptscriptfont3=\_mF \_fi + \_optsize=\_optsizesave \_relax +} + +\_newcount\umathnumA \_newcount\umathnumB + +\def\umathcorr#1#2{\expandafter#1\expandafter{\the#2}} +\def\umathprepare#1{\def\umathscanholes##1[#1]##2##3\relax{##2}} +\def\umathvalue#1{\expandafter\umathscanholes\umathcharholes[#1]{#1}\relax} + +\def\umathcharholes{% holes in math alphabets: + [119893]{"210E}[119965]{"212C}[119968]{"2130}[119969]{"2131}% + [119971]{"210B}[119972]{"2110}[119975]{"2112}[119976]{"2133}[119981]{"211B}% + [119994]{"212F}[119996]{"210A}[120004]{"2134}% + [120070]{"212D}[120075]{"210C}[120076]{"2111}[120085]{"211C}[120093]{"2128}% + [120122]{"2102}[120127]{"210D}[120133]{"2115}[120135]{"2119} + [120136]{"211A}[120137]{"211D}[120145]{"2124}% +} +\def\umathrange#1#2{\umathnumB=#2\relax \umathrangeA#1} +\def\umathrangeA#1-#2{\umathnumA=`#1\relax + \loop + \umathcorr\umathprepare\umathnumB + \Umathcode \umathnumA = 7 1 \umathcorr\umathvalue{\umathnumB} + \ifnum\umathnumA<`#2\relax + \advance\umathnumA by1 \advance\umathnumB by1 + \repeat +} +\def\umathrangeGREEK{\begingroup + \lccode`A="0391 \lccode`Z="03A9 + \lowercase{\endgroup\umathrange{A-Z}}} +\def\umathrangegreek{\begingroup + \lccode`A="03B1 \lccode`Z="03D6 + \lowercase{\endgroup\umathrange{A-Z}}} +\def\greekdef#1{\ifx#1\relax \else + \begingroup \lccode`X=\umathnumB \lowercase{\endgroup \def#1{X}}% + \advance\umathnumB by 1 + \expandafter\greekdef \fi +} + +\_public + \loadmath \loadboldmath \noloadmath \doloadmath ; + +\_endcode + +-------------------------------------------- + +The `\loadmath` macro loads math fonts and sets math-codes using \input +unimath-codes.opm. If UnicodeMath font is loaded then `\_mathloadingfalse` +is set, so new UnicodeMath font isn't loaded until `\domathload` is used. + +`\loadadboldmath{<bold-font>} \to {<normal-font>}` loads bold variant only +if <normal-font> was sucessully loaded. For example: + +\begtt +\loadmath {[xitsmath-regular]} +\loadboldmath {[xitsmath-bold]} \to {[xitsmath-regular]} +\endtt + +You can combine more fonts, if you register them to another +math families (5, 6, 7, etc.) in \normalmath macro. + +The default value of \normalmath shows a combination of base Unicode Math +font with 8bit Math font at family 4. See definition of \script macro where +\fam4 is used. Of course, we need to set \rmvariables too, because 8bit font +accepts only codes less than 255. + +See http://tex.stackexchange.com/questions/308749/ for more technical details. + +The poor bold is used for complete bold vaiant of the font. If the selected +font has its bold vaiant (like xits-math), you can re-define \boldmath macro +by: + +\def\boldmath{% + \loadumathfamily 1 {[xitsmath-bold]}{} % Base font + \loadmathfamily 4 rsfs % script + \setmathdimens +} + +XITSmath-bold needs correction: the norm symbol ||x|| is missing here. So, you +can define: + +\def\boldmath{% + \loadumathfamily 1 {[xitsmath-bold]}{} % Base font + \loadmathfamily 4 rsfs % script + \loadumathfamily 5 {[xitsmath-regular]}{} + \def\|{\Udelimiter 0 5 "02016 }% % norm delimiter from family 5 + \setmathdimens +} + +-------------------- + +\loadmath{[XITSMath-Regular]} ... XITS MATH^^J +\loadmath{[latinmodern-math]} ... Latin Modern Math^^J +\loadmath{[texgyretermes-math]} ... TeXGyre Termes Math^^J +\loadmath{[texgyrebonum-math]} ... TeXGyre Bonum Math^^J +\loadmath{[texgyrepagella-math]} ... TeXGyre Pagella Math^^J +\loadmath{[texgyreschola-math]} ... TeXGyre Schola Math^^J +\loadmath{[texgyredejavu-math]} ... TeXGyre DeJaVu Math^^J +\loadmath{[LibertinusMath-Regular]} ... Libertinus Math^^J +\loadmath{[FiraMath-Regular]} ... Fira Math^^J +\loadmath{[Asana-Math]} ... Asana Math^^J diff --git a/macros/luatex/optex/mathclass.opm b/macros/luatex/optex/mathclass.opm new file mode 100644 index 0000000000..458431abca --- /dev/null +++ b/macros/luatex/optex/mathclass.opm @@ -0,0 +1,1591 @@ +# File: MathClass.txt +# Revision: 15 +# Date: 2017-06-01, 12:35:00 GMT +# +# © 2017 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# For documentation, see http://www.unicode.org/reports/tr25/ +# +# ------------------------------------------------ +# This file is a classification of characters based on their usage in +# mathematical notation. +# +# While the contents of this file represent the best information +# available to the authors and the Unicode Technical Committee as +# of the date referenced above, it is likely that the information +# in this file will change from time to time. +# +# This file is *NOT* formally part of the Unicode Character Database +# at this time. +# +# The character encoding of this plain-text file is UTF-8. +# +# The data consists of 2 fields. +# +# 1: code point or range +# +# 2: class, one of: +# +# N - Normal - includes all digits and symbols requiring only one form +# A - Alphabetic +# B - Binary +# C - Closing - usually paired with opening delimiter +# D - Diacritic +# F - Fence - unpaired delimiter (often used as opening or closing) +# G - Glyph_Part - piece of large operator +# L - Large - n-ary or large operator, often takes limits +# O - Opening - usually paired with closing delimiter +# P - Punctuation +# R - Relation - includes arrows +# S - Space +# U - Unary - operators that are only unary +# V - Vary - operators that can be unary or binary depending on context +# X - Special - characters not covered by other classes +# +# Fields are delimited by ';'. Spaces adjacent to the delimiter or the '#' are +# not significant. Future versions of this file may use different amounts of +# whitespace. +# +# Some character positions in the Mathematical Alphanumeric Symbols block are +# reserved and have been mapped to the Letterlike Symbols block in Unicode. +# This is indicated in 24 special purpose comments. +# +# The character repertoire of this revision is the repertoire of Unicode +# Version 9.0. For more information see Revision 15 or later of UTR #25. +# ------------------------------------------------ + +0020;S +0021;N +0023;N +0024;N +0025;N +0026;N +0028;O +0029;C +002A;N +002B;V +002C;P +002D;N +002E;P +002F;B +0030..0039;N +003A;P +003B;P +003C;R +003D;R +003E;R +003F;P +0040;N +0041..005A;A +005B;O +005C;B +005D;C +005E;N +005F;N +0060;D +0061..007A;A +007B;O +007C;F +007D;C +007E;N +00A0;S +00A1;P +00A2;N +00A3;N +00A4;N +00A5;N +00A6;N +00A7;N +00A8;D +00AC;U +00AF;D +00B0;N +00B1;V +00B2;N +00B3;N +00B4;N +00B5;N +00B6;N +00B7;B +00B9;N +00BC;N +00BD;N +00BE;N +00BF;P +00D7;B +00F7;B +0131;A +0237;A +02C6;D +02C7;D +02D8;D +02D9;D +02DA;D +02DC;D +0300;D +0301;D +0302;D +0303;D +0304;D +0305;D +0306;D +0307;D +0308;D +030A;D +030C;D +0311;D +0323;D +032C;D +032D;D +032E;D +032F;D +0330;D +0331;D +0332;D +0333;D +0338;D +033A;D +033F;D +0346;D +0391;A +0392;A +0393;A +0394;A +0395;A +0396;A +0397;A +0398;A +0399;A +039A;A +039B;A +039C;A +039D;A +039E;A +039F;A +03A0;A +03A1;A +03A3;A +03A4;A +03A6;A +03A7;A +03A8;A +03A9;A +03B1;A +03B2;A +03B3;A +03B4;A +03B5;A +03B6;A +03B7;A +03B8;A +03B9;A +03BA;A +03BB;A +03BC;A +03BD;A +03BE;A +03BF;A +03C0;A +03C1;A +03C3;A +03C4;A +03C5;A +03C6;A +03C7;A +03C8;A +03C9;A +03D0;A +03D1;A +03D2;A +03D5;A +03D6;A +03D8;N +03D9;N +03DA;A +03DB;A +03DC;A +03DD;A +03E0;A +03E1;A +03F0;A +03F1;A +03F4;A +03F5;A +03F6;N +0428;A +0606;L +0607;L +0608;A +2000;S +2001;S +2002;S +2003;S +2004;S +2005;S +2006;S +2007;S +2009;S +200A;S +200B;S +2010;P +2012;P +2013;P +2014;P +2016;F +2020;R +2021;R +2022;B +2026;N +2032;N +2033;N +2034;N +2035;N +2036;N +2037;N +203B;N +203C;N +2040;B +2044;B +204E;B +204F;R +2050;R +2051;N +2052;N +2057;N +205F;S +2061;B +2062;B +2063;P +2064;X +207A..207E;N +208A..208E;N +20D0;D +20D1;D +20D2;D +20D3;X +20D4;D +20D5;D +20D6;D +20D7;D +20D8;D +20D9;D +20DA;D +20DB;D +20DC;D +20DD;D +20DE;D +20DF;D +20E1;D +20E4;D +20E5;D +20E6;D +20E7;D +20E8;D +20E9;D +20EA;D +20EB;D +20EC;D +20ED;D +20EE;D +20EF;D +2102;A +2107;N +210A;A +210B;A +210C;A +210D;A +210E;N +210F;N +2110;A +2111;A +2112;A +2113;A +2115;A +2118;A +2119;A +211A;A +211B;A +211C;A +211D;A +2124;A +2126;N +2127;N +2128;A +2129;N +212B;A +212C;A +212D;A +212F;A +2130;A +2131;A +2132;N +2133;A +2134;A +2135;A +2136;A +2137;A +2138;A +213C;A +213D;A +213E;N +213F;A +2140;L +2141;N +2142;N +2143;N +2144;N +2145;N +2146;N +2147;N +2148;N +2149;N +214B;N +2190..21B3;R +21B6;R +21B7;R +21BA..21FF;R +2200;U +2201;U +2202;N +2203;U +2204;U +2205;N +2206;U +2207;U +2208;R +2209;R +220A;R +220B;R +220C;R +220D;R +220E;N +220F;L +2210;L +2211;L +2212;V +2213;V +2214;B +2215;B +2216;B +2217;B +2218;B +2219;B +221A;L +221B;L +221C;L +221D;R +221E;N +221F;N +2220;N +2221;N +2222;N +2223;R +2224;R +2225;R +2226;R +2227;B +2228;B +2229;B +222A;B +222B;L +222C;L +222D;L +222E;L +222F;L +2230;L +2231;L +2232;L +2233;L +2234;R +2235;R +2236;R +2237;R +2238;B +2239;R +223A;R +223B;R +223C;R +223D;R +223E;B +223F;N +2240;B +2241;R +2242;R +2243;R +2244;R +2245;R +2246;R +2247;R +2248;R +2249;R +224A;R +224B;R +224C;R +224D;R +224E;R +224F;R +2250;R +2251;R +2252;R +2253;R +2254;R +2255;R +2256;R +2257;R +2258;R +2259;R +225A;R +225B;R +225C;R +225D;R +225E;R +225F;R +2260;R +2261;R +2262;R +2263;R +2264;R +2265;R +2266;R +2267;R +2268;R +2269;R +226A;R +226B;R +226C;R +226D;R +226E;R +226F;R +2270;R +2271;R +2272;R +2273;R +2274;R +2275;R +2276;R +2277;R +2278;R +2279;R +227A;R +227B;R +227C;R +227D;R +227E;R +227F;R +2280;R +2281;R +2282;R +2283;R +2284;R +2285;R +2286;R +2287;R +2288;R +2289;R +228A;R +228B;R +228C;B +228D;B +228E;B +228F;R +2290;R +2291;R +2292;R +2293;B +2294;B +2295;B +2296;B +2297;B +2298;B +2299;B +229A;B +229B;B +229C;B +229D;B +229E;B +229F;B +22A0;B +22A1;B +22A2;R +22A3;R +22A4;N +22A5;R +22A6;R +22A7;R +22A8;R +22A9;R +22AA;R +22AB;R +22AC;R +22AD;R +22AE;R +22AF;R +22B0;R +22B1;R +22B2;R +22B3;R +22B4;R +22B5;R +22B6;R +22B7;R +22B8;R +22B9;B +22BA;B +22BB;B +22BC;B +22BD;B +22BE;N +22BF;N +22C0;L +22C1;L +22C2;L +22C3;L +22C4;B +22C5;B +22C6;B +22C7;B +22C8;R +22C9;B +22CA;B +22CB;B +22CC;B +22CD;R +22CE;B +22CF;B +22D0;R +22D1;R +22D2;B +22D3;B +22D4;R +22D5;R +22D6;R +22D7;R +22D8;R +22D9;R +22DA;R +22DB;R +22DC;R +22DD;R +22DE;R +22DF;R +22E0;R +22E1;R +22E2;R +22E3;R +22E4;R +22E5;R +22E6;R +22E7;R +22E8;R +22E9;R +22EA;R +22EB;R +22EC;R +22ED;R +22EE;R +22EF;R +22F0;R +22F1;R +22F2;R +22F3;R +22F4;R +22F5;R +22F6;R +22F7;R +22F8;R +22F9;R +22FA;R +22FB;R +22FC;R +22FD;R +22FE;R +22FF;R +2300;N +2302;N +2305;B +2306;B +2308;O +2309;C +230A;O +230B;C +2310;N +2311;N +2319;N +231C;O +231D;C +231E;O +231F;C +2320..2321;G +2322;R +2323;R +#2329;O +#232A;C +2336;N +233D;B +233F;R +237C;R +2394;N +239B..23AF;G +23B0;R +23B1;R +23B2..23B3;G +23B4;N +23B5;N +23B6;N +23B7;G +23D0;G +23DC;N +23DD;N +23DE;N +23DF;N +23E0;N +23E1;N +23E2;N +23E3;N +23E4;N +23E5;N +23E6;N +23E7;N +24C8;N +25A0;N +25A1;N +25AA;N +25AB;N +25AD;N +25AE;N +25AF;N +25B0;N +25B1;N +25B2;B +25B3;B +25B4;B +25B5;B +25B6;B +25B7;B +25B8;B +25B9;B +25BC;B +25BD;B +25BE;B +25BF;B +25C0;B +25C1;B +25C2;B +25C3;B +25C4;B +25C5;B +25C6;N +25C7;N +25C8;N +25C9;N +25CA;B +25CB;B +25CE;N +25CF;N +25D0..25D3;N +25D6;N +25D7;N +25E2;N +25E3;N +25E4;N +25E5;N +25E6;B +25E7..25EA;N +25EB;B +25EC;B +25EF;N +25F8;B +25F9;B +25FA;B +25FB;B +25FC;B +25FD;B +25FE;B +25FF;B +2605;B +2606;B +2609;N +260C;N +263D;N +263E;N +263F;N +2640;N +2641;N +2642;N +2643;N +2644;N +2646;N +2647;N +2648;N +2649;N +2660;N +2661;N +2662;N +2663;N +2664;N +2665;N +2666;N +2667;N +2669;N +266D;N +266E;N +266F;N +2680;N +2681;N +2682;N +2683;N +2684;N +2685;N +2686;N +2687;N +2688;N +2689;N +26AA;N +26AB;N +26AC;N +26B2;N +2713;N +2717;N +2720;N +272A;N +2736;N +2772;O +2773;C +27C0;N +27C1;N +27C2;R +27C3;R +27C4;R +27C5;R +27C6;R +27C7;R +27C8;R +27C9;R +27CA;R +27CB;R +27CC;L +27CD;R +27CE;B +27CF;B +27D0;N +27D1;B +27D2;R +27D3;R +27D4;R +27D5;L +27D6;L +27D7;L +27D8;L +27D9;L +27DA;R +27DB;R +27DC;R +27DD;R +27DE;R +27DF;R +27E0;B +27E1;B +27E2;B +27E3;B +27E4;B +27E5;B +27E6;O +27E7;C +27E8;O +27E9;C +27EA;O +27EB;C +27EC;O +27ED;C +27EE;O +27EF;C +27F0;R +27F1;R +27F2;R +27F3;R +27F4;R +27F5;R +27F6;R +27F7;R +27F8;R +27F9;R +27FA;R +27FB;R +27FC;R +27FD;R +27FE;R +27FF;R +2900;R +2901;R +2902;R +2903;R +2904;R +2905;R +2906;R +2907;R +2908;R +2909;R +290A;R +290B;R +290C;R +290D;R +290E;R +290F;R +2910;R +2911;R +2912;R +2913;R +2914;R +2915;R +2916;R +2917;R +2918;R +2919;R +291A;R +291B;R +291C;R +291D;R +291E;R +291F;R +2920;R +2921;R +2922;R +2923;R +2924;R +2925;R +2926;R +2927;R +2928;R +2929;R +292A;R +292B;R +292C;R +292D;R +292E;R +292F;R +2930;R +2931;R +2932;R +2933;R +2934;R +2935;R +2936;R +2937;R +2938;R +2939;R +293A;R +293B;R +293C;R +293D;R +293E;R +293F;R +2940;R +2941;R +2942;R +2943;R +2944;R +2945;R +2946;R +2947;R +2948;R +2949;R +294A;R +294B;R +294C;R +294D;R +294E;R +294F;R +2950;R +2951;R +2952;R +2953;R +2954;R +2955;R +2956;R +2957;R +2958;R +2959;R +295A;R +295B;R +295C;R +295D;R +295E;R +295F;R +2960;R +2961;R +2962;R +2963;R +2964;R +2965;R +2966;R +2967;R +2968;R +2969;R +296A;R +296B;R +296C;R +296D;R +296E;R +296F;R +2970;R +2971;R +2972;R +2973;R +2974;R +2975;R +2976;R +2977;R +2978;R +2979;R +297A;R +297B;R +297C;R +297D;R +297E;R +297F;R +2980;F +2981;N +2982;F +2983;O +2984;C +2985;O +2986;C +2987;O +2988;C +2989;O +298A;C +298B;O +298C;C +298D;O +298E;C +298F;O +2990;C +2991;O +2992;C +2993;O +2994;C +2995;O +2996;C +2997;O +2998;C +2999;F +299A;F +299B;N +299C;N +299D;N +299E;N +299F;N +29A0;N +29A1;N +29A2;N +29A3;N +29A4;N +29A5;N +29A6;N +29A7;N +29A8;N +29A9;N +29AA;N +29AB;N +29AC;N +29AD;N +29AE;N +29AF;N +29B0;N +29B1;N +29B2;N +29B3;N +29B4;N +29B5;N +29B6;B +29B7;B +29B8;B +29B9;B +29BA;N +29BB;N +29BC;N +29BD;N +29BE;N +29BF;N +29C0;B +29C1;B +29C2;N +29C3;N +29C4;B +29C5;B +29C6;B +29C7;B +29C8;B +29C9;N +29CA;N +29CB;N +29CC;N +29CD;N +29CE;R +29CF;R +29D0;R +29D1;R +29D2;R +29D3;R +29D4;R +29D5;R +29D6;B +29D7;B +29D8;O +29D9;C +29DA;O +29DB;C +29DC;N +29DD;N +29DE;N +29DF;R +29E0;N +29E1;R +29E2;B +29E3;R +29E4;R +29E5;R +29E6;R +29E7;N +29E8;N +29E9;N +29EA;N +29EB;B +29EC;N +29ED;N +29EE;N +29EF;N +29F0;N +29F1;N +29F2;N +29F3;N +29F4;R +29F5;B +29F6;B +29F7;B +29F8;L +29F9;L +29FA;B +29FB;B +29FC;O +29FD;C +29FE;B +29FF;B +2A00;L +2A01;L +2A02;L +2A03;L +2A04;L +2A05;L +2A06;L +2A07;L +2A08;L +2A09;L +2A0A;L +2A0B;L +2A0C;L +2A0D;L +2A0E;L +2A0F;L +2A10;L +2A11;L +2A12;L +2A13;L +2A14;L +2A15;L +2A16;L +2A17;L +2A18;L +2A19;L +2A1A;L +2A1B;L +2A1C;L +2A1D;L +2A1E;L +2A1F;L +2A20;L +2A21;L +2A22;B +2A23;B +2A24;B +2A25;B +2A26;B +2A27;B +2A28;B +2A29;B +2A2A;B +2A2B;B +2A2C;B +2A2D;B +2A2E;B +2A2F;B +2A30;B +2A31;B +2A32;B +2A33;B +2A34;B +2A35;B +2A36;B +2A37;B +2A38;B +2A39;B +2A3A;B +2A3B;B +2A3C;B +2A3D;B +2A3E;B +2A3F;B +2A40;B +2A41;B +2A42;B +2A43;B +2A44;B +2A45;B +2A46;B +2A47;B +2A48;B +2A49;B +2A4A;B +2A4B;B +2A4C;B +2A4D;B +2A4E;B +2A4F;B +2A50;B +2A51;B +2A52;B +2A53;B +2A54;B +2A55;B +2A56;B +2A57;B +2A58;B +2A59;R +2A5A;B +2A5B;B +2A5C;B +2A5D;B +2A5E;B +2A5F;B +2A60;B +2A61;B +2A62;B +2A63;B +2A64;B +2A65;B +2A66;R +2A67;R +2A68;R +2A69;R +2A6A;R +2A6B;R +2A6C;R +2A6D;R +2A6E;R +2A6F;R +2A70;R +2A71;B +2A72;B +2A73;R +2A74;R +2A75;R +2A76;R +2A77;R +2A78;R +2A79;R +2A7A;R +2A7B;R +2A7C;R +2A7D;R +2A7E;R +2A7F;R +2A80;R +2A81;R +2A82;R +2A83;R +2A84;R +2A85;R +2A86;R +2A87;R +2A88;R +2A89;R +2A8A;R +2A8B;R +2A8C;R +2A8D;R +2A8E;R +2A8F;R +2A90;R +2A91;R +2A92;R +2A93;R +2A94;R +2A95;R +2A96;R +2A97;R +2A98;R +2A99;R +2A9A;R +2A9B;R +2A9C;R +2A9D;R +2A9E;R +2A9F;R +2AA0;R +2AA1;R +2AA2;R +2AA3;R +2AA4;R +2AA5;R +2AA6;R +2AA7;R +2AA8;R +2AA9;R +2AAA;R +2AAB;R +2AAC;R +2AAD;R +2AAE;R +2AAF;R +2AB0;R +2AB1;R +2AB2;R +2AB3;R +2AB4;R +2AB5;R +2AB6;R +2AB7;R +2AB8;R +2AB9;R +2ABA;R +2ABB;R +2ABC;R +2ABD;R +2ABE;R +2ABF;R +2AC0;R +2AC1;R +2AC2;R +2AC3;R +2AC4;R +2AC5;R +2AC6;R +2AC7;R +2AC8;R +2AC9;R +2ACA;R +2ACB;R +2ACC;R +2ACD;R +2ACE;R +2ACF;R +2AD0;R +2AD1;R +2AD2;R +2AD3;R +2AD4;R +2AD5;R +2AD6;R +2AD7;R +2AD8;R +2AD9;R +2ADA;R +2ADB;R +2ADC;R +2ADD;R +2ADE;R +2ADF;R +2AE0;R +2AE1;N +2AE2;R +2AE3;R +2AE4;R +2AE5;R +2AE6;R +2AE7;R +2AE8;R +2AE9;R +2AEA;R +2AEB;R +2AEC;R +2AED;R +2AEE;R +2AEF;R +2AF0;R +2AF1;N +2AF2;R +2AF3;R +2AF4;B +2AF5;B +2AF6;B +2AF7;R +2AF8;R +2AF9;R +2AFA;R +2AFB;B +2AFC;L +2AFD;B +2AFE;B +2AFF;L +2B00..2B11;R +2B12;N +2B13;N +2B14;N +2B15;N +2B16;N +2B17;N +2B18;N +2B19;N +2B1B..2B1F;N +2B20;N +2B21;N +2B22;N +2B23;N +2B24..2B2F;N +2B30..2B44;R +2B45;R +2B46;R +2B47..2B4C;R +2B50..2B54;N +2B95;R +2BC2..2BC8;N +2BCA;N +2BCB;N +3008;X +3009;X +#3014;O +#3015;C +#3018;O +#3019;C +301A;X +301B;X +306E;N +FB29;X +FE00;D +#deprecFE35; +#deprecFE36; +#deprecFE37; +#deprecFE38; +FE61..FE66;X +FE68;X +FF0B;X +FF1C..FF1E;X +FF3C;X +FF3E;X +FF5C;X +FF5E;X +FFE2;X +FFE9..FFEC;X +1D400..1D454;A +#1D455=210E;N +1D456..1D49B;A +1D49C;A +#1D49D=212C;A +1D49E;A +1D49F;A +#1D4A0=2130;A +#1D4A1=2131;A +1D4A2;A +#1D4A3=210B;A +#1D4A4=2110;A +1D4A5;A +1D4A6;A +#1D4A7=2112;A +#1D4A8=2133;A +1D4A9;A +1D4AA;A +1D4AB;A +1D4AC;A +#1D4AD=211B;A +1D4AE;A +1D4AF;A +1D4B0;A +1D4B1;A +1D4B2;A +1D4B3;A +1D4B4;A +1D4B5;A +1D4B6;A +1D4B7;A +1D4B8;A +1D4B9;A +#1D4BA=212F;A +1D4BB;A +#1D4BC=210A;A +1D4BD;A +1D4BE;A +1D4BF;A +1D4C0;A +1D4C1;A +1D4C2;A +1D4C3;A +#1D4C4=2134;A +1D4C5;A +1D4C6;A +1D4C7;A +1D4C8;A +1D4C9;A +1D4CA;A +1D4CB;A +1D4CC;A +1D4CD;A +1D4CE;A +1D4CF;A +1D4D0..1D503;A +1D504;A +1D505;A +#1D506=212D;A +1D507;A +1D508;A +1D509;A +1D50A;A +#1D50B=210C;A +#1D50C=2111;A +1D50D;A +1D50E;A +1D50F;A +1D510;A +1D511;A +1D512;A +1D513;A +1D514;A +#1D515=211C;A +1D516;A +1D517;A +1D518;A +1D519;A +1D51A;A +1D51B;A +1D51C;A +#1D51D=2128;A +1D51E;A +1D51F;A +1D520;A +1D521;A +1D522;A +1D523;A +1D524;A +1D525;A +1D526;A +1D527;A +1D528;A +1D529;A +1D52A;A +1D52B;A +1D52C;A +1D52D;A +1D52E;A +1D52F;A +1D530;A +1D531;A +1D532;A +1D533;A +1D534;A +1D535;A +1D536;A +1D537;A +1D538;A +1D539;A +#1D53A=2102;A +1D53B;A +1D53C;A +1D53D;A +1D53E;A +#1D53F=210D;A +1D540;A +1D541;A +1D542;A +1D543;A +1D544;A +#1D545=2115;A +1D546;A +#1D547=2119;A +#1D548=211A;A +#1D549=211D;A +1D54A;A +1D54B;A +1D54C;A +1D54D;A +1D54E;A +1D54F;A +1D550;A +#1D551=2124;A +1D552;A +1D553;A +1D554;A +1D555;A +1D556;A +1D557;A +1D558;A +1D559;A +1D55A;A +1D55B;A +1D55C;A +1D55D;A +1D55E;A +1D55F;A +1D560;A +1D561;A +1D562;A +1D563;A +1D564;A +1D565;A +1D566;A +1D567;A +1D568;A +1D569;A +1D56A;A +1D56B;A +1D56C..1D6A3;A +1D6A4;A +1D6A5;A +1D6A8..1D7C9;A +1D7CA;A +1D7CB;A +1D7CE..1D7FF;N +1EE00..1EE03;A +1EE05..1EE1F;A +1EE21;A +1EE22;A +1EE24;A +1EE27;A +1EE29..1EE32;A +1EE34..1EE37;A +1EE39;A +1EE3B;A +1EE42;A +1EE47;A +1EE49;A +1EE4B;A +1EE4D..1EE4F;A +1EE51;A +1EE52;A +1EE54;A +1EE57;A +1EE59;A +1EE5B;A +1EE5D;A +1EE5F;A +1EE61;A +1EE62;A +1EE64;A +1EE67..1EE6A;A +1EE6C..1EE72;A +1EE74..1EE77;A +1EE79..1EE7C;A +1EE7E;A +1EE80..1EE89;A +1EE8B..1EE9B;A +1EEA1..1EEA3;A +1EEA5..1EEA9;A +1EEAB..1EEBB;A +1EEF0;L +1EEF1;L +1F784;N +1F78C;N +1F78D;N +1F797..1F799;N +1F79D..1F79F;N + +# EOF diff --git a/macros/luatex/optex/demo.tex b/macros/luatex/optex/op-demo.tex index 458f44257a..f06bd2639b 100644 --- a/macros/luatex/optex/demo.tex +++ b/macros/luatex/optex/op-demo.tex @@ -5,7 +5,8 @@ \parindent=10pt % typesetting parameters \hyperlinks \Blue\Blue % active hyperlinks \activettchar` % in-text verbatim by `...` -\def\intthook{\localcolor\Red} % in-text verbatim Red +\intthook={\localcolor\Red} % in-text verbatim Red +\enquotes % use \"text" for English quotation \tit Demonstration @@ -59,12 +60,12 @@ Internal links are activated too. \sec Tables The `\table` sequence can be used -instead of ``low level'' `\halign`. +instead of \"low level" `\halign`. The following table is framed by `\frame` sequence in order to get a double frame. \label[my-tab] -\medskip +\bigskip \caption/t Testing table. \smallskip\nobreak \centerline{% @@ -96,7 +97,7 @@ This is verbatim. \endtt or it can be included by `\verbinput` from external file. -\verbinput (95-97) demo.tex +\verbinput (98-100) op-demo.tex \sec Math @@ -108,10 +109,11 @@ $$ \frak M & \bbchar R }. $$ Hundreds of AMS symbols are available: -$\sphericalangle, \Finv, \boxplus, \Cup, \Cap, \ldots$ +$\sphericalangle, \boxplus, \Cup, \Cap, \ldots$ \sec Others +The `\fontfam` command selects a desired family of fonts. The `\typosize` or `\typoscale` sequences set the size and baselineskip of used fonts (including math fonts). The `\fnote` generates a footnote\fnote{Like this} and diff --git a/macros/luatex/optex/op-macros.opm b/macros/luatex/optex/op-macros.opm new file mode 100644 index 0000000000..659abfe875 --- /dev/null +++ b/macros/luatex/optex/op-macros.opm @@ -0,0 +1,94 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \eoldef {OpTeX useful macos <2020-02-14>} + +\_newcatcodetable \_optexcatcodes +\_savecatcodetable\_optexcatcodes + +\_def\_normalcatcodes {\_catcodetable\_optexcatcodes \_savecatcodetable0 \_catcodetable0 } + +\_newcatcodetable \_plaintexcatcodes +\_public + \optexcatcodes \plaintexcatcodes ; + +{\_catcode`_=8 \savecatcodetable\plaintexcatcodes} + +% \catcodetable stack +% use \setctable<num> ... \setctable<num> ... \restorectable ... \restorectable + +\_newcount\_currctable \_currctable=0 +\_catcodetable0 + +\_def\_setctable#1{\_edef\_ctablelist{{\_the\_currctable}\_ctablelist}% + \_catcodetable#1\_relax \_currctable=#1\_relax +} +\_def\_restorectable{\_ea\_restorectableA\_ctablelist\_relax} +\_def\_restorectableA#1#2\_relax{% + \_ifx^#2^\_opwarning + {You can't use \_noindent\restorectable without previous \_string\setctable}% + \_else \_def\_ctablelist{#2}\_catcodetable#1\_relax \_currctable=#1\_relax \_fi +} +\_def\_ctablelist{.} + +\_def\_opinput #1{\_setctable\_optexcatcodes \_input "#1" \_restorectable} + + +% \optdef \foo [opt-default] #1#2{...\the\opt...}, usage \foo {}{} or \foo [opt] {}{} + +\_def\_optdef#1[#2]{% + \_def#1{\_opt={#2}\_isnextchar[{\_cs{_oA:\_string#1}}{\_cs{_oB:\_string#1}}}% + \_sdef{_oA:\_string#1}[##1]{\_opt={##1}\_cs{_oB:\string#1\_nospaceafter}}% + \_sdef{_oB:\_string#1\_nospaceafter}% +} +\_def\_nospaceafter#1{\_ea#1\_romannumeral-`\.} + +\_newtoks\_opt + + +% \eoldef \foo #1{thex to end of line is: #1} + +\_def\_eoldef #1{\_def #1{\_begingroup \_catcode`\^^M=12 \_eoldefA #1}% + \_ea\_def\_csname _\_string #1:M\_endcsname} +\_catcode`\^^M=12 % +\_def\_eoldefA #1#2^^M{\_endgroup\_csname _\_string #1:M\_endcsname{#2}}% +\_normalcatcodes % + +\_public \opt \optdef \eoldef ; + +\_catcode`!=3 \_catcode`?=3 +\_def\_replstring #1#2#3{% \replstring #1{stringA}{stringB} + \_long\_def\_replacestringsA##1#2{\_def #1{##1}\_replacestringsB}% + \_long\_def\_replacestringsB##1#2{\_ifx!##1\_relax \_else \_addto #1{#3##1}% + \_ea\_replacestringsB\_fi}% + \_ea\_replacestringsA #1?#2!#2% + \_long\_def\_replacestringsA##1?{\_def #1{##1}}\_ea\_replacestringsA #1} +\_normalcatcodes + +\_def\_remfirstunderscore#1{\_ea\_remfirstunderscoreA#1\_relax#1} +\_def\_remfirstunderscoreA#1#2\_relax#3{\_if _#1\_def#3{#2}\_fi} + +\_ea\_def \_ea\_meaningsepare \_ea#\_ea1\_string m#2:#3->#4^{{#1}{#3}{#4}} + +% \keepinputnames ... \input foo ... \lastinputname -> foo + +\_def\_keepinputnames{\_directlua{% + callback.register("find_read_file", + function (id, name) + input_file_name = name + return name + end) +}} +\_def\_lastinputname{\_directlua{tex.print(input_file_name)}} + +\def\catcode{\_catcode\_string} % more robust in cases \catcode` or \catcode" + +\_def\_enquotes{\_chardef\"="201C } % use \"text" for English quotes + +\public + \setctable \restorectable + \normalcatodes \opt \optdef \eoldef \replstring + \keepinputnames \lastinputname \enquotes ; + + +\_endcode % ------------------------------------- + diff --git a/macros/luatex/optex/opmac-rest.opm b/macros/luatex/optex/opmac-rest.opm index 1e8a3415c5..4f9dbd1aaf 100644 --- a/macros/luatex/optex/opmac-rest.opm +++ b/macros/luatex/optex/opmac-rest.opm @@ -17,8 +17,6 @@ \newcount\tmpnum % auxiliary count \newdimen\tmpdim % auxiliary dimen -\def\opwarning#1{\immediate\write16{l.\the\inputlineno\space OPmac WARNING: #1.}} - \long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} \def\protectlist{} @@ -54,10 +52,6 @@ } \def\isnextcharA{\the\toks\ifx\tmp\next0\else1\fi\space} -\def\eoldef#1{\def#1{\begingroup \catcode`\^^M=12 \eoldefA#1}% - \expandafter\def\csname\string#1:M\endcsname} -{\catcode`\^^M=12 \gdef\eoldefA#1#2^^M{\endgroup\csname\string#1:M\endcsname{#2}}} - \def\maybebreak{\afterassignment\maybebreakA\tmpdim=} \def\maybebreakA{\ifvmode \vskip0pt plus\tmpdim \penalty-130 \vskip0pt plus-\tmpdim \else \hskip0pt plus\tmpdim \penalty-130 \hskip0pt plus-\tmpdim \fi \relax @@ -87,14 +81,6 @@ \newdimen\iindent \iindent=\parindent % indentation of items, TOC, captions, list of bib. references -\newdimen\ttindent \ttindent=\parindent - % indentation in \begtt...\endtt and \verbinput - -\def\ttskip{\medskip} % space above and below \begtt, \verbinput -\mathchardef\ttpenalty=100 % penalty between lines in \begtt, \verbinput -\def\tthook{} % hook in \begtt, \verbinput -\def\intthook{} % hook in in-text verbatim -\def\ptthook{} % hook in \begtt, \verbinput for post-processing \def\iiskip{\medskip} % space above and below \begitems...\enditems \def\itemhook{} % hook in \startitem @@ -134,12 +120,14 @@ %%%%%%%%%%%%%% Multilingual support, sec. 3.5 in opmac-d.pdf -\def\mtext#1{\csname mt:#1:\csname _lan:\the\language\endcsname\endcsname} - -\sdef{mt:chap:en}{Chapter} \sdef{mt:chap:cs}{Kapitola} \sdef{mt:chap:sk}{Kapitola} -\sdef{mt:t:en}{Table} \sdef{mt:t:cs}{Tabulka} \sdef{mt:t:sk}{Tabu\v lka} -\sdef{mt:f:en}{Figure} \sdef{mt:f:cs}{Obr\'azek} \sdef{mt:f:sk}{Obr\'azok} -\sdef{mt:subj:en}{Subject} \sdef{mt:subj:cs}{V\v{e}c} \sdef{mt:subj:sk}{Vec} +\def\mtext#1{\_ifcsname _mt:#1:\csname _lan:\_the\_language\_endcsname\_endcsname + \_csname _mt:#1:\_csname _lan:\_the\_language\_endcsname\_endcsname + \_else \_csname _mt:#1:en\_endcsname \_fi +} +\sdef{_mt:chap:en}{Chapter} \sdef{_mt:chap:cs}{Kapitola} \sdef{_mt:chap:sk}{Kapitola} +\sdef{_mt:t:en}{Table} \sdef{_mt:t:cs}{Tabulka} \sdef{_mt:t:sk}{Tabuľka} +\sdef{_mt:f:en}{Figure} \sdef{_mt:f:cs}{Obrázek} \sdef{_mt:f:sk}{Obrázok} +\sdef{_mt:subj:en}{Subject} \sdef{_mt:subj:cs}{Věc} \sdef{_mt:subj:sk}{Vec} %%%%%%%%%%%%%% REF file, sec 3.6 in opmac-d.pdf @@ -217,7 +205,7 @@ \titfont \noindent #1\par}% \nobreak\bigskip } -\def\titfont{\scalemain\boldify\typoscale[\magstep4/\magstep4]} +\def\titfont{\scalemain\boldify\typoscale[\magstep4/\magstep5]} \def\chapfont{\scalemain\boldify\typoscale[\magstep3/\magstep3]} \def\secfont{\scalemain\boldify\typoscale[\magstep2/\magstep2]} \def\seccfont{\scalemain\boldify\typoscale[\magstep1/\magstep1]} @@ -279,8 +267,8 @@ \def\othe#1.{\ifnum#1>0 \the#1.\fi} \def\thechapnum{} \def\thesecnum{} \def\theseccnum{} -\def\afternoindent{\global\everypar={\wipeepar\setbox7=\lastbox}} -\def\wipeepar{\global\everypar={}} +\def\afternoindent{\global\everypar={\_wipeepar\setbox7=\lastbox}} +\def\_wipeepar{\global\everypar={}} \let\firstnoindent=\afternoindent \def\nbpar{{\interlinepenalty=10000\endgraf}} \def\nl{\hfil\break} @@ -644,7 +632,7 @@ \def\corrsize #1{%% #1 := #1 + \splittopskip - \topskip \advance #1 by \splittopskip \advance #1 by-\topskip } -\def\begmulti #1 {\par\bgroup\wipeepar\multiskip\penalty0 \def\Ncols{#1} +\def\begmulti #1 {\par\bgroup\_wipeepar\multiskip\penalty0 \def\Ncols{#1} \setbox6=\vbox\bgroup\penalty0 %% \hsize := Sirka sloupce = (\hsize+\colsep) / n - \colsep \advance\hsize by\colsep @@ -856,112 +844,6 @@ %%%%%%%%%%%%%% Verbatim, \begtt, \endtt -- sec. 3.18 in opmac-d.pdf -\newcount\ttline \ttline=-1 -\newcount\viline -\newread\vifile - -\def\setverb{\frenchspacing\def\do##1{\catcode`##1=12}\dospecials \catcode`\*=12 } -\def\begtt{\par \vskip\parskip \ttskip \bgroup \wipeepar - \setverb \adef{ }{\ }% - \ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi - \parindent=\ttindent \parskip=0pt - \tthook\relax - \ifnum\ttline<0 \else - \_tenrm \thefontscale[700]\ea\let\ea\sevenrm\the\font - \everypar\expandafter{\the\everypar \global\advance\ttline by1 \printttline}\fi - \def\par##1{\endgraf\ifx##1\egroup\else\penalty\ttpenalty\leavevmode\fi ##1}% - \obeylines \startverb} -{\catcode`\|=0 \catcode`\\=12 -|gdef|startverb#1\endtt{|tt|ptthook#1|egroup|par|ttskip|testparA}} -\def\testparA{\expandafter\testparB\romannumeral-`\.} -\def\testparB{\futurelet\tmpa\testparC} -\def\testparC{\ifx\tmpa\par\else\afternoindent\fi} - -\def\printttline{\llap{\sevenrm\the\ttline\kern.9em}} - -\def\activettchar#1{% - \ifx\savedttchar\undefined\else \catcode\savedttchar=\savedttcharc \fi - \chardef\savedttchar=`#1% - \chardef\savedttcharc=\catcode`#1% - \bgroup\lccode`\~=`#1% - \lowercase {\egroup\def~}{\leavevmode\hbox\bgroup\setverb\adef{ }{\ }% - \intthook\tt\readverb}% - \bgroup\lccode`\~=`#1\lowercase{\egroup\def\readverb ##1~}{##1\egroup}% - \catcode`#1=13 -} - -\def\verbinput (#1) #2 {\par \def\tmpa{#2}% - \ifx\vifilename\tmpa \else - \openin\vifile=#2 - \global\viline=0 \global\let\vifilename=\tmpa - \ifeof\vifile - \opwarning{\noexpand\verbinput - file "#2" is unable to reading} - \expandafter\expandafter\expandafter\skiptorelax - \fi - \fi - \viscanparameter #1+\relax -} -\def\skiptorelax#1\relax{} - -\def \viscanparameter #1+#2\relax{% - \if$#2$\viscanminus(#1)\else \viscanplus(#1+#2)\fi -} -\def\viscanplus(#1+#2+){% - \if$#1$\tmpnum=\viline - \else \ifnum#1<0 \tmpnum=\viline \advance\tmpnum by-#1 - \else \tmpnum=#1 - \advance\tmpnum by-1 - \ifnum\tmpnum<0 \tmpnum=0 \fi % (0+13) = (1+13) - \fi \fi - \edef\vinolines{\the\tmpnum}% - \if$#2$\def\vidolines{0}\else\edef\vidolines{#2}\fi - \doverbinput -} -\def\viscanminus(#1-#2){% - \if$#1$\tmpnum=0 - \else \tmpnum=#1 \advance\tmpnum by-1 \fi - \ifnum\tmpnum<0 \tmpnum=0 \fi % (0-13) = (1-13) - \edef\vinolines{\the\tmpnum}% - \if$#2$\tmpnum=0 - \else \tmpnum=#2 \advance\tmpnum by-\vinolines \fi - \edef\vidolines{\the\tmpnum}% - \doverbinput -} -\def\doverbinput{% - \tmpnum=\vinolines - \advance\tmpnum by-\viline - \ifnum\tmpnum<0 - \openin\vifile=\vifilename\space - \global\viline=0 - \else - \edef\vinolines{\the\tmpnum}% - \fi - \vskip\parskip \ttskip \bgroup \wipeepar - \setverb \adef{ }{\ }% - \ifx\savedttchar\undefined \else \catcode\savedttchar=12 \fi - \parindent=\ttindent \parskip=0pt - \tthook\relax - \ifnum\ttline<-1 \else - \_tenrm \thefontscale[700]\ea\let\ea\sevenrm\the\font - \everypar\expandafter{\the\everypar \glob\advance\ttline by1 \printttline}\fi - \def\par##1{\endgraf\ifx##1\egroup\else\penalty\ttpenalty\leavevmode\fi ##1}% - \obeylines \tmpnum=0 \lccode`\~=`\^^M \lowercase{\def\tmpb{~}}% - \loop \ifeof\vifile \tmpnum=\vinolines\space \fi - \ifnum\tmpnum<\vinolines\space - \vireadline \advance\tmpnum by1 \repeat %% skip line - \ifnum\ttline=-1 \ttline=\viline \let\glob=\relax \else\let\glob=\global \fi - \tmpnum=0 \ifnum\vidolines=0 \tmpnum=-1 \fi - \ifeof\vifile \tmpnum=\vidolines\space \fi - \loop \ifnum\tmpnum<\vidolines\space - \vireadline - \ifeof\vifile \tmpnum=\vidolines\space \else \viprintline \fi %% print line - \ifnum\vidolines=0 \else\advance\tmpnum by1 \fi - \repeat - \tt\expandafter\ptthook\tmpb\egroup\par\ttskip\testparA -} -\def\vireadline{\read\vifile to \tmp \global\advance\viline by1 } -\def\viprintline{\expandafter\addto\expandafter\tmpb\expandafter{\tmp}} - %%%%%%%%%%%%%% \table -- sec. 3.19 in opmac-d.pdf \newtoks\tabdata @@ -1365,7 +1247,9 @@ } \def\Xcite#1{\addto\citelistB{\citeI[#1]}} -\def\usebib{\par \input opmac-bib \usebib} +\newcatcodetable\savedcatcodes + +\def\usebib{\par \_opinput {usebib.opm} \usebib} %%%%%%%%%%%%%% output -- sec. 3.24 in opmac-d.pdf @@ -1403,7 +1287,7 @@ \eoldef\author##1{\removelastskip\bigskip {\leftskip=0pt plus1fill \rightskip=\leftskip \it \noindent ##1\par}\nobreak\bigskip } - \parindent=1.2em \iindent=\parindent \ttindent=\parindent + \parindent=1.2em \iindent=\parindent \_ttindent=\parindent \footline={\global\footline={\hss\_tenrm\thefontsize[10]\folio\hss}} \runningfnotes } diff --git a/macros/luatex/optex/optex.ini b/macros/luatex/optex/optex.ini index 2ec0665c85..280dd347ca 100644 --- a/macros/luatex/optex/optex.ini +++ b/macros/luatex/optex/optex.ini @@ -3,17 +3,24 @@ %% OpTeX ini file %% Petr Olsak <started from: Jan. 2020> -% Basic catcodes: - -\catcode `\_=11 -\catcode `\{=1 -\catcode `\}=2 -\catcode `\#=6 -\catcode `\^=7 +% Catcodes: + +\catcode `\{=1 % left brace is begin-group character +\catcode `\}=2 % right brace is end-group character +\catcode `\$=3 % dollar sign is math shift +\catcode `\&=4 % ampersand is alignment tab +\catcode `\#=6 % hash mark is macro parameter character +\catcode `\^=7 % +\catcode `\^^K=7 % circumflex and uparrow are for superscripts +\catcode `\^^A=8 % downarrow is for subscripts +\catcode `\^^I=10 % ascii tab is a blank space +\catcode `\_=11 % underline can be used in control sequences +\catcode `\~=13 % tilde is active +\catcode 127=12 % normal character % OpTeX version -\def\optexversion{Alpha 0.02 Feb 2020} +\def\optexversion{Alpha 0.03 Feb 2020} % Engine testing: @@ -40,23 +47,25 @@ \input prefixed.opm % prefixed primitives and code syntax \input luatex-ini.opm % luaTeX initialization -\input catcodes.opm % catcode setting \input basics-macros.opm % basic macros \input alloc.opm % allocators for registers \input if-macros.opm % special \if-macros, \is-macros and loops -\input logos.opm % standard logos \input parameters.opm % parameters setting -\input fonts-preload.opm % preloaded Computer Modern fonts +\input op-macros.opm % OpTeX useful macros +\input plain-macros.opm % plainTeX macros +\input fonts-preload.opm % preloaded Latin Modern fonts \input fonts-resize.opm % font resizing (low-level macros) \input fonts-select.opm % font selection system \input math-preload.opm % math fams CM + AMS preloaded \input math-macros.opm % basic macros for math plus mathchardefs -\input plain-macros.opm % plainTeX macros +\input math-unicode.opm % macros for loading UnicodeMath fonts \input fonts-opmac.opm % font managing macros from OPmac \input outlines.opm % PDF outlines \input pdfuni-string.opm % PDFunicode strings for outlines \input output.opm % output routine \input margins.opm % macros for margins setting +\input verbatim.opm % verbatim +\input logos.opm % standard logos \input uni-lcuc.opm % Setting lccodes and uccodes for Unicode characters \input hyphen-lan.opm % initialization of hyphenation patterns \input opmac-rest.opm % TODO: needs to be re-implement @@ -76,11 +85,13 @@ TODO: - re-implement macros from opmac-rest.opm - add unicode math support (from uni-math.tex from csplain) +- re-implement usebib, bib-style.opm - add modules support (for example opmac-bib) -- write more documentation +- write more and better documentation - ... DOC: +- optex-doc.tex optex-doc.pdf - about Font selection system: ....... files: fonts-select.opm, fonts-opmac.opm, fonts-resize.opm, f-heros.opm, f-lmfonts.opm fams-ini.opm diff --git a/macros/luatex/optex/pdfuni-string.opm b/macros/luatex/optex/pdfuni-string.opm index d9732472f2..dac1c5c3b8 100644 --- a/macros/luatex/optex/pdfuni-string.opm +++ b/macros/luatex/optex/pdfuni-string.opm @@ -1,20 +1,20 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \pdfunidef {PDFunicode strings for outlines <2019-05-21>} +\_codedecl \pdfunidef {PDFunicode strings for outlines <2020-02-14>} \_edef\_octalprint#1#2{\_noexpand\_directlua{% #1=character-code #2=character if ('#2'>='A' and '#2'<='Z') or ('#2'>='a' and '#2'<='z') then tex.print(string.format('000\_pcent s',"#2")) else - tex.print(string.format('\_pcent 03o\_nbb\_pcent03o',#1/256,#1\_pcent256)) + local num=#1\_pcent256 + tex.print(string.format('\_pcent 03o\_nbb\_pcent03o',(#1-num)/256,num)) end }} \_def\_pdfunidef#1#2{% \_begingroup \_catcode`\\=12 \_let\\=\_nbackslash - \_ea\_def\_ea#1\_ea{\_detokenize\_ea{#2}}% - \_ea\_replstring\_ea#1\_ea{\\}{\_pdfunidefA}% - \_edef#1{#1 ^}\_replstring#1{ ^}{}% \TeX /u -> \TeX/u + \_the\_pdfstringout % extra defnitions of logos etc. + \_edef#1{#2}% \_replstring#1{ }{{ }}% text text -> text{ }text \_edef\_out{\\376\\377}% \_ea\_pdfunidefB#1^% text -> \_out in octal @@ -22,7 +22,6 @@ \_endgroup \_ea\_def\_ea#1\_ea{\_out} } -\_def\_pdfunidefA #1 #2{\\#1\_ifx/#2/\_else\_space \_ea#2\_fi} \_def\_pdfunidefB#1{% \_ifx^#1\_else \_tmpnum=`#1 @@ -31,7 +30,9 @@ } \_def\_pdfunidefC #1{\_edef\_out{\_out \\\_ea\_octalprint\_ea{\_the\_tmpnum}{#1}}} -\public \pdfunidef ; +\_newtoks \_pdfstringout + +\public \pdfunidef \pdfstringout ; \_endcode % -------------------------------- diff --git a/macros/luatex/optex/plain-macros.opm b/macros/luatex/optex/plain-macros.opm index f2cf66f3cb..7402ff5cd5 100644 --- a/macros/luatex/optex/plain-macros.opm +++ b/macros/luatex/optex/plain-macros.opm @@ -1,11 +1,13 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \magstep {Macros from plain TeX <2019-05-21>} +\_codedecl \magstep {Macros from plain TeX <2019-02-14>} + +\_chardef\_active = 13 \_def\_dospecials {\do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\^^A\do\%\do\~} \_public - \dospecials ; + \dospecials \active ; \_def \_magstephalf{1095 } \_def \_magstep#1{\_ifcase#1 1000\_or 1200\_or 1440\_or 1728\_or 2074\_or 2488\_fi\_space} @@ -181,15 +183,15 @@ \oalign \ooalign \d \b \c \dots ; \def \_oldaccents {% - \_def\`##1{{\_accent\_grave ##1}}% - \_def\'##1{{\_accent\_acute ##1}}% + \_def\`##1{{\_accent\_tgrave ##1}}% + \_def\'##1{{\_accent\_tacute ##1}}% \_def\v##1{{\_accent\_caron ##1}}% - \_def\u##1{{\_accent\_breve ##1}}% + \_def\u##1{{\_accent\_tbreve ##1}}% \_def\=##1{{\_accent\_macron ##1}}% \_def\^##1{{\_accent\_circumflex ##1}}% \_def\.##1{{\_accent\_dotaccent ##1}}% \_def\H##1{{\_accent\_hungarumlaut ##1}}% - \_def\~##1{{\_accent\_tilde ##1}}% + \_def\~##1{{\_accent\_ttilde ##1}}% \_def\"##1{{\_accent\_dieresis ##1}}% \_def\r##1{{\_accent\_ring ##1}}% } @@ -197,29 +199,29 @@ \oldaccents ; % ec-lmr encoding (will be changed after \fontfam macro): -\_chardef\_grave=0 -\_chardef\_acute=1 +\_chardef\_tgrave=0 +\_chardef\_tacute=1 \_chardef\_circumflex=2 -\_chardef\_tilde=3 +\_chardef\_ttilde=3 \_chardef\_dieresis=4 \_chardef\_hungarumlaut=5 \_chardef\_ring=6 \_chardef\_caron=7 -\_chardef\_breve=8 +\_chardef\_tbreve=8 \_chardef\_macron=9 \_chardef\_dotaccent=10 \_chardef\_cedilla=11 \_def \_uniaccents {% accents with Unicode - \_chardef\_grave="0060 - \_chardef\_acute="00B4 + \_chardef\_tgrave="0060 + \_chardef\_tacute="00B4 \_chardef\_circumflex="005E - \_chardef\_tilde="02DC + \_chardef\_ttilde="02DC \_chardef\_dieresis="00A8 \_chardef\_hungarumlaut="02DD \_chardef\_ring="02DA \_chardef\_caron="02C7 - \_chardef\_breve="02D8 + \_chardef\_tbreve="02D8 \_chardef\_macron="00AF \_chardef\_dotaccent="02D9 \_chardef\_cedilla="00B8 diff --git a/macros/luatex/optex/prefixed.opm b/macros/luatex/optex/prefixed.opm index 8b73052337..ca84181f6e 100644 --- a/macros/luatex/optex/prefixed.opm +++ b/macros/luatex/optex/prefixed.opm @@ -1,26 +1,29 @@ %% This is part of OpTeX project, see http://petr.olsak.net/optex -\_codedecl \public {Prefixing and code syntax <2020-01-23>} +\_codedecl \public {Prefixing and code syntax <2020-02-14>} % all TeX82 primitives have alternative control sequence \_hbox \_string, ... \let\_directlua = \directlua \_directlua { - tex.enableprimitives('_', tex.extraprimitives('tex')) + % enable all primitives with _ prefix + tex.enableprimitives('_', tex.extraprimitives('tex')) + % enable all primitives without prefixing + tex.enableprimitives('', tex.extraprimitives()) + % enable all primitives with _ prefix + tex.enableprimitives('_', tex.extraprimitives()) } \_let\_ea =\_expandafter % usefull shortcut \_long\_def \_xargs #1#2{\_ifx #2;\_else \_ea#1\_ea#2\_ea\_xargs \_ea #1\_fi} -\_long\_def \_xstring #1{\_ea\_xstringA \_string#1^} -\_def \_xstringA #1#2^{#2} \_def \_public {\_xargs \_publicA} -\_def \_publicA #1{\_ea\_let \_ea#1\_csname _\_xstring #1\_endcsname} +\_def \_publicA #1{\_ea\_let \_ea#1\_csname _\_csstring #1\_endcsname} \_def \_private {\_xargs \_privateA} -\_def \_privateA #1{\_ea\_let \_csname _\_xstring #1\_endcsname =#1} +\_def \_privateA #1{\_ea\_let \_csname _\_csstring #1\_endcsname =#1} \_def \_codedecl #1#2{% \_ifx #1\_undefined \_wterm{#2}% @@ -28,7 +31,7 @@ } \_def \_wterm {\_immediate \_write16 } -\_public \public \private \xargs \xstring \ea \wterm ; +\_public \public \private \xargs \ea \wterm ; \_endcode %---------------------------------------------------- diff --git a/macros/luatex/optex/unimath-codes.opm b/macros/luatex/optex/unimath-codes.opm new file mode 100644 index 0000000000..816584022e --- /dev/null +++ b/macros/luatex/optex/unimath-codes.opm @@ -0,0 +1,304 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +% This file is read when \loadmath is used. + +\_ifx \ncharrmA\undefined \_else \_endinput \_fi + +\umathnumB="0391 +\greekdef \Alpha \Beta \Gamma \Delta \Epsilon \Zeta \Eta \Theta \Iota \Kappa + \Lambda \Mu \Nu \Xi \Omicron \Pi \Rho \varTheta \Sigma \Tau \Upsilon \Phi + \Chi \Psi \Omega \relax + +\umathnumB="03B1 +\greekdef \alpha \beta \gamma \delta \epsilon \zeta \eta \theta \iota \kappa + \lambda \mu \nu \xi \omicron \pi \rho \varsigma \sigma \tau \upsilon + \varphi \chi \psi \omega \varbeta \vartheta \phi \varpi \relax + +\chardef\ncharrmA=`A \chardef\ncharrma=`a +\chardef\ncharbfA="1D400 \chardef\ncharbfa="1D41A +\chardef\ncharitA="1D434 \chardef\ncharita="1D44E +\chardef\ncharbiA="1D468 \chardef\ncharbia="1D482 +\chardef\ncharclA="1D49C \chardef\ncharcla="1D4B6 +\chardef\ncharbcA="1D4D0 \chardef\ncharbca="1D4EA +\chardef\ncharfrA="1D504 \chardef\ncharfra="1D51E +\chardef\ncharbrA="1D56C \chardef\ncharbra="1D586 +\chardef\ncharbbA="1D538 \chardef\ncharbba="1D552 +\chardef\ncharsnA="1D5A0 \chardef\ncharsna="1D5BA +\chardef\ncharbsA="1D5D4 \chardef\ncharbsa="1D5EE +\chardef\ncharsiA="1D608 \chardef\ncharsia="1D622 +\chardef\ncharsxA="1D63C \chardef\ncharsxa="1D656 +\chardef\ncharttA="1D670 \chardef\nchartta="1D68A + +\protected\def\rmvariables {\umathrange{A-Z}\ncharrmA \umathrange{a-z}\ncharrma} +\protected\def\bfvariables {\umathrange{A-Z}\ncharbfA \umathrange{a-z}\ncharbfa} +\protected\def\nitvariables {\umathrange{A-Z}\ncharitA \umathrange{a-z}\ncharita} +\protected\def\bivariables {\umathrange{A-Z}\ncharbiA \umathrange{a-z}\ncharbia} +\protected\def\calvariables {\umathrange{A-Z}\ncharclA \umathrange{a-z}\ncharcla} +\protected\def\bcalvariables {\umathrange{A-Z}\ncharbcA \umathrange{a-z}\ncharbca} +\protected\def\frakvariables {\umathrange{A-Z}\ncharfrA \umathrange{a-z}\ncharfra} +\protected\def\bfrakvariables {\umathrange{A-Z}\ncharbrA \umathrange{a-z}\ncharbra} +\protected\def\bbvariables {\umathrange{A-Z}\ncharbbA \umathrange{a-z}\ncharbba} +\protected\def\sansvariables {\umathrange{A-Z}\ncharsnA \umathrange{a-z}\ncharsna} +\protected\def\bsansvariables {\umathrange{A-Z}\ncharbsA \umathrange{a-z}\ncharbsa} +\protected\def\isansvariables {\umathrange{A-Z}\ncharsiA \umathrange{a-z}\ncharsia} +\protected\def\bisansvariables {\umathrange{A-Z}\ncharsxA \umathrange{a-z}\ncharsxa} +\protected\def\ttvariables {\umathrange{A-Z}\ncharttA \umathrange{a-z}\nchartta} + +\chardef\greekrmA="0391 \chardef\greekrma="03B1 +\chardef\greekbfA="1D6A8 \chardef\greekbfa="1D6C2 +\chardef\greekitA="1D6E2 \chardef\greekita="1D6FC +\chardef\greekbiA="1D71C \chardef\greekbia="1D736 +\chardef\greeksnA="1D756 \chardef\greeksna="1D770 +\chardef\greeksiA="1D790 \chardef\greeksia="1D7AA + +\protected\def\nitgreek {\umathrangeGREEK\greekrmA \umathrangegreek\greekita} +\protected\def\rmgreek {\umathrangeGREEK\greekrmA \umathrangegreek\greekrma} +\protected\def\bfgreek {\umathrangeGREEK\greekbfA \umathrangegreek\greekbfa} +\protected\def\bigreek {\umathrangeGREEK\greekbfA \umathrangegreek\greekbia} +\protected\def\sansgreek {\umathrangeGREEK\greeksnA \umathrangegreek\greeksna} +\protected\def\isansgreek {\umathrangeGREEK\greeksnA \umathrangegreek\greeksia} + +% Another possibility (slanted capitals in \nitgreek, \bigreek, \isansgreek): +%\protected\def\nitgreek {\umathrangeGREEK\greekitA \umathrangegreek\greekita} +%\protected\def\rmgreek {\umathrangeGREEK\greekrmA \umathrangegreek\greekrma} +%\protected\def\bfgreek {\umathrangeGREEK\greekbfA \umathrangegreek\greekbfa} +%\protected\def\bigreek {\umathrangeGREEK\greekbiA \umathrangegreek\greekbia} +%\protected\def\sansgreek {\umathrangeGREEK\greeksnA \umathrangegreek\greeksna} +%\protected\def\isansgreek {\umathrangeGREEK\greeksiA \umathrangegreek\greeksia} + +\chardef\digitrmO=`0 +\chardef\digitbfO="1D7CE +\chardef\digitbbO="1D7D8 +\chardef\digitsnO="1D7E2 +\chardef\digitbsO="1D7EC +\chardef\digitttO="1D7F6 + +\protected\def\rmdigits {\umathrange{0-9}\digitrmO} +\protected\def\bfdigits {\umathrange{0-9}\digitbfO} +\protected\def\bbdigits {\umathrange{0-9}\digitbbO} +\protected\def\sansdigits {\umathrange{0-9}\digitsnO} +\protected\def\bsansdigits {\umathrange{0-9}\digitbsO} +\protected\def\ttdigits {\umathrange{0-9}\digitttO} + +\protected\def\inmath#1{\relax \ifmmode#1\fi} % to keep off \loop processing in text mode + +% You can redefine these macros to follow your wishes. +% For example you need upgright lowercase greek letters, you don't need +% \bf and \bi behaves as sans serif in math, ... + +\protected\def\rm {\_tryloadrm \_tenrm \inmath{\rmvariables \rmdigits}} +\protected\def\it {\_tryloadit \_tenit \inmath{\nitvariables}} +\protected\def\bf {\_tryloadbf \_tenbf \inmath{\bsansvariables \sansgreek \bsansdigits}} +\protected\def\bi {\_tryloadbi \_tenbi \inmath{\bisansvariables \isansgreek \bsansdigits}} +\protected\def\tt {\_tryloadtt \_tentt \inmath{\ttvariables \ttdigits}} +\protected\def\bbchar {\bbvariables \bbdigits} +\protected\def\cal {\calvariables} +\protected\def\frak {\frakvariables} +\protected\def\misans {\isansvariables \isansgreek \sansdigits} +\protected\def\mbisans {\bisansvariables \isansgreek \bsansdigits} +\protected\def\script {\rmvariables \fam4 } + +% Math codes: + +\begingroup % \input mathclass.opm (which is a copy of MathClass.txt): + \def\p#1;#2{\edef\tmp{\pB#2}\ifx\tmp\empty \else\pA#1....\end#2\fi} + \def\pA#1..#2..#3\end#4{% + \ifx\relax#2\relax \pset{"#1}{#4}\else + \umathnumA="#1 + \loop + \pset{\umathnumA}{#4}% + \ifnum\umathnumA<"#2 \advance\umathnumA by1 + \repeat + \fi + } + \def\pB#1{\if#1L1\fi \if#1B2\fi \if#1V2\fi \if#1R3\fi \if#1N0\fi \if#1U0\fi + \if#1F0\fi \if#1O4\fi \if#1C5\fi \if#1P6\fi \if#1A7\fi} + \def\pset#1#2{\global\Umathcode#1=\tmp\space 1 #1\relax + \if#2O\global\Udelcode#1=1 #1\relax\fi + \if#2C\global\Udelcode#1=1 #1\relax\fi + \if#2F\global\Udelcode#1=1 #1\relax\fi + } + \catcode`#=14 + \everypar={\setbox0=\lastbox \par \p} + \input mathclass.opm +\endgroup + +\begingroup % \input unimath-table.opm (it is a copy of unicode-math-table.tex): + \def\UnicodeMathSymbol #1#2#3#4{% + \global\Umathcharnumdef#2=\Umathcodenum#1\relax + \ifx#3\mathopen \gdef#2{\Udelimiter 4 1 #1 }\fi + \ifx#3\mathclose \gdef#2{\Udelimiter 5 1 #1 }\fi + \ifx#3\mathaccent \gdef#2{\Umathaccent fixed 7 1 #1 }\fi + } + \input unimath-table.opm +\endgroup + +\nitgreek \nitvariables \rmdigits % default setting + +\Umathcode `- = 2 1 "2212 +\let\{=\lbrace \let\}=\rbrace + +\def\sqrt {\Uradical 1 "0221A } +\def\cuberoot {\Uradical 1 "0221B } +\def\fourthroot {\Uradical 1 "0221C } + +\def\intwithnolimits#1{\ifx#1\relax \escapechar=`\\ \else \escapechar=-1 + \expandafter\let\csname\string#1op\endcsname=#1% + \expandafter\def\expandafter#1\expandafter{\csname\string#1op\endcsname \nolimits}% + \expandafter \intwithnolimits \fi +} +\intwithnolimits \int \iint \iiint \oint \oiint \oiiint \intclockwise + \varointclockwise \ointctrclockwise \sumint \iiiint \intbar \intBar \fint + \pointint \sqint \intlarhk \intx \intcap \intcup \upint \lowint \relax + +\def\vert {\Udelimiter 0 1 "07C } +\def\Vert {\Udelimiter 0 1 "02016 } +\def\Vvert {\Udelimiter 0 1 "02980 } + +\def\overbrace #1{\mathop {\Umathaccent 7 1 "023DE{#1}}\limits} +\def\underbrace #1{\mathop {\Umathaccent bottom 7 1 "023DF{#1}}\limits} +\def\overparen #1{\mathop {\Umathaccent 7 1 "023DC{#1}}\limits} +\def\underparen #1{\mathop {\Umathaccent bottom 7 1 "023DD{#1}}\limits} +\def\overbracket #1{\mathop {\Umathaccent 7 1 "023B4{#1}}\limits} +\def\underbracket #1{\mathop {\Umathaccent bottom 7 1 "023B5{#1}}\limits} + +\def\widehat {\Umathaccent 7 1 "00302 } +\def\widetilde {\Umathaccent 7 1 "00303 } +\def\overleftharpoon {\Umathaccent 7 1 "020D0 } +\def\overrightharpoon {\Umathaccent 7 1 "020D1 } +\def\overleftarrow {\Umathaccent 7 1 "020D6 } +\def\overrightarrow {\Umathaccent 7 1 "020D7 } +\def\overleftrightarrow {\Umathaccent 7 1 "020E1 } + +% corrections: + +\mathchardef\ldotp="612E +\let\|=\Vert + +\let\setminus=\smallsetminus +\let\diamond=\smwhtdiamond +\let\bullet=\smblkcircle +\let\circ=\vysmwhtcircle +\let\bigcirc=\mdlgwhtcircle +\let\to=\rightarrow +\let\le=\leq +\let\ge=\geq +\let\neq=\ne +\protected\def\triangle{\mathord{\bigtriangleup}} +\let\emptyset=\varnothing +\let\hbar=\hslash +\let\land=\wedge +\let\lor=\vee +\let\owns=\ni +\let\gets=\leftarrow +\let\mathring=\ocirc +\let\lnot=\neg +\let\longdivision=\longdivisionsign +\let\backepsilon=\upbackepsilon +\let\eth=\matheth +\let\dbkarow=\dbkarrow +\let\drbkarow=\drbkarrow +\let\hksearow=\hksearrow +\let\hkswarow=\hkswarrow + +\let\varepsilon=\epsilon +\let\upalpha=\mupalpha +\let\upbeta=\mupbeta +\let\upgamma=\mupgamma +\let\updelta=\mupdelta +\let\upepsilon=\mupvarepsilon +\let\upvarepsilon=\mupvarepsilon +\let\upzeta=\mupzeta +\let\upeta=\mupeta +\let\uptheta=\muptheta +\let\upiota=\mupiota +\let\upkappa=\mupkappa +\let\uplambda=\muplambda +\let\upmu=\mupmu +\let\upnu=\mupnu +\let\upxi=\mupxi +\let\upomicron=\mupomicron +\let\uppi=\muppi +\let\uprho=\muprho +\let\upvarrho=\mupvarrho +\let\upvarsigma=\mupvarsigma +\let\upsigma=\mupsigma +\let\uptau=\muptau +\let\upupsilon=\mupupsilon +\let\upvarphi=\mupvarphi +\let\upchi=\mupchi +\let\uppsi=\muppsi +\let\upomega=\mupomega +\let\upvartheta=\mupvartheta +\let\upphi=\mupphi +\let\upvarpi=\mupvarpi + +\protected\def\not#1{% + \expandafter\ifx \csname not!\string#1\endcsname \relax + \mathrel{\mathord{\rlap{\kern1pt/}}\mathord{#1}}% + \else \csname not!\string#1\endcsname + \fi +} +\def\negationof#1#2{\expandafter\let \csname not!\string#1\endcsname =#2} +\negationof = \neq +\negationof < \nless +\negationof > \ngtr +\negationof \gets \nleftarrow +\negationof \simeq \nsime +\negationof \equal \ne +\negationof \le \nleq +\negationof \ge \ngeq +\negationof \greater \ngtr +\negationof \forksnot \forks +\negationof \in \notin + +% we need no more 8bit math fonts + +\mathcode`\_="8000 +\mathcode`\∫="8000 +{\catcode`\∫=13 \_ea}\_ea \_let \_noexpand ∫ = \int + +\_private + \ldotp \cdotp \triangleleft \trianglerigt \mapstochar \rightarrow \prime + \lhook \rightarrow \leftarrow \rhook \triangleright \triangleleft + \Relbar \Rightarrow \relbar \rightarrow \Leftarrow \mapstochar + \longrightarrow \Longleftrightarrow \vdots \ddots ; + + +\def\boldmath{\pdfliteral direct {2 Tr .3 w}\aftergroup\noboldmath} +\def\noboldmath{\pdfliteral direct {0 Tr 0 w}} % faked bold only :-( + +\_endcode + +-------------------------------------------- + +You can combine more fonts, if you register them to another +math families (5, 6, 7, etc.) in \normalmath macro. + +The default value of \normalmath shows a combination of base Unicode Math +font with 8bit Math font at family 4. See definition of \script macro where +\fam4 is used. Of course, we need to set \rmvariables too, because 8bit font +accepts only codes less than 255. + +See http://tex.stackexchange.com/questions/308749/ for more technical details. + +The poor bold is used for complete bold vaiant of the font. If the selected +font has its bold vaiant (like xits-math), you can re-define \boldmath macro +by: + +\def\boldmath{% + \loadumathfamily 1 {[xitsmath-bold]}{} % Base font + \loadmathfamily 4 rsfs % script + \setmathdimens +} + +XITSmath-bold needs correction: the norm symbol ||x|| is missing here. So, you +can define: + +\def\boldmath{% + \loadumathfamily 1 {[xitsmath-bold]}{} % Base font + \loadmathfamily 4 rsfs % script + \loadumathfamily 5 {[xitsmath-regular]}{} + \def\|{\Udelimiter 0 5 "02016 }% % norm delimiter from family 5 + \setmathdimens +} diff --git a/macros/luatex/optex/unimath-table.opm b/macros/luatex/optex/unimath-table.opm new file mode 100644 index 0000000000..511b67e8ce --- /dev/null +++ b/macros/luatex/optex/unimath-table.opm @@ -0,0 +1,2467 @@ +%%^^A%% unicode-math-table.tex -- part of UNICODE-MATH <wspr.io/unicode-math> +%%^^A%% Source file of the math symbols. + +\UnicodeMathSymbol{"00021}{\mathexclam }{\mathclose}{exclamation mark}% +\UnicodeMathSymbol{"00023}{\mathoctothorpe }{\mathord}{number sign}% +\UnicodeMathSymbol{"00024}{\mathdollar }{\mathord}{dollar sign}% +\UnicodeMathSymbol{"00025}{\mathpercent }{\mathord}{percent sign}% +\UnicodeMathSymbol{"00026}{\mathampersand }{\mathord}{ampersand}% +\UnicodeMathSymbol{"00028}{\lparen }{\mathopen}{left parenthesis}% +\UnicodeMathSymbol{"00029}{\rparen }{\mathclose}{right parenthesis}% +\UnicodeMathSymbol{"0002B}{\mathplus }{\mathbin}{plus sign b:}% +\UnicodeMathSymbol{"0002C}{\mathcomma }{\mathpunct}{comma}% +\UnicodeMathSymbol{"0002E}{\mathperiod }{\mathord}{full stop, period}% +\UnicodeMathSymbol{"0002F}{\mathslash }{\mathord}{solidus}% +\UnicodeMathSymbol{"0003A}{\mathcolon }{\mathpunct}{colon}% +\UnicodeMathSymbol{"0003B}{\mathsemicolon }{\mathpunct}{semicolon p:}% +\UnicodeMathSymbol{"0003C}{\less }{\mathrel}{less-than sign r:}% +\UnicodeMathSymbol{"0003D}{\equal }{\mathrel}{equals sign r:}% +\UnicodeMathSymbol{"0003E}{\greater }{\mathrel}{greater-than sign r:}% +\UnicodeMathSymbol{"0003F}{\mathquestion }{\mathord}{question mark}% +\UnicodeMathSymbol{"00040}{\mathatsign }{\mathord}{commercial at}% +\UnicodeMathSymbol{"0005B}{\lbrack }{\mathopen}{left square bracket}% +\UnicodeMathSymbol{"0005C}{\backslash }{\mathord}{reverse solidus}% +\UnicodeMathSymbol{"0005D}{\rbrack }{\mathclose}{right square bracket}% +\UnicodeMathSymbol{"0007B}{\lbrace }{\mathopen}{left curly bracket}% +\UnicodeMathSymbol{"0007C}{\vert }{\mathfence}{vertical bar}% +\UnicodeMathSymbol{"0007D}{\rbrace }{\mathclose}{right curly bracket}% +\UnicodeMathSymbol{"000A3}{\mathsterling }{\mathord}{pound sign}% +\UnicodeMathSymbol{"000A5}{\mathyen }{\mathord}{yen sign}% +\UnicodeMathSymbol{"000A7}{\mathsection }{\mathord}{section symbol}% +\UnicodeMathSymbol{"000AC}{\neg }{\mathord}{/neg /lnot not sign}% +\UnicodeMathSymbol{"000B1}{\pm }{\mathbin}{plus-or-minus sign}% +\UnicodeMathSymbol{"000B6}{\mathparagraph }{\mathord}{paragraph symbol}% +\UnicodeMathSymbol{"000B7}{\cdotp }{\mathbin}{/centerdot b: middle dot}% +\UnicodeMathSymbol{"000D7}{\times }{\mathbin}{multiply sign}% +\UnicodeMathSymbol{"000F0}{\matheth }{\mathalpha}{eth}% +\UnicodeMathSymbol{"000F7}{\div }{\mathbin}{divide sign}% +\UnicodeMathSymbol{"001B5}{\Zbar }{\mathord}{impedance (latin capital letter z with stroke)}% +\UnicodeMathSymbol{"00300}{\grave }{\mathaccent}{grave accent}% +\UnicodeMathSymbol{"00301}{\acute }{\mathaccent}{acute accent}% +\UnicodeMathSymbol{"00302}{\hat }{\mathaccent}{circumflex accent}% +\UnicodeMathSymbol{"00302}{\widehat }{\mathaccentwide}{circumflex accent}% +\UnicodeMathSymbol{"00303}{\tilde }{\mathaccent}{tilde}% +\UnicodeMathSymbol{"00303}{\widetilde }{\mathaccentwide}{tilde}% +\UnicodeMathSymbol{"00304}{\bar }{\mathaccent}{macron}% +\UnicodeMathSymbol{"00305}{\overbar }{\mathaccent}{overbar embellishment}% +\UnicodeMathSymbol{"00305}{\wideoverbar }{\mathaccentwide}{stretchy overbar embellishment}% +\UnicodeMathSymbol{"00306}{\breve }{\mathaccent}{breve}% +\UnicodeMathSymbol{"00306}{\widebreve }{\mathaccentwide}{stretchy breve}% +\UnicodeMathSymbol{"00307}{\dot }{\mathaccent}{dot above}% +\UnicodeMathSymbol{"00308}{\ddot }{\mathaccent}{dieresis}% +\UnicodeMathSymbol{"00309}{\ovhook }{\mathaccent}{combining hook above}% +\UnicodeMathSymbol{"0030A}{\ocirc }{\mathaccent}{ring}% +\UnicodeMathSymbol{"0030C}{\check }{\mathaccent}{caron}% +\UnicodeMathSymbol{"0030C}{\widecheck }{\mathaccentwide}{stretchy caron}% +\UnicodeMathSymbol{"00310}{\candra }{\mathaccent}{candrabindu (non-spacing)}% +\UnicodeMathSymbol{"00312}{\oturnedcomma }{\mathaccent}{combining turned comma above}% +\UnicodeMathSymbol{"00315}{\ocommatopright }{\mathaccent}{combining comma above right}% +\UnicodeMathSymbol{"0031A}{\droang }{\mathaccent}{left angle above (non-spacing)}% +\UnicodeMathSymbol{"00330}{\wideutilde }{\mathbotaccentwide}{under tilde accent (multiple characters and non-spacing)}% +\UnicodeMathSymbol{"00332}{\mathunderbar }{\mathbotaccentwide}{combining low line}% +\UnicodeMathSymbol{"00338}{\notaccent }{\mathaccentoverlay}{combining long solidus overlay}% +\UnicodeMathSymbol{"0034D}{\underleftrightarrow }{\mathbotaccentwide}{underleftrightarrow accent}% +\UnicodeMathSymbol{"00391}{\mupAlpha }{\mathalpha}{capital alpha, greek}% +\UnicodeMathSymbol{"00392}{\mupBeta }{\mathalpha}{capital beta, greek}% +\UnicodeMathSymbol{"00393}{\mupGamma }{\mathalpha}{capital gamma, greek}% +\UnicodeMathSymbol{"00394}{\mupDelta }{\mathalpha}{capital delta, greek}% +\UnicodeMathSymbol{"00395}{\mupEpsilon }{\mathalpha}{capital epsilon, greek}% +\UnicodeMathSymbol{"00396}{\mupZeta }{\mathalpha}{capital zeta, greek}% +\UnicodeMathSymbol{"00397}{\mupEta }{\mathalpha}{capital eta, greek}% +\UnicodeMathSymbol{"00398}{\mupTheta }{\mathalpha}{capital theta, greek}% +\UnicodeMathSymbol{"00399}{\mupIota }{\mathalpha}{capital iota, greek}% +\UnicodeMathSymbol{"0039A}{\mupKappa }{\mathalpha}{capital kappa, greek}% +\UnicodeMathSymbol{"0039B}{\mupLambda }{\mathalpha}{capital lambda, greek}% +\UnicodeMathSymbol{"0039C}{\mupMu }{\mathalpha}{capital mu, greek}% +\UnicodeMathSymbol{"0039D}{\mupNu }{\mathalpha}{capital nu, greek}% +\UnicodeMathSymbol{"0039E}{\mupXi }{\mathalpha}{capital xi, greek}% +\UnicodeMathSymbol{"0039F}{\mupOmicron }{\mathalpha}{capital omicron, greek}% +\UnicodeMathSymbol{"003A0}{\mupPi }{\mathalpha}{capital pi, greek}% +\UnicodeMathSymbol{"003A1}{\mupRho }{\mathalpha}{capital rho, greek}% +\UnicodeMathSymbol{"003A3}{\mupSigma }{\mathalpha}{capital sigma, greek}% +\UnicodeMathSymbol{"003A4}{\mupTau }{\mathalpha}{capital tau, greek}% +\UnicodeMathSymbol{"003A5}{\mupUpsilon }{\mathalpha}{capital upsilon, greek}% +\UnicodeMathSymbol{"003A6}{\mupPhi }{\mathalpha}{capital phi, greek}% +\UnicodeMathSymbol{"003A7}{\mupChi }{\mathalpha}{capital chi, greek}% +\UnicodeMathSymbol{"003A8}{\mupPsi }{\mathalpha}{capital psi, greek}% +\UnicodeMathSymbol{"003A9}{\mupOmega }{\mathalpha}{capital omega, greek}% +\UnicodeMathSymbol{"003B1}{\mupalpha }{\mathalpha}{small alpha, greek}% +\UnicodeMathSymbol{"003B2}{\mupbeta }{\mathalpha}{small beta, greek}% +\UnicodeMathSymbol{"003B3}{\mupgamma }{\mathalpha}{small gamma, greek}% +\UnicodeMathSymbol{"003B4}{\mupdelta }{\mathalpha}{small delta, greek}% +\UnicodeMathSymbol{"003B5}{\mupvarepsilon }{\mathalpha}{rounded small varepsilon, greek}% +\UnicodeMathSymbol{"003B6}{\mupzeta }{\mathalpha}{small zeta, greek}% +\UnicodeMathSymbol{"003B7}{\mupeta }{\mathalpha}{small eta, greek}% +\UnicodeMathSymbol{"003B8}{\muptheta }{\mathalpha}{straight theta, small theta, greek}% +\UnicodeMathSymbol{"003B9}{\mupiota }{\mathalpha}{small iota, greek}% +\UnicodeMathSymbol{"003BA}{\mupkappa }{\mathalpha}{small kappa, greek}% +\UnicodeMathSymbol{"003BB}{\muplambda }{\mathalpha}{small lambda, greek}% +\UnicodeMathSymbol{"003BC}{\mupmu }{\mathalpha}{small mu, greek}% +\UnicodeMathSymbol{"003BD}{\mupnu }{\mathalpha}{small nu, greek}% +\UnicodeMathSymbol{"003BE}{\mupxi }{\mathalpha}{small xi, greek}% +\UnicodeMathSymbol{"003BF}{\mupomicron }{\mathalpha}{small omicron, greek}% +\UnicodeMathSymbol{"003C0}{\muppi }{\mathalpha}{small pi, greek}% +\UnicodeMathSymbol{"003C1}{\muprho }{\mathalpha}{small rho, greek}% +\UnicodeMathSymbol{"003C2}{\mupvarsigma }{\mathalpha}{terminal sigma, greek}% +\UnicodeMathSymbol{"003C3}{\mupsigma }{\mathalpha}{small sigma, greek}% +\UnicodeMathSymbol{"003C4}{\muptau }{\mathalpha}{small tau, greek}% +\UnicodeMathSymbol{"003C5}{\mupupsilon }{\mathalpha}{small upsilon, greek}% +\UnicodeMathSymbol{"003C6}{\mupvarphi }{\mathalpha}{curly or open small phi, greek}% +\UnicodeMathSymbol{"003C7}{\mupchi }{\mathalpha}{small chi, greek}% +\UnicodeMathSymbol{"003C8}{\muppsi }{\mathalpha}{small psi, greek}% +\UnicodeMathSymbol{"003C9}{\mupomega }{\mathalpha}{small omega, greek}% +\UnicodeMathSymbol{"003D1}{\mupvartheta }{\mathalpha}{/vartheta - curly or open theta}% +\UnicodeMathSymbol{"003D5}{\mupphi }{\mathalpha}{/straightphi - small phi, greek}% +\UnicodeMathSymbol{"003D6}{\mupvarpi }{\mathalpha}{rounded small pi (pomega), greek}% +\UnicodeMathSymbol{"003DC}{\upDigamma }{\mathalpha}{capital digamma}% +\UnicodeMathSymbol{"003DD}{\updigamma }{\mathalpha}{old greek small letter digamma}% +\UnicodeMathSymbol{"003F0}{\mupvarkappa }{\mathalpha}{rounded small kappa, greek}% +\UnicodeMathSymbol{"003F1}{\mupvarrho }{\mathalpha}{rounded small rho, greek}% +\UnicodeMathSymbol{"003F4}{\mupvarTheta }{\mathalpha}{greek capital theta symbol}% +\UnicodeMathSymbol{"003F5}{\mupepsilon }{\mathalpha}{greek lunate varepsilon symbol}% +\UnicodeMathSymbol{"003F6}{\upbackepsilon }{\mathord}{greek reversed lunate epsilon symbol}% +\UnicodeMathSymbol{"02010}{\mathhyphen }{\mathalpha}{hyphen}% +\UnicodeMathSymbol{"02015}{\horizbar }{\mathord}{horizontal bar}% +\UnicodeMathSymbol{"02016}{\Vert }{\mathfence}{double vertical bar}% +\UnicodeMathSymbol{"02017}{\twolowline }{\mathord}{double low line (spacing)}% +\UnicodeMathSymbol{"02020}{\dagger }{\mathbin}{dagger relation}% +\UnicodeMathSymbol{"02021}{\ddagger }{\mathbin}{double dagger relation}% +\UnicodeMathSymbol{"02022}{\smblkcircle }{\mathbin}{/bullet b: round bullet, filled}% +\UnicodeMathSymbol{"02025}{\enleadertwodots }{\mathord}{double baseline dot (en leader)}% +\UnicodeMathSymbol{"02026}{\unicodeellipsis }{\mathord}{ellipsis (horizontal)}% +\UnicodeMathSymbol{"02032}{\prime }{\mathord}{prime or minute, not superscripted}% +\UnicodeMathSymbol{"02033}{\dprime }{\mathord}{double prime or second, not superscripted}% +\UnicodeMathSymbol{"02034}{\trprime }{\mathord}{triple prime (not superscripted)}% +\UnicodeMathSymbol{"02035}{\backprime }{\mathord}{reverse prime, not superscripted}% +\UnicodeMathSymbol{"02036}{\backdprime }{\mathord}{double reverse prime, not superscripted}% +\UnicodeMathSymbol{"02037}{\backtrprime }{\mathord}{triple reverse prime, not superscripted}% +\UnicodeMathSymbol{"02038}{\caretinsert }{\mathord}{caret (insertion mark)}% +\UnicodeMathSymbol{"0203C}{\Exclam }{\mathord}{double exclamation mark}% +\UnicodeMathSymbol{"02040}{\tieconcat }{\mathbin}{character tie, z notation sequence concatenation}% +\UnicodeMathSymbol{"02043}{\hyphenbullet }{\mathord}{rectangle, filled (hyphen bullet)}% +\UnicodeMathSymbol{"02044}{\fracslash }{\mathbin}{fraction slash}% +\UnicodeMathSymbol{"02047}{\Question }{\mathord}{double question mark}% +\UnicodeMathSymbol{"02050}{\closure }{\mathrel}{close up}% +\UnicodeMathSymbol{"02057}{\qprime }{\mathord}{quadruple prime, not superscripted}% +\UnicodeMathSymbol{"020AC}{\euro }{\mathord}{euro sign}% +\UnicodeMathSymbol{"020D0}{\leftharpoonaccent }{\mathaccent}{combining left harpoon above}% +\UnicodeMathSymbol{"020D0}{\overleftharpoon }{\mathaccentwide}{combining left harpoon above}% +\UnicodeMathSymbol{"020D1}{\rightharpoonaccent }{\mathaccent}{combining right harpoon above}% +\UnicodeMathSymbol{"020D1}{\overrightharpoon }{\mathaccentwide}{combining right harpoon above}% +\UnicodeMathSymbol{"020D2}{\vertoverlay }{\mathaccent}{combining long vertical line overlay}% +\UnicodeMathSymbol{"020D6}{\overleftarrow }{\mathaccentwide}{combining left arrow above}% +\UnicodeMathSymbol{"020D7}{\overrightarrow }{\mathaccentwide}{combining left arrow above}% +\UnicodeMathSymbol{"020D7}{\vec }{\mathaccent}{combining right arrow above}% +\UnicodeMathSymbol{"020DB}{\dddot }{\mathaccent}{combining three dots above}% +\UnicodeMathSymbol{"020DC}{\ddddot }{\mathaccent}{combining four dots above}% +\UnicodeMathSymbol{"020DD}{\enclosecircle }{\mathord}{combining enclosing circle}% +\UnicodeMathSymbol{"020DE}{\enclosesquare }{\mathord}{combining enclosing square}% +\UnicodeMathSymbol{"020DF}{\enclosediamond }{\mathord}{combining enclosing diamond}% +\UnicodeMathSymbol{"020E1}{\overleftrightarrow }{\mathaccentwide}{combining left right arrow above}% +\UnicodeMathSymbol{"020E4}{\enclosetriangle }{\mathord}{combining enclosing upward pointing triangle}% +\UnicodeMathSymbol{"020E7}{\annuity }{\mathaccent}{combining annuity symbol}% +\UnicodeMathSymbol{"020E8}{\threeunderdot }{\mathbotaccent}{combining triple underdot}% +\UnicodeMathSymbol{"020E9}{\widebridgeabove }{\mathaccent}{combining wide bridge above}% +\UnicodeMathSymbol{"020EC}{\underrightharpoondown }{\mathbotaccentwide}{combining rightwards harpoon with barb downwards}% +\UnicodeMathSymbol{"020ED}{\underleftharpoondown }{\mathbotaccentwide}{combining leftwards harpoon with barb downwards}% +\UnicodeMathSymbol{"020EE}{\underleftarrow }{\mathbotaccentwide}{combining left arrow below}% +\UnicodeMathSymbol{"020EF}{\underrightarrow }{\mathbotaccentwide}{combining right arrow below}% +\UnicodeMathSymbol{"020F0}{\asteraccent }{\mathaccent}{combining asterisk above}% +\UnicodeMathSymbol{"02102}{\BbbC }{\mathalpha}{/bbb c, open face c}% +\UnicodeMathSymbol{"02107}{\Eulerconst }{\mathord}{euler constant}% +\UnicodeMathSymbol{"0210A}{\mscrg }{\mathalpha}{/scr g, script letter g}% +\UnicodeMathSymbol{"0210B}{\mscrH }{\mathalpha}{hamiltonian (script capital h)}% +\UnicodeMathSymbol{"0210C}{\mfrakH }{\mathalpha}{/frak h, upper case h}% +\UnicodeMathSymbol{"0210D}{\BbbH }{\mathalpha}{/bbb h, open face h}% +\UnicodeMathSymbol{"0210E}{\Planckconst }{\mathord}{planck constant}% +\UnicodeMathSymbol{"0210F}{\hslash }{\mathalpha}{/hslash - variant planck's over 2pi}% +\UnicodeMathSymbol{"02110}{\mscrI }{\mathalpha}{/scr i, script letter i}% +\UnicodeMathSymbol{"02111}{\Im }{\mathalpha}{imaginary part}% +\UnicodeMathSymbol{"02112}{\mscrL }{\mathalpha}{lagrangian (script capital l)}% +\UnicodeMathSymbol{"02113}{\ell }{\mathalpha}{cursive small l}% +\UnicodeMathSymbol{"02115}{\BbbN }{\mathalpha}{/bbb n, open face n}% +\UnicodeMathSymbol{"02118}{\wp }{\mathalpha}{weierstrass p}% +\UnicodeMathSymbol{"02119}{\BbbP }{\mathalpha}{/bbb p, open face p}% +\UnicodeMathSymbol{"0211A}{\BbbQ }{\mathalpha}{/bbb q, open face q}% +\UnicodeMathSymbol{"0211B}{\mscrR }{\mathalpha}{/scr r, script letter r}% +\UnicodeMathSymbol{"0211C}{\Re }{\mathalpha}{real part}% +\UnicodeMathSymbol{"0211D}{\BbbR }{\mathalpha}{/bbb r, open face r}% +\UnicodeMathSymbol{"02124}{\BbbZ }{\mathalpha}{/bbb z, open face z}% +\UnicodeMathSymbol{"02127}{\mho }{\mathord}{conductance}% +\UnicodeMathSymbol{"02128}{\mfrakZ }{\mathalpha}{/frak z, upper case z}% +\UnicodeMathSymbol{"02129}{\turnediota }{\mathalpha}{turned iota}% +\UnicodeMathSymbol{"0212B}{\Angstrom }{\mathalpha}{angstrom capital a, ring}% +\UnicodeMathSymbol{"0212C}{\mscrB }{\mathalpha}{bernoulli function (script capital b)}% +\UnicodeMathSymbol{"0212D}{\mfrakC }{\mathalpha}{black-letter capital c}% +\UnicodeMathSymbol{"0212F}{\mscre }{\mathalpha}{/scr e, script letter e}% +\UnicodeMathSymbol{"02130}{\mscrE }{\mathalpha}{/scr e, script letter e}% +\UnicodeMathSymbol{"02131}{\mscrF }{\mathalpha}{/scr f, script letter f}% +\UnicodeMathSymbol{"02132}{\Finv }{\mathord}{turned capital f}% +\UnicodeMathSymbol{"02133}{\mscrM }{\mathalpha}{physics m-matrix (script capital m)}% +\UnicodeMathSymbol{"02134}{\mscro }{\mathalpha}{order of (script small o)}% +\UnicodeMathSymbol{"02135}{\aleph }{\mathalpha}{aleph, hebrew}% +\UnicodeMathSymbol{"02136}{\beth }{\mathalpha}{beth, hebrew}% +\UnicodeMathSymbol{"02137}{\gimel }{\mathalpha}{gimel, hebrew}% +\UnicodeMathSymbol{"02138}{\daleth }{\mathalpha}{daleth, hebrew}% +\UnicodeMathSymbol{"0213C}{\Bbbpi }{\mathord}{double-struck small pi}% +\UnicodeMathSymbol{"0213D}{\Bbbgamma }{\mathalpha}{double-struck small gamma}% +\UnicodeMathSymbol{"0213E}{\BbbGamma }{\mathalpha}{double-struck capital gamma}% +\UnicodeMathSymbol{"0213F}{\BbbPi }{\mathalpha}{double-struck capital pi}% +\UnicodeMathSymbol{"02140}{\Bbbsum }{\mathop}{double-struck n-ary summation}% +\UnicodeMathSymbol{"02141}{\Game }{\mathord}{turned sans-serif capital g}% +\UnicodeMathSymbol{"02142}{\sansLturned }{\mathord}{turned sans-serif capital l}% +\UnicodeMathSymbol{"02143}{\sansLmirrored }{\mathord}{reversed sans-serif capital l}% +\UnicodeMathSymbol{"02144}{\Yup }{\mathord}{turned sans-serif capital y}% +\UnicodeMathSymbol{"02145}{\mitBbbD }{\mathord}{double-struck italic capital d}% +\UnicodeMathSymbol{"02146}{\mitBbbd }{\mathord}{double-struck italic small d}% +\UnicodeMathSymbol{"02147}{\mitBbbe }{\mathord}{double-struck italic small e}% +\UnicodeMathSymbol{"02148}{\mitBbbi }{\mathord}{double-struck italic small i}% +\UnicodeMathSymbol{"02149}{\mitBbbj }{\mathord}{double-struck italic small j}% +\UnicodeMathSymbol{"0214A}{\PropertyLine }{\mathord}{property line}% +\UnicodeMathSymbol{"0214B}{\upand }{\mathbin}{turned ampersand}% +\UnicodeMathSymbol{"02190}{\leftarrow }{\mathrel}{/leftarrow /gets a: leftward arrow}% +\UnicodeMathSymbol{"02191}{\uparrow }{\mathrel}{upward arrow}% +\UnicodeMathSymbol{"02192}{\rightarrow }{\mathrel}{/rightarrow /to a: rightward arrow}% +\UnicodeMathSymbol{"02193}{\downarrow }{\mathrel}{downward arrow}% +\UnicodeMathSymbol{"02194}{\leftrightarrow }{\mathrel}{left and right arrow}% +\UnicodeMathSymbol{"02195}{\updownarrow }{\mathrel}{up and down arrow}% +\UnicodeMathSymbol{"02196}{\nwarrow }{\mathrel}{nw pointing arrow}% +\UnicodeMathSymbol{"02197}{\nearrow }{\mathrel}{ne pointing arrow}% +\UnicodeMathSymbol{"02198}{\searrow }{\mathrel}{se pointing arrow}% +\UnicodeMathSymbol{"02199}{\swarrow }{\mathrel}{sw pointing arrow}% +\UnicodeMathSymbol{"0219A}{\nleftarrow }{\mathrel}{not left arrow}% +\UnicodeMathSymbol{"0219B}{\nrightarrow }{\mathrel}{not right arrow}% +\UnicodeMathSymbol{"0219C}{\leftwavearrow }{\mathrel}{left arrow-wavy}% +\UnicodeMathSymbol{"0219D}{\rightwavearrow }{\mathrel}{right arrow-wavy}% +\UnicodeMathSymbol{"0219E}{\twoheadleftarrow }{\mathrel}{left two-headed arrow}% +\UnicodeMathSymbol{"0219F}{\twoheaduparrow }{\mathrel}{up two-headed arrow}% +\UnicodeMathSymbol{"021A0}{\twoheadrightarrow }{\mathrel}{right two-headed arrow}% +\UnicodeMathSymbol{"021A1}{\twoheaddownarrow }{\mathrel}{down two-headed arrow}% +\UnicodeMathSymbol{"021A2}{\leftarrowtail }{\mathrel}{left arrow-tailed}% +\UnicodeMathSymbol{"021A3}{\rightarrowtail }{\mathrel}{right arrow-tailed}% +\UnicodeMathSymbol{"021A4}{\mapsfrom }{\mathrel}{maps to, leftward}% +\UnicodeMathSymbol{"021A5}{\mapsup }{\mathrel}{maps to, upward}% +\UnicodeMathSymbol{"021A6}{\mapsto }{\mathrel}{maps to, rightward}% +\UnicodeMathSymbol{"021A7}{\mapsdown }{\mathrel}{maps to, downward}% +\UnicodeMathSymbol{"021A8}{\updownarrowbar }{\mathord}{up down arrow with base (perpendicular)}% +\UnicodeMathSymbol{"021A9}{\hookleftarrow }{\mathrel}{left arrow-hooked}% +\UnicodeMathSymbol{"021AA}{\hookrightarrow }{\mathrel}{right arrow-hooked}% +\UnicodeMathSymbol{"021AB}{\looparrowleft }{\mathrel}{left arrow-looped}% +\UnicodeMathSymbol{"021AC}{\looparrowright }{\mathrel}{right arrow-looped}% +\UnicodeMathSymbol{"021AD}{\leftrightsquigarrow }{\mathrel}{left and right arr-wavy}% +\UnicodeMathSymbol{"021AE}{\nleftrightarrow }{\mathrel}{not left and right arrow}% +\UnicodeMathSymbol{"021AF}{\downzigzagarrow }{\mathrel}{downwards zigzag arrow}% +\UnicodeMathSymbol{"021B0}{\Lsh }{\mathrel}{/lsh a:}% +\UnicodeMathSymbol{"021B1}{\Rsh }{\mathrel}{/rsh a:}% +\UnicodeMathSymbol{"021B2}{\Ldsh }{\mathrel}{left down angled arrow}% +\UnicodeMathSymbol{"021B3}{\Rdsh }{\mathrel}{right down angled arrow}% +\UnicodeMathSymbol{"021B4}{\linefeed }{\mathord}{rightwards arrow with corner downwards}% +\UnicodeMathSymbol{"021B5}{\carriagereturn }{\mathord}{downwards arrow with corner leftward = carriage return}% +\UnicodeMathSymbol{"021B6}{\curvearrowleft }{\mathrel}{left curved arrow}% +\UnicodeMathSymbol{"021B7}{\curvearrowright }{\mathrel}{right curved arrow}% +\UnicodeMathSymbol{"021B8}{\barovernorthwestarrow }{\mathord}{north west arrow to long bar}% +\UnicodeMathSymbol{"021B9}{\barleftarrowrightarrowbar}{\mathord}{leftwards arrow to bar over rightwards arrow to bar}% +\UnicodeMathSymbol{"021BA}{\acwopencirclearrow }{\mathord}{anticlockwise open circle arrow}% +\UnicodeMathSymbol{"021BB}{\cwopencirclearrow }{\mathord}{clockwise open circle arrow}% +\UnicodeMathSymbol{"021BC}{\leftharpoonup }{\mathrel}{left harpoon-up}% +\UnicodeMathSymbol{"021BD}{\leftharpoondown }{\mathrel}{left harpoon-down}% +\UnicodeMathSymbol{"021BE}{\upharpoonright }{\mathrel}{/upharpoonright /restriction a: up harpoon-right}% +\UnicodeMathSymbol{"021BF}{\upharpoonleft }{\mathrel}{up harpoon-left}% +\UnicodeMathSymbol{"021C0}{\rightharpoonup }{\mathrel}{right harpoon-up}% +\UnicodeMathSymbol{"021C1}{\rightharpoondown }{\mathrel}{right harpoon-down}% +\UnicodeMathSymbol{"021C2}{\downharpoonright }{\mathrel}{down harpoon-right}% +\UnicodeMathSymbol{"021C3}{\downharpoonleft }{\mathrel}{down harpoon-left}% +\UnicodeMathSymbol{"021C4}{\rightleftarrows }{\mathrel}{right arrow over left arrow}% +\UnicodeMathSymbol{"021C5}{\updownarrows }{\mathrel}{up arrow, down arrow}% +\UnicodeMathSymbol{"021C6}{\leftrightarrows }{\mathrel}{left arrow over right arrow}% +\UnicodeMathSymbol{"021C7}{\leftleftarrows }{\mathrel}{two left arrows}% +\UnicodeMathSymbol{"021C8}{\upuparrows }{\mathrel}{two up arrows}% +\UnicodeMathSymbol{"021C9}{\rightrightarrows }{\mathrel}{two right arrows}% +\UnicodeMathSymbol{"021CA}{\downdownarrows }{\mathrel}{two down arrows}% +\UnicodeMathSymbol{"021CB}{\leftrightharpoons }{\mathrel}{left harpoon over right}% +\UnicodeMathSymbol{"021CC}{\rightleftharpoons }{\mathrel}{right harpoon over left}% +\UnicodeMathSymbol{"021CD}{\nLeftarrow }{\mathrel}{not implied by}% +\UnicodeMathSymbol{"021CE}{\nLeftrightarrow }{\mathrel}{not left and right double arrows}% +\UnicodeMathSymbol{"021CF}{\nRightarrow }{\mathrel}{not implies}% +\UnicodeMathSymbol{"021D0}{\Leftarrow }{\mathrel}{is implied by}% +\UnicodeMathSymbol{"021D1}{\Uparrow }{\mathrel}{up double arrow}% +\UnicodeMathSymbol{"021D2}{\Rightarrow }{\mathrel}{implies}% +\UnicodeMathSymbol{"021D3}{\Downarrow }{\mathrel}{down double arrow}% +\UnicodeMathSymbol{"021D4}{\Leftrightarrow }{\mathrel}{left and right double arrow}% +\UnicodeMathSymbol{"021D5}{\Updownarrow }{\mathrel}{up and down double arrow}% +\UnicodeMathSymbol{"021D6}{\Nwarrow }{\mathrel}{nw pointing double arrow}% +\UnicodeMathSymbol{"021D7}{\Nearrow }{\mathrel}{ne pointing double arrow}% +\UnicodeMathSymbol{"021D8}{\Searrow }{\mathrel}{se pointing double arrow}% +\UnicodeMathSymbol{"021D9}{\Swarrow }{\mathrel}{sw pointing double arrow}% +\UnicodeMathSymbol{"021DA}{\Lleftarrow }{\mathrel}{left triple arrow}% +\UnicodeMathSymbol{"021DB}{\Rrightarrow }{\mathrel}{right triple arrow}% +\UnicodeMathSymbol{"021DC}{\leftsquigarrow }{\mathrel}{leftwards squiggle arrow}% +\UnicodeMathSymbol{"021DD}{\rightsquigarrow }{\mathrel}{rightwards squiggle arrow}% +\UnicodeMathSymbol{"021DE}{\nHuparrow }{\mathord}{upwards arrow with double stroke}% +\UnicodeMathSymbol{"021DF}{\nHdownarrow }{\mathord}{downwards arrow with double stroke}% +\UnicodeMathSymbol{"021E0}{\leftdasharrow }{\mathord}{leftwards dashed arrow}% +\UnicodeMathSymbol{"021E1}{\updasharrow }{\mathord}{upwards dashed arrow}% +\UnicodeMathSymbol{"021E2}{\rightdasharrow }{\mathord}{rightwards dashed arrow}% +\UnicodeMathSymbol{"021E3}{\downdasharrow }{\mathord}{downwards dashed arrow}% +\UnicodeMathSymbol{"021E4}{\barleftarrow }{\mathrel}{leftwards arrow to bar}% +\UnicodeMathSymbol{"021E5}{\rightarrowbar }{\mathrel}{rightwards arrow to bar}% +\UnicodeMathSymbol{"021E6}{\leftwhitearrow }{\mathord}{leftwards white arrow}% +\UnicodeMathSymbol{"021E7}{\upwhitearrow }{\mathord}{upwards white arrow}% +\UnicodeMathSymbol{"021E8}{\rightwhitearrow }{\mathord}{rightwards white arrow}% +\UnicodeMathSymbol{"021E9}{\downwhitearrow }{\mathord}{downwards white arrow}% +\UnicodeMathSymbol{"021EA}{\whitearrowupfrombar }{\mathord}{upwards white arrow from bar}% +\UnicodeMathSymbol{"021F4}{\circleonrightarrow }{\mathrel}{right arrow with small circle}% +\UnicodeMathSymbol{"021F5}{\downuparrows }{\mathrel}{downwards arrow leftwards of upwards arrow}% +\UnicodeMathSymbol{"021F6}{\rightthreearrows }{\mathrel}{three rightwards arrows}% +\UnicodeMathSymbol{"021F7}{\nvleftarrow }{\mathrel}{leftwards arrow with vertical stroke}% +\UnicodeMathSymbol{"021F8}{\nvrightarrow }{\mathrel}{rightwards arrow with vertical stroke}% +\UnicodeMathSymbol{"021F9}{\nvleftrightarrow }{\mathrel}{left right arrow with vertical stroke}% +\UnicodeMathSymbol{"021FA}{\nVleftarrow }{\mathrel}{leftwards arrow with double vertical stroke}% +\UnicodeMathSymbol{"021FB}{\nVrightarrow }{\mathrel}{rightwards arrow with double vertical stroke}% +\UnicodeMathSymbol{"021FC}{\nVleftrightarrow }{\mathrel}{left right arrow with double vertical stroke}% +\UnicodeMathSymbol{"021FD}{\leftarrowtriangle }{\mathrel}{leftwards open-headed arrow}% +\UnicodeMathSymbol{"021FE}{\rightarrowtriangle }{\mathrel}{rightwards open-headed arrow}% +\UnicodeMathSymbol{"021FF}{\leftrightarrowtriangle }{\mathrel}{left right open-headed arrow}% +\UnicodeMathSymbol{"02200}{\forall }{\mathord}{for all}% +\UnicodeMathSymbol{"02201}{\complement }{\mathord}{complement sign}% +\UnicodeMathSymbol{"02202}{\partial }{\mathalpha}{partial differential}% +\UnicodeMathSymbol{"02203}{\exists }{\mathord}{at least one exists}% +\UnicodeMathSymbol{"02204}{\nexists }{\mathord}{negated exists}% +\UnicodeMathSymbol{"02205}{\varnothing }{\mathord}{circle, slash}% +\UnicodeMathSymbol{"02206}{\increment }{\mathord}{laplacian (delta; nabla\string^2)}% +\UnicodeMathSymbol{"02207}{\nabla }{\mathalpha}{nabla, del, hamilton operator}% +\UnicodeMathSymbol{"02208}{\in }{\mathrel}{set membership, variant}% +\UnicodeMathSymbol{"02209}{\notin }{\mathrel}{negated set membership}% +\UnicodeMathSymbol{"0220A}{\smallin }{\mathrel}{set membership (small set membership)}% +\UnicodeMathSymbol{"0220B}{\ni }{\mathrel}{contains, variant}% +\UnicodeMathSymbol{"0220C}{\nni }{\mathrel}{negated contains, variant}% +\UnicodeMathSymbol{"0220D}{\smallni }{\mathrel}{/ni /owns r: contains (small contains as member)}% +\UnicodeMathSymbol{"0220E}{\QED }{\mathord}{end of proof}% +\UnicodeMathSymbol{"0220F}{\prod }{\mathop}{product operator}% +\UnicodeMathSymbol{"02210}{\coprod }{\mathop}{coproduct operator}% +\UnicodeMathSymbol{"02211}{\sum }{\mathop}{summation operator}% +\UnicodeMathSymbol{"02212}{\minus }{\mathbin}{minus sign}% +\UnicodeMathSymbol{"02213}{\mp }{\mathbin}{minus-or-plus sign}% +\UnicodeMathSymbol{"02214}{\dotplus }{\mathbin}{plus sign, dot above}% +\UnicodeMathSymbol{"02215}{\divslash }{\mathbin}{division slash}% +\UnicodeMathSymbol{"02216}{\smallsetminus }{\mathbin}{small set minus (cf. reverse solidus)}% +\UnicodeMathSymbol{"02217}{\ast }{\mathbin}{centered asterisk}% +\UnicodeMathSymbol{"02218}{\vysmwhtcircle }{\mathbin}{composite function (small circle)}% +\UnicodeMathSymbol{"02219}{\vysmblkcircle }{\mathbin}{bullet operator}% +\UnicodeMathSymbol{"0221A}{\sqrt }{\mathopen}{radical}% +\UnicodeMathSymbol{"0221A}{\surd }{\mathord}{radical}% +\UnicodeMathSymbol{"0221B}{\cuberoot }{\mathopen}{cube root}% +\UnicodeMathSymbol{"0221C}{\fourthroot }{\mathopen}{fourth root}% +\UnicodeMathSymbol{"0221D}{\propto }{\mathrel}{is proportional to}% +\UnicodeMathSymbol{"0221E}{\infty }{\mathord}{infinity}% +\UnicodeMathSymbol{"0221F}{\rightangle }{\mathord}{right (90 degree) angle}% +\UnicodeMathSymbol{"02220}{\angle }{\mathord}{angle}% +\UnicodeMathSymbol{"02221}{\measuredangle }{\mathord}{angle-measured}% +\UnicodeMathSymbol{"02222}{\sphericalangle }{\mathord}{angle-spherical}% +\UnicodeMathSymbol{"02223}{\mid }{\mathrel}{/mid r:}% +\UnicodeMathSymbol{"02224}{\nmid }{\mathrel}{negated mid}% +\UnicodeMathSymbol{"02225}{\parallel }{\mathrel}{parallel}% +\UnicodeMathSymbol{"02226}{\nparallel }{\mathrel}{not parallel}% +\UnicodeMathSymbol{"02227}{\wedge }{\mathbin}{/wedge /land b: logical and}% +\UnicodeMathSymbol{"02228}{\vee }{\mathbin}{/vee /lor b: logical or}% +\UnicodeMathSymbol{"02229}{\cap }{\mathbin}{intersection}% +\UnicodeMathSymbol{"0222A}{\cup }{\mathbin}{union or logical sum}% +\UnicodeMathSymbol{"0222B}{\int }{\mathop}{integral operator}% +\UnicodeMathSymbol{"0222C}{\iint }{\mathop}{double integral operator}% +\UnicodeMathSymbol{"0222D}{\iiint }{\mathop}{triple integral operator}% +\UnicodeMathSymbol{"0222E}{\oint }{\mathop}{contour integral operator}% +\UnicodeMathSymbol{"0222F}{\oiint }{\mathop}{double contour integral operator}% +\UnicodeMathSymbol{"02230}{\oiiint }{\mathop}{triple contour integral operator}% +\UnicodeMathSymbol{"02231}{\intclockwise }{\mathop}{clockwise integral}% +\UnicodeMathSymbol{"02232}{\varointclockwise }{\mathop}{contour integral, clockwise}% +\UnicodeMathSymbol{"02233}{\ointctrclockwise }{\mathop}{contour integral, anticlockwise}% +\UnicodeMathSymbol{"02234}{\therefore }{\mathord}{therefore}% +\UnicodeMathSymbol{"02235}{\because }{\mathord}{because}% +\UnicodeMathSymbol{"02236}{\mathratio }{\mathrel}{ratio}% +\UnicodeMathSymbol{"02237}{\Colon }{\mathrel}{two colons}% +\UnicodeMathSymbol{"02238}{\dotminus }{\mathbin}{minus sign, dot above}% +\UnicodeMathSymbol{"02239}{\dashcolon }{\mathrel}{excess (-:)}% +\UnicodeMathSymbol{"0223A}{\dotsminusdots }{\mathrel}{minus with four dots, geometric properties}% +\UnicodeMathSymbol{"0223B}{\kernelcontraction }{\mathrel}{homothetic}% +\UnicodeMathSymbol{"0223C}{\sim }{\mathrel}{similar}% +\UnicodeMathSymbol{"0223D}{\backsim }{\mathrel}{reverse similar}% +\UnicodeMathSymbol{"0223E}{\invlazys }{\mathbin}{most positive [inverted lazy s]}% +\UnicodeMathSymbol{"0223F}{\sinewave }{\mathord}{sine wave}% +\UnicodeMathSymbol{"02240}{\wr }{\mathbin}{wreath product}% +\UnicodeMathSymbol{"02241}{\nsim }{\mathrel}{not similar}% +\UnicodeMathSymbol{"02242}{\eqsim }{\mathrel}{equals, similar}% +\UnicodeMathSymbol{"02243}{\simeq }{\mathrel}{similar, equals}% +\UnicodeMathSymbol{"02244}{\nsime }{\mathrel}{not similar, equals}% +\UnicodeMathSymbol{"02243}{\sime }{\mathrel}{similar, equals (alias)}% +\UnicodeMathSymbol{"02244}{\nsimeq }{\mathrel}{not similar, equals (alias)}% +\UnicodeMathSymbol{"02245}{\cong }{\mathrel}{congruent with}% +\UnicodeMathSymbol{"02246}{\simneqq }{\mathrel}{similar, not equals [vert only for 9573 entity]}% +\UnicodeMathSymbol{"02247}{\ncong }{\mathrel}{not congruent with}% +\UnicodeMathSymbol{"02248}{\approx }{\mathrel}{approximate}% +\UnicodeMathSymbol{"02249}{\napprox }{\mathrel}{not approximate}% +\UnicodeMathSymbol{"0224A}{\approxeq }{\mathrel}{approximate, equals}% +\UnicodeMathSymbol{"0224B}{\approxident }{\mathrel}{approximately identical to}% +\UnicodeMathSymbol{"0224C}{\backcong }{\mathrel}{all equal to}% +\UnicodeMathSymbol{"0224D}{\asymp }{\mathrel}{asymptotically equal to}% +\UnicodeMathSymbol{"0224E}{\Bumpeq }{\mathrel}{bumpy equals}% +\UnicodeMathSymbol{"0224F}{\bumpeq }{\mathrel}{bumpy equals, equals}% +\UnicodeMathSymbol{"02250}{\doteq }{\mathrel}{equals, single dot above}% +\UnicodeMathSymbol{"02251}{\Doteq }{\mathrel}{/doteqdot /doteq r: equals, even dots}% +\UnicodeMathSymbol{"02252}{\fallingdotseq }{\mathrel}{equals, falling dots}% +\UnicodeMathSymbol{"02253}{\risingdotseq }{\mathrel}{equals, rising dots}% +\UnicodeMathSymbol{"02254}{\coloneq }{\mathrel}{colon, equals}% +\UnicodeMathSymbol{"02255}{\eqcolon }{\mathrel}{equals, colon}% +\UnicodeMathSymbol{"02256}{\eqcirc }{\mathrel}{circle on equals sign}% +\UnicodeMathSymbol{"02257}{\circeq }{\mathrel}{circle, equals}% +\UnicodeMathSymbol{"02258}{\arceq }{\mathrel}{arc, equals; corresponds to}% +\UnicodeMathSymbol{"02259}{\wedgeq }{\mathrel}{corresponds to (wedge, equals)}% +\UnicodeMathSymbol{"0225A}{\veeeq }{\mathrel}{logical or, equals}% +\UnicodeMathSymbol{"0225B}{\stareq }{\mathrel}{star equals}% +\UnicodeMathSymbol{"0225C}{\triangleq }{\mathrel}{triangle, equals}% +\UnicodeMathSymbol{"0225D}{\eqdef }{\mathrel}{equals by definition}% +\UnicodeMathSymbol{"0225E}{\measeq }{\mathrel}{measured by (m over equals)}% +\UnicodeMathSymbol{"0225F}{\questeq }{\mathrel}{equal with questionmark}% +\UnicodeMathSymbol{"02260}{\ne }{\mathrel}{/ne /neq r: not equal}% +\UnicodeMathSymbol{"02261}{\equiv }{\mathrel}{identical with}% +\UnicodeMathSymbol{"02262}{\nequiv }{\mathrel}{not identical with}% +\UnicodeMathSymbol{"02263}{\Equiv }{\mathrel}{strict equivalence (4 lines)}% +\UnicodeMathSymbol{"02264}{\leq }{\mathrel}{/leq /le r: less-than-or-equal}% +\UnicodeMathSymbol{"02265}{\geq }{\mathrel}{/geq /ge r: greater-than-or-equal}% +\UnicodeMathSymbol{"02266}{\leqq }{\mathrel}{less, double equals}% +\UnicodeMathSymbol{"02267}{\geqq }{\mathrel}{greater, double equals}% +\UnicodeMathSymbol{"02268}{\lneqq }{\mathrel}{less, not double equals}% +\UnicodeMathSymbol{"02269}{\gneqq }{\mathrel}{greater, not double equals}% +\UnicodeMathSymbol{"0226A}{\ll }{\mathrel}{much less than, type 2}% +\UnicodeMathSymbol{"0226B}{\gg }{\mathrel}{much greater than, type 2}% +\UnicodeMathSymbol{"0226C}{\between }{\mathrel}{between}% +\UnicodeMathSymbol{"0226D}{\nasymp }{\mathrel}{not asymptotically equal to}% +\UnicodeMathSymbol{"0226E}{\nless }{\mathrel}{not less-than}% +\UnicodeMathSymbol{"0226F}{\ngtr }{\mathrel}{not greater-than}% +\UnicodeMathSymbol{"02270}{\nleq }{\mathrel}{not less-than-or-equal}% +\UnicodeMathSymbol{"02271}{\ngeq }{\mathrel}{not greater-than-or-equal}% +\UnicodeMathSymbol{"02272}{\lesssim }{\mathrel}{less, similar}% +\UnicodeMathSymbol{"02273}{\gtrsim }{\mathrel}{greater, similar}% +\UnicodeMathSymbol{"02274}{\nlesssim }{\mathrel}{not less, similar}% +\UnicodeMathSymbol{"02275}{\ngtrsim }{\mathrel}{not greater, similar}% +\UnicodeMathSymbol{"02276}{\lessgtr }{\mathrel}{less, greater}% +\UnicodeMathSymbol{"02277}{\gtrless }{\mathrel}{greater, less}% +\UnicodeMathSymbol{"02278}{\nlessgtr }{\mathrel}{not less, greater}% +\UnicodeMathSymbol{"02279}{\ngtrless }{\mathrel}{not greater, less}% +\UnicodeMathSymbol{"0227A}{\prec }{\mathrel}{precedes}% +\UnicodeMathSymbol{"0227B}{\succ }{\mathrel}{succeeds}% +\UnicodeMathSymbol{"0227C}{\preccurlyeq }{\mathrel}{precedes, curly equals}% +\UnicodeMathSymbol{"0227D}{\succcurlyeq }{\mathrel}{succeeds, curly equals}% +\UnicodeMathSymbol{"0227E}{\precsim }{\mathrel}{precedes, similar}% +\UnicodeMathSymbol{"0227F}{\succsim }{\mathrel}{succeeds, similar}% +\UnicodeMathSymbol{"02280}{\nprec }{\mathrel}{not precedes}% +\UnicodeMathSymbol{"02281}{\nsucc }{\mathrel}{not succeeds}% +\UnicodeMathSymbol{"02282}{\subset }{\mathrel}{subset or is implied by}% +\UnicodeMathSymbol{"02283}{\supset }{\mathrel}{superset or implies}% +\UnicodeMathSymbol{"02284}{\nsubset }{\mathrel}{not subset, variant [slash negation]}% +\UnicodeMathSymbol{"02285}{\nsupset }{\mathrel}{not superset, variant [slash negation]}% +\UnicodeMathSymbol{"02286}{\subseteq }{\mathrel}{subset, equals}% +\UnicodeMathSymbol{"02287}{\supseteq }{\mathrel}{superset, equals}% +\UnicodeMathSymbol{"02288}{\nsubseteq }{\mathrel}{not subset, equals}% +\UnicodeMathSymbol{"02289}{\nsupseteq }{\mathrel}{not superset, equals}% +\UnicodeMathSymbol{"0228A}{\subsetneq }{\mathrel}{subset, not equals}% +\UnicodeMathSymbol{"0228B}{\supsetneq }{\mathrel}{superset, not equals}% +\UnicodeMathSymbol{"0228C}{\cupleftarrow }{\mathbin}{multiset}% +\UnicodeMathSymbol{"0228D}{\cupdot }{\mathbin}{union, with dot}% +\UnicodeMathSymbol{"0228E}{\uplus }{\mathbin}{plus sign in union}% +\UnicodeMathSymbol{"0228F}{\sqsubset }{\mathrel}{square subset}% +\UnicodeMathSymbol{"02290}{\sqsupset }{\mathrel}{square superset}% +\UnicodeMathSymbol{"02291}{\sqsubseteq }{\mathrel}{square subset, equals}% +\UnicodeMathSymbol{"02292}{\sqsupseteq }{\mathrel}{square superset, equals}% +\UnicodeMathSymbol{"02293}{\sqcap }{\mathbin}{square intersection}% +\UnicodeMathSymbol{"02294}{\sqcup }{\mathbin}{square union}% +\UnicodeMathSymbol{"02295}{\oplus }{\mathbin}{plus sign in circle}% +\UnicodeMathSymbol{"02296}{\ominus }{\mathbin}{minus sign in circle}% +\UnicodeMathSymbol{"02297}{\otimes }{\mathbin}{multiply sign in circle}% +\UnicodeMathSymbol{"02298}{\oslash }{\mathbin}{solidus in circle}% +\UnicodeMathSymbol{"02299}{\odot }{\mathbin}{middle dot in circle}% +\UnicodeMathSymbol{"0229A}{\circledcirc }{\mathbin}{small circle in circle}% +\UnicodeMathSymbol{"0229B}{\circledast }{\mathbin}{asterisk in circle}% +\UnicodeMathSymbol{"0229C}{\circledequal }{\mathbin}{equal in circle}% +\UnicodeMathSymbol{"0229D}{\circleddash }{\mathbin}{hyphen in circle}% +\UnicodeMathSymbol{"0229E}{\boxplus }{\mathbin}{plus sign in box}% +\UnicodeMathSymbol{"0229F}{\boxminus }{\mathbin}{minus sign in box}% +\UnicodeMathSymbol{"022A0}{\boxtimes }{\mathbin}{multiply sign in box}% +\UnicodeMathSymbol{"022A1}{\boxdot }{\mathbin}{/dotsquare /boxdot b: small dot in box}% +\UnicodeMathSymbol{"022A2}{\vdash }{\mathrel}{vertical, dash}% +\UnicodeMathSymbol{"022A3}{\dashv }{\mathrel}{dash, vertical}% +\UnicodeMathSymbol{"022A4}{\top }{\mathord}{top}% +\UnicodeMathSymbol{"022A5}{\bot }{\mathord}{bottom}% +\UnicodeMathSymbol{"022A6}{\assert }{\mathrel}{assertion (vertical, short dash)}% +\UnicodeMathSymbol{"022A7}{\models }{\mathrel}{models (vertical, short double dash)}% +\UnicodeMathSymbol{"022A8}{\vDash }{\mathrel}{vertical, double dash}% +\UnicodeMathSymbol{"022A9}{\Vdash }{\mathrel}{double vertical, dash}% +\UnicodeMathSymbol{"022AA}{\Vvdash }{\mathrel}{triple vertical, dash}% +\UnicodeMathSymbol{"022AB}{\VDash }{\mathrel}{double vert, double dash}% +\UnicodeMathSymbol{"022AC}{\nvdash }{\mathrel}{not vertical, dash}% +\UnicodeMathSymbol{"022AD}{\nvDash }{\mathrel}{not vertical, double dash}% +\UnicodeMathSymbol{"022AE}{\nVdash }{\mathrel}{not double vertical, dash}% +\UnicodeMathSymbol{"022AF}{\nVDash }{\mathrel}{not double vert, double dash}% +\UnicodeMathSymbol{"022B0}{\prurel }{\mathrel}{element precedes under relation}% +\UnicodeMathSymbol{"022B1}{\scurel }{\mathrel}{succeeds under relation}% +\UnicodeMathSymbol{"022B2}{\vartriangleleft }{\mathrel}{left triangle, open, variant}% +\UnicodeMathSymbol{"022B3}{\vartriangleright }{\mathrel}{right triangle, open, variant}% +\UnicodeMathSymbol{"022B4}{\trianglelefteq }{\mathrel}{left triangle, equals}% +\UnicodeMathSymbol{"022B5}{\trianglerighteq }{\mathrel}{right triangle, equals}% +\UnicodeMathSymbol{"022B6}{\origof }{\mathrel}{original of}% +\UnicodeMathSymbol{"022B7}{\imageof }{\mathrel}{image of}% +\UnicodeMathSymbol{"022B8}{\multimap }{\mathrel}{/multimap a:}% +\UnicodeMathSymbol{"022B9}{\hermitmatrix }{\mathord}{hermitian conjugate matrix}% +\UnicodeMathSymbol{"022BA}{\intercal }{\mathbin}{intercal}% +\UnicodeMathSymbol{"022BB}{\veebar }{\mathbin}{logical or, bar below (large vee); exclusive disjunction}% +\UnicodeMathSymbol{"022BC}{\barwedge }{\mathbin}{bar, wedge (large wedge)}% +\UnicodeMathSymbol{"022BD}{\barvee }{\mathbin}{bar, vee (large vee)}% +\UnicodeMathSymbol{"022BE}{\measuredrightangle }{\mathord}{right angle-measured [with arc]}% +\UnicodeMathSymbol{"022BF}{\varlrtriangle }{\mathord}{right triangle}% +\UnicodeMathSymbol{"022C0}{\bigwedge }{\mathop}{logical and operator}% +\UnicodeMathSymbol{"022C1}{\bigvee }{\mathop}{logical or operator}% +\UnicodeMathSymbol{"022C2}{\bigcap }{\mathop}{intersection operator}% +\UnicodeMathSymbol{"022C3}{\bigcup }{\mathop}{union operator}% +\UnicodeMathSymbol{"022C4}{\smwhtdiamond }{\mathbin}{white diamond}% +\UnicodeMathSymbol{"022C5}{\cdot }{\mathbin}{small middle dot}% +\UnicodeMathSymbol{"022C6}{\star }{\mathbin}{small star, filled, low}% +\UnicodeMathSymbol{"022C7}{\divideontimes }{\mathbin}{division on times}% +\UnicodeMathSymbol{"022C8}{\bowtie }{\mathrel}{bowtie}% +\UnicodeMathSymbol{"022C9}{\ltimes }{\mathbin}{times sign, left closed}% +\UnicodeMathSymbol{"022CA}{\rtimes }{\mathbin}{times sign, right closed}% +\UnicodeMathSymbol{"022CB}{\leftthreetimes }{\mathbin}{left semidirect product}% +\UnicodeMathSymbol{"022CC}{\rightthreetimes }{\mathbin}{right semidirect product}% +\UnicodeMathSymbol{"022CD}{\backsimeq }{\mathrel}{reverse similar, equals}% +\UnicodeMathSymbol{"022CE}{\curlyvee }{\mathbin}{curly logical or}% +\UnicodeMathSymbol{"022CF}{\curlywedge }{\mathbin}{curly logical and}% +\UnicodeMathSymbol{"022D0}{\Subset }{\mathrel}{double subset}% +\UnicodeMathSymbol{"022D1}{\Supset }{\mathrel}{double superset}% +\UnicodeMathSymbol{"022D2}{\Cap }{\mathbin}{/cap /doublecap b: double intersection}% +\UnicodeMathSymbol{"022D3}{\Cup }{\mathbin}{/cup /doublecup b: double union}% +\UnicodeMathSymbol{"022D4}{\pitchfork }{\mathrel}{pitchfork}% +\UnicodeMathSymbol{"022D5}{\equalparallel }{\mathrel}{parallel, equal; equal or parallel}% +\UnicodeMathSymbol{"022D6}{\lessdot }{\mathrel}{less than, with dot}% +\UnicodeMathSymbol{"022D7}{\gtrdot }{\mathrel}{greater than, with dot}% +\UnicodeMathSymbol{"022D8}{\lll }{\mathrel}{/ll /lll /llless r: triple less-than}% +\UnicodeMathSymbol{"022D9}{\ggg }{\mathrel}{/ggg /gg /gggtr r: triple greater-than}% +\UnicodeMathSymbol{"022DA}{\lesseqgtr }{\mathrel}{less, equals, greater}% +\UnicodeMathSymbol{"022DB}{\gtreqless }{\mathrel}{greater, equals, less}% +\UnicodeMathSymbol{"022DC}{\eqless }{\mathrel}{equal-or-less}% +\UnicodeMathSymbol{"022DD}{\eqgtr }{\mathrel}{equal-or-greater}% +\UnicodeMathSymbol{"022DE}{\curlyeqprec }{\mathrel}{curly equals, precedes}% +\UnicodeMathSymbol{"022DF}{\curlyeqsucc }{\mathrel}{curly equals, succeeds}% +\UnicodeMathSymbol{"022E0}{\npreccurlyeq }{\mathrel}{not precedes, curly equals}% +\UnicodeMathSymbol{"022E1}{\nsucccurlyeq }{\mathrel}{not succeeds, curly equals}% +\UnicodeMathSymbol{"022E2}{\nsqsubseteq }{\mathrel}{not, square subset, equals}% +\UnicodeMathSymbol{"022E3}{\nsqsupseteq }{\mathrel}{not, square superset, equals}% +\UnicodeMathSymbol{"022E4}{\sqsubsetneq }{\mathrel}{square subset, not equals}% +\UnicodeMathSymbol{"022E5}{\sqsupsetneq }{\mathrel}{square superset, not equals}% +\UnicodeMathSymbol{"022E6}{\lnsim }{\mathrel}{less, not similar}% +\UnicodeMathSymbol{"022E7}{\gnsim }{\mathrel}{greater, not similar}% +\UnicodeMathSymbol{"022E8}{\precnsim }{\mathrel}{precedes, not similar}% +\UnicodeMathSymbol{"022E9}{\succnsim }{\mathrel}{succeeds, not similar}% +\UnicodeMathSymbol{"022EA}{\nvartriangleleft }{\mathrel}{not left triangle}% +\UnicodeMathSymbol{"022EB}{\nvartriangleright }{\mathrel}{not right triangle}% +\UnicodeMathSymbol{"022EC}{\ntrianglelefteq }{\mathrel}{not left triangle, equals}% +\UnicodeMathSymbol{"022ED}{\ntrianglerighteq }{\mathrel}{not right triangle, equals}% +\UnicodeMathSymbol{"022EE}{\vdots }{\mathrel}{vertical ellipsis}% +\UnicodeMathSymbol{"022EF}{\unicodecdots }{\mathord}{three dots, centered}% +\UnicodeMathSymbol{"022F0}{\adots }{\mathrel}{three dots, ascending}% +\UnicodeMathSymbol{"022F1}{\ddots }{\mathrel}{three dots, descending}% +\UnicodeMathSymbol{"022F2}{\disin }{\mathrel}{element of with long horizontal stroke}% +\UnicodeMathSymbol{"022F3}{\varisins }{\mathrel}{element of with vertical bar at end of horizontal stroke}% +\UnicodeMathSymbol{"022F4}{\isins }{\mathrel}{small element of with vertical bar at end of horizontal stroke}% +\UnicodeMathSymbol{"022F5}{\isindot }{\mathrel}{element of with dot above}% +\UnicodeMathSymbol{"022F6}{\varisinobar }{\mathrel}{element of with overbar}% +\UnicodeMathSymbol{"022F7}{\isinobar }{\mathrel}{small element of with overbar}% +\UnicodeMathSymbol{"022F8}{\isinvb }{\mathrel}{element of with underbar}% +\UnicodeMathSymbol{"022F9}{\isinE }{\mathrel}{element of with two horizontal strokes}% +\UnicodeMathSymbol{"022FA}{\nisd }{\mathrel}{contains with long horizontal stroke}% +\UnicodeMathSymbol{"022FB}{\varnis }{\mathrel}{contains with vertical bar at end of horizontal stroke}% +\UnicodeMathSymbol{"022FC}{\nis }{\mathrel}{small contains with vertical bar at end of horizontal stroke}% +\UnicodeMathSymbol{"022FD}{\varniobar }{\mathrel}{contains with overbar}% +\UnicodeMathSymbol{"022FE}{\niobar }{\mathrel}{small contains with overbar}% +\UnicodeMathSymbol{"022FF}{\bagmember }{\mathrel}{z notation bag membership}% +\UnicodeMathSymbol{"02300}{\diameter }{\mathord}{diameter sign}% +\UnicodeMathSymbol{"02302}{\house }{\mathord}{house}% +\UnicodeMathSymbol{"02305}{\varbarwedge }{\mathbin}{/barwedge b: logical and, bar above [projective (bar over small wedge)]}% +\UnicodeMathSymbol{"02306}{\vardoublebarwedge }{\mathbin}{/doublebarwedge b: logical and, double bar above [perspective (double bar over small wedge)]}% +\UnicodeMathSymbol{"02308}{\lceil }{\mathopen}{left ceiling}% +\UnicodeMathSymbol{"02309}{\rceil }{\mathclose}{right ceiling}% +\UnicodeMathSymbol{"0230A}{\lfloor }{\mathopen}{left floor}% +\UnicodeMathSymbol{"0230B}{\rfloor }{\mathclose}{right floor}% +\UnicodeMathSymbol{"02310}{\invnot }{\mathord}{reverse not}% +\UnicodeMathSymbol{"02311}{\sqlozenge }{\mathord}{square lozenge}% +\UnicodeMathSymbol{"02312}{\profline }{\mathord}{profile of a line}% +\UnicodeMathSymbol{"02313}{\profsurf }{\mathord}{profile of a surface}% +\UnicodeMathSymbol{"02317}{\viewdata }{\mathord}{viewdata square}% +\UnicodeMathSymbol{"02319}{\turnednot }{\mathord}{turned not sign}% +\UnicodeMathSymbol{"0231C}{\ulcorner }{\mathopen}{upper left corner}% +\UnicodeMathSymbol{"0231D}{\urcorner }{\mathclose}{upper right corner}% +\UnicodeMathSymbol{"0231E}{\llcorner }{\mathopen}{lower left corner}% +\UnicodeMathSymbol{"0231F}{\lrcorner }{\mathclose}{lower right corner}% +\UnicodeMathSymbol{"02320}{\inttop }{\mathord}{top half integral}% +\UnicodeMathSymbol{"02321}{\intbottom }{\mathord}{bottom half integral}% +\UnicodeMathSymbol{"02322}{\frown }{\mathrel}{down curve}% +\UnicodeMathSymbol{"02323}{\smile }{\mathrel}{up curve}% +\UnicodeMathSymbol{"0232C}{\varhexagonlrbonds }{\mathord}{six carbon ring, corner down, double bonds lower right etc}% +\UnicodeMathSymbol{"02332}{\conictaper }{\mathord}{conical taper }% +\UnicodeMathSymbol{"02336}{\topbot }{\mathord}{top and bottom}% +\UnicodeMathSymbol{"0233D}{\obar }{\mathbin}{circle with vertical bar}% +\UnicodeMathSymbol{"0233F}{\APLnotslash }{\mathrel}{solidus, bar through (apl functional symbol slash bar)}% +\UnicodeMathSymbol{"02340}{\APLnotbackslash }{\mathord}{apl functional symbol backslash bar}% +\UnicodeMathSymbol{"02353}{\APLboxupcaret }{\mathord}{boxed up caret}% +\UnicodeMathSymbol{"02370}{\APLboxquestion }{\mathord}{boxed question mark}% +\UnicodeMathSymbol{"0237C}{\rangledownzigzagarrow }{\mathord}{right angle with downwards zigzag arrow}% +\UnicodeMathSymbol{"02394}{\hexagon }{\mathord}{horizontal benzene ring [hexagon flat open]}% +\UnicodeMathSymbol{"0239B}{\lparenuend }{\mathord}{left parenthesis upper hook}% +\UnicodeMathSymbol{"0239C}{\lparenextender }{\mathord}{left parenthesis extension}% +\UnicodeMathSymbol{"0239D}{\lparenlend }{\mathord}{left parenthesis lower hook}% +\UnicodeMathSymbol{"0239E}{\rparenuend }{\mathord}{right parenthesis upper hook}% +\UnicodeMathSymbol{"0239F}{\rparenextender }{\mathord}{right parenthesis extension}% +\UnicodeMathSymbol{"023A0}{\rparenlend }{\mathord}{right parenthesis lower hook}% +\UnicodeMathSymbol{"023A1}{\lbrackuend }{\mathord}{left square bracket upper corner}% +\UnicodeMathSymbol{"023A2}{\lbrackextender }{\mathord}{left square bracket extension}% +\UnicodeMathSymbol{"023A3}{\lbracklend }{\mathord}{left square bracket lower corner}% +\UnicodeMathSymbol{"023A4}{\rbrackuend }{\mathord}{right square bracket upper corner}% +\UnicodeMathSymbol{"023A5}{\rbrackextender }{\mathord}{right square bracket extension}% +\UnicodeMathSymbol{"023A6}{\rbracklend }{\mathord}{right square bracket lower corner}% +\UnicodeMathSymbol{"023A7}{\lbraceuend }{\mathord}{left curly bracket upper hook}% +\UnicodeMathSymbol{"023A8}{\lbracemid }{\mathord}{left curly bracket middle piece}% +\UnicodeMathSymbol{"023A9}{\lbracelend }{\mathord}{left curly bracket lower hook}% +\UnicodeMathSymbol{"023AA}{\vbraceextender }{\mathord}{curly bracket extension}% +\UnicodeMathSymbol{"023AB}{\rbraceuend }{\mathord}{right curly bracket upper hook}% +\UnicodeMathSymbol{"023AC}{\rbracemid }{\mathord}{right curly bracket middle piece}% +\UnicodeMathSymbol{"023AD}{\rbracelend }{\mathord}{right curly bracket lower hook}% +\UnicodeMathSymbol{"023AE}{\intextender }{\mathord}{integral extension}% +\UnicodeMathSymbol{"023AF}{\harrowextender }{\mathord}{horizontal line extension (used to extend arrows)}% +\UnicodeMathSymbol{"023B0}{\lmoustache }{\mathopen}{upper left or lower right curly bracket section}% +\UnicodeMathSymbol{"023B1}{\rmoustache }{\mathclose}{upper right or lower left curly bracket section}% +\UnicodeMathSymbol{"023B2}{\sumtop }{\mathord}{summation top}% +\UnicodeMathSymbol{"023B3}{\sumbottom }{\mathord}{summation bottom}% +\UnicodeMathSymbol{"023B4}{\overbracket }{\mathover}{top square bracket}% +\UnicodeMathSymbol{"023B5}{\underbracket }{\mathunder}{bottom square bracket}% +\UnicodeMathSymbol{"023B6}{\bbrktbrk }{\mathord}{bottom square bracket over top square bracket}% +\UnicodeMathSymbol{"023B7}{\sqrtbottom }{\mathord}{radical symbol bottom}% +\UnicodeMathSymbol{"023B8}{\lvboxline }{\mathord}{left vertical box line}% +\UnicodeMathSymbol{"023B9}{\rvboxline }{\mathord}{right vertical box line}% +\UnicodeMathSymbol{"023CE}{\varcarriagereturn }{\mathord}{return symbol}% +\UnicodeMathSymbol{"023DC}{\overparen }{\mathover}{top parenthesis (mathematical use)}% +\UnicodeMathSymbol{"023DD}{\underparen }{\mathunder}{bottom parenthesis (mathematical use)}% +\UnicodeMathSymbol{"023DE}{\overbrace }{\mathover}{top curly bracket (mathematical use)}% +\UnicodeMathSymbol{"023DF}{\underbrace }{\mathunder}{bottom curly bracket (mathematical use)}% +\UnicodeMathSymbol{"023E0}{\obrbrak }{\mathord}{top tortoise shell bracket (mathematical use)}% +\UnicodeMathSymbol{"023E1}{\ubrbrak }{\mathord}{bottom tortoise shell bracket (mathematical use)}% +\UnicodeMathSymbol{"023E2}{\trapezium }{\mathord}{white trapezium}% +\UnicodeMathSymbol{"023E3}{\benzenr }{\mathord}{benzene ring with circle}% +\UnicodeMathSymbol{"023E4}{\strns }{\mathord}{straightness}% +\UnicodeMathSymbol{"023E5}{\fltns }{\mathord}{flatness}% +\UnicodeMathSymbol{"023E6}{\accurrent }{\mathord}{ac current}% +\UnicodeMathSymbol{"023E7}{\elinters }{\mathord}{electrical intersection}% +\UnicodeMathSymbol{"02422}{\blanksymbol }{\mathord}{blank symbol}% +\UnicodeMathSymbol{"02423}{\mathvisiblespace }{\mathord}{open box}% +\UnicodeMathSymbol{"02506}{\bdtriplevdash }{\mathord}{doubly broken vert}% +\UnicodeMathSymbol{"02580}{\blockuphalf }{\mathord}{upper half block}% +\UnicodeMathSymbol{"02584}{\blocklowhalf }{\mathord}{lower half block}% +\UnicodeMathSymbol{"02588}{\blockfull }{\mathord}{full block}% +\UnicodeMathSymbol{"0258C}{\blocklefthalf }{\mathord}{left half block}% +\UnicodeMathSymbol{"02590}{\blockrighthalf }{\mathord}{right half block}% +\UnicodeMathSymbol{"02591}{\blockqtrshaded }{\mathord}{25\% shaded block}% +\UnicodeMathSymbol{"02592}{\blockhalfshaded }{\mathord}{50\% shaded block}% +\UnicodeMathSymbol{"02593}{\blockthreeqtrshaded }{\mathord}{75\% shaded block}% +\UnicodeMathSymbol{"025A0}{\mdlgblksquare }{\mathord}{square, filled}% +\UnicodeMathSymbol{"025A1}{\mdlgwhtsquare }{\mathord}{square, open}% +\UnicodeMathSymbol{"025A2}{\squoval }{\mathord}{white square with rounded corners}% +\UnicodeMathSymbol{"025A3}{\blackinwhitesquare }{\mathord}{white square containing black small square}% +\UnicodeMathSymbol{"025A4}{\squarehfill }{\mathord}{square, horizontal rule filled}% +\UnicodeMathSymbol{"025A5}{\squarevfill }{\mathord}{square, vertical rule filled}% +\UnicodeMathSymbol{"025A6}{\squarehvfill }{\mathord}{square with orthogonal crosshatch fill}% +\UnicodeMathSymbol{"025A7}{\squarenwsefill }{\mathord}{square, nw-to-se rule filled}% +\UnicodeMathSymbol{"025A8}{\squareneswfill }{\mathord}{square, ne-to-sw rule filled}% +\UnicodeMathSymbol{"025A9}{\squarecrossfill }{\mathord}{square with diagonal crosshatch fill}% +\UnicodeMathSymbol{"025AA}{\smblksquare }{\mathord}{/blacksquare - sq bullet, filled}% +\UnicodeMathSymbol{"025AB}{\smwhtsquare }{\mathord}{white small square}% +\UnicodeMathSymbol{"025AC}{\hrectangleblack }{\mathord}{black rectangle}% +\UnicodeMathSymbol{"025AD}{\hrectangle }{\mathord}{horizontal rectangle, open}% +\UnicodeMathSymbol{"025AE}{\vrectangleblack }{\mathord}{black vertical rectangle}% +\UnicodeMathSymbol{"025AF}{\vrectangle }{\mathord}{rectangle, white (vertical)}% +\UnicodeMathSymbol{"025B0}{\parallelogramblack }{\mathord}{black parallelogram}% +\UnicodeMathSymbol{"025B1}{\parallelogram }{\mathord}{parallelogram, open}% +\UnicodeMathSymbol{"025B2}{\bigblacktriangleup }{\mathord}{black up-pointing triangle}% +\UnicodeMathSymbol{"025B3}{\bigtriangleup }{\mathbin}{big up triangle, open}% +\UnicodeMathSymbol{"025B4}{\blacktriangle }{\mathord}{up triangle, filled}% +\UnicodeMathSymbol{"025B5}{\vartriangle }{\mathrel}{/triangle - up triangle, open}% +\UnicodeMathSymbol{"025B6}{\blacktriangleright }{\mathord}{(large) right triangle, filled}% +\UnicodeMathSymbol{"025B7}{\triangleright }{\mathbin}{(large) right triangle, open; z notation range restriction}% +\UnicodeMathSymbol{"025B8}{\smallblacktriangleright }{\mathord}{right triangle, filled}% +\UnicodeMathSymbol{"025B9}{\smalltriangleright }{\mathord}{right triangle, open}% +\UnicodeMathSymbol{"025BA}{\blackpointerright }{\mathord}{black right-pointing pointer}% +\UnicodeMathSymbol{"025BB}{\whitepointerright }{\mathord}{white right-pointing pointer}% +\UnicodeMathSymbol{"025BC}{\bigblacktriangledown }{\mathord}{big down triangle, filled}% +\UnicodeMathSymbol{"025BD}{\bigtriangledown }{\mathord}{big down triangle, open}% +\UnicodeMathSymbol{"025BE}{\blacktriangledown }{\mathord}{down triangle, filled}% +\UnicodeMathSymbol{"025BF}{\triangledown }{\mathord}{down triangle, open}% +\UnicodeMathSymbol{"025C0}{\blacktriangleleft }{\mathord}{(large) left triangle, filled}% +\UnicodeMathSymbol{"025C1}{\triangleleft }{\mathbin}{(large) left triangle, open; z notation domain restriction}% +\UnicodeMathSymbol{"025C2}{\smallblacktriangleleft }{\mathord}{left triangle, filled}% +\UnicodeMathSymbol{"025C3}{\smalltriangleleft }{\mathord}{left triangle, open}% +\UnicodeMathSymbol{"025C4}{\blackpointerleft }{\mathord}{black left-pointing pointer}% +\UnicodeMathSymbol{"025C5}{\whitepointerleft }{\mathord}{white left-pointing pointer}% +\UnicodeMathSymbol{"025C6}{\mdlgblkdiamond }{\mathord}{black diamond}% +\UnicodeMathSymbol{"025C7}{\mdlgwhtdiamond }{\mathord}{white diamond; diamond, open}% +\UnicodeMathSymbol{"025C8}{\blackinwhitediamond }{\mathord}{white diamond containing black small diamond}% +\UnicodeMathSymbol{"025C9}{\fisheye }{\mathord}{fisheye}% +\UnicodeMathSymbol{"025CA}{\mdlgwhtlozenge }{\mathord}{lozenge or total mark}% +\UnicodeMathSymbol{"025CB}{\mdlgwhtcircle }{\mathbin}{medium large circle}% +\UnicodeMathSymbol{"025CC}{\dottedcircle }{\mathord}{dotted circle}% +\UnicodeMathSymbol{"025CD}{\circlevertfill }{\mathord}{circle with vertical fill}% +\UnicodeMathSymbol{"025CE}{\bullseye }{\mathord}{bullseye}% +\UnicodeMathSymbol{"025CF}{\mdlgblkcircle }{\mathord}{circle, filled}% +\UnicodeMathSymbol{"025D0}{\circlelefthalfblack }{\mathord}{circle, filled left half [harvey ball]}% +\UnicodeMathSymbol{"025D1}{\circlerighthalfblack }{\mathord}{circle, filled right half}% +\UnicodeMathSymbol{"025D2}{\circlebottomhalfblack }{\mathord}{circle, filled bottom half}% +\UnicodeMathSymbol{"025D3}{\circletophalfblack }{\mathord}{circle, filled top half}% +\UnicodeMathSymbol{"025D4}{\circleurquadblack }{\mathord}{circle with upper right quadrant black}% +\UnicodeMathSymbol{"025D5}{\blackcircleulquadwhite }{\mathord}{circle with all but upper left quadrant black}% +\UnicodeMathSymbol{"025D6}{\blacklefthalfcircle }{\mathord}{left half black circle}% +\UnicodeMathSymbol{"025D7}{\blackrighthalfcircle }{\mathord}{right half black circle}% +\UnicodeMathSymbol{"025D8}{\inversebullet }{\mathord}{inverse bullet }% +\UnicodeMathSymbol{"025D9}{\inversewhitecircle }{\mathord}{inverse white circle}% +\UnicodeMathSymbol{"025DA}{\invwhiteupperhalfcircle }{\mathord}{upper half inverse white circle}% +\UnicodeMathSymbol{"025DB}{\invwhitelowerhalfcircle }{\mathord}{lower half inverse white circle}% +\UnicodeMathSymbol{"025DC}{\ularc }{\mathord}{upper left quadrant circular arc}% +\UnicodeMathSymbol{"025DD}{\urarc }{\mathord}{upper right quadrant circular arc}% +\UnicodeMathSymbol{"025DE}{\lrarc }{\mathord}{lower right quadrant circular arc}% +\UnicodeMathSymbol{"025DF}{\llarc }{\mathord}{lower left quadrant circular arc}% +\UnicodeMathSymbol{"025E0}{\topsemicircle }{\mathord}{upper half circle}% +\UnicodeMathSymbol{"025E1}{\botsemicircle }{\mathord}{lower half circle}% +\UnicodeMathSymbol{"025E2}{\lrblacktriangle }{\mathord}{lower right triangle, filled}% +\UnicodeMathSymbol{"025E3}{\llblacktriangle }{\mathord}{lower left triangle, filled}% +\UnicodeMathSymbol{"025E4}{\ulblacktriangle }{\mathord}{upper left triangle, filled}% +\UnicodeMathSymbol{"025E5}{\urblacktriangle }{\mathord}{upper right triangle, filled}% +\UnicodeMathSymbol{"025E6}{\smwhtcircle }{\mathord}{white bullet}% +\UnicodeMathSymbol{"025E7}{\squareleftblack }{\mathord}{square, filled left half}% +\UnicodeMathSymbol{"025E8}{\squarerightblack }{\mathord}{square, filled right half}% +\UnicodeMathSymbol{"025E9}{\squareulblack }{\mathord}{square, filled top left corner}% +\UnicodeMathSymbol{"025EA}{\squarelrblack }{\mathord}{square, filled bottom right corner}% +\UnicodeMathSymbol{"025EB}{\boxbar }{\mathbin}{vertical bar in box}% +\UnicodeMathSymbol{"025EC}{\trianglecdot }{\mathord}{triangle with centered dot}% +\UnicodeMathSymbol{"025ED}{\triangleleftblack }{\mathord}{up-pointing triangle with left half black}% +\UnicodeMathSymbol{"025EE}{\trianglerightblack }{\mathord}{up-pointing triangle with right half black}% +\UnicodeMathSymbol{"025EF}{\lgwhtcircle }{\mathord}{large circle}% +\UnicodeMathSymbol{"025F0}{\squareulquad }{\mathord}{white square with upper left quadrant}% +\UnicodeMathSymbol{"025F1}{\squarellquad }{\mathord}{white square with lower left quadrant}% +\UnicodeMathSymbol{"025F2}{\squarelrquad }{\mathord}{white square with lower right quadrant}% +\UnicodeMathSymbol{"025F3}{\squareurquad }{\mathord}{white square with upper right quadrant}% +\UnicodeMathSymbol{"025F4}{\circleulquad }{\mathord}{white circle with upper left quadrant}% +\UnicodeMathSymbol{"025F5}{\circlellquad }{\mathord}{white circle with lower left quadrant}% +\UnicodeMathSymbol{"025F6}{\circlelrquad }{\mathord}{white circle with lower right quadrant}% +\UnicodeMathSymbol{"025F7}{\circleurquad }{\mathord}{white circle with upper right quadrant}% +\UnicodeMathSymbol{"025F8}{\ultriangle }{\mathord}{upper left triangle}% +\UnicodeMathSymbol{"025F9}{\urtriangle }{\mathord}{upper right triangle}% +\UnicodeMathSymbol{"025FA}{\lltriangle }{\mathord}{lower left triangle}% +\UnicodeMathSymbol{"025FB}{\mdwhtsquare }{\mathord}{white medium square}% +\UnicodeMathSymbol{"025FC}{\mdblksquare }{\mathord}{black medium square}% +\UnicodeMathSymbol{"025FD}{\mdsmwhtsquare }{\mathord}{white medium small square}% +\UnicodeMathSymbol{"025FE}{\mdsmblksquare }{\mathord}{black medium small square}% +\UnicodeMathSymbol{"025FF}{\lrtriangle }{\mathord}{lower right triangle}% +\UnicodeMathSymbol{"02605}{\bigstar }{\mathord}{star, filled}% +\UnicodeMathSymbol{"02606}{\bigwhitestar }{\mathord}{star, open}% +\UnicodeMathSymbol{"02609}{\astrosun }{\mathord}{sun}% +\UnicodeMathSymbol{"02621}{\danger }{\mathord}{dangerous bend (caution sign)}% +\UnicodeMathSymbol{"0263B}{\blacksmiley }{\mathord}{black smiling face}% +\UnicodeMathSymbol{"0263C}{\sun }{\mathord}{white sun with rays}% +\UnicodeMathSymbol{"0263D}{\rightmoon }{\mathord}{first quarter moon}% +\UnicodeMathSymbol{"0263E}{\leftmoon }{\mathord}{last quarter moon}% +\UnicodeMathSymbol{"02640}{\female }{\mathord}{venus, female}% +\UnicodeMathSymbol{"02642}{\male }{\mathord}{mars, male}% +\UnicodeMathSymbol{"02660}{\spadesuit }{\mathord}{spades suit symbol}% +\UnicodeMathSymbol{"02661}{\heartsuit }{\mathord}{heart suit symbol}% +\UnicodeMathSymbol{"02662}{\diamondsuit }{\mathord}{diamond suit symbol}% +\UnicodeMathSymbol{"02663}{\clubsuit }{\mathord}{club suit symbol}% +\UnicodeMathSymbol{"02664}{\varspadesuit }{\mathord}{spade, white (card suit)}% +\UnicodeMathSymbol{"02665}{\varheartsuit }{\mathord}{filled heart (card suit)}% +\UnicodeMathSymbol{"02666}{\vardiamondsuit }{\mathord}{filled diamond (card suit)}% +\UnicodeMathSymbol{"02667}{\varclubsuit }{\mathord}{club, white (card suit)}% +\UnicodeMathSymbol{"02669}{\quarternote }{\mathord}{music note (sung text sign)}% +\UnicodeMathSymbol{"0266A}{\eighthnote }{\mathord}{eighth note}% +\UnicodeMathSymbol{"0266B}{\twonotes }{\mathord}{beamed eighth notes}% +\UnicodeMathSymbol{"0266D}{\flat }{\mathord}{musical flat}% +\UnicodeMathSymbol{"0266E}{\natural }{\mathord}{music natural}% +\UnicodeMathSymbol{"0266F}{\sharp }{\mathord}{musical sharp}% +\UnicodeMathSymbol{"0267E}{\acidfree }{\mathord}{permanent paper sign}% +\UnicodeMathSymbol{"02680}{\dicei }{\mathord}{die face-1}% +\UnicodeMathSymbol{"02681}{\diceii }{\mathord}{die face-2}% +\UnicodeMathSymbol{"02682}{\diceiii }{\mathord}{die face-3}% +\UnicodeMathSymbol{"02683}{\diceiv }{\mathord}{die face-4}% +\UnicodeMathSymbol{"02684}{\dicev }{\mathord}{die face-5}% +\UnicodeMathSymbol{"02685}{\dicevi }{\mathord}{die face-6}% +\UnicodeMathSymbol{"02686}{\circledrightdot }{\mathord}{white circle with dot right}% +\UnicodeMathSymbol{"02687}{\circledtwodots }{\mathord}{white circle with two dots}% +\UnicodeMathSymbol{"02688}{\blackcircledrightdot }{\mathord}{black circle with white dot right}% +\UnicodeMathSymbol{"02689}{\blackcircledtwodots }{\mathord}{black circle with two white dots}% +\UnicodeMathSymbol{"026A5}{\Hermaphrodite }{\mathord}{male and female sign}% +\UnicodeMathSymbol{"026AA}{\mdwhtcircle }{\mathord}{medium white circle}% +\UnicodeMathSymbol{"026AB}{\mdblkcircle }{\mathord}{medium black circle}% +\UnicodeMathSymbol{"026AC}{\mdsmwhtcircle }{\mathord}{medium small white circle}% +\UnicodeMathSymbol{"026B2}{\neuter }{\mathord}{neuter}% +\UnicodeMathSymbol{"02713}{\checkmark }{\mathord}{tick, check mark}% +\UnicodeMathSymbol{"02720}{\maltese }{\mathord}{maltese cross}% +\UnicodeMathSymbol{"0272A}{\circledstar }{\mathord}{circled white star}% +\UnicodeMathSymbol{"02736}{\varstar }{\mathord}{six pointed black star}% +\UnicodeMathSymbol{"0273D}{\dingasterisk }{\mathord}{heavy teardrop-spoked asterisk}% +\UnicodeMathSymbol{"02772}{\lbrbrak }{\mathopen}{light left tortoise shell bracket ornament}% +\UnicodeMathSymbol{"02773}{\rbrbrak }{\mathclose}{light right tortoise shell bracket ornament}% +\UnicodeMathSymbol{"0279B}{\draftingarrow }{\mathord}{right arrow with bold head (drafting)}% +\UnicodeMathSymbol{"027C0}{\threedangle }{\mathord}{three dimensional angle}% +\UnicodeMathSymbol{"027C1}{\whiteinwhitetriangle }{\mathord}{white triangle containing small white triangle}% +\UnicodeMathSymbol{"027C2}{\perp }{\mathrel}{perpendicular}% +\UnicodeMathSymbol{"027C3}{\subsetcirc }{\mathord}{open subset}% +\UnicodeMathSymbol{"027C4}{\supsetcirc }{\mathord}{open superset}% +\UnicodeMathSymbol{"027C5}{\lbag }{\mathopen}{left s-shaped bag delimiter}% +\UnicodeMathSymbol{"027C6}{\rbag }{\mathclose}{right s-shaped bag delimiter}% +\UnicodeMathSymbol{"027C7}{\veedot }{\mathbin}{or with dot inside}% +\UnicodeMathSymbol{"027C8}{\bsolhsub }{\mathrel}{reverse solidus preceding subset}% +\UnicodeMathSymbol{"027C9}{\suphsol }{\mathrel}{superset preceding solidus}% +\UnicodeMathSymbol{"027CC}{\longdivision }{\mathopen}{long division}% +\UnicodeMathSymbol{"027D0}{\diamondcdot }{\mathord}{white diamond with centred dot}% +\UnicodeMathSymbol{"027D1}{\wedgedot }{\mathbin}{and with dot}% +\UnicodeMathSymbol{"027D2}{\upin }{\mathrel}{element of opening upwards}% +\UnicodeMathSymbol{"027D3}{\pullback }{\mathrel}{lower right corner with dot}% +\UnicodeMathSymbol{"027D4}{\pushout }{\mathrel}{upper left corner with dot}% +\UnicodeMathSymbol{"027D5}{\leftouterjoin }{\mathop}{left outer join}% +\UnicodeMathSymbol{"027D6}{\rightouterjoin }{\mathop}{right outer join}% +\UnicodeMathSymbol{"027D7}{\fullouterjoin }{\mathop}{full outer join}% +\UnicodeMathSymbol{"027D8}{\bigbot }{\mathop}{large up tack}% +\UnicodeMathSymbol{"027D9}{\bigtop }{\mathop}{large down tack}% +\UnicodeMathSymbol{"027DA}{\DashVDash }{\mathrel}{left and right double turnstile}% +\UnicodeMathSymbol{"027DB}{\dashVdash }{\mathrel}{left and right tack}% +\UnicodeMathSymbol{"027DC}{\multimapinv }{\mathrel}{left multimap}% +\UnicodeMathSymbol{"027DD}{\vlongdash }{\mathrel}{long left tack}% +\UnicodeMathSymbol{"027DE}{\longdashv }{\mathrel}{long right tack}% +\UnicodeMathSymbol{"027DF}{\cirbot }{\mathrel}{up tack with circle above}% +\UnicodeMathSymbol{"027E0}{\lozengeminus }{\mathbin}{lozenge divided by horizontal rule}% +\UnicodeMathSymbol{"027E1}{\concavediamond }{\mathbin}{white concave-sided diamond}% +\UnicodeMathSymbol{"027E2}{\concavediamondtickleft }{\mathbin}{white concave-sided diamond with leftwards tick}% +\UnicodeMathSymbol{"027E3}{\concavediamondtickright }{\mathbin}{white concave-sided diamond with rightwards tick}% +\UnicodeMathSymbol{"027E4}{\whitesquaretickleft }{\mathbin}{white square with leftwards tick}% +\UnicodeMathSymbol{"027E5}{\whitesquaretickright }{\mathbin}{white square with rightwards tick}% +\UnicodeMathSymbol{"027E6}{\lBrack }{\mathopen}{mathematical left white square bracket}% +\UnicodeMathSymbol{"027E7}{\rBrack }{\mathclose}{mathematical right white square bracket}% +\UnicodeMathSymbol{"027E8}{\langle }{\mathopen}{mathematical left angle bracket}% +\UnicodeMathSymbol{"027E9}{\rangle }{\mathclose}{mathematical right angle bracket}% +\UnicodeMathSymbol{"027EA}{\lAngle }{\mathopen}{mathematical left double angle bracket}% +\UnicodeMathSymbol{"027EB}{\rAngle }{\mathclose}{mathematical right double angle bracket}% +\UnicodeMathSymbol{"027EC}{\Lbrbrak }{\mathopen}{mathematical left white tortoise shell bracket}% +\UnicodeMathSymbol{"027ED}{\Rbrbrak }{\mathclose}{mathematical right white tortoise shell bracket}% +\UnicodeMathSymbol{"027EE}{\lgroup }{\mathopen}{mathematical left flattened parenthesis}% +\UnicodeMathSymbol{"027EF}{\rgroup }{\mathclose}{mathematical right flattened parenthesis}% +\UnicodeMathSymbol{"027F0}{\UUparrow }{\mathrel}{upwards quadruple arrow}% +\UnicodeMathSymbol{"027F1}{\DDownarrow }{\mathrel}{downwards quadruple arrow}% +\UnicodeMathSymbol{"027F2}{\acwgapcirclearrow }{\mathrel}{anticlockwise gapped circle arrow}% +\UnicodeMathSymbol{"027F3}{\cwgapcirclearrow }{\mathrel}{clockwise gapped circle arrow}% +\UnicodeMathSymbol{"027F4}{\rightarrowonoplus }{\mathrel}{right arrow with circled plus}% +\UnicodeMathSymbol{"027F5}{\longleftarrow }{\mathrel}{long leftwards arrow}% +\UnicodeMathSymbol{"027F6}{\longrightarrow }{\mathrel}{long rightwards arrow}% +\UnicodeMathSymbol{"027F7}{\longleftrightarrow }{\mathrel}{long left right arrow}% +\UnicodeMathSymbol{"027F8}{\Longleftarrow }{\mathrel}{long leftwards double arrow}% +\UnicodeMathSymbol{"027F9}{\Longrightarrow }{\mathrel}{long rightwards double arrow}% +\UnicodeMathSymbol{"027FA}{\Longleftrightarrow }{\mathrel}{long left right double arrow}% +\UnicodeMathSymbol{"027FB}{\longmapsfrom }{\mathrel}{long leftwards arrow from bar}% +\UnicodeMathSymbol{"027FC}{\longmapsto }{\mathrel}{long rightwards arrow from bar}% +\UnicodeMathSymbol{"027FD}{\Longmapsfrom }{\mathrel}{long leftwards double arrow from bar}% +\UnicodeMathSymbol{"027FE}{\Longmapsto }{\mathrel}{long rightwards double arrow from bar}% +\UnicodeMathSymbol{"027FF}{\longrightsquigarrow }{\mathrel}{long rightwards squiggle arrow}% +\UnicodeMathSymbol{"02900}{\nvtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with vertical stroke}% +\UnicodeMathSymbol{"02901}{\nVtwoheadrightarrow }{\mathrel}{rightwards two-headed arrow with double vertical stroke}% +\UnicodeMathSymbol{"02902}{\nvLeftarrow }{\mathrel}{leftwards double arrow with vertical stroke}% +\UnicodeMathSymbol{"02903}{\nvRightarrow }{\mathrel}{rightwards double arrow with vertical stroke}% +\UnicodeMathSymbol{"02904}{\nvLeftrightarrow }{\mathrel}{left right double arrow with vertical stroke}% +\UnicodeMathSymbol{"02905}{\twoheadmapsto }{\mathrel}{rightwards two-headed arrow from bar}% +\UnicodeMathSymbol{"02906}{\Mapsfrom }{\mathrel}{leftwards double arrow from bar}% +\UnicodeMathSymbol{"02907}{\Mapsto }{\mathrel}{rightwards double arrow from bar}% +\UnicodeMathSymbol{"02908}{\downarrowbarred }{\mathrel}{downwards arrow with horizontal stroke}% +\UnicodeMathSymbol{"02909}{\uparrowbarred }{\mathrel}{upwards arrow with horizontal stroke}% +\UnicodeMathSymbol{"0290A}{\Uuparrow }{\mathrel}{upwards triple arrow}% +\UnicodeMathSymbol{"0290B}{\Ddownarrow }{\mathrel}{downwards triple arrow}% +\UnicodeMathSymbol{"0290C}{\leftbkarrow }{\mathrel}{leftwards double dash arrow}% +\UnicodeMathSymbol{"0290D}{\rightbkarrow }{\mathrel}{rightwards double dash arrow}% +\UnicodeMathSymbol{"0290E}{\leftdbkarrow }{\mathrel}{leftwards triple dash arrow}% +\UnicodeMathSymbol{"0290F}{\dbkarrow }{\mathrel}{rightwards triple dash arrow}% +\UnicodeMathSymbol{"02910}{\drbkarrow }{\mathrel}{rightwards two-headed triple dash arrow}% +\UnicodeMathSymbol{"02911}{\rightdotarrow }{\mathrel}{rightwards arrow with dotted stem}% +\UnicodeMathSymbol{"02912}{\baruparrow }{\mathrel}{upwards arrow to bar}% +\UnicodeMathSymbol{"02913}{\downarrowbar }{\mathrel}{downwards arrow to bar}% +\UnicodeMathSymbol{"02914}{\nvrightarrowtail }{\mathrel}{rightwards arrow with tail with vertical stroke}% +\UnicodeMathSymbol{"02915}{\nVrightarrowtail }{\mathrel}{rightwards arrow with tail with double vertical stroke}% +\UnicodeMathSymbol{"02916}{\twoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail}% +\UnicodeMathSymbol{"02917}{\nvtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with vertical stroke}% +\UnicodeMathSymbol{"02918}{\nVtwoheadrightarrowtail }{\mathrel}{rightwards two-headed arrow with tail with double vertical stroke}% +\UnicodeMathSymbol{"02919}{\lefttail }{\mathrel}{leftwards arrow-tail}% +\UnicodeMathSymbol{"0291A}{\righttail }{\mathrel}{rightwards arrow-tail}% +\UnicodeMathSymbol{"0291B}{\leftdbltail }{\mathrel}{leftwards double arrow-tail}% +\UnicodeMathSymbol{"0291C}{\rightdbltail }{\mathrel}{rightwards double arrow-tail}% +\UnicodeMathSymbol{"0291D}{\diamondleftarrow }{\mathrel}{leftwards arrow to black diamond}% +\UnicodeMathSymbol{"0291E}{\rightarrowdiamond }{\mathrel}{rightwards arrow to black diamond}% +\UnicodeMathSymbol{"0291F}{\diamondleftarrowbar }{\mathrel}{leftwards arrow from bar to black diamond}% +\UnicodeMathSymbol{"02920}{\barrightarrowdiamond }{\mathrel}{rightwards arrow from bar to black diamond}% +\UnicodeMathSymbol{"02921}{\nwsearrow }{\mathrel}{north west and south east arrow}% +\UnicodeMathSymbol{"02922}{\neswarrow }{\mathrel}{north east and south west arrow}% +\UnicodeMathSymbol{"02923}{\hknwarrow }{\mathrel}{north west arrow with hook}% +\UnicodeMathSymbol{"02924}{\hknearrow }{\mathrel}{north east arrow with hook}% +\UnicodeMathSymbol{"02925}{\hksearrow }{\mathrel}{south east arrow with hook}% +\UnicodeMathSymbol{"02926}{\hkswarrow }{\mathrel}{south west arrow with hook}% +\UnicodeMathSymbol{"02927}{\tona }{\mathrel}{north west arrow and north east arrow}% +\UnicodeMathSymbol{"02928}{\toea }{\mathrel}{north east arrow and south east arrow}% +\UnicodeMathSymbol{"02929}{\tosa }{\mathrel}{south east arrow and south west arrow}% +\UnicodeMathSymbol{"0292A}{\towa }{\mathrel}{south west arrow and north west arrow}% +\UnicodeMathSymbol{"0292B}{\rdiagovfdiag }{\mathord}{rising diagonal crossing falling diagonal}% +\UnicodeMathSymbol{"0292C}{\fdiagovrdiag }{\mathord}{falling diagonal crossing rising diagonal}% +\UnicodeMathSymbol{"0292D}{\seovnearrow }{\mathord}{south east arrow crossing north east arrow}% +\UnicodeMathSymbol{"0292E}{\neovsearrow }{\mathord}{north east arrow crossing south east arrow}% +\UnicodeMathSymbol{"0292F}{\fdiagovnearrow }{\mathord}{falling diagonal crossing north east arrow}% +\UnicodeMathSymbol{"02930}{\rdiagovsearrow }{\mathord}{rising diagonal crossing south east arrow}% +\UnicodeMathSymbol{"02931}{\neovnwarrow }{\mathord}{north east arrow crossing north west arrow}% +\UnicodeMathSymbol{"02932}{\nwovnearrow }{\mathord}{north west arrow crossing north east arrow}% +\UnicodeMathSymbol{"02933}{\rightcurvedarrow }{\mathrel}{wave arrow pointing directly right}% +\UnicodeMathSymbol{"02934}{\uprightcurvearrow }{\mathord}{arrow pointing rightwards then curving upwards}% +\UnicodeMathSymbol{"02935}{\downrightcurvedarrow }{\mathord}{arrow pointing rightwards then curving downwards}% +\UnicodeMathSymbol{"02936}{\leftdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving leftwards}% +\UnicodeMathSymbol{"02937}{\rightdowncurvedarrow }{\mathrel}{arrow pointing downwards then curving rightwards}% +\UnicodeMathSymbol{"02938}{\cwrightarcarrow }{\mathrel}{right-side arc clockwise arrow}% +\UnicodeMathSymbol{"02939}{\acwleftarcarrow }{\mathrel}{left-side arc anticlockwise arrow}% +\UnicodeMathSymbol{"0293A}{\acwoverarcarrow }{\mathrel}{top arc anticlockwise arrow}% +\UnicodeMathSymbol{"0293B}{\acwunderarcarrow }{\mathrel}{bottom arc anticlockwise arrow}% +\UnicodeMathSymbol{"0293C}{\curvearrowrightminus }{\mathrel}{top arc clockwise arrow with minus}% +\UnicodeMathSymbol{"0293D}{\curvearrowleftplus }{\mathrel}{top arc anticlockwise arrow with plus}% +\UnicodeMathSymbol{"0293E}{\cwundercurvearrow }{\mathrel}{lower right semicircular clockwise arrow}% +\UnicodeMathSymbol{"0293F}{\ccwundercurvearrow }{\mathrel}{lower left semicircular anticlockwise arrow}% +\UnicodeMathSymbol{"02940}{\acwcirclearrow }{\mathrel}{anticlockwise closed circle arrow}% +\UnicodeMathSymbol{"02941}{\cwcirclearrow }{\mathrel}{clockwise closed circle arrow}% +\UnicodeMathSymbol{"02942}{\rightarrowshortleftarrow }{\mathrel}{rightwards arrow above short leftwards arrow}% +\UnicodeMathSymbol{"02943}{\leftarrowshortrightarrow }{\mathrel}{leftwards arrow above short rightwards arrow}% +\UnicodeMathSymbol{"02944}{\shortrightarrowleftarrow }{\mathrel}{short rightwards arrow above leftwards arrow}% +\UnicodeMathSymbol{"02945}{\rightarrowplus }{\mathrel}{rightwards arrow with plus below}% +\UnicodeMathSymbol{"02946}{\leftarrowplus }{\mathrel}{leftwards arrow with plus below}% +\UnicodeMathSymbol{"02947}{\rightarrowx }{\mathrel}{rightwards arrow through x}% +\UnicodeMathSymbol{"02948}{\leftrightarrowcircle }{\mathrel}{left right arrow through small circle}% +\UnicodeMathSymbol{"02949}{\twoheaduparrowcircle }{\mathrel}{upwards two-headed arrow from small circle}% +\UnicodeMathSymbol{"0294A}{\leftrightharpoonupdown }{\mathrel}{left barb up right barb down harpoon}% +\UnicodeMathSymbol{"0294B}{\leftrightharpoondownup }{\mathrel}{left barb down right barb up harpoon}% +\UnicodeMathSymbol{"0294C}{\updownharpoonrightleft }{\mathrel}{up barb right down barb left harpoon}% +\UnicodeMathSymbol{"0294D}{\updownharpoonleftright }{\mathrel}{up barb left down barb right harpoon}% +\UnicodeMathSymbol{"0294E}{\leftrightharpoonupup }{\mathrel}{left barb up right barb up harpoon}% +\UnicodeMathSymbol{"0294F}{\updownharpoonrightright }{\mathrel}{up barb right down barb right harpoon}% +\UnicodeMathSymbol{"02950}{\leftrightharpoondowndown }{\mathrel}{left barb down right barb down harpoon}% +\UnicodeMathSymbol{"02951}{\updownharpoonleftleft }{\mathrel}{up barb left down barb left harpoon}% +\UnicodeMathSymbol{"02952}{\barleftharpoonup }{\mathrel}{leftwards harpoon with barb up to bar}% +\UnicodeMathSymbol{"02953}{\rightharpoonupbar }{\mathrel}{rightwards harpoon with barb up to bar}% +\UnicodeMathSymbol{"02954}{\barupharpoonright }{\mathrel}{upwards harpoon with barb right to bar}% +\UnicodeMathSymbol{"02955}{\downharpoonrightbar }{\mathrel}{downwards harpoon with barb right to bar}% +\UnicodeMathSymbol{"02956}{\barleftharpoondown }{\mathrel}{leftwards harpoon with barb down to bar}% +\UnicodeMathSymbol{"02957}{\rightharpoondownbar }{\mathrel}{rightwards harpoon with barb down to bar}% +\UnicodeMathSymbol{"02958}{\barupharpoonleft }{\mathrel}{upwards harpoon with barb left to bar}% +\UnicodeMathSymbol{"02959}{\downharpoonleftbar }{\mathrel}{downwards harpoon with barb left to bar}% +\UnicodeMathSymbol{"0295A}{\leftharpoonupbar }{\mathrel}{leftwards harpoon with barb up from bar}% +\UnicodeMathSymbol{"0295B}{\barrightharpoonup }{\mathrel}{rightwards harpoon with barb up from bar}% +\UnicodeMathSymbol{"0295C}{\upharpoonrightbar }{\mathrel}{upwards harpoon with barb right from bar}% +\UnicodeMathSymbol{"0295D}{\bardownharpoonright }{\mathrel}{downwards harpoon with barb right from bar}% +\UnicodeMathSymbol{"0295E}{\leftharpoondownbar }{\mathrel}{leftwards harpoon with barb down from bar}% +\UnicodeMathSymbol{"0295F}{\barrightharpoondown }{\mathrel}{rightwards harpoon with barb down from bar}% +\UnicodeMathSymbol{"02960}{\upharpoonleftbar }{\mathrel}{upwards harpoon with barb left from bar}% +\UnicodeMathSymbol{"02961}{\bardownharpoonleft }{\mathrel}{downwards harpoon with barb left from bar}% +\UnicodeMathSymbol{"02962}{\leftharpoonsupdown }{\mathrel}{leftwards harpoon with barb up above leftwards harpoon with barb down}% +\UnicodeMathSymbol{"02963}{\upharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside upwards harpoon with barb right}% +\UnicodeMathSymbol{"02964}{\rightharpoonsupdown }{\mathrel}{rightwards harpoon with barb up above rightwards harpoon with barb down}% +\UnicodeMathSymbol{"02965}{\downharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside downwards harpoon with barb right}% +\UnicodeMathSymbol{"02966}{\leftrightharpoonsup }{\mathrel}{leftwards harpoon with barb up above rightwards harpoon with barb up}% +\UnicodeMathSymbol{"02967}{\leftrightharpoonsdown }{\mathrel}{leftwards harpoon with barb down above rightwards harpoon with barb down}% +\UnicodeMathSymbol{"02968}{\rightleftharpoonsup }{\mathrel}{rightwards harpoon with barb up above leftwards harpoon with barb up}% +\UnicodeMathSymbol{"02969}{\rightleftharpoonsdown }{\mathrel}{rightwards harpoon with barb down above leftwards harpoon with barb down}% +\UnicodeMathSymbol{"0296A}{\leftharpoonupdash }{\mathrel}{leftwards harpoon with barb up above long dash}% +\UnicodeMathSymbol{"0296B}{\dashleftharpoondown }{\mathrel}{leftwards harpoon with barb down below long dash}% +\UnicodeMathSymbol{"0296C}{\rightharpoonupdash }{\mathrel}{rightwards harpoon with barb up above long dash}% +\UnicodeMathSymbol{"0296D}{\dashrightharpoondown }{\mathrel}{rightwards harpoon with barb down below long dash}% +\UnicodeMathSymbol{"0296E}{\updownharpoonsleftright }{\mathrel}{upwards harpoon with barb left beside downwards harpoon with barb right}% +\UnicodeMathSymbol{"0296F}{\downupharpoonsleftright }{\mathrel}{downwards harpoon with barb left beside upwards harpoon with barb right}% +\UnicodeMathSymbol{"02970}{\rightimply }{\mathrel}{right double arrow with rounded head}% +\UnicodeMathSymbol{"02971}{\equalrightarrow }{\mathrel}{equals sign above rightwards arrow}% +\UnicodeMathSymbol{"02972}{\similarrightarrow }{\mathrel}{tilde operator above rightwards arrow}% +\UnicodeMathSymbol{"02973}{\leftarrowsimilar }{\mathrel}{leftwards arrow above tilde operator}% +\UnicodeMathSymbol{"02974}{\rightarrowsimilar }{\mathrel}{rightwards arrow above tilde operator}% +\UnicodeMathSymbol{"02975}{\rightarrowapprox }{\mathrel}{rightwards arrow above almost equal to}% +\UnicodeMathSymbol{"02976}{\ltlarr }{\mathrel}{less-than above leftwards arrow}% +\UnicodeMathSymbol{"02977}{\leftarrowless }{\mathrel}{leftwards arrow through less-than}% +\UnicodeMathSymbol{"02978}{\gtrarr }{\mathrel}{greater-than above rightwards arrow}% +\UnicodeMathSymbol{"02979}{\subrarr }{\mathrel}{subset above rightwards arrow}% +\UnicodeMathSymbol{"0297A}{\leftarrowsubset }{\mathrel}{leftwards arrow through subset}% +\UnicodeMathSymbol{"0297B}{\suplarr }{\mathrel}{superset above leftwards arrow}% +\UnicodeMathSymbol{"0297C}{\leftfishtail }{\mathrel}{left fish tail}% +\UnicodeMathSymbol{"0297D}{\rightfishtail }{\mathrel}{right fish tail}% +\UnicodeMathSymbol{"0297E}{\upfishtail }{\mathrel}{up fish tail}% +\UnicodeMathSymbol{"0297F}{\downfishtail }{\mathrel}{down fish tail}% +\UnicodeMathSymbol{"02980}{\Vvert }{\mathfence}{triple vertical bar delimiter}% +\UnicodeMathSymbol{"02981}{\mdsmblkcircle }{\mathord}{z notation spot}% +\UnicodeMathSymbol{"02982}{\typecolon }{\mathrel}{z notation type colon}% +\UnicodeMathSymbol{"02983}{\lBrace }{\mathopen}{left white curly bracket}% +\UnicodeMathSymbol{"02984}{\rBrace }{\mathclose}{right white curly bracket}% +\UnicodeMathSymbol{"02985}{\lParen }{\mathopen}{left white parenthesis}% +\UnicodeMathSymbol{"02986}{\rParen }{\mathclose}{right white parenthesis}% +\UnicodeMathSymbol{"02987}{\llparenthesis }{\mathopen}{z notation left image bracket}% +\UnicodeMathSymbol{"02988}{\rrparenthesis }{\mathclose}{z notation right image bracket}% +\UnicodeMathSymbol{"02989}{\llangle }{\mathopen}{z notation left binding bracket}% +\UnicodeMathSymbol{"0298A}{\rrangle }{\mathclose}{z notation right binding bracket}% +\UnicodeMathSymbol{"0298B}{\lbrackubar }{\mathopen}{left square bracket with underbar}% +\UnicodeMathSymbol{"0298C}{\rbrackubar }{\mathclose}{right square bracket with underbar}% +\UnicodeMathSymbol{"0298D}{\lbrackultick }{\mathopen}{left square bracket with tick in top corner}% +\UnicodeMathSymbol{"0298E}{\rbracklrtick }{\mathclose}{right square bracket with tick in bottom corner}% +\UnicodeMathSymbol{"0298F}{\lbracklltick }{\mathopen}{left square bracket with tick in bottom corner}% +\UnicodeMathSymbol{"02990}{\rbrackurtick }{\mathclose}{right square bracket with tick in top corner}% +\UnicodeMathSymbol{"02991}{\langledot }{\mathopen}{left angle bracket with dot}% +\UnicodeMathSymbol{"02992}{\rangledot }{\mathclose}{right angle bracket with dot}% +\UnicodeMathSymbol{"02993}{\lparenless }{\mathopen}{left arc less-than bracket}% +\UnicodeMathSymbol{"02994}{\rparengtr }{\mathclose}{right arc greater-than bracket}% +\UnicodeMathSymbol{"02995}{\Lparengtr }{\mathopen}{double left arc greater-than bracket}% +\UnicodeMathSymbol{"02996}{\Rparenless }{\mathclose}{double right arc less-than bracket}% +\UnicodeMathSymbol{"02997}{\lblkbrbrak }{\mathopen}{left black tortoise shell bracket}% +\UnicodeMathSymbol{"02998}{\rblkbrbrak }{\mathclose}{right black tortoise shell bracket}% +\UnicodeMathSymbol{"02999}{\fourvdots }{\mathord}{dotted fence}% +\UnicodeMathSymbol{"0299A}{\vzigzag }{\mathord}{vertical zigzag line}% +\UnicodeMathSymbol{"0299B}{\measuredangleleft }{\mathord}{measured angle opening left}% +\UnicodeMathSymbol{"0299C}{\rightanglesqr }{\mathord}{right angle variant with square}% +\UnicodeMathSymbol{"0299D}{\rightanglemdot }{\mathord}{measured right angle with dot}% +\UnicodeMathSymbol{"0299E}{\angles }{\mathord}{angle with s inside}% +\UnicodeMathSymbol{"0299F}{\angdnr }{\mathord}{acute angle}% +\UnicodeMathSymbol{"029A0}{\gtlpar }{\mathord}{spherical angle opening left}% +\UnicodeMathSymbol{"029A1}{\sphericalangleup }{\mathord}{spherical angle opening up}% +\UnicodeMathSymbol{"029A2}{\turnangle }{\mathord}{turned angle}% +\UnicodeMathSymbol{"029A3}{\revangle }{\mathord}{reversed angle}% +\UnicodeMathSymbol{"029A4}{\angleubar }{\mathord}{angle with underbar}% +\UnicodeMathSymbol{"029A5}{\revangleubar }{\mathord}{reversed angle with underbar}% +\UnicodeMathSymbol{"029A6}{\wideangledown }{\mathord}{oblique angle opening up}% +\UnicodeMathSymbol{"029A7}{\wideangleup }{\mathord}{oblique angle opening down}% +\UnicodeMathSymbol{"029A8}{\measanglerutone }{\mathord}{measured angle with open arm ending in arrow pointing up and right}% +\UnicodeMathSymbol{"029A9}{\measanglelutonw }{\mathord}{measured angle with open arm ending in arrow pointing up and left}% +\UnicodeMathSymbol{"029AA}{\measanglerdtose }{\mathord}{measured angle with open arm ending in arrow pointing down and right}% +\UnicodeMathSymbol{"029AB}{\measangleldtosw }{\mathord}{measured angle with open arm ending in arrow pointing down and left}% +\UnicodeMathSymbol{"029AC}{\measangleurtone }{\mathord}{measured angle with open arm ending in arrow pointing right and up}% +\UnicodeMathSymbol{"029AD}{\measangleultonw }{\mathord}{measured angle with open arm ending in arrow pointing left and up}% +\UnicodeMathSymbol{"029AE}{\measangledrtose }{\mathord}{measured angle with open arm ending in arrow pointing right and down}% +\UnicodeMathSymbol{"029AF}{\measangledltosw }{\mathord}{measured angle with open arm ending in arrow pointing left and down}% +\UnicodeMathSymbol{"029B0}{\revemptyset }{\mathord}{reversed empty set}% +\UnicodeMathSymbol{"029B1}{\emptysetobar }{\mathord}{empty set with overbar}% +\UnicodeMathSymbol{"029B2}{\emptysetocirc }{\mathord}{empty set with small circle above}% +\UnicodeMathSymbol{"029B3}{\emptysetoarr }{\mathord}{empty set with right arrow above}% +\UnicodeMathSymbol{"029B4}{\emptysetoarrl }{\mathord}{empty set with left arrow above}% +\UnicodeMathSymbol{"029B5}{\circlehbar }{\mathbin}{circle with horizontal bar}% +\UnicodeMathSymbol{"029B6}{\circledvert }{\mathbin}{circled vertical bar}% +\UnicodeMathSymbol{"029B7}{\circledparallel }{\mathbin}{circled parallel}% +\UnicodeMathSymbol{"029B8}{\obslash }{\mathbin}{circled reverse solidus}% +\UnicodeMathSymbol{"029B9}{\operp }{\mathbin}{circled perpendicular}% +\UnicodeMathSymbol{"029BA}{\obot }{\mathord}{circle divided by horizontal bar and top half divided by vertical bar}% +\UnicodeMathSymbol{"029BB}{\olcross }{\mathord}{circle with superimposed x}% +\UnicodeMathSymbol{"029BC}{\odotslashdot }{\mathord}{circled anticlockwise-rotated division sign}% +\UnicodeMathSymbol{"029BD}{\uparrowoncircle }{\mathord}{up arrow through circle}% +\UnicodeMathSymbol{"029BE}{\circledwhitebullet }{\mathord}{circled white bullet}% +\UnicodeMathSymbol{"029BF}{\circledbullet }{\mathord}{circled bullet}% +\UnicodeMathSymbol{"029C0}{\olessthan }{\mathbin}{circled less-than}% +\UnicodeMathSymbol{"029C1}{\ogreaterthan }{\mathbin}{circled greater-than}% +\UnicodeMathSymbol{"029C2}{\cirscir }{\mathord}{circle with small circle to the right}% +\UnicodeMathSymbol{"029C3}{\cirE }{\mathord}{circle with two horizontal strokes to the right}% +\UnicodeMathSymbol{"029C4}{\boxdiag }{\mathbin}{squared rising diagonal slash}% +\UnicodeMathSymbol{"029C5}{\boxbslash }{\mathbin}{squared falling diagonal slash}% +\UnicodeMathSymbol{"029C6}{\boxast }{\mathbin}{squared asterisk}% +\UnicodeMathSymbol{"029C7}{\boxcircle }{\mathbin}{squared small circle}% +\UnicodeMathSymbol{"029C8}{\boxbox }{\mathbin}{squared square}% +\UnicodeMathSymbol{"029C9}{\boxonbox }{\mathord}{two joined squares}% +\UnicodeMathSymbol{"029CA}{\triangleodot }{\mathord}{triangle with dot above}% +\UnicodeMathSymbol{"029CB}{\triangleubar }{\mathord}{triangle with underbar}% +\UnicodeMathSymbol{"029CC}{\triangles }{\mathord}{s in triangle}% +\UnicodeMathSymbol{"029CD}{\triangleserifs }{\mathbin}{triangle with serifs at bottom}% +\UnicodeMathSymbol{"029CE}{\rtriltri }{\mathrel}{right triangle above left triangle}% +\UnicodeMathSymbol{"029CF}{\ltrivb }{\mathrel}{left triangle beside vertical bar}% +\UnicodeMathSymbol{"029D0}{\vbrtri }{\mathrel}{vertical bar beside right triangle}% +\UnicodeMathSymbol{"029D1}{\lfbowtie }{\mathrel}{left black bowtie}% +\UnicodeMathSymbol{"029D2}{\rfbowtie }{\mathrel}{right black bowtie}% +\UnicodeMathSymbol{"029D3}{\fbowtie }{\mathrel}{black bowtie}% +\UnicodeMathSymbol{"029D4}{\lftimes }{\mathrel}{left black times}% +\UnicodeMathSymbol{"029D5}{\rftimes }{\mathrel}{right black times}% +\UnicodeMathSymbol{"029D6}{\hourglass }{\mathbin}{white hourglass}% +\UnicodeMathSymbol{"029D7}{\blackhourglass }{\mathbin}{black hourglass}% +\UnicodeMathSymbol{"029D8}{\lvzigzag }{\mathopen}{left wiggly fence}% +\UnicodeMathSymbol{"029D9}{\rvzigzag }{\mathclose}{right wiggly fence}% +\UnicodeMathSymbol{"029DA}{\Lvzigzag }{\mathopen}{left double wiggly fence}% +\UnicodeMathSymbol{"029DB}{\Rvzigzag }{\mathclose}{right double wiggly fence}% +\UnicodeMathSymbol{"029DC}{\iinfin }{\mathord}{incomplete infinity}% +\UnicodeMathSymbol{"029DD}{\tieinfty }{\mathord}{tie over infinity}% +\UnicodeMathSymbol{"029DE}{\nvinfty }{\mathord}{infinity negated with vertical bar}% +\UnicodeMathSymbol{"029DF}{\dualmap }{\mathrel}{double-ended multimap}% +\UnicodeMathSymbol{"029E0}{\laplac }{\mathord}{square with contoured outline}% +\UnicodeMathSymbol{"029E1}{\lrtriangleeq }{\mathrel}{increases as}% +\UnicodeMathSymbol{"029E2}{\shuffle }{\mathbin}{shuffle product}% +\UnicodeMathSymbol{"029E3}{\eparsl }{\mathrel}{equals sign and slanted parallel}% +\UnicodeMathSymbol{"029E4}{\smeparsl }{\mathrel}{equals sign and slanted parallel with tilde above}% +\UnicodeMathSymbol{"029E5}{\eqvparsl }{\mathrel}{identical to and slanted parallel}% +\UnicodeMathSymbol{"029E6}{\gleichstark }{\mathrel}{gleich stark}% +\UnicodeMathSymbol{"029E7}{\thermod }{\mathord}{thermodynamic}% +\UnicodeMathSymbol{"029E8}{\downtriangleleftblack }{\mathord}{down-pointing triangle with left half black}% +\UnicodeMathSymbol{"029E9}{\downtrianglerightblack }{\mathord}{down-pointing triangle with right half black}% +\UnicodeMathSymbol{"029EA}{\blackdiamonddownarrow }{\mathord}{black diamond with down arrow}% +\UnicodeMathSymbol{"029EB}{\mdlgblklozenge }{\mathbin}{black lozenge}% +\UnicodeMathSymbol{"029EC}{\circledownarrow }{\mathord}{white circle with down arrow}% +\UnicodeMathSymbol{"029ED}{\blackcircledownarrow }{\mathord}{black circle with down arrow}% +\UnicodeMathSymbol{"029EE}{\errbarsquare }{\mathord}{error-barred white square}% +\UnicodeMathSymbol{"029EF}{\errbarblacksquare }{\mathord}{error-barred black square}% +\UnicodeMathSymbol{"029F0}{\errbardiamond }{\mathord}{error-barred white diamond}% +\UnicodeMathSymbol{"029F1}{\errbarblackdiamond }{\mathord}{error-barred black diamond}% +\UnicodeMathSymbol{"029F2}{\errbarcircle }{\mathord}{error-barred white circle}% +\UnicodeMathSymbol{"029F3}{\errbarblackcircle }{\mathord}{error-barred black circle}% +\UnicodeMathSymbol{"029F4}{\ruledelayed }{\mathrel}{rule-delayed}% +\UnicodeMathSymbol{"029F5}{\setminus }{\mathbin}{reverse solidus operator}% +\UnicodeMathSymbol{"029F6}{\dsol }{\mathbin}{solidus with overbar}% +\UnicodeMathSymbol{"029F7}{\rsolbar }{\mathbin}{reverse solidus with horizontal stroke}% +\UnicodeMathSymbol{"029F8}{\xsol }{\mathop}{big solidus}% +\UnicodeMathSymbol{"029F9}{\xbsol }{\mathop}{big reverse solidus}% +\UnicodeMathSymbol{"029FA}{\doubleplus }{\mathbin}{double plus}% +\UnicodeMathSymbol{"029FB}{\tripleplus }{\mathbin}{triple plus}% +\UnicodeMathSymbol{"029FC}{\lcurvyangle }{\mathopen}{left pointing curved angle bracket}% +\UnicodeMathSymbol{"029FD}{\rcurvyangle }{\mathclose}{right pointing curved angle bracket}% +\UnicodeMathSymbol{"029FE}{\tplus }{\mathbin}{tiny}% +\UnicodeMathSymbol{"029FF}{\tminus }{\mathbin}{miny}% +\UnicodeMathSymbol{"02A00}{\bigodot }{\mathop}{n-ary circled dot operator}% +\UnicodeMathSymbol{"02A01}{\bigoplus }{\mathop}{n-ary circled plus operator}% +\UnicodeMathSymbol{"02A02}{\bigotimes }{\mathop}{n-ary circled times operator}% +\UnicodeMathSymbol{"02A03}{\bigcupdot }{\mathop}{n-ary union operator with dot}% +\UnicodeMathSymbol{"02A04}{\biguplus }{\mathop}{n-ary union operator with plus}% +\UnicodeMathSymbol{"02A05}{\bigsqcap }{\mathop}{n-ary square intersection operator}% +\UnicodeMathSymbol{"02A06}{\bigsqcup }{\mathop}{n-ary square union operator}% +\UnicodeMathSymbol{"02A07}{\conjquant }{\mathop}{two logical and operator}% +\UnicodeMathSymbol{"02A08}{\disjquant }{\mathop}{two logical or operator}% +\UnicodeMathSymbol{"02A09}{\bigtimes }{\mathop}{n-ary times operator}% +\UnicodeMathSymbol{"02A0A}{\modtwosum }{\mathop}{modulo two sum}% +\UnicodeMathSymbol{"02A0B}{\sumint }{\mathop}{summation with integral}% +\UnicodeMathSymbol{"02A0C}{\iiiint }{\mathop}{quadruple integral operator}% +\UnicodeMathSymbol{"02A0D}{\intbar }{\mathop}{finite part integral}% +\UnicodeMathSymbol{"02A0E}{\intBar }{\mathop}{integral with double stroke}% +\UnicodeMathSymbol{"02A0F}{\fint }{\mathop}{integral average with slash}% +\UnicodeMathSymbol{"02A10}{\cirfnint }{\mathop}{circulation function}% +\UnicodeMathSymbol{"02A11}{\awint }{\mathop}{anticlockwise integration}% +\UnicodeMathSymbol{"02A12}{\rppolint }{\mathop}{line integration with rectangular path around pole}% +\UnicodeMathSymbol{"02A13}{\scpolint }{\mathop}{line integration with semicircular path around pole}% +\UnicodeMathSymbol{"02A14}{\npolint }{\mathop}{line integration not including the pole}% +\UnicodeMathSymbol{"02A15}{\pointint }{\mathop}{integral around a point operator}% +\UnicodeMathSymbol{"02A16}{\sqint }{\mathop}{quaternion integral operator}% +\UnicodeMathSymbol{"02A17}{\intlarhk }{\mathop}{integral with leftwards arrow with hook}% +\UnicodeMathSymbol{"02A18}{\intx }{\mathop}{integral with times sign}% +\UnicodeMathSymbol{"02A19}{\intcap }{\mathop}{integral with intersection}% +\UnicodeMathSymbol{"02A1A}{\intcup }{\mathop}{integral with union}% +\UnicodeMathSymbol{"02A1B}{\upint }{\mathop}{integral with overbar}% +\UnicodeMathSymbol{"02A1C}{\lowint }{\mathop}{integral with underbar}% +\UnicodeMathSymbol{"02A1D}{\Join }{\mathop}{join}% +\UnicodeMathSymbol{"02A1E}{\bigtriangleleft }{\mathop}{large left triangle operator}% +\UnicodeMathSymbol{"02A1F}{\zcmp }{\mathop}{z notation schema composition}% +\UnicodeMathSymbol{"02A20}{\zpipe }{\mathop}{z notation schema piping}% +\UnicodeMathSymbol{"02A21}{\zproject }{\mathop}{z notation schema projection}% +\UnicodeMathSymbol{"02A22}{\ringplus }{\mathbin}{plus sign with small circle above}% +\UnicodeMathSymbol{"02A23}{\plushat }{\mathbin}{plus sign with circumflex accent above}% +\UnicodeMathSymbol{"02A24}{\simplus }{\mathbin}{plus sign with tilde above}% +\UnicodeMathSymbol{"02A25}{\plusdot }{\mathbin}{plus sign with dot below}% +\UnicodeMathSymbol{"02A26}{\plussim }{\mathbin}{plus sign with tilde below}% +\UnicodeMathSymbol{"02A27}{\plussubtwo }{\mathbin}{plus sign with subscript two}% +\UnicodeMathSymbol{"02A28}{\plustrif }{\mathbin}{plus sign with black triangle}% +\UnicodeMathSymbol{"02A29}{\commaminus }{\mathbin}{minus sign with comma above}% +\UnicodeMathSymbol{"02A2A}{\minusdot }{\mathbin}{minus sign with dot below}% +\UnicodeMathSymbol{"02A2B}{\minusfdots }{\mathbin}{minus sign with falling dots}% +\UnicodeMathSymbol{"02A2C}{\minusrdots }{\mathbin}{minus sign with rising dots}% +\UnicodeMathSymbol{"02A2D}{\opluslhrim }{\mathbin}{plus sign in left half circle}% +\UnicodeMathSymbol{"02A2E}{\oplusrhrim }{\mathbin}{plus sign in right half circle}% +\UnicodeMathSymbol{"02A2F}{\vectimes }{\mathbin}{vector or cross product}% +\UnicodeMathSymbol{"02A30}{\dottimes }{\mathbin}{multiplication sign with dot above}% +\UnicodeMathSymbol{"02A31}{\timesbar }{\mathbin}{multiplication sign with underbar}% +\UnicodeMathSymbol{"02A32}{\btimes }{\mathbin}{semidirect product with bottom closed}% +\UnicodeMathSymbol{"02A33}{\smashtimes }{\mathbin}{smash product}% +\UnicodeMathSymbol{"02A34}{\otimeslhrim }{\mathbin}{multiplication sign in left half circle}% +\UnicodeMathSymbol{"02A35}{\otimesrhrim }{\mathbin}{multiplication sign in right half circle}% +\UnicodeMathSymbol{"02A36}{\otimeshat }{\mathbin}{circled multiplication sign with circumflex accent}% +\UnicodeMathSymbol{"02A37}{\Otimes }{\mathbin}{multiplication sign in double circle}% +\UnicodeMathSymbol{"02A38}{\odiv }{\mathbin}{circled division sign}% +\UnicodeMathSymbol{"02A39}{\triangleplus }{\mathbin}{plus sign in triangle}% +\UnicodeMathSymbol{"02A3A}{\triangleminus }{\mathbin}{minus sign in triangle}% +\UnicodeMathSymbol{"02A3B}{\triangletimes }{\mathbin}{multiplication sign in triangle}% +\UnicodeMathSymbol{"02A3C}{\intprod }{\mathbin}{interior product}% +\UnicodeMathSymbol{"02A3D}{\intprodr }{\mathbin}{righthand interior product}% +\UnicodeMathSymbol{"02A3E}{\fcmp }{\mathbin}{z notation relational composition}% +\UnicodeMathSymbol{"02A3F}{\amalg }{\mathbin}{amalgamation or coproduct}% +\UnicodeMathSymbol{"02A40}{\capdot }{\mathbin}{intersection with dot}% +\UnicodeMathSymbol{"02A41}{\uminus }{\mathbin}{union with minus sign}% +\UnicodeMathSymbol{"02A42}{\barcup }{\mathbin}{union with overbar}% +\UnicodeMathSymbol{"02A43}{\barcap }{\mathbin}{intersection with overbar}% +\UnicodeMathSymbol{"02A44}{\capwedge }{\mathbin}{intersection with logical and}% +\UnicodeMathSymbol{"02A45}{\cupvee }{\mathbin}{union with logical or}% +\UnicodeMathSymbol{"02A46}{\cupovercap }{\mathbin}{union above intersection}% +\UnicodeMathSymbol{"02A47}{\capovercup }{\mathbin}{intersection above union}% +\UnicodeMathSymbol{"02A48}{\cupbarcap }{\mathbin}{union above bar above intersection}% +\UnicodeMathSymbol{"02A49}{\capbarcup }{\mathbin}{intersection above bar above union}% +\UnicodeMathSymbol{"02A4A}{\twocups }{\mathbin}{union beside and joined with union}% +\UnicodeMathSymbol{"02A4B}{\twocaps }{\mathbin}{intersection beside and joined with intersection}% +\UnicodeMathSymbol{"02A4C}{\closedvarcup }{\mathbin}{closed union with serifs}% +\UnicodeMathSymbol{"02A4D}{\closedvarcap }{\mathbin}{closed intersection with serifs}% +\UnicodeMathSymbol{"02A4E}{\Sqcap }{\mathbin}{double square intersection}% +\UnicodeMathSymbol{"02A4F}{\Sqcup }{\mathbin}{double square union}% +\UnicodeMathSymbol{"02A50}{\closedvarcupsmashprod }{\mathbin}{closed union with serifs and smash product}% +\UnicodeMathSymbol{"02A51}{\wedgeodot }{\mathbin}{logical and with dot above}% +\UnicodeMathSymbol{"02A52}{\veeodot }{\mathbin}{logical or with dot above}% +\UnicodeMathSymbol{"02A53}{\Wedge }{\mathbin}{double logical and}% +\UnicodeMathSymbol{"02A54}{\Vee }{\mathbin}{double logical or}% +\UnicodeMathSymbol{"02A55}{\wedgeonwedge }{\mathbin}{two intersecting logical and}% +\UnicodeMathSymbol{"02A56}{\veeonvee }{\mathbin}{two intersecting logical or}% +\UnicodeMathSymbol{"02A57}{\bigslopedvee }{\mathbin}{sloping large or}% +\UnicodeMathSymbol{"02A58}{\bigslopedwedge }{\mathbin}{sloping large and}% +\UnicodeMathSymbol{"02A59}{\veeonwedge }{\mathrel}{logical or overlapping logical and}% +\UnicodeMathSymbol{"02A5A}{\wedgemidvert }{\mathbin}{logical and with middle stem}% +\UnicodeMathSymbol{"02A5B}{\veemidvert }{\mathbin}{logical or with middle stem}% +\UnicodeMathSymbol{"02A5C}{\midbarwedge }{\mathbin}{ogical and with horizontal dash}% +\UnicodeMathSymbol{"02A5D}{\midbarvee }{\mathbin}{logical or with horizontal dash}% +\UnicodeMathSymbol{"02A5E}{\doublebarwedge }{\mathbin}{logical and with double overbar}% +\UnicodeMathSymbol{"02A5F}{\wedgebar }{\mathbin}{logical and with underbar}% +\UnicodeMathSymbol{"02A60}{\wedgedoublebar }{\mathbin}{logical and with double underbar}% +\UnicodeMathSymbol{"02A61}{\varveebar }{\mathbin}{small vee with underbar}% +\UnicodeMathSymbol{"02A62}{\doublebarvee }{\mathbin}{logical or with double overbar}% +\UnicodeMathSymbol{"02A63}{\veedoublebar }{\mathbin}{logical or with double underbar}% +\UnicodeMathSymbol{"02A64}{\dsub }{\mathbin}{z notation domain antirestriction}% +\UnicodeMathSymbol{"02A65}{\rsub }{\mathbin}{z notation range antirestriction}% +\UnicodeMathSymbol{"02A66}{\eqdot }{\mathrel}{equals sign with dot below}% +\UnicodeMathSymbol{"02A67}{\dotequiv }{\mathrel}{identical with dot above}% +\UnicodeMathSymbol{"02A68}{\equivVert }{\mathrel}{triple horizontal bar with double vertical stroke}% +\UnicodeMathSymbol{"02A69}{\equivVvert }{\mathrel}{triple horizontal bar with triple vertical stroke}% +\UnicodeMathSymbol{"02A6A}{\dotsim }{\mathrel}{tilde operator with dot above}% +\UnicodeMathSymbol{"02A6B}{\simrdots }{\mathrel}{tilde operator with rising dots}% +\UnicodeMathSymbol{"02A6C}{\simminussim }{\mathrel}{similar minus similar}% +\UnicodeMathSymbol{"02A6D}{\congdot }{\mathrel}{congruent with dot above}% +\UnicodeMathSymbol{"02A6E}{\asteq }{\mathrel}{equals with asterisk}% +\UnicodeMathSymbol{"02A6F}{\hatapprox }{\mathrel}{almost equal to with circumflex accent}% +\UnicodeMathSymbol{"02A70}{\approxeqq }{\mathrel}{approximately equal or equal to}% +\UnicodeMathSymbol{"02A71}{\eqqplus }{\mathbin}{equals sign above plus sign}% +\UnicodeMathSymbol{"02A72}{\pluseqq }{\mathbin}{plus sign above equals sign}% +\UnicodeMathSymbol{"02A73}{\eqqsim }{\mathrel}{equals sign above tilde operator}% +\UnicodeMathSymbol{"02A74}{\Coloneq }{\mathrel}{double colon equal}% +\UnicodeMathSymbol{"02A75}{\eqeq }{\mathrel}{two consecutive equals signs}% +\UnicodeMathSymbol{"02A76}{\eqeqeq }{\mathrel}{three consecutive equals signs}% +\UnicodeMathSymbol{"02A77}{\ddotseq }{\mathrel}{equals sign with two dots above and two dots below}% +\UnicodeMathSymbol{"02A78}{\equivDD }{\mathrel}{equivalent with four dots above}% +\UnicodeMathSymbol{"02A79}{\ltcir }{\mathrel}{less-than with circle inside}% +\UnicodeMathSymbol{"02A7A}{\gtcir }{\mathrel}{greater-than with circle inside}% +\UnicodeMathSymbol{"02A7B}{\ltquest }{\mathrel}{less-than with question mark above}% +\UnicodeMathSymbol{"02A7C}{\gtquest }{\mathrel}{greater-than with question mark above}% +\UnicodeMathSymbol{"02A7D}{\leqslant }{\mathrel}{less-than or slanted equal to}% +\UnicodeMathSymbol{"02A7E}{\geqslant }{\mathrel}{greater-than or slanted equal to}% +\UnicodeMathSymbol{"02A7F}{\lesdot }{\mathrel}{less-than or slanted equal to with dot inside}% +\UnicodeMathSymbol{"02A80}{\gesdot }{\mathrel}{greater-than or slanted equal to with dot inside}% +\UnicodeMathSymbol{"02A81}{\lesdoto }{\mathrel}{less-than or slanted equal to with dot above}% +\UnicodeMathSymbol{"02A82}{\gesdoto }{\mathrel}{greater-than or slanted equal to with dot above}% +\UnicodeMathSymbol{"02A83}{\lesdotor }{\mathrel}{less-than or slanted equal to with dot above right}% +\UnicodeMathSymbol{"02A84}{\gesdotol }{\mathrel}{greater-than or slanted equal to with dot above left}% +\UnicodeMathSymbol{"02A85}{\lessapprox }{\mathrel}{less-than or approximate}% +\UnicodeMathSymbol{"02A86}{\gtrapprox }{\mathrel}{greater-than or approximate}% +\UnicodeMathSymbol{"02A87}{\lneq }{\mathrel}{less-than and single-line not equal to}% +\UnicodeMathSymbol{"02A88}{\gneq }{\mathrel}{greater-than and single-line not equal to}% +\UnicodeMathSymbol{"02A89}{\lnapprox }{\mathrel}{less-than and not approximate}% +\UnicodeMathSymbol{"02A8A}{\gnapprox }{\mathrel}{greater-than and not approximate}% +\UnicodeMathSymbol{"02A8B}{\lesseqqgtr }{\mathrel}{less-than above double-line equal above greater-than}% +\UnicodeMathSymbol{"02A8C}{\gtreqqless }{\mathrel}{greater-than above double-line equal above less-than}% +\UnicodeMathSymbol{"02A8D}{\lsime }{\mathrel}{less-than above similar or equal}% +\UnicodeMathSymbol{"02A8E}{\gsime }{\mathrel}{greater-than above similar or equal}% +\UnicodeMathSymbol{"02A8F}{\lsimg }{\mathrel}{less-than above similar above greater-than}% +\UnicodeMathSymbol{"02A90}{\gsiml }{\mathrel}{greater-than above similar above less-than}% +\UnicodeMathSymbol{"02A91}{\lgE }{\mathrel}{less-than above greater-than above double-line equal}% +\UnicodeMathSymbol{"02A92}{\glE }{\mathrel}{greater-than above less-than above double-line equal}% +\UnicodeMathSymbol{"02A93}{\lesges }{\mathrel}{less-than above slanted equal above greater-than above slanted equal}% +\UnicodeMathSymbol{"02A94}{\gesles }{\mathrel}{greater-than above slanted equal above less-than above slanted equal}% +\UnicodeMathSymbol{"02A95}{\eqslantless }{\mathrel}{slanted equal to or less-than}% +\UnicodeMathSymbol{"02A96}{\eqslantgtr }{\mathrel}{slanted equal to or greater-than}% +\UnicodeMathSymbol{"02A97}{\elsdot }{\mathrel}{slanted equal to or less-than with dot inside}% +\UnicodeMathSymbol{"02A98}{\egsdot }{\mathrel}{slanted equal to or greater-than with dot inside}% +\UnicodeMathSymbol{"02A99}{\eqqless }{\mathrel}{double-line equal to or less-than}% +\UnicodeMathSymbol{"02A9A}{\eqqgtr }{\mathrel}{double-line equal to or greater-than}% +\UnicodeMathSymbol{"02A9B}{\eqqslantless }{\mathrel}{double-line slanted equal to or less-than}% +\UnicodeMathSymbol{"02A9C}{\eqqslantgtr }{\mathrel}{double-line slanted equal to or greater-than}% +\UnicodeMathSymbol{"02A9D}{\simless }{\mathrel}{similar or less-than}% +\UnicodeMathSymbol{"02A9E}{\simgtr }{\mathrel}{similar or greater-than}% +\UnicodeMathSymbol{"02A9F}{\simlE }{\mathrel}{similar above less-than above equals sign}% +\UnicodeMathSymbol{"02AA0}{\simgE }{\mathrel}{similar above greater-than above equals sign}% +\UnicodeMathSymbol{"02AA1}{\Lt }{\mathrel}{double nested less-than}% +\UnicodeMathSymbol{"02AA2}{\Gt }{\mathrel}{double nested greater-than}% +\UnicodeMathSymbol{"02AA3}{\partialmeetcontraction }{\mathrel}{double less-than with underbar}% +\UnicodeMathSymbol{"02AA4}{\glj }{\mathrel}{greater-than overlapping less-than}% +\UnicodeMathSymbol{"02AA5}{\gla }{\mathrel}{greater-than beside less-than}% +\UnicodeMathSymbol{"02AA6}{\ltcc }{\mathrel}{less-than closed by curve}% +\UnicodeMathSymbol{"02AA7}{\gtcc }{\mathrel}{greater-than closed by curve}% +\UnicodeMathSymbol{"02AA8}{\lescc }{\mathrel}{less-than closed by curve above slanted equal}% +\UnicodeMathSymbol{"02AA9}{\gescc }{\mathrel}{greater-than closed by curve above slanted equal}% +\UnicodeMathSymbol{"02AAA}{\smt }{\mathrel}{smaller than}% +\UnicodeMathSymbol{"02AAB}{\lat }{\mathrel}{larger than}% +\UnicodeMathSymbol{"02AAC}{\smte }{\mathrel}{smaller than or equal to}% +\UnicodeMathSymbol{"02AAD}{\late }{\mathrel}{larger than or equal to}% +\UnicodeMathSymbol{"02AAE}{\bumpeqq }{\mathrel}{equals sign with bumpy above}% +\UnicodeMathSymbol{"02AAF}{\preceq }{\mathrel}{precedes above single-line equals sign}% +\UnicodeMathSymbol{"02AB0}{\succeq }{\mathrel}{succeeds above single-line equals sign}% +\UnicodeMathSymbol{"02AB1}{\precneq }{\mathrel}{precedes above single-line not equal to}% +\UnicodeMathSymbol{"02AB2}{\succneq }{\mathrel}{succeeds above single-line not equal to}% +\UnicodeMathSymbol{"02AB3}{\preceqq }{\mathrel}{precedes above equals sign}% +\UnicodeMathSymbol{"02AB4}{\succeqq }{\mathrel}{succeeds above equals sign}% +\UnicodeMathSymbol{"02AB5}{\precneqq }{\mathrel}{precedes above not equal to}% +\UnicodeMathSymbol{"02AB6}{\succneqq }{\mathrel}{succeeds above not equal to}% +\UnicodeMathSymbol{"02AB7}{\precapprox }{\mathrel}{precedes above almost equal to}% +\UnicodeMathSymbol{"02AB8}{\succapprox }{\mathrel}{succeeds above almost equal to}% +\UnicodeMathSymbol{"02AB9}{\precnapprox }{\mathrel}{precedes above not almost equal to}% +\UnicodeMathSymbol{"02ABA}{\succnapprox }{\mathrel}{succeeds above not almost equal to}% +\UnicodeMathSymbol{"02ABB}{\Prec }{\mathrel}{double precedes}% +\UnicodeMathSymbol{"02ABC}{\Succ }{\mathrel}{double succeeds}% +\UnicodeMathSymbol{"02ABD}{\subsetdot }{\mathrel}{subset with dot}% +\UnicodeMathSymbol{"02ABE}{\supsetdot }{\mathrel}{superset with dot}% +\UnicodeMathSymbol{"02ABF}{\subsetplus }{\mathrel}{subset with plus sign below}% +\UnicodeMathSymbol{"02AC0}{\supsetplus }{\mathrel}{superset with plus sign below}% +\UnicodeMathSymbol{"02AC1}{\submult }{\mathrel}{subset with multiplication sign below}% +\UnicodeMathSymbol{"02AC2}{\supmult }{\mathrel}{superset with multiplication sign below}% +\UnicodeMathSymbol{"02AC3}{\subedot }{\mathrel}{subset of or equal to with dot above}% +\UnicodeMathSymbol{"02AC4}{\supedot }{\mathrel}{superset of or equal to with dot above}% +\UnicodeMathSymbol{"02AC5}{\subseteqq }{\mathrel}{subset of above equals sign}% +\UnicodeMathSymbol{"02AC6}{\supseteqq }{\mathrel}{superset of above equals sign}% +\UnicodeMathSymbol{"02AC7}{\subsim }{\mathrel}{subset of above tilde operator}% +\UnicodeMathSymbol{"02AC8}{\supsim }{\mathrel}{superset of above tilde operator}% +\UnicodeMathSymbol{"02AC9}{\subsetapprox }{\mathrel}{subset of above almost equal to}% +\UnicodeMathSymbol{"02ACA}{\supsetapprox }{\mathrel}{superset of above almost equal to}% +\UnicodeMathSymbol{"02ACB}{\subsetneqq }{\mathrel}{subset of above not equal to}% +\UnicodeMathSymbol{"02ACC}{\supsetneqq }{\mathrel}{superset of above not equal to}% +\UnicodeMathSymbol{"02ACD}{\lsqhook }{\mathrel}{square left open box operator}% +\UnicodeMathSymbol{"02ACE}{\rsqhook }{\mathrel}{square right open box operator}% +\UnicodeMathSymbol{"02ACF}{\csub }{\mathrel}{closed subset}% +\UnicodeMathSymbol{"02AD0}{\csup }{\mathrel}{closed superset}% +\UnicodeMathSymbol{"02AD1}{\csube }{\mathrel}{closed subset or equal to}% +\UnicodeMathSymbol{"02AD2}{\csupe }{\mathrel}{closed superset or equal to}% +\UnicodeMathSymbol{"02AD3}{\subsup }{\mathrel}{subset above superset}% +\UnicodeMathSymbol{"02AD4}{\supsub }{\mathrel}{superset above subset}% +\UnicodeMathSymbol{"02AD5}{\subsub }{\mathrel}{subset above subset}% +\UnicodeMathSymbol{"02AD6}{\supsup }{\mathrel}{superset above superset}% +\UnicodeMathSymbol{"02AD7}{\suphsub }{\mathrel}{superset beside subset}% +\UnicodeMathSymbol{"02AD8}{\supdsub }{\mathrel}{superset beside and joined by dash with subset}% +\UnicodeMathSymbol{"02AD9}{\forkv }{\mathrel}{element of opening downwards}% +\UnicodeMathSymbol{"02ADA}{\topfork }{\mathrel}{pitchfork with tee top}% +\UnicodeMathSymbol{"02ADB}{\mlcp }{\mathrel}{transversal intersection}% +\UnicodeMathSymbol{"02ADC}{\forks }{\mathrel}{forking}% +\UnicodeMathSymbol{"02ADD}{\forksnot }{\mathrel}{nonforking}% +\UnicodeMathSymbol{"02ADE}{\shortlefttack }{\mathrel}{short left tack}% +\UnicodeMathSymbol{"02ADF}{\shortdowntack }{\mathrel}{short down tack}% +\UnicodeMathSymbol{"02AE0}{\shortuptack }{\mathrel}{short up tack}% +\UnicodeMathSymbol{"02AE1}{\perps }{\mathord}{perpendicular with s}% +\UnicodeMathSymbol{"02AE2}{\vDdash }{\mathrel}{vertical bar triple right turnstile}% +\UnicodeMathSymbol{"02AE3}{\dashV }{\mathrel}{double vertical bar left turnstile}% +\UnicodeMathSymbol{"02AE4}{\Dashv }{\mathrel}{vertical bar double left turnstile}% +\UnicodeMathSymbol{"02AE5}{\DashV }{\mathrel}{double vertical bar double left turnstile}% +\UnicodeMathSymbol{"02AE6}{\varVdash }{\mathrel}{long dash from left member of double vertical}% +\UnicodeMathSymbol{"02AE7}{\Barv }{\mathrel}{short down tack with overbar}% +\UnicodeMathSymbol{"02AE8}{\vBar }{\mathrel}{short up tack with underbar}% +\UnicodeMathSymbol{"02AE9}{\vBarv }{\mathrel}{short up tack above short down tack}% +\UnicodeMathSymbol{"02AEA}{\barV }{\mathrel}{double down tack}% +\UnicodeMathSymbol{"02AEB}{\Vbar }{\mathrel}{double up tack}% +\UnicodeMathSymbol{"02AEC}{\Not }{\mathrel}{double stroke not sign}% +\UnicodeMathSymbol{"02AED}{\bNot }{\mathrel}{reversed double stroke not sign}% +\UnicodeMathSymbol{"02AEE}{\revnmid }{\mathrel}{does not divide with reversed negation slash}% +\UnicodeMathSymbol{"02AEF}{\cirmid }{\mathrel}{vertical line with circle above}% +\UnicodeMathSymbol{"02AF0}{\midcir }{\mathrel}{vertical line with circle below}% +\UnicodeMathSymbol{"02AF1}{\topcir }{\mathord}{down tack with circle below}% +\UnicodeMathSymbol{"02AF2}{\nhpar }{\mathrel}{parallel with horizontal stroke}% +\UnicodeMathSymbol{"02AF3}{\parsim }{\mathrel}{parallel with tilde operator}% +\UnicodeMathSymbol{"02AF4}{\interleave }{\mathbin}{triple vertical bar binary relation}% +\UnicodeMathSymbol{"02AF5}{\nhVvert }{\mathbin}{triple vertical bar with horizontal stroke}% +\UnicodeMathSymbol{"02AF6}{\threedotcolon }{\mathbin}{triple colon operator}% +\UnicodeMathSymbol{"02AF7}{\lllnest }{\mathrel}{stacked very much less-than}% +\UnicodeMathSymbol{"02AF8}{\gggnest }{\mathrel}{stacked very much greater-than}% +\UnicodeMathSymbol{"02AF9}{\leqqslant }{\mathrel}{double-line slanted less-than or equal to}% +\UnicodeMathSymbol{"02AFA}{\geqqslant }{\mathrel}{double-line slanted greater-than or equal to}% +\UnicodeMathSymbol{"02AFB}{\trslash }{\mathbin}{triple solidus binary relation}% +\UnicodeMathSymbol{"02AFC}{\biginterleave }{\mathop}{large triple vertical bar operator}% +\UnicodeMathSymbol{"02AFD}{\sslash }{\mathbin}{double solidus operator}% +\UnicodeMathSymbol{"02AFE}{\talloblong }{\mathbin}{white vertical bar}% +\UnicodeMathSymbol{"02AFF}{\bigtalloblong }{\mathop}{n-ary white vertical bar}% +\UnicodeMathSymbol{"02B12}{\squaretopblack }{\mathord}{square with top half black}% +\UnicodeMathSymbol{"02B13}{\squarebotblack }{\mathord}{square with bottom half black}% +\UnicodeMathSymbol{"02B14}{\squareurblack }{\mathord}{square with upper right diagonal half black}% +\UnicodeMathSymbol{"02B15}{\squarellblack }{\mathord}{square with lower left diagonal half black}% +\UnicodeMathSymbol{"02B16}{\diamondleftblack }{\mathord}{diamond with left half black}% +\UnicodeMathSymbol{"02B17}{\diamondrightblack }{\mathord}{diamond with right half black}% +\UnicodeMathSymbol{"02B18}{\diamondtopblack }{\mathord}{diamond with top half black}% +\UnicodeMathSymbol{"02B19}{\diamondbotblack }{\mathord}{diamond with bottom half black}% +\UnicodeMathSymbol{"02B1A}{\dottedsquare }{\mathord}{dotted square}% +\UnicodeMathSymbol{"02B1B}{\lgblksquare }{\mathord}{black large square}% +\UnicodeMathSymbol{"02B1C}{\lgwhtsquare }{\mathord}{white large square}% +\UnicodeMathSymbol{"02B1D}{\vysmblksquare }{\mathord}{black very small square}% +\UnicodeMathSymbol{"02B1E}{\vysmwhtsquare }{\mathord}{white very small square}% +\UnicodeMathSymbol{"02B1F}{\pentagonblack }{\mathord}{black pentagon}% +\UnicodeMathSymbol{"02B20}{\pentagon }{\mathord}{white pentagon}% +\UnicodeMathSymbol{"02B21}{\varhexagon }{\mathord}{white hexagon}% +\UnicodeMathSymbol{"02B22}{\varhexagonblack }{\mathord}{black hexagon}% +\UnicodeMathSymbol{"02B23}{\hexagonblack }{\mathord}{horizontal black hexagon}% +\UnicodeMathSymbol{"02B24}{\lgblkcircle }{\mathord}{black large circle}% +\UnicodeMathSymbol{"02B25}{\mdblkdiamond }{\mathord}{black medium diamond}% +\UnicodeMathSymbol{"02B26}{\mdwhtdiamond }{\mathord}{white medium diamond}% +\UnicodeMathSymbol{"02B27}{\mdblklozenge }{\mathord}{black medium lozenge}% +\UnicodeMathSymbol{"02B28}{\mdwhtlozenge }{\mathord}{white medium lozenge}% +\UnicodeMathSymbol{"02B29}{\smblkdiamond }{\mathord}{black small diamond}% +\UnicodeMathSymbol{"02B2A}{\smblklozenge }{\mathord}{black small lozenge}% +\UnicodeMathSymbol{"02B2B}{\smwhtlozenge }{\mathord}{white small lozenge}% +\UnicodeMathSymbol{"02B2C}{\blkhorzoval }{\mathord}{black horizontal ellipse}% +\UnicodeMathSymbol{"02B2D}{\whthorzoval }{\mathord}{white horizontal ellipse}% +\UnicodeMathSymbol{"02B2E}{\blkvertoval }{\mathord}{black vertical ellipse}% +\UnicodeMathSymbol{"02B2F}{\whtvertoval }{\mathord}{white vertical ellipse}% +\UnicodeMathSymbol{"02B30}{\circleonleftarrow }{\mathrel}{left arrow with small circle}% +\UnicodeMathSymbol{"02B31}{\leftthreearrows }{\mathrel}{three leftwards arrows}% +\UnicodeMathSymbol{"02B32}{\leftarrowonoplus }{\mathrel}{left arrow with circled plus}% +\UnicodeMathSymbol{"02B33}{\longleftsquigarrow }{\mathrel}{long leftwards squiggle arrow}% +\UnicodeMathSymbol{"02B34}{\nvtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with vertical stroke}% +\UnicodeMathSymbol{"02B35}{\nVtwoheadleftarrow }{\mathrel}{leftwards two-headed arrow with double vertical stroke}% +\UnicodeMathSymbol{"02B36}{\twoheadmapsfrom }{\mathrel}{leftwards two-headed arrow from bar}% +\UnicodeMathSymbol{"02B37}{\twoheadleftdbkarrow }{\mathrel}{leftwards two-headed triple-dash arrow}% +\UnicodeMathSymbol{"02B38}{\leftdotarrow }{\mathrel}{leftwards arrow with dotted stem}% +\UnicodeMathSymbol{"02B39}{\nvleftarrowtail }{\mathrel}{leftwards arrow with tail with vertical stroke}% +\UnicodeMathSymbol{"02B3A}{\nVleftarrowtail }{\mathrel}{leftwards arrow with tail with double vertical stroke}% +\UnicodeMathSymbol{"02B3B}{\twoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail}% +\UnicodeMathSymbol{"02B3C}{\nvtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with vertical stroke}% +\UnicodeMathSymbol{"02B3D}{\nVtwoheadleftarrowtail }{\mathrel}{leftwards two-headed arrow with tail with double vertical stroke}% +\UnicodeMathSymbol{"02B3E}{\leftarrowx }{\mathrel}{leftwards arrow through x}% +\UnicodeMathSymbol{"02B3F}{\leftcurvedarrow }{\mathrel}{wave arrow pointing directly left}% +\UnicodeMathSymbol{"02B40}{\equalleftarrow }{\mathrel}{equals sign above leftwards arrow}% +\UnicodeMathSymbol{"02B41}{\bsimilarleftarrow }{\mathrel}{reverse tilde operator above leftwards arrow}% +\UnicodeMathSymbol{"02B42}{\leftarrowbackapprox }{\mathrel}{leftwards arrow above reverse almost equal to}% +\UnicodeMathSymbol{"02B43}{\rightarrowgtr }{\mathrel}{rightwards arrow through greater-than}% +\UnicodeMathSymbol{"02B44}{\rightarrowsupset }{\mathrel}{rightwards arrow through subset}% +\UnicodeMathSymbol{"02B45}{\LLeftarrow }{\mathrel}{leftwards quadruple arrow}% +\UnicodeMathSymbol{"02B46}{\RRightarrow }{\mathrel}{rightwards quadruple arrow}% +\UnicodeMathSymbol{"02B47}{\bsimilarrightarrow }{\mathrel}{reverse tilde operator above rightwards arrow}% +\UnicodeMathSymbol{"02B48}{\rightarrowbackapprox }{\mathrel}{rightwards arrow above reverse almost equal to}% +\UnicodeMathSymbol{"02B49}{\similarleftarrow }{\mathrel}{tilde operator above leftwards arrow}% +\UnicodeMathSymbol{"02B4A}{\leftarrowapprox }{\mathrel}{leftwards arrow above almost equal to}% +\UnicodeMathSymbol{"02B4B}{\leftarrowbsimilar }{\mathrel}{leftwards arrow above reverse tilde operator}% +\UnicodeMathSymbol{"02B4C}{\rightarrowbsimilar }{\mathrel}{righttwards arrow above reverse tilde operator}% +\UnicodeMathSymbol{"02B50}{\medwhitestar }{\mathord}{white medium star}% +\UnicodeMathSymbol{"02B51}{\medblackstar }{\mathord}{black medium star}% +\UnicodeMathSymbol{"02B52}{\smwhitestar }{\mathord}{white small star}% +\UnicodeMathSymbol{"02B53}{\rightpentagonblack }{\mathord}{black right-pointing pentagon}% +\UnicodeMathSymbol{"02B54}{\rightpentagon }{\mathord}{white right-pointing pentagon}% +\UnicodeMathSymbol{"03012}{\postalmark }{\mathord}{postal mark}% +\UnicodeMathSymbol{"03030}{\hzigzag }{\mathord}{zigzag}% +\UnicodeMathSymbol{"1D400}{\mbfA }{\mathalpha}{mathematical bold capital a}% +\UnicodeMathSymbol{"1D401}{\mbfB }{\mathalpha}{mathematical bold capital b}% +\UnicodeMathSymbol{"1D402}{\mbfC }{\mathalpha}{mathematical bold capital c}% +\UnicodeMathSymbol{"1D403}{\mbfD }{\mathalpha}{mathematical bold capital d}% +\UnicodeMathSymbol{"1D404}{\mbfE }{\mathalpha}{mathematical bold capital e}% +\UnicodeMathSymbol{"1D405}{\mbfF }{\mathalpha}{mathematical bold capital f}% +\UnicodeMathSymbol{"1D406}{\mbfG }{\mathalpha}{mathematical bold capital g}% +\UnicodeMathSymbol{"1D407}{\mbfH }{\mathalpha}{mathematical bold capital h}% +\UnicodeMathSymbol{"1D408}{\mbfI }{\mathalpha}{mathematical bold capital i}% +\UnicodeMathSymbol{"1D409}{\mbfJ }{\mathalpha}{mathematical bold capital j}% +\UnicodeMathSymbol{"1D40A}{\mbfK }{\mathalpha}{mathematical bold capital k}% +\UnicodeMathSymbol{"1D40B}{\mbfL }{\mathalpha}{mathematical bold capital l}% +\UnicodeMathSymbol{"1D40C}{\mbfM }{\mathalpha}{mathematical bold capital m}% +\UnicodeMathSymbol{"1D40D}{\mbfN }{\mathalpha}{mathematical bold capital n}% +\UnicodeMathSymbol{"1D40E}{\mbfO }{\mathalpha}{mathematical bold capital o}% +\UnicodeMathSymbol{"1D40F}{\mbfP }{\mathalpha}{mathematical bold capital p}% +\UnicodeMathSymbol{"1D410}{\mbfQ }{\mathalpha}{mathematical bold capital q}% +\UnicodeMathSymbol{"1D411}{\mbfR }{\mathalpha}{mathematical bold capital r}% +\UnicodeMathSymbol{"1D412}{\mbfS }{\mathalpha}{mathematical bold capital s}% +\UnicodeMathSymbol{"1D413}{\mbfT }{\mathalpha}{mathematical bold capital t}% +\UnicodeMathSymbol{"1D414}{\mbfU }{\mathalpha}{mathematical bold capital u}% +\UnicodeMathSymbol{"1D415}{\mbfV }{\mathalpha}{mathematical bold capital v}% +\UnicodeMathSymbol{"1D416}{\mbfW }{\mathalpha}{mathematical bold capital w}% +\UnicodeMathSymbol{"1D417}{\mbfX }{\mathalpha}{mathematical bold capital x}% +\UnicodeMathSymbol{"1D418}{\mbfY }{\mathalpha}{mathematical bold capital y}% +\UnicodeMathSymbol{"1D419}{\mbfZ }{\mathalpha}{mathematical bold capital z}% +\UnicodeMathSymbol{"1D41A}{\mbfa }{\mathalpha}{mathematical bold small a}% +\UnicodeMathSymbol{"1D41B}{\mbfb }{\mathalpha}{mathematical bold small b}% +\UnicodeMathSymbol{"1D41C}{\mbfc }{\mathalpha}{mathematical bold small c}% +\UnicodeMathSymbol{"1D41D}{\mbfd }{\mathalpha}{mathematical bold small d}% +\UnicodeMathSymbol{"1D41E}{\mbfe }{\mathalpha}{mathematical bold small e}% +\UnicodeMathSymbol{"1D41F}{\mbff }{\mathalpha}{mathematical bold small f}% +\UnicodeMathSymbol{"1D420}{\mbfg }{\mathalpha}{mathematical bold small g}% +\UnicodeMathSymbol{"1D421}{\mbfh }{\mathalpha}{mathematical bold small h}% +\UnicodeMathSymbol{"1D422}{\mbfi }{\mathalpha}{mathematical bold small i}% +\UnicodeMathSymbol{"1D423}{\mbfj }{\mathalpha}{mathematical bold small j}% +\UnicodeMathSymbol{"1D424}{\mbfk }{\mathalpha}{mathematical bold small k}% +\UnicodeMathSymbol{"1D425}{\mbfl }{\mathalpha}{mathematical bold small l}% +\UnicodeMathSymbol{"1D426}{\mbfm }{\mathalpha}{mathematical bold small m}% +\UnicodeMathSymbol{"1D427}{\mbfn }{\mathalpha}{mathematical bold small n}% +\UnicodeMathSymbol{"1D428}{\mbfo }{\mathalpha}{mathematical bold small o}% +\UnicodeMathSymbol{"1D429}{\mbfp }{\mathalpha}{mathematical bold small p}% +\UnicodeMathSymbol{"1D42A}{\mbfq }{\mathalpha}{mathematical bold small q}% +\UnicodeMathSymbol{"1D42B}{\mbfr }{\mathalpha}{mathematical bold small r}% +\UnicodeMathSymbol{"1D42C}{\mbfs }{\mathalpha}{mathematical bold small s}% +\UnicodeMathSymbol{"1D42D}{\mbft }{\mathalpha}{mathematical bold small t}% +\UnicodeMathSymbol{"1D42E}{\mbfu }{\mathalpha}{mathematical bold small u}% +\UnicodeMathSymbol{"1D42F}{\mbfv }{\mathalpha}{mathematical bold small v}% +\UnicodeMathSymbol{"1D430}{\mbfw }{\mathalpha}{mathematical bold small w}% +\UnicodeMathSymbol{"1D431}{\mbfx }{\mathalpha}{mathematical bold small x}% +\UnicodeMathSymbol{"1D432}{\mbfy }{\mathalpha}{mathematical bold small y}% +\UnicodeMathSymbol{"1D433}{\mbfz }{\mathalpha}{mathematical bold small z}% +\UnicodeMathSymbol{"1D434}{\mitA }{\mathalpha}{mathematical italic capital a}% +\UnicodeMathSymbol{"1D435}{\mitB }{\mathalpha}{mathematical italic capital b}% +\UnicodeMathSymbol{"1D436}{\mitC }{\mathalpha}{mathematical italic capital c}% +\UnicodeMathSymbol{"1D437}{\mitD }{\mathalpha}{mathematical italic capital d}% +\UnicodeMathSymbol{"1D438}{\mitE }{\mathalpha}{mathematical italic capital e}% +\UnicodeMathSymbol{"1D439}{\mitF }{\mathalpha}{mathematical italic capital f}% +\UnicodeMathSymbol{"1D43A}{\mitG }{\mathalpha}{mathematical italic capital g}% +\UnicodeMathSymbol{"1D43B}{\mitH }{\mathalpha}{mathematical italic capital h}% +\UnicodeMathSymbol{"1D43C}{\mitI }{\mathalpha}{mathematical italic capital i}% +\UnicodeMathSymbol{"1D43D}{\mitJ }{\mathalpha}{mathematical italic capital j}% +\UnicodeMathSymbol{"1D43E}{\mitK }{\mathalpha}{mathematical italic capital k}% +\UnicodeMathSymbol{"1D43F}{\mitL }{\mathalpha}{mathematical italic capital l}% +\UnicodeMathSymbol{"1D440}{\mitM }{\mathalpha}{mathematical italic capital m}% +\UnicodeMathSymbol{"1D441}{\mitN }{\mathalpha}{mathematical italic capital n}% +\UnicodeMathSymbol{"1D442}{\mitO }{\mathalpha}{mathematical italic capital o}% +\UnicodeMathSymbol{"1D443}{\mitP }{\mathalpha}{mathematical italic capital p}% +\UnicodeMathSymbol{"1D444}{\mitQ }{\mathalpha}{mathematical italic capital q}% +\UnicodeMathSymbol{"1D445}{\mitR }{\mathalpha}{mathematical italic capital r}% +\UnicodeMathSymbol{"1D446}{\mitS }{\mathalpha}{mathematical italic capital s}% +\UnicodeMathSymbol{"1D447}{\mitT }{\mathalpha}{mathematical italic capital t}% +\UnicodeMathSymbol{"1D448}{\mitU }{\mathalpha}{mathematical italic capital u}% +\UnicodeMathSymbol{"1D449}{\mitV }{\mathalpha}{mathematical italic capital v}% +\UnicodeMathSymbol{"1D44A}{\mitW }{\mathalpha}{mathematical italic capital w}% +\UnicodeMathSymbol{"1D44B}{\mitX }{\mathalpha}{mathematical italic capital x}% +\UnicodeMathSymbol{"1D44C}{\mitY }{\mathalpha}{mathematical italic capital y}% +\UnicodeMathSymbol{"1D44D}{\mitZ }{\mathalpha}{mathematical italic capital z}% +\UnicodeMathSymbol{"1D44E}{\mita }{\mathalpha}{mathematical italic small a}% +\UnicodeMathSymbol{"1D44F}{\mitb }{\mathalpha}{mathematical italic small b}% +\UnicodeMathSymbol{"1D450}{\mitc }{\mathalpha}{mathematical italic small c}% +\UnicodeMathSymbol{"1D451}{\mitd }{\mathalpha}{mathematical italic small d}% +\UnicodeMathSymbol{"1D452}{\mite }{\mathalpha}{mathematical italic small e}% +\UnicodeMathSymbol{"1D453}{\mitf }{\mathalpha}{mathematical italic small f}% +\UnicodeMathSymbol{"1D454}{\mitg }{\mathalpha}{mathematical italic small g}% +\UnicodeMathSymbol{"1D456}{\miti }{\mathalpha}{mathematical italic small i}% +\UnicodeMathSymbol{"1D457}{\mitj }{\mathalpha}{mathematical italic small j}% +\UnicodeMathSymbol{"1D458}{\mitk }{\mathalpha}{mathematical italic small k}% +\UnicodeMathSymbol{"1D459}{\mitl }{\mathalpha}{mathematical italic small l}% +\UnicodeMathSymbol{"1D45A}{\mitm }{\mathalpha}{mathematical italic small m}% +\UnicodeMathSymbol{"1D45B}{\mitn }{\mathalpha}{mathematical italic small n}% +\UnicodeMathSymbol{"1D45C}{\mito }{\mathalpha}{mathematical italic small o}% +\UnicodeMathSymbol{"1D45D}{\mitp }{\mathalpha}{mathematical italic small p}% +\UnicodeMathSymbol{"1D45E}{\mitq }{\mathalpha}{mathematical italic small q}% +\UnicodeMathSymbol{"1D45F}{\mitr }{\mathalpha}{mathematical italic small r}% +\UnicodeMathSymbol{"1D460}{\mits }{\mathalpha}{mathematical italic small s}% +\UnicodeMathSymbol{"1D461}{\mitt }{\mathalpha}{mathematical italic small t}% +\UnicodeMathSymbol{"1D462}{\mitu }{\mathalpha}{mathematical italic small u}% +\UnicodeMathSymbol{"1D463}{\mitv }{\mathalpha}{mathematical italic small v}% +\UnicodeMathSymbol{"1D464}{\mitw }{\mathalpha}{mathematical italic small w}% +\UnicodeMathSymbol{"1D465}{\mitx }{\mathalpha}{mathematical italic small x}% +\UnicodeMathSymbol{"1D466}{\mity }{\mathalpha}{mathematical italic small y}% +\UnicodeMathSymbol{"1D467}{\mitz }{\mathalpha}{mathematical italic small z}% +\UnicodeMathSymbol{"1D468}{\mbfitA }{\mathalpha}{mathematical bold italic capital a}% +\UnicodeMathSymbol{"1D469}{\mbfitB }{\mathalpha}{mathematical bold italic capital b}% +\UnicodeMathSymbol{"1D46A}{\mbfitC }{\mathalpha}{mathematical bold italic capital c}% +\UnicodeMathSymbol{"1D46B}{\mbfitD }{\mathalpha}{mathematical bold italic capital d}% +\UnicodeMathSymbol{"1D46C}{\mbfitE }{\mathalpha}{mathematical bold italic capital e}% +\UnicodeMathSymbol{"1D46D}{\mbfitF }{\mathalpha}{mathematical bold italic capital f}% +\UnicodeMathSymbol{"1D46E}{\mbfitG }{\mathalpha}{mathematical bold italic capital g}% +\UnicodeMathSymbol{"1D46F}{\mbfitH }{\mathalpha}{mathematical bold italic capital h}% +\UnicodeMathSymbol{"1D470}{\mbfitI }{\mathalpha}{mathematical bold italic capital i}% +\UnicodeMathSymbol{"1D471}{\mbfitJ }{\mathalpha}{mathematical bold italic capital j}% +\UnicodeMathSymbol{"1D472}{\mbfitK }{\mathalpha}{mathematical bold italic capital k}% +\UnicodeMathSymbol{"1D473}{\mbfitL }{\mathalpha}{mathematical bold italic capital l}% +\UnicodeMathSymbol{"1D474}{\mbfitM }{\mathalpha}{mathematical bold italic capital m}% +\UnicodeMathSymbol{"1D475}{\mbfitN }{\mathalpha}{mathematical bold italic capital n}% +\UnicodeMathSymbol{"1D476}{\mbfitO }{\mathalpha}{mathematical bold italic capital o}% +\UnicodeMathSymbol{"1D477}{\mbfitP }{\mathalpha}{mathematical bold italic capital p}% +\UnicodeMathSymbol{"1D478}{\mbfitQ }{\mathalpha}{mathematical bold italic capital q}% +\UnicodeMathSymbol{"1D479}{\mbfitR }{\mathalpha}{mathematical bold italic capital r}% +\UnicodeMathSymbol{"1D47A}{\mbfitS }{\mathalpha}{mathematical bold italic capital s}% +\UnicodeMathSymbol{"1D47B}{\mbfitT }{\mathalpha}{mathematical bold italic capital t}% +\UnicodeMathSymbol{"1D47C}{\mbfitU }{\mathalpha}{mathematical bold italic capital u}% +\UnicodeMathSymbol{"1D47D}{\mbfitV }{\mathalpha}{mathematical bold italic capital v}% +\UnicodeMathSymbol{"1D47E}{\mbfitW }{\mathalpha}{mathematical bold italic capital w}% +\UnicodeMathSymbol{"1D47F}{\mbfitX }{\mathalpha}{mathematical bold italic capital x}% +\UnicodeMathSymbol{"1D480}{\mbfitY }{\mathalpha}{mathematical bold italic capital y}% +\UnicodeMathSymbol{"1D481}{\mbfitZ }{\mathalpha}{mathematical bold italic capital z}% +\UnicodeMathSymbol{"1D482}{\mbfita }{\mathalpha}{mathematical bold italic small a}% +\UnicodeMathSymbol{"1D483}{\mbfitb }{\mathalpha}{mathematical bold italic small b}% +\UnicodeMathSymbol{"1D484}{\mbfitc }{\mathalpha}{mathematical bold italic small c}% +\UnicodeMathSymbol{"1D485}{\mbfitd }{\mathalpha}{mathematical bold italic small d}% +\UnicodeMathSymbol{"1D486}{\mbfite }{\mathalpha}{mathematical bold italic small e}% +\UnicodeMathSymbol{"1D487}{\mbfitf }{\mathalpha}{mathematical bold italic small f}% +\UnicodeMathSymbol{"1D488}{\mbfitg }{\mathalpha}{mathematical bold italic small g}% +\UnicodeMathSymbol{"1D489}{\mbfith }{\mathalpha}{mathematical bold italic small h}% +\UnicodeMathSymbol{"1D48A}{\mbfiti }{\mathalpha}{mathematical bold italic small i}% +\UnicodeMathSymbol{"1D48B}{\mbfitj }{\mathalpha}{mathematical bold italic small j}% +\UnicodeMathSymbol{"1D48C}{\mbfitk }{\mathalpha}{mathematical bold italic small k}% +\UnicodeMathSymbol{"1D48D}{\mbfitl }{\mathalpha}{mathematical bold italic small l}% +\UnicodeMathSymbol{"1D48E}{\mbfitm }{\mathalpha}{mathematical bold italic small m}% +\UnicodeMathSymbol{"1D48F}{\mbfitn }{\mathalpha}{mathematical bold italic small n}% +\UnicodeMathSymbol{"1D490}{\mbfito }{\mathalpha}{mathematical bold italic small o}% +\UnicodeMathSymbol{"1D491}{\mbfitp }{\mathalpha}{mathematical bold italic small p}% +\UnicodeMathSymbol{"1D492}{\mbfitq }{\mathalpha}{mathematical bold italic small q}% +\UnicodeMathSymbol{"1D493}{\mbfitr }{\mathalpha}{mathematical bold italic small r}% +\UnicodeMathSymbol{"1D494}{\mbfits }{\mathalpha}{mathematical bold italic small s}% +\UnicodeMathSymbol{"1D495}{\mbfitt }{\mathalpha}{mathematical bold italic small t}% +\UnicodeMathSymbol{"1D496}{\mbfitu }{\mathalpha}{mathematical bold italic small u}% +\UnicodeMathSymbol{"1D497}{\mbfitv }{\mathalpha}{mathematical bold italic small v}% +\UnicodeMathSymbol{"1D498}{\mbfitw }{\mathalpha}{mathematical bold italic small w}% +\UnicodeMathSymbol{"1D499}{\mbfitx }{\mathalpha}{mathematical bold italic small x}% +\UnicodeMathSymbol{"1D49A}{\mbfity }{\mathalpha}{mathematical bold italic small y}% +\UnicodeMathSymbol{"1D49B}{\mbfitz }{\mathalpha}{mathematical bold italic small z}% +\UnicodeMathSymbol{"1D49C}{\mscrA }{\mathalpha}{mathematical script capital a}% +\UnicodeMathSymbol{"1D49E}{\mscrC }{\mathalpha}{mathematical script capital c}% +\UnicodeMathSymbol{"1D49F}{\mscrD }{\mathalpha}{mathematical script capital d}% +\UnicodeMathSymbol{"1D4A2}{\mscrG }{\mathalpha}{mathematical script capital g}% +\UnicodeMathSymbol{"1D4A5}{\mscrJ }{\mathalpha}{mathematical script capital j}% +\UnicodeMathSymbol{"1D4A6}{\mscrK }{\mathalpha}{mathematical script capital k}% +\UnicodeMathSymbol{"1D4A9}{\mscrN }{\mathalpha}{mathematical script capital n}% +\UnicodeMathSymbol{"1D4AA}{\mscrO }{\mathalpha}{mathematical script capital o}% +\UnicodeMathSymbol{"1D4AB}{\mscrP }{\mathalpha}{mathematical script capital p}% +\UnicodeMathSymbol{"1D4AC}{\mscrQ }{\mathalpha}{mathematical script capital q}% +\UnicodeMathSymbol{"1D4AE}{\mscrS }{\mathalpha}{mathematical script capital s}% +\UnicodeMathSymbol{"1D4AF}{\mscrT }{\mathalpha}{mathematical script capital t}% +\UnicodeMathSymbol{"1D4B0}{\mscrU }{\mathalpha}{mathematical script capital u}% +\UnicodeMathSymbol{"1D4B1}{\mscrV }{\mathalpha}{mathematical script capital v}% +\UnicodeMathSymbol{"1D4B2}{\mscrW }{\mathalpha}{mathematical script capital w}% +\UnicodeMathSymbol{"1D4B3}{\mscrX }{\mathalpha}{mathematical script capital x}% +\UnicodeMathSymbol{"1D4B4}{\mscrY }{\mathalpha}{mathematical script capital y}% +\UnicodeMathSymbol{"1D4B5}{\mscrZ }{\mathalpha}{mathematical script capital z}% +\UnicodeMathSymbol{"1D4B6}{\mscra }{\mathalpha}{mathematical script small a}% +\UnicodeMathSymbol{"1D4B7}{\mscrb }{\mathalpha}{mathematical script small b}% +\UnicodeMathSymbol{"1D4B8}{\mscrc }{\mathalpha}{mathematical script small c}% +\UnicodeMathSymbol{"1D4B9}{\mscrd }{\mathalpha}{mathematical script small d}% +\UnicodeMathSymbol{"1D4BB}{\mscrf }{\mathalpha}{mathematical script small f}% +\UnicodeMathSymbol{"1D4BD}{\mscrh }{\mathalpha}{mathematical script small h}% +\UnicodeMathSymbol{"1D4BE}{\mscri }{\mathalpha}{mathematical script small i}% +\UnicodeMathSymbol{"1D4BF}{\mscrj }{\mathalpha}{mathematical script small j}% +\UnicodeMathSymbol{"1D4C0}{\mscrk }{\mathalpha}{mathematical script small k}% +\UnicodeMathSymbol{"1D4C1}{\mscrl }{\mathalpha}{mathematical script small l}% +\UnicodeMathSymbol{"1D4C2}{\mscrm }{\mathalpha}{mathematical script small m}% +\UnicodeMathSymbol{"1D4C3}{\mscrn }{\mathalpha}{mathematical script small n}% +\UnicodeMathSymbol{"1D4C5}{\mscrp }{\mathalpha}{mathematical script small p}% +\UnicodeMathSymbol{"1D4C6}{\mscrq }{\mathalpha}{mathematical script small q}% +\UnicodeMathSymbol{"1D4C7}{\mscrr }{\mathalpha}{mathematical script small r}% +\UnicodeMathSymbol{"1D4C8}{\mscrs }{\mathalpha}{mathematical script small s}% +\UnicodeMathSymbol{"1D4C9}{\mscrt }{\mathalpha}{mathematical script small t}% +\UnicodeMathSymbol{"1D4CA}{\mscru }{\mathalpha}{mathematical script small u}% +\UnicodeMathSymbol{"1D4CB}{\mscrv }{\mathalpha}{mathematical script small v}% +\UnicodeMathSymbol{"1D4CC}{\mscrw }{\mathalpha}{mathematical script small w}% +\UnicodeMathSymbol{"1D4CD}{\mscrx }{\mathalpha}{mathematical script small x}% +\UnicodeMathSymbol{"1D4CE}{\mscry }{\mathalpha}{mathematical script small y}% +\UnicodeMathSymbol{"1D4CF}{\mscrz }{\mathalpha}{mathematical script small z}% +\UnicodeMathSymbol{"1D4D0}{\mbfscrA }{\mathalpha}{mathematical bold script capital a}% +\UnicodeMathSymbol{"1D4D1}{\mbfscrB }{\mathalpha}{mathematical bold script capital b}% +\UnicodeMathSymbol{"1D4D2}{\mbfscrC }{\mathalpha}{mathematical bold script capital c}% +\UnicodeMathSymbol{"1D4D3}{\mbfscrD }{\mathalpha}{mathematical bold script capital d}% +\UnicodeMathSymbol{"1D4D4}{\mbfscrE }{\mathalpha}{mathematical bold script capital e}% +\UnicodeMathSymbol{"1D4D5}{\mbfscrF }{\mathalpha}{mathematical bold script capital f}% +\UnicodeMathSymbol{"1D4D6}{\mbfscrG }{\mathalpha}{mathematical bold script capital g}% +\UnicodeMathSymbol{"1D4D7}{\mbfscrH }{\mathalpha}{mathematical bold script capital h}% +\UnicodeMathSymbol{"1D4D8}{\mbfscrI }{\mathalpha}{mathematical bold script capital i}% +\UnicodeMathSymbol{"1D4D9}{\mbfscrJ }{\mathalpha}{mathematical bold script capital j}% +\UnicodeMathSymbol{"1D4DA}{\mbfscrK }{\mathalpha}{mathematical bold script capital k}% +\UnicodeMathSymbol{"1D4DB}{\mbfscrL }{\mathalpha}{mathematical bold script capital l}% +\UnicodeMathSymbol{"1D4DC}{\mbfscrM }{\mathalpha}{mathematical bold script capital m}% +\UnicodeMathSymbol{"1D4DD}{\mbfscrN }{\mathalpha}{mathematical bold script capital n}% +\UnicodeMathSymbol{"1D4DE}{\mbfscrO }{\mathalpha}{mathematical bold script capital o}% +\UnicodeMathSymbol{"1D4DF}{\mbfscrP }{\mathalpha}{mathematical bold script capital p}% +\UnicodeMathSymbol{"1D4E0}{\mbfscrQ }{\mathalpha}{mathematical bold script capital q}% +\UnicodeMathSymbol{"1D4E1}{\mbfscrR }{\mathalpha}{mathematical bold script capital r}% +\UnicodeMathSymbol{"1D4E2}{\mbfscrS }{\mathalpha}{mathematical bold script capital s}% +\UnicodeMathSymbol{"1D4E3}{\mbfscrT }{\mathalpha}{mathematical bold script capital t}% +\UnicodeMathSymbol{"1D4E4}{\mbfscrU }{\mathalpha}{mathematical bold script capital u}% +\UnicodeMathSymbol{"1D4E5}{\mbfscrV }{\mathalpha}{mathematical bold script capital v}% +\UnicodeMathSymbol{"1D4E6}{\mbfscrW }{\mathalpha}{mathematical bold script capital w}% +\UnicodeMathSymbol{"1D4E7}{\mbfscrX }{\mathalpha}{mathematical bold script capital x}% +\UnicodeMathSymbol{"1D4E8}{\mbfscrY }{\mathalpha}{mathematical bold script capital y}% +\UnicodeMathSymbol{"1D4E9}{\mbfscrZ }{\mathalpha}{mathematical bold script capital z}% +\UnicodeMathSymbol{"1D4EA}{\mbfscra }{\mathalpha}{mathematical bold script small a}% +\UnicodeMathSymbol{"1D4EB}{\mbfscrb }{\mathalpha}{mathematical bold script small b}% +\UnicodeMathSymbol{"1D4EC}{\mbfscrc }{\mathalpha}{mathematical bold script small c}% +\UnicodeMathSymbol{"1D4ED}{\mbfscrd }{\mathalpha}{mathematical bold script small d}% +\UnicodeMathSymbol{"1D4EE}{\mbfscre }{\mathalpha}{mathematical bold script small e}% +\UnicodeMathSymbol{"1D4EF}{\mbfscrf }{\mathalpha}{mathematical bold script small f}% +\UnicodeMathSymbol{"1D4F0}{\mbfscrg }{\mathalpha}{mathematical bold script small g}% +\UnicodeMathSymbol{"1D4F1}{\mbfscrh }{\mathalpha}{mathematical bold script small h}% +\UnicodeMathSymbol{"1D4F2}{\mbfscri }{\mathalpha}{mathematical bold script small i}% +\UnicodeMathSymbol{"1D4F3}{\mbfscrj }{\mathalpha}{mathematical bold script small j}% +\UnicodeMathSymbol{"1D4F4}{\mbfscrk }{\mathalpha}{mathematical bold script small k}% +\UnicodeMathSymbol{"1D4F5}{\mbfscrl }{\mathalpha}{mathematical bold script small l}% +\UnicodeMathSymbol{"1D4F6}{\mbfscrm }{\mathalpha}{mathematical bold script small m}% +\UnicodeMathSymbol{"1D4F7}{\mbfscrn }{\mathalpha}{mathematical bold script small n}% +\UnicodeMathSymbol{"1D4F8}{\mbfscro }{\mathalpha}{mathematical bold script small o}% +\UnicodeMathSymbol{"1D4F9}{\mbfscrp }{\mathalpha}{mathematical bold script small p}% +\UnicodeMathSymbol{"1D4FA}{\mbfscrq }{\mathalpha}{mathematical bold script small q}% +\UnicodeMathSymbol{"1D4FB}{\mbfscrr }{\mathalpha}{mathematical bold script small r}% +\UnicodeMathSymbol{"1D4FC}{\mbfscrs }{\mathalpha}{mathematical bold script small s}% +\UnicodeMathSymbol{"1D4FD}{\mbfscrt }{\mathalpha}{mathematical bold script small t}% +\UnicodeMathSymbol{"1D4FE}{\mbfscru }{\mathalpha}{mathematical bold script small u}% +\UnicodeMathSymbol{"1D4FF}{\mbfscrv }{\mathalpha}{mathematical bold script small v}% +\UnicodeMathSymbol{"1D500}{\mbfscrw }{\mathalpha}{mathematical bold script small w}% +\UnicodeMathSymbol{"1D501}{\mbfscrx }{\mathalpha}{mathematical bold script small x}% +\UnicodeMathSymbol{"1D502}{\mbfscry }{\mathalpha}{mathematical bold script small y}% +\UnicodeMathSymbol{"1D503}{\mbfscrz }{\mathalpha}{mathematical bold script small z}% +\UnicodeMathSymbol{"1D504}{\mfrakA }{\mathalpha}{mathematical fraktur capital a}% +\UnicodeMathSymbol{"1D505}{\mfrakB }{\mathalpha}{mathematical fraktur capital b}% +\UnicodeMathSymbol{"1D507}{\mfrakD }{\mathalpha}{mathematical fraktur capital d}% +\UnicodeMathSymbol{"1D508}{\mfrakE }{\mathalpha}{mathematical fraktur capital e}% +\UnicodeMathSymbol{"1D509}{\mfrakF }{\mathalpha}{mathematical fraktur capital f}% +\UnicodeMathSymbol{"1D50A}{\mfrakG }{\mathalpha}{mathematical fraktur capital g}% +\UnicodeMathSymbol{"1D50D}{\mfrakJ }{\mathalpha}{mathematical fraktur capital j}% +\UnicodeMathSymbol{"1D50E}{\mfrakK }{\mathalpha}{mathematical fraktur capital k}% +\UnicodeMathSymbol{"1D50F}{\mfrakL }{\mathalpha}{mathematical fraktur capital l}% +\UnicodeMathSymbol{"1D510}{\mfrakM }{\mathalpha}{mathematical fraktur capital m}% +\UnicodeMathSymbol{"1D511}{\mfrakN }{\mathalpha}{mathematical fraktur capital n}% +\UnicodeMathSymbol{"1D512}{\mfrakO }{\mathalpha}{mathematical fraktur capital o}% +\UnicodeMathSymbol{"1D513}{\mfrakP }{\mathalpha}{mathematical fraktur capital p}% +\UnicodeMathSymbol{"1D514}{\mfrakQ }{\mathalpha}{mathematical fraktur capital q}% +\UnicodeMathSymbol{"1D516}{\mfrakS }{\mathalpha}{mathematical fraktur capital s}% +\UnicodeMathSymbol{"1D517}{\mfrakT }{\mathalpha}{mathematical fraktur capital t}% +\UnicodeMathSymbol{"1D518}{\mfrakU }{\mathalpha}{mathematical fraktur capital u}% +\UnicodeMathSymbol{"1D519}{\mfrakV }{\mathalpha}{mathematical fraktur capital v}% +\UnicodeMathSymbol{"1D51A}{\mfrakW }{\mathalpha}{mathematical fraktur capital w}% +\UnicodeMathSymbol{"1D51B}{\mfrakX }{\mathalpha}{mathematical fraktur capital x}% +\UnicodeMathSymbol{"1D51C}{\mfrakY }{\mathalpha}{mathematical fraktur capital y}% +\UnicodeMathSymbol{"1D51E}{\mfraka }{\mathalpha}{mathematical fraktur small a}% +\UnicodeMathSymbol{"1D51F}{\mfrakb }{\mathalpha}{mathematical fraktur small b}% +\UnicodeMathSymbol{"1D520}{\mfrakc }{\mathalpha}{mathematical fraktur small c}% +\UnicodeMathSymbol{"1D521}{\mfrakd }{\mathalpha}{mathematical fraktur small d}% +\UnicodeMathSymbol{"1D522}{\mfrake }{\mathalpha}{mathematical fraktur small e}% +\UnicodeMathSymbol{"1D523}{\mfrakf }{\mathalpha}{mathematical fraktur small f}% +\UnicodeMathSymbol{"1D524}{\mfrakg }{\mathalpha}{mathematical fraktur small g}% +\UnicodeMathSymbol{"1D525}{\mfrakh }{\mathalpha}{mathematical fraktur small h}% +\UnicodeMathSymbol{"1D526}{\mfraki }{\mathalpha}{mathematical fraktur small i}% +\UnicodeMathSymbol{"1D527}{\mfrakj }{\mathalpha}{mathematical fraktur small j}% +\UnicodeMathSymbol{"1D528}{\mfrakk }{\mathalpha}{mathematical fraktur small k}% +\UnicodeMathSymbol{"1D529}{\mfrakl }{\mathalpha}{mathematical fraktur small l}% +\UnicodeMathSymbol{"1D52A}{\mfrakm }{\mathalpha}{mathematical fraktur small m}% +\UnicodeMathSymbol{"1D52B}{\mfrakn }{\mathalpha}{mathematical fraktur small n}% +\UnicodeMathSymbol{"1D52C}{\mfrako }{\mathalpha}{mathematical fraktur small o}% +\UnicodeMathSymbol{"1D52D}{\mfrakp }{\mathalpha}{mathematical fraktur small p}% +\UnicodeMathSymbol{"1D52E}{\mfrakq }{\mathalpha}{mathematical fraktur small q}% +\UnicodeMathSymbol{"1D52F}{\mfrakr }{\mathalpha}{mathematical fraktur small r}% +\UnicodeMathSymbol{"1D530}{\mfraks }{\mathalpha}{mathematical fraktur small s}% +\UnicodeMathSymbol{"1D531}{\mfrakt }{\mathalpha}{mathematical fraktur small t}% +\UnicodeMathSymbol{"1D532}{\mfraku }{\mathalpha}{mathematical fraktur small u}% +\UnicodeMathSymbol{"1D533}{\mfrakv }{\mathalpha}{mathematical fraktur small v}% +\UnicodeMathSymbol{"1D534}{\mfrakw }{\mathalpha}{mathematical fraktur small w}% +\UnicodeMathSymbol{"1D535}{\mfrakx }{\mathalpha}{mathematical fraktur small x}% +\UnicodeMathSymbol{"1D536}{\mfraky }{\mathalpha}{mathematical fraktur small y}% +\UnicodeMathSymbol{"1D537}{\mfrakz }{\mathalpha}{mathematical fraktur small z}% +\UnicodeMathSymbol{"1D538}{\BbbA }{\mathalpha}{mathematical double-struck capital a}% +\UnicodeMathSymbol{"1D539}{\BbbB }{\mathalpha}{mathematical double-struck capital b}% +\UnicodeMathSymbol{"1D53B}{\BbbD }{\mathalpha}{mathematical double-struck capital d}% +\UnicodeMathSymbol{"1D53C}{\BbbE }{\mathalpha}{mathematical double-struck capital e}% +\UnicodeMathSymbol{"1D53D}{\BbbF }{\mathalpha}{mathematical double-struck capital f}% +\UnicodeMathSymbol{"1D53E}{\BbbG }{\mathalpha}{mathematical double-struck capital g}% +\UnicodeMathSymbol{"1D540}{\BbbI }{\mathalpha}{mathematical double-struck capital i}% +\UnicodeMathSymbol{"1D541}{\BbbJ }{\mathalpha}{mathematical double-struck capital j}% +\UnicodeMathSymbol{"1D542}{\BbbK }{\mathalpha}{mathematical double-struck capital k}% +\UnicodeMathSymbol{"1D543}{\BbbL }{\mathalpha}{mathematical double-struck capital l}% +\UnicodeMathSymbol{"1D544}{\BbbM }{\mathalpha}{mathematical double-struck capital m}% +\UnicodeMathSymbol{"1D546}{\BbbO }{\mathalpha}{mathematical double-struck capital o}% +\UnicodeMathSymbol{"1D54A}{\BbbS }{\mathalpha}{mathematical double-struck capital s}% +\UnicodeMathSymbol{"1D54B}{\BbbT }{\mathalpha}{mathematical double-struck capital t}% +\UnicodeMathSymbol{"1D54C}{\BbbU }{\mathalpha}{mathematical double-struck capital u}% +\UnicodeMathSymbol{"1D54D}{\BbbV }{\mathalpha}{mathematical double-struck capital v}% +\UnicodeMathSymbol{"1D54E}{\BbbW }{\mathalpha}{mathematical double-struck capital w}% +\UnicodeMathSymbol{"1D54F}{\BbbX }{\mathalpha}{mathematical double-struck capital x}% +\UnicodeMathSymbol{"1D550}{\BbbY }{\mathalpha}{mathematical double-struck capital y}% +\UnicodeMathSymbol{"1D552}{\Bbba }{\mathalpha}{mathematical double-struck small a}% +\UnicodeMathSymbol{"1D553}{\Bbbb }{\mathalpha}{mathematical double-struck small b}% +\UnicodeMathSymbol{"1D554}{\Bbbc }{\mathalpha}{mathematical double-struck small c}% +\UnicodeMathSymbol{"1D555}{\Bbbd }{\mathalpha}{mathematical double-struck small d}% +\UnicodeMathSymbol{"1D556}{\Bbbe }{\mathalpha}{mathematical double-struck small e}% +\UnicodeMathSymbol{"1D557}{\Bbbf }{\mathalpha}{mathematical double-struck small f}% +\UnicodeMathSymbol{"1D558}{\Bbbg }{\mathalpha}{mathematical double-struck small g}% +\UnicodeMathSymbol{"1D559}{\Bbbh }{\mathalpha}{mathematical double-struck small h}% +\UnicodeMathSymbol{"1D55A}{\Bbbi }{\mathalpha}{mathematical double-struck small i}% +\UnicodeMathSymbol{"1D55B}{\Bbbj }{\mathalpha}{mathematical double-struck small j}% +\UnicodeMathSymbol{"1D55C}{\Bbbk }{\mathalpha}{mathematical double-struck small k}% +\UnicodeMathSymbol{"1D55D}{\Bbbl }{\mathalpha}{mathematical double-struck small l}% +\UnicodeMathSymbol{"1D55E}{\Bbbm }{\mathalpha}{mathematical double-struck small m}% +\UnicodeMathSymbol{"1D55F}{\Bbbn }{\mathalpha}{mathematical double-struck small n}% +\UnicodeMathSymbol{"1D560}{\Bbbo }{\mathalpha}{mathematical double-struck small o}% +\UnicodeMathSymbol{"1D561}{\Bbbp }{\mathalpha}{mathematical double-struck small p}% +\UnicodeMathSymbol{"1D562}{\Bbbq }{\mathalpha}{mathematical double-struck small q}% +\UnicodeMathSymbol{"1D563}{\Bbbr }{\mathalpha}{mathematical double-struck small r}% +\UnicodeMathSymbol{"1D564}{\Bbbs }{\mathalpha}{mathematical double-struck small s}% +\UnicodeMathSymbol{"1D565}{\Bbbt }{\mathalpha}{mathematical double-struck small t}% +\UnicodeMathSymbol{"1D566}{\Bbbu }{\mathalpha}{mathematical double-struck small u}% +\UnicodeMathSymbol{"1D567}{\Bbbv }{\mathalpha}{mathematical double-struck small v}% +\UnicodeMathSymbol{"1D568}{\Bbbw }{\mathalpha}{mathematical double-struck small w}% +\UnicodeMathSymbol{"1D569}{\Bbbx }{\mathalpha}{mathematical double-struck small x}% +\UnicodeMathSymbol{"1D56A}{\Bbby }{\mathalpha}{mathematical double-struck small y}% +\UnicodeMathSymbol{"1D56B}{\Bbbz }{\mathalpha}{mathematical double-struck small z}% +\UnicodeMathSymbol{"1D56C}{\mbffrakA }{\mathalpha}{mathematical bold fraktur capital a}% +\UnicodeMathSymbol{"1D56D}{\mbffrakB }{\mathalpha}{mathematical bold fraktur capital b}% +\UnicodeMathSymbol{"1D56E}{\mbffrakC }{\mathalpha}{mathematical bold fraktur capital c}% +\UnicodeMathSymbol{"1D56F}{\mbffrakD }{\mathalpha}{mathematical bold fraktur capital d}% +\UnicodeMathSymbol{"1D570}{\mbffrakE }{\mathalpha}{mathematical bold fraktur capital e}% +\UnicodeMathSymbol{"1D571}{\mbffrakF }{\mathalpha}{mathematical bold fraktur capital f}% +\UnicodeMathSymbol{"1D572}{\mbffrakG }{\mathalpha}{mathematical bold fraktur capital g}% +\UnicodeMathSymbol{"1D573}{\mbffrakH }{\mathalpha}{mathematical bold fraktur capital h}% +\UnicodeMathSymbol{"1D574}{\mbffrakI }{\mathalpha}{mathematical bold fraktur capital i}% +\UnicodeMathSymbol{"1D575}{\mbffrakJ }{\mathalpha}{mathematical bold fraktur capital j}% +\UnicodeMathSymbol{"1D576}{\mbffrakK }{\mathalpha}{mathematical bold fraktur capital k}% +\UnicodeMathSymbol{"1D577}{\mbffrakL }{\mathalpha}{mathematical bold fraktur capital l}% +\UnicodeMathSymbol{"1D578}{\mbffrakM }{\mathalpha}{mathematical bold fraktur capital m}% +\UnicodeMathSymbol{"1D579}{\mbffrakN }{\mathalpha}{mathematical bold fraktur capital n}% +\UnicodeMathSymbol{"1D57A}{\mbffrakO }{\mathalpha}{mathematical bold fraktur capital o}% +\UnicodeMathSymbol{"1D57B}{\mbffrakP }{\mathalpha}{mathematical bold fraktur capital p}% +\UnicodeMathSymbol{"1D57C}{\mbffrakQ }{\mathalpha}{mathematical bold fraktur capital q}% +\UnicodeMathSymbol{"1D57D}{\mbffrakR }{\mathalpha}{mathematical bold fraktur capital r}% +\UnicodeMathSymbol{"1D57E}{\mbffrakS }{\mathalpha}{mathematical bold fraktur capital s}% +\UnicodeMathSymbol{"1D57F}{\mbffrakT }{\mathalpha}{mathematical bold fraktur capital t}% +\UnicodeMathSymbol{"1D580}{\mbffrakU }{\mathalpha}{mathematical bold fraktur capital u}% +\UnicodeMathSymbol{"1D581}{\mbffrakV }{\mathalpha}{mathematical bold fraktur capital v}% +\UnicodeMathSymbol{"1D582}{\mbffrakW }{\mathalpha}{mathematical bold fraktur capital w}% +\UnicodeMathSymbol{"1D583}{\mbffrakX }{\mathalpha}{mathematical bold fraktur capital x}% +\UnicodeMathSymbol{"1D584}{\mbffrakY }{\mathalpha}{mathematical bold fraktur capital y}% +\UnicodeMathSymbol{"1D585}{\mbffrakZ }{\mathalpha}{mathematical bold fraktur capital z}% +\UnicodeMathSymbol{"1D586}{\mbffraka }{\mathalpha}{mathematical bold fraktur small a}% +\UnicodeMathSymbol{"1D587}{\mbffrakb }{\mathalpha}{mathematical bold fraktur small b}% +\UnicodeMathSymbol{"1D588}{\mbffrakc }{\mathalpha}{mathematical bold fraktur small c}% +\UnicodeMathSymbol{"1D589}{\mbffrakd }{\mathalpha}{mathematical bold fraktur small d}% +\UnicodeMathSymbol{"1D58A}{\mbffrake }{\mathalpha}{mathematical bold fraktur small e}% +\UnicodeMathSymbol{"1D58B}{\mbffrakf }{\mathalpha}{mathematical bold fraktur small f}% +\UnicodeMathSymbol{"1D58C}{\mbffrakg }{\mathalpha}{mathematical bold fraktur small g}% +\UnicodeMathSymbol{"1D58D}{\mbffrakh }{\mathalpha}{mathematical bold fraktur small h}% +\UnicodeMathSymbol{"1D58E}{\mbffraki }{\mathalpha}{mathematical bold fraktur small i}% +\UnicodeMathSymbol{"1D58F}{\mbffrakj }{\mathalpha}{mathematical bold fraktur small j}% +\UnicodeMathSymbol{"1D590}{\mbffrakk }{\mathalpha}{mathematical bold fraktur small k}% +\UnicodeMathSymbol{"1D591}{\mbffrakl }{\mathalpha}{mathematical bold fraktur small l}% +\UnicodeMathSymbol{"1D592}{\mbffrakm }{\mathalpha}{mathematical bold fraktur small m}% +\UnicodeMathSymbol{"1D593}{\mbffrakn }{\mathalpha}{mathematical bold fraktur small n}% +\UnicodeMathSymbol{"1D594}{\mbffrako }{\mathalpha}{mathematical bold fraktur small o}% +\UnicodeMathSymbol{"1D595}{\mbffrakp }{\mathalpha}{mathematical bold fraktur small p}% +\UnicodeMathSymbol{"1D596}{\mbffrakq }{\mathalpha}{mathematical bold fraktur small q}% +\UnicodeMathSymbol{"1D597}{\mbffrakr }{\mathalpha}{mathematical bold fraktur small r}% +\UnicodeMathSymbol{"1D598}{\mbffraks }{\mathalpha}{mathematical bold fraktur small s}% +\UnicodeMathSymbol{"1D599}{\mbffrakt }{\mathalpha}{mathematical bold fraktur small t}% +\UnicodeMathSymbol{"1D59A}{\mbffraku }{\mathalpha}{mathematical bold fraktur small u}% +\UnicodeMathSymbol{"1D59B}{\mbffrakv }{\mathalpha}{mathematical bold fraktur small v}% +\UnicodeMathSymbol{"1D59C}{\mbffrakw }{\mathalpha}{mathematical bold fraktur small w}% +\UnicodeMathSymbol{"1D59D}{\mbffrakx }{\mathalpha}{mathematical bold fraktur small x}% +\UnicodeMathSymbol{"1D59E}{\mbffraky }{\mathalpha}{mathematical bold fraktur small y}% +\UnicodeMathSymbol{"1D59F}{\mbffrakz }{\mathalpha}{mathematical bold fraktur small z}% +\UnicodeMathSymbol{"1D5A0}{\msansA }{\mathalpha}{mathematical sans-serif capital a}% +\UnicodeMathSymbol{"1D5A1}{\msansB }{\mathalpha}{mathematical sans-serif capital b}% +\UnicodeMathSymbol{"1D5A2}{\msansC }{\mathalpha}{mathematical sans-serif capital c}% +\UnicodeMathSymbol{"1D5A3}{\msansD }{\mathalpha}{mathematical sans-serif capital d}% +\UnicodeMathSymbol{"1D5A4}{\msansE }{\mathalpha}{mathematical sans-serif capital e}% +\UnicodeMathSymbol{"1D5A5}{\msansF }{\mathalpha}{mathematical sans-serif capital f}% +\UnicodeMathSymbol{"1D5A6}{\msansG }{\mathalpha}{mathematical sans-serif capital g}% +\UnicodeMathSymbol{"1D5A7}{\msansH }{\mathalpha}{mathematical sans-serif capital h}% +\UnicodeMathSymbol{"1D5A8}{\msansI }{\mathalpha}{mathematical sans-serif capital i}% +\UnicodeMathSymbol{"1D5A9}{\msansJ }{\mathalpha}{mathematical sans-serif capital j}% +\UnicodeMathSymbol{"1D5AA}{\msansK }{\mathalpha}{mathematical sans-serif capital k}% +\UnicodeMathSymbol{"1D5AB}{\msansL }{\mathalpha}{mathematical sans-serif capital l}% +\UnicodeMathSymbol{"1D5AC}{\msansM }{\mathalpha}{mathematical sans-serif capital m}% +\UnicodeMathSymbol{"1D5AD}{\msansN }{\mathalpha}{mathematical sans-serif capital n}% +\UnicodeMathSymbol{"1D5AE}{\msansO }{\mathalpha}{mathematical sans-serif capital o}% +\UnicodeMathSymbol{"1D5AF}{\msansP }{\mathalpha}{mathematical sans-serif capital p}% +\UnicodeMathSymbol{"1D5B0}{\msansQ }{\mathalpha}{mathematical sans-serif capital q}% +\UnicodeMathSymbol{"1D5B1}{\msansR }{\mathalpha}{mathematical sans-serif capital r}% +\UnicodeMathSymbol{"1D5B2}{\msansS }{\mathalpha}{mathematical sans-serif capital s}% +\UnicodeMathSymbol{"1D5B3}{\msansT }{\mathalpha}{mathematical sans-serif capital t}% +\UnicodeMathSymbol{"1D5B4}{\msansU }{\mathalpha}{mathematical sans-serif capital u}% +\UnicodeMathSymbol{"1D5B5}{\msansV }{\mathalpha}{mathematical sans-serif capital v}% +\UnicodeMathSymbol{"1D5B6}{\msansW }{\mathalpha}{mathematical sans-serif capital w}% +\UnicodeMathSymbol{"1D5B7}{\msansX }{\mathalpha}{mathematical sans-serif capital x}% +\UnicodeMathSymbol{"1D5B8}{\msansY }{\mathalpha}{mathematical sans-serif capital y}% +\UnicodeMathSymbol{"1D5B9}{\msansZ }{\mathalpha}{mathematical sans-serif capital z}% +\UnicodeMathSymbol{"1D5BA}{\msansa }{\mathalpha}{mathematical sans-serif small a}% +\UnicodeMathSymbol{"1D5BB}{\msansb }{\mathalpha}{mathematical sans-serif small b}% +\UnicodeMathSymbol{"1D5BC}{\msansc }{\mathalpha}{mathematical sans-serif small c}% +\UnicodeMathSymbol{"1D5BD}{\msansd }{\mathalpha}{mathematical sans-serif small d}% +\UnicodeMathSymbol{"1D5BE}{\msanse }{\mathalpha}{mathematical sans-serif small e}% +\UnicodeMathSymbol{"1D5BF}{\msansf }{\mathalpha}{mathematical sans-serif small f}% +\UnicodeMathSymbol{"1D5C0}{\msansg }{\mathalpha}{mathematical sans-serif small g}% +\UnicodeMathSymbol{"1D5C1}{\msansh }{\mathalpha}{mathematical sans-serif small h}% +\UnicodeMathSymbol{"1D5C2}{\msansi }{\mathalpha}{mathematical sans-serif small i}% +\UnicodeMathSymbol{"1D5C3}{\msansj }{\mathalpha}{mathematical sans-serif small j}% +\UnicodeMathSymbol{"1D5C4}{\msansk }{\mathalpha}{mathematical sans-serif small k}% +\UnicodeMathSymbol{"1D5C5}{\msansl }{\mathalpha}{mathematical sans-serif small l}% +\UnicodeMathSymbol{"1D5C6}{\msansm }{\mathalpha}{mathematical sans-serif small m}% +\UnicodeMathSymbol{"1D5C7}{\msansn }{\mathalpha}{mathematical sans-serif small n}% +\UnicodeMathSymbol{"1D5C8}{\msanso }{\mathalpha}{mathematical sans-serif small o}% +\UnicodeMathSymbol{"1D5C9}{\msansp }{\mathalpha}{mathematical sans-serif small p}% +\UnicodeMathSymbol{"1D5CA}{\msansq }{\mathalpha}{mathematical sans-serif small q}% +\UnicodeMathSymbol{"1D5CB}{\msansr }{\mathalpha}{mathematical sans-serif small r}% +\UnicodeMathSymbol{"1D5CC}{\msanss }{\mathalpha}{mathematical sans-serif small s}% +\UnicodeMathSymbol{"1D5CD}{\msanst }{\mathalpha}{mathematical sans-serif small t}% +\UnicodeMathSymbol{"1D5CE}{\msansu }{\mathalpha}{mathematical sans-serif small u}% +\UnicodeMathSymbol{"1D5CF}{\msansv }{\mathalpha}{mathematical sans-serif small v}% +\UnicodeMathSymbol{"1D5D0}{\msansw }{\mathalpha}{mathematical sans-serif small w}% +\UnicodeMathSymbol{"1D5D1}{\msansx }{\mathalpha}{mathematical sans-serif small x}% +\UnicodeMathSymbol{"1D5D2}{\msansy }{\mathalpha}{mathematical sans-serif small y}% +\UnicodeMathSymbol{"1D5D3}{\msansz }{\mathalpha}{mathematical sans-serif small z}% +\UnicodeMathSymbol{"1D5D4}{\mbfsansA }{\mathalpha}{mathematical sans-serif bold capital a}% +\UnicodeMathSymbol{"1D5D5}{\mbfsansB }{\mathalpha}{mathematical sans-serif bold capital b}% +\UnicodeMathSymbol{"1D5D6}{\mbfsansC }{\mathalpha}{mathematical sans-serif bold capital c}% +\UnicodeMathSymbol{"1D5D7}{\mbfsansD }{\mathalpha}{mathematical sans-serif bold capital d}% +\UnicodeMathSymbol{"1D5D8}{\mbfsansE }{\mathalpha}{mathematical sans-serif bold capital e}% +\UnicodeMathSymbol{"1D5D9}{\mbfsansF }{\mathalpha}{mathematical sans-serif bold capital f}% +\UnicodeMathSymbol{"1D5DA}{\mbfsansG }{\mathalpha}{mathematical sans-serif bold capital g}% +\UnicodeMathSymbol{"1D5DB}{\mbfsansH }{\mathalpha}{mathematical sans-serif bold capital h}% +\UnicodeMathSymbol{"1D5DC}{\mbfsansI }{\mathalpha}{mathematical sans-serif bold capital i}% +\UnicodeMathSymbol{"1D5DD}{\mbfsansJ }{\mathalpha}{mathematical sans-serif bold capital j}% +\UnicodeMathSymbol{"1D5DE}{\mbfsansK }{\mathalpha}{mathematical sans-serif bold capital k}% +\UnicodeMathSymbol{"1D5DF}{\mbfsansL }{\mathalpha}{mathematical sans-serif bold capital l}% +\UnicodeMathSymbol{"1D5E0}{\mbfsansM }{\mathalpha}{mathematical sans-serif bold capital m}% +\UnicodeMathSymbol{"1D5E1}{\mbfsansN }{\mathalpha}{mathematical sans-serif bold capital n}% +\UnicodeMathSymbol{"1D5E2}{\mbfsansO }{\mathalpha}{mathematical sans-serif bold capital o}% +\UnicodeMathSymbol{"1D5E3}{\mbfsansP }{\mathalpha}{mathematical sans-serif bold capital p}% +\UnicodeMathSymbol{"1D5E4}{\mbfsansQ }{\mathalpha}{mathematical sans-serif bold capital q}% +\UnicodeMathSymbol{"1D5E5}{\mbfsansR }{\mathalpha}{mathematical sans-serif bold capital r}% +\UnicodeMathSymbol{"1D5E6}{\mbfsansS }{\mathalpha}{mathematical sans-serif bold capital s}% +\UnicodeMathSymbol{"1D5E7}{\mbfsansT }{\mathalpha}{mathematical sans-serif bold capital t}% +\UnicodeMathSymbol{"1D5E8}{\mbfsansU }{\mathalpha}{mathematical sans-serif bold capital u}% +\UnicodeMathSymbol{"1D5E9}{\mbfsansV }{\mathalpha}{mathematical sans-serif bold capital v}% +\UnicodeMathSymbol{"1D5EA}{\mbfsansW }{\mathalpha}{mathematical sans-serif bold capital w}% +\UnicodeMathSymbol{"1D5EB}{\mbfsansX }{\mathalpha}{mathematical sans-serif bold capital x}% +\UnicodeMathSymbol{"1D5EC}{\mbfsansY }{\mathalpha}{mathematical sans-serif bold capital y}% +\UnicodeMathSymbol{"1D5ED}{\mbfsansZ }{\mathalpha}{mathematical sans-serif bold capital z}% +\UnicodeMathSymbol{"1D5EE}{\mbfsansa }{\mathalpha}{mathematical sans-serif bold small a}% +\UnicodeMathSymbol{"1D5EF}{\mbfsansb }{\mathalpha}{mathematical sans-serif bold small b}% +\UnicodeMathSymbol{"1D5F0}{\mbfsansc }{\mathalpha}{mathematical sans-serif bold small c}% +\UnicodeMathSymbol{"1D5F1}{\mbfsansd }{\mathalpha}{mathematical sans-serif bold small d}% +\UnicodeMathSymbol{"1D5F2}{\mbfsanse }{\mathalpha}{mathematical sans-serif bold small e}% +\UnicodeMathSymbol{"1D5F3}{\mbfsansf }{\mathalpha}{mathematical sans-serif bold small f}% +\UnicodeMathSymbol{"1D5F4}{\mbfsansg }{\mathalpha}{mathematical sans-serif bold small g}% +\UnicodeMathSymbol{"1D5F5}{\mbfsansh }{\mathalpha}{mathematical sans-serif bold small h}% +\UnicodeMathSymbol{"1D5F6}{\mbfsansi }{\mathalpha}{mathematical sans-serif bold small i}% +\UnicodeMathSymbol{"1D5F7}{\mbfsansj }{\mathalpha}{mathematical sans-serif bold small j}% +\UnicodeMathSymbol{"1D5F8}{\mbfsansk }{\mathalpha}{mathematical sans-serif bold small k}% +\UnicodeMathSymbol{"1D5F9}{\mbfsansl }{\mathalpha}{mathematical sans-serif bold small l}% +\UnicodeMathSymbol{"1D5FA}{\mbfsansm }{\mathalpha}{mathematical sans-serif bold small m}% +\UnicodeMathSymbol{"1D5FB}{\mbfsansn }{\mathalpha}{mathematical sans-serif bold small n}% +\UnicodeMathSymbol{"1D5FC}{\mbfsanso }{\mathalpha}{mathematical sans-serif bold small o}% +\UnicodeMathSymbol{"1D5FD}{\mbfsansp }{\mathalpha}{mathematical sans-serif bold small p}% +\UnicodeMathSymbol{"1D5FE}{\mbfsansq }{\mathalpha}{mathematical sans-serif bold small q}% +\UnicodeMathSymbol{"1D5FF}{\mbfsansr }{\mathalpha}{mathematical sans-serif bold small r}% +\UnicodeMathSymbol{"1D600}{\mbfsanss }{\mathalpha}{mathematical sans-serif bold small s}% +\UnicodeMathSymbol{"1D601}{\mbfsanst }{\mathalpha}{mathematical sans-serif bold small t}% +\UnicodeMathSymbol{"1D602}{\mbfsansu }{\mathalpha}{mathematical sans-serif bold small u}% +\UnicodeMathSymbol{"1D603}{\mbfsansv }{\mathalpha}{mathematical sans-serif bold small v}% +\UnicodeMathSymbol{"1D604}{\mbfsansw }{\mathalpha}{mathematical sans-serif bold small w}% +\UnicodeMathSymbol{"1D605}{\mbfsansx }{\mathalpha}{mathematical sans-serif bold small x}% +\UnicodeMathSymbol{"1D606}{\mbfsansy }{\mathalpha}{mathematical sans-serif bold small y}% +\UnicodeMathSymbol{"1D607}{\mbfsansz }{\mathalpha}{mathematical sans-serif bold small z}% +\UnicodeMathSymbol{"1D608}{\mitsansA }{\mathalpha}{mathematical sans-serif italic capital a}% +\UnicodeMathSymbol{"1D609}{\mitsansB }{\mathalpha}{mathematical sans-serif italic capital b}% +\UnicodeMathSymbol{"1D60A}{\mitsansC }{\mathalpha}{mathematical sans-serif italic capital c}% +\UnicodeMathSymbol{"1D60B}{\mitsansD }{\mathalpha}{mathematical sans-serif italic capital d}% +\UnicodeMathSymbol{"1D60C}{\mitsansE }{\mathalpha}{mathematical sans-serif italic capital e}% +\UnicodeMathSymbol{"1D60D}{\mitsansF }{\mathalpha}{mathematical sans-serif italic capital f}% +\UnicodeMathSymbol{"1D60E}{\mitsansG }{\mathalpha}{mathematical sans-serif italic capital g}% +\UnicodeMathSymbol{"1D60F}{\mitsansH }{\mathalpha}{mathematical sans-serif italic capital h}% +\UnicodeMathSymbol{"1D610}{\mitsansI }{\mathalpha}{mathematical sans-serif italic capital i}% +\UnicodeMathSymbol{"1D611}{\mitsansJ }{\mathalpha}{mathematical sans-serif italic capital j}% +\UnicodeMathSymbol{"1D612}{\mitsansK }{\mathalpha}{mathematical sans-serif italic capital k}% +\UnicodeMathSymbol{"1D613}{\mitsansL }{\mathalpha}{mathematical sans-serif italic capital l}% +\UnicodeMathSymbol{"1D614}{\mitsansM }{\mathalpha}{mathematical sans-serif italic capital m}% +\UnicodeMathSymbol{"1D615}{\mitsansN }{\mathalpha}{mathematical sans-serif italic capital n}% +\UnicodeMathSymbol{"1D616}{\mitsansO }{\mathalpha}{mathematical sans-serif italic capital o}% +\UnicodeMathSymbol{"1D617}{\mitsansP }{\mathalpha}{mathematical sans-serif italic capital p}% +\UnicodeMathSymbol{"1D618}{\mitsansQ }{\mathalpha}{mathematical sans-serif italic capital q}% +\UnicodeMathSymbol{"1D619}{\mitsansR }{\mathalpha}{mathematical sans-serif italic capital r}% +\UnicodeMathSymbol{"1D61A}{\mitsansS }{\mathalpha}{mathematical sans-serif italic capital s}% +\UnicodeMathSymbol{"1D61B}{\mitsansT }{\mathalpha}{mathematical sans-serif italic capital t}% +\UnicodeMathSymbol{"1D61C}{\mitsansU }{\mathalpha}{mathematical sans-serif italic capital u}% +\UnicodeMathSymbol{"1D61D}{\mitsansV }{\mathalpha}{mathematical sans-serif italic capital v}% +\UnicodeMathSymbol{"1D61E}{\mitsansW }{\mathalpha}{mathematical sans-serif italic capital w}% +\UnicodeMathSymbol{"1D61F}{\mitsansX }{\mathalpha}{mathematical sans-serif italic capital x}% +\UnicodeMathSymbol{"1D620}{\mitsansY }{\mathalpha}{mathematical sans-serif italic capital y}% +\UnicodeMathSymbol{"1D621}{\mitsansZ }{\mathalpha}{mathematical sans-serif italic capital z}% +\UnicodeMathSymbol{"1D622}{\mitsansa }{\mathalpha}{mathematical sans-serif italic small a}% +\UnicodeMathSymbol{"1D623}{\mitsansb }{\mathalpha}{mathematical sans-serif italic small b}% +\UnicodeMathSymbol{"1D624}{\mitsansc }{\mathalpha}{mathematical sans-serif italic small c}% +\UnicodeMathSymbol{"1D625}{\mitsansd }{\mathalpha}{mathematical sans-serif italic small d}% +\UnicodeMathSymbol{"1D626}{\mitsanse }{\mathalpha}{mathematical sans-serif italic small e}% +\UnicodeMathSymbol{"1D627}{\mitsansf }{\mathalpha}{mathematical sans-serif italic small f}% +\UnicodeMathSymbol{"1D628}{\mitsansg }{\mathalpha}{mathematical sans-serif italic small g}% +\UnicodeMathSymbol{"1D629}{\mitsansh }{\mathalpha}{mathematical sans-serif italic small h}% +\UnicodeMathSymbol{"1D62A}{\mitsansi }{\mathalpha}{mathematical sans-serif italic small i}% +\UnicodeMathSymbol{"1D62B}{\mitsansj }{\mathalpha}{mathematical sans-serif italic small j}% +\UnicodeMathSymbol{"1D62C}{\mitsansk }{\mathalpha}{mathematical sans-serif italic small k}% +\UnicodeMathSymbol{"1D62D}{\mitsansl }{\mathalpha}{mathematical sans-serif italic small l}% +\UnicodeMathSymbol{"1D62E}{\mitsansm }{\mathalpha}{mathematical sans-serif italic small m}% +\UnicodeMathSymbol{"1D62F}{\mitsansn }{\mathalpha}{mathematical sans-serif italic small n}% +\UnicodeMathSymbol{"1D630}{\mitsanso }{\mathalpha}{mathematical sans-serif italic small o}% +\UnicodeMathSymbol{"1D631}{\mitsansp }{\mathalpha}{mathematical sans-serif italic small p}% +\UnicodeMathSymbol{"1D632}{\mitsansq }{\mathalpha}{mathematical sans-serif italic small q}% +\UnicodeMathSymbol{"1D633}{\mitsansr }{\mathalpha}{mathematical sans-serif italic small r}% +\UnicodeMathSymbol{"1D634}{\mitsanss }{\mathalpha}{mathematical sans-serif italic small s}% +\UnicodeMathSymbol{"1D635}{\mitsanst }{\mathalpha}{mathematical sans-serif italic small t}% +\UnicodeMathSymbol{"1D636}{\mitsansu }{\mathalpha}{mathematical sans-serif italic small u}% +\UnicodeMathSymbol{"1D637}{\mitsansv }{\mathalpha}{mathematical sans-serif italic small v}% +\UnicodeMathSymbol{"1D638}{\mitsansw }{\mathalpha}{mathematical sans-serif italic small w}% +\UnicodeMathSymbol{"1D639}{\mitsansx }{\mathalpha}{mathematical sans-serif italic small x}% +\UnicodeMathSymbol{"1D63A}{\mitsansy }{\mathalpha}{mathematical sans-serif italic small y}% +\UnicodeMathSymbol{"1D63B}{\mitsansz }{\mathalpha}{mathematical sans-serif italic small z}% +\UnicodeMathSymbol{"1D63C}{\mbfitsansA }{\mathalpha}{mathematical sans-serif bold italic capital a}% +\UnicodeMathSymbol{"1D63D}{\mbfitsansB }{\mathalpha}{mathematical sans-serif bold italic capital b}% +\UnicodeMathSymbol{"1D63E}{\mbfitsansC }{\mathalpha}{mathematical sans-serif bold italic capital c}% +\UnicodeMathSymbol{"1D63F}{\mbfitsansD }{\mathalpha}{mathematical sans-serif bold italic capital d}% +\UnicodeMathSymbol{"1D640}{\mbfitsansE }{\mathalpha}{mathematical sans-serif bold italic capital e}% +\UnicodeMathSymbol{"1D641}{\mbfitsansF }{\mathalpha}{mathematical sans-serif bold italic capital f}% +\UnicodeMathSymbol{"1D642}{\mbfitsansG }{\mathalpha}{mathematical sans-serif bold italic capital g}% +\UnicodeMathSymbol{"1D643}{\mbfitsansH }{\mathalpha}{mathematical sans-serif bold italic capital h}% +\UnicodeMathSymbol{"1D644}{\mbfitsansI }{\mathalpha}{mathematical sans-serif bold italic capital i}% +\UnicodeMathSymbol{"1D645}{\mbfitsansJ }{\mathalpha}{mathematical sans-serif bold italic capital j}% +\UnicodeMathSymbol{"1D646}{\mbfitsansK }{\mathalpha}{mathematical sans-serif bold italic capital k}% +\UnicodeMathSymbol{"1D647}{\mbfitsansL }{\mathalpha}{mathematical sans-serif bold italic capital l}% +\UnicodeMathSymbol{"1D648}{\mbfitsansM }{\mathalpha}{mathematical sans-serif bold italic capital m}% +\UnicodeMathSymbol{"1D649}{\mbfitsansN }{\mathalpha}{mathematical sans-serif bold italic capital n}% +\UnicodeMathSymbol{"1D64A}{\mbfitsansO }{\mathalpha}{mathematical sans-serif bold italic capital o}% +\UnicodeMathSymbol{"1D64B}{\mbfitsansP }{\mathalpha}{mathematical sans-serif bold italic capital p}% +\UnicodeMathSymbol{"1D64C}{\mbfitsansQ }{\mathalpha}{mathematical sans-serif bold italic capital q}% +\UnicodeMathSymbol{"1D64D}{\mbfitsansR }{\mathalpha}{mathematical sans-serif bold italic capital r}% +\UnicodeMathSymbol{"1D64E}{\mbfitsansS }{\mathalpha}{mathematical sans-serif bold italic capital s}% +\UnicodeMathSymbol{"1D64F}{\mbfitsansT }{\mathalpha}{mathematical sans-serif bold italic capital t}% +\UnicodeMathSymbol{"1D650}{\mbfitsansU }{\mathalpha}{mathematical sans-serif bold italic capital u}% +\UnicodeMathSymbol{"1D651}{\mbfitsansV }{\mathalpha}{mathematical sans-serif bold italic capital v}% +\UnicodeMathSymbol{"1D652}{\mbfitsansW }{\mathalpha}{mathematical sans-serif bold italic capital w}% +\UnicodeMathSymbol{"1D653}{\mbfitsansX }{\mathalpha}{mathematical sans-serif bold italic capital x}% +\UnicodeMathSymbol{"1D654}{\mbfitsansY }{\mathalpha}{mathematical sans-serif bold italic capital y}% +\UnicodeMathSymbol{"1D655}{\mbfitsansZ }{\mathalpha}{mathematical sans-serif bold italic capital z}% +\UnicodeMathSymbol{"1D656}{\mbfitsansa }{\mathalpha}{mathematical sans-serif bold italic small a}% +\UnicodeMathSymbol{"1D657}{\mbfitsansb }{\mathalpha}{mathematical sans-serif bold italic small b}% +\UnicodeMathSymbol{"1D658}{\mbfitsansc }{\mathalpha}{mathematical sans-serif bold italic small c}% +\UnicodeMathSymbol{"1D659}{\mbfitsansd }{\mathalpha}{mathematical sans-serif bold italic small d}% +\UnicodeMathSymbol{"1D65A}{\mbfitsanse }{\mathalpha}{mathematical sans-serif bold italic small e}% +\UnicodeMathSymbol{"1D65B}{\mbfitsansf }{\mathalpha}{mathematical sans-serif bold italic small f}% +\UnicodeMathSymbol{"1D65C}{\mbfitsansg }{\mathalpha}{mathematical sans-serif bold italic small g}% +\UnicodeMathSymbol{"1D65D}{\mbfitsansh }{\mathalpha}{mathematical sans-serif bold italic small h}% +\UnicodeMathSymbol{"1D65E}{\mbfitsansi }{\mathalpha}{mathematical sans-serif bold italic small i}% +\UnicodeMathSymbol{"1D65F}{\mbfitsansj }{\mathalpha}{mathematical sans-serif bold italic small j}% +\UnicodeMathSymbol{"1D660}{\mbfitsansk }{\mathalpha}{mathematical sans-serif bold italic small k}% +\UnicodeMathSymbol{"1D661}{\mbfitsansl }{\mathalpha}{mathematical sans-serif bold italic small l}% +\UnicodeMathSymbol{"1D662}{\mbfitsansm }{\mathalpha}{mathematical sans-serif bold italic small m}% +\UnicodeMathSymbol{"1D663}{\mbfitsansn }{\mathalpha}{mathematical sans-serif bold italic small n}% +\UnicodeMathSymbol{"1D664}{\mbfitsanso }{\mathalpha}{mathematical sans-serif bold italic small o}% +\UnicodeMathSymbol{"1D665}{\mbfitsansp }{\mathalpha}{mathematical sans-serif bold italic small p}% +\UnicodeMathSymbol{"1D666}{\mbfitsansq }{\mathalpha}{mathematical sans-serif bold italic small q}% +\UnicodeMathSymbol{"1D667}{\mbfitsansr }{\mathalpha}{mathematical sans-serif bold italic small r}% +\UnicodeMathSymbol{"1D668}{\mbfitsanss }{\mathalpha}{mathematical sans-serif bold italic small s}% +\UnicodeMathSymbol{"1D669}{\mbfitsanst }{\mathalpha}{mathematical sans-serif bold italic small t}% +\UnicodeMathSymbol{"1D66A}{\mbfitsansu }{\mathalpha}{mathematical sans-serif bold italic small u}% +\UnicodeMathSymbol{"1D66B}{\mbfitsansv }{\mathalpha}{mathematical sans-serif bold italic small v}% +\UnicodeMathSymbol{"1D66C}{\mbfitsansw }{\mathalpha}{mathematical sans-serif bold italic small w}% +\UnicodeMathSymbol{"1D66D}{\mbfitsansx }{\mathalpha}{mathematical sans-serif bold italic small x}% +\UnicodeMathSymbol{"1D66E}{\mbfitsansy }{\mathalpha}{mathematical sans-serif bold italic small y}% +\UnicodeMathSymbol{"1D66F}{\mbfitsansz }{\mathalpha}{mathematical sans-serif bold italic small z}% +\UnicodeMathSymbol{"1D670}{\mttA }{\mathalpha}{mathematical monospace capital a}% +\UnicodeMathSymbol{"1D671}{\mttB }{\mathalpha}{mathematical monospace capital b}% +\UnicodeMathSymbol{"1D672}{\mttC }{\mathalpha}{mathematical monospace capital c}% +\UnicodeMathSymbol{"1D673}{\mttD }{\mathalpha}{mathematical monospace capital d}% +\UnicodeMathSymbol{"1D674}{\mttE }{\mathalpha}{mathematical monospace capital e}% +\UnicodeMathSymbol{"1D675}{\mttF }{\mathalpha}{mathematical monospace capital f}% +\UnicodeMathSymbol{"1D676}{\mttG }{\mathalpha}{mathematical monospace capital g}% +\UnicodeMathSymbol{"1D677}{\mttH }{\mathalpha}{mathematical monospace capital h}% +\UnicodeMathSymbol{"1D678}{\mttI }{\mathalpha}{mathematical monospace capital i}% +\UnicodeMathSymbol{"1D679}{\mttJ }{\mathalpha}{mathematical monospace capital j}% +\UnicodeMathSymbol{"1D67A}{\mttK }{\mathalpha}{mathematical monospace capital k}% +\UnicodeMathSymbol{"1D67B}{\mttL }{\mathalpha}{mathematical monospace capital l}% +\UnicodeMathSymbol{"1D67C}{\mttM }{\mathalpha}{mathematical monospace capital m}% +\UnicodeMathSymbol{"1D67D}{\mttN }{\mathalpha}{mathematical monospace capital n}% +\UnicodeMathSymbol{"1D67E}{\mttO }{\mathalpha}{mathematical monospace capital o}% +\UnicodeMathSymbol{"1D67F}{\mttP }{\mathalpha}{mathematical monospace capital p}% +\UnicodeMathSymbol{"1D680}{\mttQ }{\mathalpha}{mathematical monospace capital q}% +\UnicodeMathSymbol{"1D681}{\mttR }{\mathalpha}{mathematical monospace capital r}% +\UnicodeMathSymbol{"1D682}{\mttS }{\mathalpha}{mathematical monospace capital s}% +\UnicodeMathSymbol{"1D683}{\mttT }{\mathalpha}{mathematical monospace capital t}% +\UnicodeMathSymbol{"1D684}{\mttU }{\mathalpha}{mathematical monospace capital u}% +\UnicodeMathSymbol{"1D685}{\mttV }{\mathalpha}{mathematical monospace capital v}% +\UnicodeMathSymbol{"1D686}{\mttW }{\mathalpha}{mathematical monospace capital w}% +\UnicodeMathSymbol{"1D687}{\mttX }{\mathalpha}{mathematical monospace capital x}% +\UnicodeMathSymbol{"1D688}{\mttY }{\mathalpha}{mathematical monospace capital y}% +\UnicodeMathSymbol{"1D689}{\mttZ }{\mathalpha}{mathematical monospace capital z}% +\UnicodeMathSymbol{"1D68A}{\mtta }{\mathalpha}{mathematical monospace small a}% +\UnicodeMathSymbol{"1D68B}{\mttb }{\mathalpha}{mathematical monospace small b}% +\UnicodeMathSymbol{"1D68C}{\mttc }{\mathalpha}{mathematical monospace small c}% +\UnicodeMathSymbol{"1D68D}{\mttd }{\mathalpha}{mathematical monospace small d}% +\UnicodeMathSymbol{"1D68E}{\mtte }{\mathalpha}{mathematical monospace small e}% +\UnicodeMathSymbol{"1D68F}{\mttf }{\mathalpha}{mathematical monospace small f}% +\UnicodeMathSymbol{"1D690}{\mttg }{\mathalpha}{mathematical monospace small g}% +\UnicodeMathSymbol{"1D691}{\mtth }{\mathalpha}{mathematical monospace small h}% +\UnicodeMathSymbol{"1D692}{\mtti }{\mathalpha}{mathematical monospace small i}% +\UnicodeMathSymbol{"1D693}{\mttj }{\mathalpha}{mathematical monospace small j}% +\UnicodeMathSymbol{"1D694}{\mttk }{\mathalpha}{mathematical monospace small k}% +\UnicodeMathSymbol{"1D695}{\mttl }{\mathalpha}{mathematical monospace small l}% +\UnicodeMathSymbol{"1D696}{\mttm }{\mathalpha}{mathematical monospace small m}% +\UnicodeMathSymbol{"1D697}{\mttn }{\mathalpha}{mathematical monospace small n}% +\UnicodeMathSymbol{"1D698}{\mtto }{\mathalpha}{mathematical monospace small o}% +\UnicodeMathSymbol{"1D699}{\mttp }{\mathalpha}{mathematical monospace small p}% +\UnicodeMathSymbol{"1D69A}{\mttq }{\mathalpha}{mathematical monospace small q}% +\UnicodeMathSymbol{"1D69B}{\mttr }{\mathalpha}{mathematical monospace small r}% +\UnicodeMathSymbol{"1D69C}{\mtts }{\mathalpha}{mathematical monospace small s}% +\UnicodeMathSymbol{"1D69D}{\mttt }{\mathalpha}{mathematical monospace small t}% +\UnicodeMathSymbol{"1D69E}{\mttu }{\mathalpha}{mathematical monospace small u}% +\UnicodeMathSymbol{"1D69F}{\mttv }{\mathalpha}{mathematical monospace small v}% +\UnicodeMathSymbol{"1D6A0}{\mttw }{\mathalpha}{mathematical monospace small w}% +\UnicodeMathSymbol{"1D6A1}{\mttx }{\mathalpha}{mathematical monospace small x}% +\UnicodeMathSymbol{"1D6A2}{\mtty }{\mathalpha}{mathematical monospace small y}% +\UnicodeMathSymbol{"1D6A3}{\mttz }{\mathalpha}{mathematical monospace small z}% +\UnicodeMathSymbol{"1D6A4}{\imath }{\mathalpha}{mathematical italic small dotless i}% +\UnicodeMathSymbol{"1D6A5}{\jmath }{\mathalpha}{mathematical italic small dotless j}% +\UnicodeMathSymbol{"1D6A8}{\mbfAlpha }{\mathalpha}{mathematical bold capital alpha}% +\UnicodeMathSymbol{"1D6A9}{\mbfBeta }{\mathalpha}{mathematical bold capital beta}% +\UnicodeMathSymbol{"1D6AA}{\mbfGamma }{\mathalpha}{mathematical bold capital gamma}% +\UnicodeMathSymbol{"1D6AB}{\mbfDelta }{\mathalpha}{mathematical bold capital delta}% +\UnicodeMathSymbol{"1D6AC}{\mbfEpsilon }{\mathalpha}{mathematical bold capital epsilon}% +\UnicodeMathSymbol{"1D6AD}{\mbfZeta }{\mathalpha}{mathematical bold capital zeta}% +\UnicodeMathSymbol{"1D6AE}{\mbfEta }{\mathalpha}{mathematical bold capital eta}% +\UnicodeMathSymbol{"1D6AF}{\mbfTheta }{\mathalpha}{mathematical bold capital theta}% +\UnicodeMathSymbol{"1D6B0}{\mbfIota }{\mathalpha}{mathematical bold capital iota}% +\UnicodeMathSymbol{"1D6B1}{\mbfKappa }{\mathalpha}{mathematical bold capital kappa}% +\UnicodeMathSymbol{"1D6B2}{\mbfLambda }{\mathalpha}{mathematical bold capital lambda}% +\UnicodeMathSymbol{"1D6B3}{\mbfMu }{\mathalpha}{mathematical bold capital mu}% +\UnicodeMathSymbol{"1D6B4}{\mbfNu }{\mathalpha}{mathematical bold capital nu}% +\UnicodeMathSymbol{"1D6B5}{\mbfXi }{\mathalpha}{mathematical bold capital xi}% +\UnicodeMathSymbol{"1D6B6}{\mbfOmicron }{\mathalpha}{mathematical bold capital omicron}% +\UnicodeMathSymbol{"1D6B7}{\mbfPi }{\mathalpha}{mathematical bold capital pi}% +\UnicodeMathSymbol{"1D6B8}{\mbfRho }{\mathalpha}{mathematical bold capital rho}% +\UnicodeMathSymbol{"1D6B9}{\mbfvarTheta }{\mathalpha}{mathematical bold capital theta symbol}% +\UnicodeMathSymbol{"1D6BA}{\mbfSigma }{\mathalpha}{mathematical bold capital sigma}% +\UnicodeMathSymbol{"1D6BB}{\mbfTau }{\mathalpha}{mathematical bold capital tau}% +\UnicodeMathSymbol{"1D6BC}{\mbfUpsilon }{\mathalpha}{mathematical bold capital upsilon}% +\UnicodeMathSymbol{"1D6BD}{\mbfPhi }{\mathalpha}{mathematical bold capital phi}% +\UnicodeMathSymbol{"1D6BE}{\mbfChi }{\mathalpha}{mathematical bold capital chi}% +\UnicodeMathSymbol{"1D6BF}{\mbfPsi }{\mathalpha}{mathematical bold capital psi}% +\UnicodeMathSymbol{"1D6C0}{\mbfOmega }{\mathalpha}{mathematical bold capital omega}% +\UnicodeMathSymbol{"1D6C1}{\mbfnabla }{\mathalpha}{mathematical bold nabla}% +\UnicodeMathSymbol{"1D6C2}{\mbfalpha }{\mathalpha}{mathematical bold small alpha}% +\UnicodeMathSymbol{"1D6C3}{\mbfbeta }{\mathalpha}{mathematical bold small beta}% +\UnicodeMathSymbol{"1D6C4}{\mbfgamma }{\mathalpha}{mathematical bold small gamma}% +\UnicodeMathSymbol{"1D6C5}{\mbfdelta }{\mathalpha}{mathematical bold small delta}% +\UnicodeMathSymbol{"1D6C6}{\mbfvarepsilon }{\mathalpha}{mathematical bold small varepsilon}% +\UnicodeMathSymbol{"1D6C7}{\mbfzeta }{\mathalpha}{mathematical bold small zeta}% +\UnicodeMathSymbol{"1D6C8}{\mbfeta }{\mathalpha}{mathematical bold small eta}% +\UnicodeMathSymbol{"1D6C9}{\mbftheta }{\mathalpha}{mathematical bold small theta}% +\UnicodeMathSymbol{"1D6CA}{\mbfiota }{\mathalpha}{mathematical bold small iota}% +\UnicodeMathSymbol{"1D6CB}{\mbfkappa }{\mathalpha}{mathematical bold small kappa}% +\UnicodeMathSymbol{"1D6CC}{\mbflambda }{\mathalpha}{mathematical bold small lambda}% +\UnicodeMathSymbol{"1D6CD}{\mbfmu }{\mathalpha}{mathematical bold small mu}% +\UnicodeMathSymbol{"1D6CE}{\mbfnu }{\mathalpha}{mathematical bold small nu}% +\UnicodeMathSymbol{"1D6CF}{\mbfxi }{\mathalpha}{mathematical bold small xi}% +\UnicodeMathSymbol{"1D6D0}{\mbfomicron }{\mathalpha}{mathematical bold small omicron}% +\UnicodeMathSymbol{"1D6D1}{\mbfpi }{\mathalpha}{mathematical bold small pi}% +\UnicodeMathSymbol{"1D6D2}{\mbfrho }{\mathalpha}{mathematical bold small rho}% +\UnicodeMathSymbol{"1D6D3}{\mbfvarsigma }{\mathalpha}{mathematical bold small final sigma}% +\UnicodeMathSymbol{"1D6D4}{\mbfsigma }{\mathalpha}{mathematical bold small sigma}% +\UnicodeMathSymbol{"1D6D5}{\mbftau }{\mathalpha}{mathematical bold small tau}% +\UnicodeMathSymbol{"1D6D6}{\mbfupsilon }{\mathalpha}{mathematical bold small upsilon}% +\UnicodeMathSymbol{"1D6D7}{\mbfvarphi }{\mathalpha}{mathematical bold small phi}% +\UnicodeMathSymbol{"1D6D8}{\mbfchi }{\mathalpha}{mathematical bold small chi}% +\UnicodeMathSymbol{"1D6D9}{\mbfpsi }{\mathalpha}{mathematical bold small psi}% +\UnicodeMathSymbol{"1D6DA}{\mbfomega }{\mathalpha}{mathematical bold small omega}% +\UnicodeMathSymbol{"1D6DB}{\mbfpartial }{\mathalpha}{mathematical bold partial differential}% +\UnicodeMathSymbol{"1D6DC}{\mbfepsilon }{\mathalpha}{mathematical bold varepsilon symbol}% +\UnicodeMathSymbol{"1D6DD}{\mbfvartheta }{\mathalpha}{mathematical bold theta symbol}% +\UnicodeMathSymbol{"1D6DE}{\mbfvarkappa }{\mathalpha}{mathematical bold kappa symbol}% +\UnicodeMathSymbol{"1D6DF}{\mbfphi }{\mathalpha}{mathematical bold phi symbol}% +\UnicodeMathSymbol{"1D6E0}{\mbfvarrho }{\mathalpha}{mathematical bold rho symbol}% +\UnicodeMathSymbol{"1D6E1}{\mbfvarpi }{\mathalpha}{mathematical bold pi symbol}% +\UnicodeMathSymbol{"1D6E2}{\mitAlpha }{\mathalpha}{mathematical italic capital alpha}% +\UnicodeMathSymbol{"1D6E3}{\mitBeta }{\mathalpha}{mathematical italic capital beta}% +\UnicodeMathSymbol{"1D6E4}{\mitGamma }{\mathalpha}{mathematical italic capital gamma}% +\UnicodeMathSymbol{"1D6E5}{\mitDelta }{\mathalpha}{mathematical italic capital delta}% +\UnicodeMathSymbol{"1D6E6}{\mitEpsilon }{\mathalpha}{mathematical italic capital epsilon}% +\UnicodeMathSymbol{"1D6E7}{\mitZeta }{\mathalpha}{mathematical italic capital zeta}% +\UnicodeMathSymbol{"1D6E8}{\mitEta }{\mathalpha}{mathematical italic capital eta}% +\UnicodeMathSymbol{"1D6E9}{\mitTheta }{\mathalpha}{mathematical italic capital theta}% +\UnicodeMathSymbol{"1D6EA}{\mitIota }{\mathalpha}{mathematical italic capital iota}% +\UnicodeMathSymbol{"1D6EB}{\mitKappa }{\mathalpha}{mathematical italic capital kappa}% +\UnicodeMathSymbol{"1D6EC}{\mitLambda }{\mathalpha}{mathematical italic capital lambda}% +\UnicodeMathSymbol{"1D6ED}{\mitMu }{\mathalpha}{mathematical italic capital mu}% +\UnicodeMathSymbol{"1D6EE}{\mitNu }{\mathalpha}{mathematical italic capital nu}% +\UnicodeMathSymbol{"1D6EF}{\mitXi }{\mathalpha}{mathematical italic capital xi}% +\UnicodeMathSymbol{"1D6F0}{\mitOmicron }{\mathalpha}{mathematical italic capital omicron}% +\UnicodeMathSymbol{"1D6F1}{\mitPi }{\mathalpha}{mathematical italic capital pi}% +\UnicodeMathSymbol{"1D6F2}{\mitRho }{\mathalpha}{mathematical italic capital rho}% +\UnicodeMathSymbol{"1D6F3}{\mitvarTheta }{\mathalpha}{mathematical italic capital theta symbol}% +\UnicodeMathSymbol{"1D6F4}{\mitSigma }{\mathalpha}{mathematical italic capital sigma}% +\UnicodeMathSymbol{"1D6F5}{\mitTau }{\mathalpha}{mathematical italic capital tau}% +\UnicodeMathSymbol{"1D6F6}{\mitUpsilon }{\mathalpha}{mathematical italic capital upsilon}% +\UnicodeMathSymbol{"1D6F7}{\mitPhi }{\mathalpha}{mathematical italic capital phi}% +\UnicodeMathSymbol{"1D6F8}{\mitChi }{\mathalpha}{mathematical italic capital chi}% +\UnicodeMathSymbol{"1D6F9}{\mitPsi }{\mathalpha}{mathematical italic capital psi}% +\UnicodeMathSymbol{"1D6FA}{\mitOmega }{\mathalpha}{mathematical italic capital omega}% +\UnicodeMathSymbol{"1D6FB}{\mitnabla }{\mathalpha}{mathematical italic nabla}% +\UnicodeMathSymbol{"1D6FC}{\mitalpha }{\mathalpha}{mathematical italic small alpha}% +\UnicodeMathSymbol{"1D6FD}{\mitbeta }{\mathalpha}{mathematical italic small beta}% +\UnicodeMathSymbol{"1D6FE}{\mitgamma }{\mathalpha}{mathematical italic small gamma}% +\UnicodeMathSymbol{"1D6FF}{\mitdelta }{\mathalpha}{mathematical italic small delta}% +\UnicodeMathSymbol{"1D700}{\mitvarepsilon }{\mathalpha}{mathematical italic small varepsilon}% +\UnicodeMathSymbol{"1D701}{\mitzeta }{\mathalpha}{mathematical italic small zeta}% +\UnicodeMathSymbol{"1D702}{\miteta }{\mathalpha}{mathematical italic small eta}% +\UnicodeMathSymbol{"1D703}{\mittheta }{\mathalpha}{mathematical italic small theta}% +\UnicodeMathSymbol{"1D704}{\mitiota }{\mathalpha}{mathematical italic small iota}% +\UnicodeMathSymbol{"1D705}{\mitkappa }{\mathalpha}{mathematical italic small kappa}% +\UnicodeMathSymbol{"1D706}{\mitlambda }{\mathalpha}{mathematical italic small lambda}% +\UnicodeMathSymbol{"1D707}{\mitmu }{\mathalpha}{mathematical italic small mu}% +\UnicodeMathSymbol{"1D708}{\mitnu }{\mathalpha}{mathematical italic small nu}% +\UnicodeMathSymbol{"1D709}{\mitxi }{\mathalpha}{mathematical italic small xi}% +\UnicodeMathSymbol{"1D70A}{\mitomicron }{\mathalpha}{mathematical italic small omicron}% +\UnicodeMathSymbol{"1D70B}{\mitpi }{\mathalpha}{mathematical italic small pi}% +\UnicodeMathSymbol{"1D70C}{\mitrho }{\mathalpha}{mathematical italic small rho}% +\UnicodeMathSymbol{"1D70D}{\mitvarsigma }{\mathalpha}{mathematical italic small final sigma}% +\UnicodeMathSymbol{"1D70E}{\mitsigma }{\mathalpha}{mathematical italic small sigma}% +\UnicodeMathSymbol{"1D70F}{\mittau }{\mathalpha}{mathematical italic small tau}% +\UnicodeMathSymbol{"1D710}{\mitupsilon }{\mathalpha}{mathematical italic small upsilon}% +\UnicodeMathSymbol{"1D711}{\mitvarphi }{\mathalpha}{mathematical italic small phi}% +\UnicodeMathSymbol{"1D712}{\mitchi }{\mathalpha}{mathematical italic small chi}% +\UnicodeMathSymbol{"1D713}{\mitpsi }{\mathalpha}{mathematical italic small psi}% +\UnicodeMathSymbol{"1D714}{\mitomega }{\mathalpha}{mathematical italic small omega}% +\UnicodeMathSymbol{"1D715}{\mitpartial }{\mathalpha}{mathematical italic partial differential}% +\UnicodeMathSymbol{"1D716}{\mitepsilon }{\mathalpha}{mathematical italic varepsilon symbol}% +\UnicodeMathSymbol{"1D717}{\mitvartheta }{\mathalpha}{mathematical italic theta symbol}% +\UnicodeMathSymbol{"1D718}{\mitvarkappa }{\mathalpha}{mathematical italic kappa symbol}% +\UnicodeMathSymbol{"1D719}{\mitphi }{\mathalpha}{mathematical italic phi symbol}% +\UnicodeMathSymbol{"1D71A}{\mitvarrho }{\mathalpha}{mathematical italic rho symbol}% +\UnicodeMathSymbol{"1D71B}{\mitvarpi }{\mathalpha}{mathematical italic pi symbol}% +\UnicodeMathSymbol{"1D71C}{\mbfitAlpha }{\mathalpha}{mathematical bold italic capital alpha}% +\UnicodeMathSymbol{"1D71D}{\mbfitBeta }{\mathalpha}{mathematical bold italic capital beta}% +\UnicodeMathSymbol{"1D71E}{\mbfitGamma }{\mathalpha}{mathematical bold italic capital gamma}% +\UnicodeMathSymbol{"1D71F}{\mbfitDelta }{\mathalpha}{mathematical bold italic capital delta}% +\UnicodeMathSymbol{"1D720}{\mbfitEpsilon }{\mathalpha}{mathematical bold italic capital epsilon}% +\UnicodeMathSymbol{"1D721}{\mbfitZeta }{\mathalpha}{mathematical bold italic capital zeta}% +\UnicodeMathSymbol{"1D722}{\mbfitEta }{\mathalpha}{mathematical bold italic capital eta}% +\UnicodeMathSymbol{"1D723}{\mbfitTheta }{\mathalpha}{mathematical bold italic capital theta}% +\UnicodeMathSymbol{"1D724}{\mbfitIota }{\mathalpha}{mathematical bold italic capital iota}% +\UnicodeMathSymbol{"1D725}{\mbfitKappa }{\mathalpha}{mathematical bold italic capital kappa}% +\UnicodeMathSymbol{"1D726}{\mbfitLambda }{\mathalpha}{mathematical bold italic capital lambda}% +\UnicodeMathSymbol{"1D727}{\mbfitMu }{\mathalpha}{mathematical bold italic capital mu}% +\UnicodeMathSymbol{"1D728}{\mbfitNu }{\mathalpha}{mathematical bold italic capital nu}% +\UnicodeMathSymbol{"1D729}{\mbfitXi }{\mathalpha}{mathematical bold italic capital xi}% +\UnicodeMathSymbol{"1D72A}{\mbfitOmicron }{\mathalpha}{mathematical bold italic capital omicron}% +\UnicodeMathSymbol{"1D72B}{\mbfitPi }{\mathalpha}{mathematical bold italic capital pi}% +\UnicodeMathSymbol{"1D72C}{\mbfitRho }{\mathalpha}{mathematical bold italic capital rho}% +\UnicodeMathSymbol{"1D72D}{\mbfitvarTheta }{\mathalpha}{mathematical bold italic capital theta symbol}% +\UnicodeMathSymbol{"1D72E}{\mbfitSigma }{\mathalpha}{mathematical bold italic capital sigma}% +\UnicodeMathSymbol{"1D72F}{\mbfitTau }{\mathalpha}{mathematical bold italic capital tau}% +\UnicodeMathSymbol{"1D730}{\mbfitUpsilon }{\mathalpha}{mathematical bold italic capital upsilon}% +\UnicodeMathSymbol{"1D731}{\mbfitPhi }{\mathalpha}{mathematical bold italic capital phi}% +\UnicodeMathSymbol{"1D732}{\mbfitChi }{\mathalpha}{mathematical bold italic capital chi}% +\UnicodeMathSymbol{"1D733}{\mbfitPsi }{\mathalpha}{mathematical bold italic capital psi}% +\UnicodeMathSymbol{"1D734}{\mbfitOmega }{\mathalpha}{mathematical bold italic capital omega}% +\UnicodeMathSymbol{"1D735}{\mbfitnabla }{\mathalpha}{mathematical bold italic nabla}% +\UnicodeMathSymbol{"1D736}{\mbfitalpha }{\mathalpha}{mathematical bold italic small alpha}% +\UnicodeMathSymbol{"1D737}{\mbfitbeta }{\mathalpha}{mathematical bold italic small beta}% +\UnicodeMathSymbol{"1D738}{\mbfitgamma }{\mathalpha}{mathematical bold italic small gamma}% +\UnicodeMathSymbol{"1D739}{\mbfitdelta }{\mathalpha}{mathematical bold italic small delta}% +\UnicodeMathSymbol{"1D73A}{\mbfitvarepsilon }{\mathalpha}{mathematical bold italic small varepsilon}% +\UnicodeMathSymbol{"1D73B}{\mbfitzeta }{\mathalpha}{mathematical bold italic small zeta}% +\UnicodeMathSymbol{"1D73C}{\mbfiteta }{\mathalpha}{mathematical bold italic small eta}% +\UnicodeMathSymbol{"1D73D}{\mbfittheta }{\mathalpha}{mathematical bold italic small theta}% +\UnicodeMathSymbol{"1D73E}{\mbfitiota }{\mathalpha}{mathematical bold italic small iota}% +\UnicodeMathSymbol{"1D73F}{\mbfitkappa }{\mathalpha}{mathematical bold italic small kappa}% +\UnicodeMathSymbol{"1D740}{\mbfitlambda }{\mathalpha}{mathematical bold italic small lambda}% +\UnicodeMathSymbol{"1D741}{\mbfitmu }{\mathalpha}{mathematical bold italic small mu}% +\UnicodeMathSymbol{"1D742}{\mbfitnu }{\mathalpha}{mathematical bold italic small nu}% +\UnicodeMathSymbol{"1D743}{\mbfitxi }{\mathalpha}{mathematical bold italic small xi}% +\UnicodeMathSymbol{"1D744}{\mbfitomicron }{\mathalpha}{mathematical bold italic small omicron}% +\UnicodeMathSymbol{"1D745}{\mbfitpi }{\mathalpha}{mathematical bold italic small pi}% +\UnicodeMathSymbol{"1D746}{\mbfitrho }{\mathalpha}{mathematical bold italic small rho}% +\UnicodeMathSymbol{"1D747}{\mbfitvarsigma }{\mathalpha}{mathematical bold italic small final sigma}% +\UnicodeMathSymbol{"1D748}{\mbfitsigma }{\mathalpha}{mathematical bold italic small sigma}% +\UnicodeMathSymbol{"1D749}{\mbfittau }{\mathalpha}{mathematical bold italic small tau}% +\UnicodeMathSymbol{"1D74A}{\mbfitupsilon }{\mathalpha}{mathematical bold italic small upsilon}% +\UnicodeMathSymbol{"1D74B}{\mbfitvarphi }{\mathalpha}{mathematical bold italic small phi}% +\UnicodeMathSymbol{"1D74C}{\mbfitchi }{\mathalpha}{mathematical bold italic small chi}% +\UnicodeMathSymbol{"1D74D}{\mbfitpsi }{\mathalpha}{mathematical bold italic small psi}% +\UnicodeMathSymbol{"1D74E}{\mbfitomega }{\mathalpha}{mathematical bold italic small omega}% +\UnicodeMathSymbol{"1D74F}{\mbfitpartial }{\mathalpha}{mathematical bold italic partial differential}% +\UnicodeMathSymbol{"1D750}{\mbfitepsilon }{\mathalpha}{mathematical bold italic varepsilon symbol}% +\UnicodeMathSymbol{"1D751}{\mbfitvartheta }{\mathalpha}{mathematical bold italic theta symbol}% +\UnicodeMathSymbol{"1D752}{\mbfitvarkappa }{\mathalpha}{mathematical bold italic kappa symbol}% +\UnicodeMathSymbol{"1D753}{\mbfitphi }{\mathalpha}{mathematical bold italic phi symbol}% +\UnicodeMathSymbol{"1D754}{\mbfitvarrho }{\mathalpha}{mathematical bold italic rho symbol}% +\UnicodeMathSymbol{"1D755}{\mbfitvarpi }{\mathalpha}{mathematical bold italic pi symbol}% +\UnicodeMathSymbol{"1D756}{\mbfsansAlpha }{\mathalpha}{mathematical sans-serif bold capital alpha}% +\UnicodeMathSymbol{"1D757}{\mbfsansBeta }{\mathalpha}{mathematical sans-serif bold capital beta}% +\UnicodeMathSymbol{"1D758}{\mbfsansGamma }{\mathalpha}{mathematical sans-serif bold capital gamma}% +\UnicodeMathSymbol{"1D759}{\mbfsansDelta }{\mathalpha}{mathematical sans-serif bold capital delta}% +\UnicodeMathSymbol{"1D75A}{\mbfsansEpsilon }{\mathalpha}{mathematical sans-serif bold capital epsilon}% +\UnicodeMathSymbol{"1D75B}{\mbfsansZeta }{\mathalpha}{mathematical sans-serif bold capital zeta}% +\UnicodeMathSymbol{"1D75C}{\mbfsansEta }{\mathalpha}{mathematical sans-serif bold capital eta}% +\UnicodeMathSymbol{"1D75D}{\mbfsansTheta }{\mathalpha}{mathematical sans-serif bold capital theta}% +\UnicodeMathSymbol{"1D75E}{\mbfsansIota }{\mathalpha}{mathematical sans-serif bold capital iota}% +\UnicodeMathSymbol{"1D75F}{\mbfsansKappa }{\mathalpha}{mathematical sans-serif bold capital kappa}% +\UnicodeMathSymbol{"1D760}{\mbfsansLambda }{\mathalpha}{mathematical sans-serif bold capital lambda}% +\UnicodeMathSymbol{"1D761}{\mbfsansMu }{\mathalpha}{mathematical sans-serif bold capital mu}% +\UnicodeMathSymbol{"1D762}{\mbfsansNu }{\mathalpha}{mathematical sans-serif bold capital nu}% +\UnicodeMathSymbol{"1D763}{\mbfsansXi }{\mathalpha}{mathematical sans-serif bold capital xi}% +\UnicodeMathSymbol{"1D764}{\mbfsansOmicron }{\mathalpha}{mathematical sans-serif bold capital omicron}% +\UnicodeMathSymbol{"1D765}{\mbfsansPi }{\mathalpha}{mathematical sans-serif bold capital pi}% +\UnicodeMathSymbol{"1D766}{\mbfsansRho }{\mathalpha}{mathematical sans-serif bold capital rho}% +\UnicodeMathSymbol{"1D767}{\mbfsansvarTheta }{\mathalpha}{mathematical sans-serif bold capital theta symbol}% +\UnicodeMathSymbol{"1D768}{\mbfsansSigma }{\mathalpha}{mathematical sans-serif bold capital sigma}% +\UnicodeMathSymbol{"1D769}{\mbfsansTau }{\mathalpha}{mathematical sans-serif bold capital tau}% +\UnicodeMathSymbol{"1D76A}{\mbfsansUpsilon }{\mathalpha}{mathematical sans-serif bold capital upsilon}% +\UnicodeMathSymbol{"1D76B}{\mbfsansPhi }{\mathalpha}{mathematical sans-serif bold capital phi}% +\UnicodeMathSymbol{"1D76C}{\mbfsansChi }{\mathalpha}{mathematical sans-serif bold capital chi}% +\UnicodeMathSymbol{"1D76D}{\mbfsansPsi }{\mathalpha}{mathematical sans-serif bold capital psi}% +\UnicodeMathSymbol{"1D76E}{\mbfsansOmega }{\mathalpha}{mathematical sans-serif bold capital omega}% +\UnicodeMathSymbol{"1D76F}{\mbfsansnabla }{\mathalpha}{mathematical sans-serif bold nabla}% +\UnicodeMathSymbol{"1D770}{\mbfsansalpha }{\mathalpha}{mathematical sans-serif bold small alpha}% +\UnicodeMathSymbol{"1D771}{\mbfsansbeta }{\mathalpha}{mathematical sans-serif bold small beta}% +\UnicodeMathSymbol{"1D772}{\mbfsansgamma }{\mathalpha}{mathematical sans-serif bold small gamma}% +\UnicodeMathSymbol{"1D773}{\mbfsansdelta }{\mathalpha}{mathematical sans-serif bold small delta}% +\UnicodeMathSymbol{"1D774}{\mbfsansvarepsilon }{\mathalpha}{mathematical sans-serif bold small varepsilon}% +\UnicodeMathSymbol{"1D775}{\mbfsanszeta }{\mathalpha}{mathematical sans-serif bold small zeta}% +\UnicodeMathSymbol{"1D776}{\mbfsanseta }{\mathalpha}{mathematical sans-serif bold small eta}% +\UnicodeMathSymbol{"1D777}{\mbfsanstheta }{\mathalpha}{mathematical sans-serif bold small theta}% +\UnicodeMathSymbol{"1D778}{\mbfsansiota }{\mathalpha}{mathematical sans-serif bold small iota}% +\UnicodeMathSymbol{"1D779}{\mbfsanskappa }{\mathalpha}{mathematical sans-serif bold small kappa}% +\UnicodeMathSymbol{"1D77A}{\mbfsanslambda }{\mathalpha}{mathematical sans-serif bold small lambda}% +\UnicodeMathSymbol{"1D77B}{\mbfsansmu }{\mathalpha}{mathematical sans-serif bold small mu}% +\UnicodeMathSymbol{"1D77C}{\mbfsansnu }{\mathalpha}{mathematical sans-serif bold small nu}% +\UnicodeMathSymbol{"1D77D}{\mbfsansxi }{\mathalpha}{mathematical sans-serif bold small xi}% +\UnicodeMathSymbol{"1D77E}{\mbfsansomicron }{\mathalpha}{mathematical sans-serif bold small omicron}% +\UnicodeMathSymbol{"1D77F}{\mbfsanspi }{\mathalpha}{mathematical sans-serif bold small pi}% +\UnicodeMathSymbol{"1D780}{\mbfsansrho }{\mathalpha}{mathematical sans-serif bold small rho}% +\UnicodeMathSymbol{"1D781}{\mbfsansvarsigma }{\mathalpha}{mathematical sans-serif bold small final sigma}% +\UnicodeMathSymbol{"1D782}{\mbfsanssigma }{\mathalpha}{mathematical sans-serif bold small sigma}% +\UnicodeMathSymbol{"1D783}{\mbfsanstau }{\mathalpha}{mathematical sans-serif bold small tau}% +\UnicodeMathSymbol{"1D784}{\mbfsansupsilon }{\mathalpha}{mathematical sans-serif bold small upsilon}% +\UnicodeMathSymbol{"1D785}{\mbfsansvarphi }{\mathalpha}{mathematical sans-serif bold small phi}% +\UnicodeMathSymbol{"1D786}{\mbfsanschi }{\mathalpha}{mathematical sans-serif bold small chi}% +\UnicodeMathSymbol{"1D787}{\mbfsanspsi }{\mathalpha}{mathematical sans-serif bold small psi}% +\UnicodeMathSymbol{"1D788}{\mbfsansomega }{\mathalpha}{mathematical sans-serif bold small omega}% +\UnicodeMathSymbol{"1D789}{\mbfsanspartial }{\mathalpha}{mathematical sans-serif bold partial differential}% +\UnicodeMathSymbol{"1D78A}{\mbfsansepsilon }{\mathalpha}{mathematical sans-serif bold varepsilon symbol}% +\UnicodeMathSymbol{"1D78B}{\mbfsansvartheta }{\mathalpha}{mathematical sans-serif bold theta symbol}% +\UnicodeMathSymbol{"1D78C}{\mbfsansvarkappa }{\mathalpha}{mathematical sans-serif bold kappa symbol}% +\UnicodeMathSymbol{"1D78D}{\mbfsansphi }{\mathalpha}{mathematical sans-serif bold phi symbol}% +\UnicodeMathSymbol{"1D78E}{\mbfsansvarrho }{\mathalpha}{mathematical sans-serif bold rho symbol}% +\UnicodeMathSymbol{"1D78F}{\mbfsansvarpi }{\mathalpha}{mathematical sans-serif bold pi symbol}% +\UnicodeMathSymbol{"1D790}{\mbfitsansAlpha }{\mathalpha}{mathematical sans-serif bold italic capital alpha}% +\UnicodeMathSymbol{"1D791}{\mbfitsansBeta }{\mathalpha}{mathematical sans-serif bold italic capital beta}% +\UnicodeMathSymbol{"1D792}{\mbfitsansGamma }{\mathalpha}{mathematical sans-serif bold italic capital gamma}% +\UnicodeMathSymbol{"1D793}{\mbfitsansDelta }{\mathalpha}{mathematical sans-serif bold italic capital delta}% +\UnicodeMathSymbol{"1D794}{\mbfitsansEpsilon }{\mathalpha}{mathematical sans-serif bold italic capital epsilon}% +\UnicodeMathSymbol{"1D795}{\mbfitsansZeta }{\mathalpha}{mathematical sans-serif bold italic capital zeta}% +\UnicodeMathSymbol{"1D796}{\mbfitsansEta }{\mathalpha}{mathematical sans-serif bold italic capital eta}% +\UnicodeMathSymbol{"1D797}{\mbfitsansTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta}% +\UnicodeMathSymbol{"1D798}{\mbfitsansIota }{\mathalpha}{mathematical sans-serif bold italic capital iota}% +\UnicodeMathSymbol{"1D799}{\mbfitsansKappa }{\mathalpha}{mathematical sans-serif bold italic capital kappa}% +\UnicodeMathSymbol{"1D79A}{\mbfitsansLambda }{\mathalpha}{mathematical sans-serif bold italic capital lambda}% +\UnicodeMathSymbol{"1D79B}{\mbfitsansMu }{\mathalpha}{mathematical sans-serif bold italic capital mu}% +\UnicodeMathSymbol{"1D79C}{\mbfitsansNu }{\mathalpha}{mathematical sans-serif bold italic capital nu}% +\UnicodeMathSymbol{"1D79D}{\mbfitsansXi }{\mathalpha}{mathematical sans-serif bold italic capital xi}% +\UnicodeMathSymbol{"1D79E}{\mbfitsansOmicron }{\mathalpha}{mathematical sans-serif bold italic capital omicron}% +\UnicodeMathSymbol{"1D79F}{\mbfitsansPi }{\mathalpha}{mathematical sans-serif bold italic capital pi}% +\UnicodeMathSymbol{"1D7A0}{\mbfitsansRho }{\mathalpha}{mathematical sans-serif bold italic capital rho}% +\UnicodeMathSymbol{"1D7A1}{\mbfitsansvarTheta }{\mathalpha}{mathematical sans-serif bold italic capital theta symbol}% +\UnicodeMathSymbol{"1D7A2}{\mbfitsansSigma }{\mathalpha}{mathematical sans-serif bold italic capital sigma}% +\UnicodeMathSymbol{"1D7A3}{\mbfitsansTau }{\mathalpha}{mathematical sans-serif bold italic capital tau}% +\UnicodeMathSymbol{"1D7A4}{\mbfitsansUpsilon }{\mathalpha}{mathematical sans-serif bold italic capital upsilon}% +\UnicodeMathSymbol{"1D7A5}{\mbfitsansPhi }{\mathalpha}{mathematical sans-serif bold italic capital phi}% +\UnicodeMathSymbol{"1D7A6}{\mbfitsansChi }{\mathalpha}{mathematical sans-serif bold italic capital chi}% +\UnicodeMathSymbol{"1D7A7}{\mbfitsansPsi }{\mathalpha}{mathematical sans-serif bold italic capital psi}% +\UnicodeMathSymbol{"1D7A8}{\mbfitsansOmega }{\mathalpha}{mathematical sans-serif bold italic capital omega}% +\UnicodeMathSymbol{"1D7A9}{\mbfitsansnabla }{\mathalpha}{mathematical sans-serif bold italic nabla}% +\UnicodeMathSymbol{"1D7AA}{\mbfitsansalpha }{\mathalpha}{mathematical sans-serif bold italic small alpha}% +\UnicodeMathSymbol{"1D7AB}{\mbfitsansbeta }{\mathalpha}{mathematical sans-serif bold italic small beta}% +\UnicodeMathSymbol{"1D7AC}{\mbfitsansgamma }{\mathalpha}{mathematical sans-serif bold italic small gamma}% +\UnicodeMathSymbol{"1D7AD}{\mbfitsansdelta }{\mathalpha}{mathematical sans-serif bold italic small delta}% +\UnicodeMathSymbol{"1D7AE}{\mbfitsansvarepsilon }{\mathalpha}{mathematical sans-serif bold italic small varepsilon}% +\UnicodeMathSymbol{"1D7AF}{\mbfitsanszeta }{\mathalpha}{mathematical sans-serif bold italic small zeta}% +\UnicodeMathSymbol{"1D7B0}{\mbfitsanseta }{\mathalpha}{mathematical sans-serif bold italic small eta}% +\UnicodeMathSymbol{"1D7B1}{\mbfitsanstheta }{\mathalpha}{mathematical sans-serif bold italic small theta}% +\UnicodeMathSymbol{"1D7B2}{\mbfitsansiota }{\mathalpha}{mathematical sans-serif bold italic small iota}% +\UnicodeMathSymbol{"1D7B3}{\mbfitsanskappa }{\mathalpha}{mathematical sans-serif bold italic small kappa}% +\UnicodeMathSymbol{"1D7B4}{\mbfitsanslambda }{\mathalpha}{mathematical sans-serif bold italic small lambda}% +\UnicodeMathSymbol{"1D7B5}{\mbfitsansmu }{\mathalpha}{mathematical sans-serif bold italic small mu}% +\UnicodeMathSymbol{"1D7B6}{\mbfitsansnu }{\mathalpha}{mathematical sans-serif bold italic small nu}% +\UnicodeMathSymbol{"1D7B7}{\mbfitsansxi }{\mathalpha}{mathematical sans-serif bold italic small xi}% +\UnicodeMathSymbol{"1D7B8}{\mbfitsansomicron }{\mathalpha}{mathematical sans-serif bold italic small omicron}% +\UnicodeMathSymbol{"1D7B9}{\mbfitsanspi }{\mathalpha}{mathematical sans-serif bold italic small pi}% +\UnicodeMathSymbol{"1D7BA}{\mbfitsansrho }{\mathalpha}{mathematical sans-serif bold italic small rho}% +\UnicodeMathSymbol{"1D7BB}{\mbfitsansvarsigma }{\mathalpha}{mathematical sans-serif bold italic small final sigma}% +\UnicodeMathSymbol{"1D7BC}{\mbfitsanssigma }{\mathalpha}{mathematical sans-serif bold italic small sigma}% +\UnicodeMathSymbol{"1D7BD}{\mbfitsanstau }{\mathalpha}{mathematical sans-serif bold italic small tau}% +\UnicodeMathSymbol{"1D7BE}{\mbfitsansupsilon }{\mathalpha}{mathematical sans-serif bold italic small upsilon}% +\UnicodeMathSymbol{"1D7BF}{\mbfitsansvarphi }{\mathalpha}{mathematical sans-serif bold italic small phi}% +\UnicodeMathSymbol{"1D7C0}{\mbfitsanschi }{\mathalpha}{mathematical sans-serif bold italic small chi}% +\UnicodeMathSymbol{"1D7C1}{\mbfitsanspsi }{\mathalpha}{mathematical sans-serif bold italic small psi}% +\UnicodeMathSymbol{"1D7C2}{\mbfitsansomega }{\mathalpha}{mathematical sans-serif bold italic small omega}% +\UnicodeMathSymbol{"1D7C3}{\mbfitsanspartial }{\mathalpha}{mathematical sans-serif bold italic partial differential}% +\UnicodeMathSymbol{"1D7C4}{\mbfitsansepsilon }{\mathalpha}{mathematical sans-serif bold italic varepsilon symbol}% +\UnicodeMathSymbol{"1D7C5}{\mbfitsansvartheta }{\mathalpha}{mathematical sans-serif bold italic theta symbol}% +\UnicodeMathSymbol{"1D7C6}{\mbfitsansvarkappa }{\mathalpha}{mathematical sans-serif bold italic kappa symbol}% +\UnicodeMathSymbol{"1D7C7}{\mbfitsansphi }{\mathalpha}{mathematical sans-serif bold italic phi symbol}% +\UnicodeMathSymbol{"1D7C8}{\mbfitsansvarrho }{\mathalpha}{mathematical sans-serif bold italic rho symbol}% +\UnicodeMathSymbol{"1D7C9}{\mbfitsansvarpi }{\mathalpha}{mathematical sans-serif bold italic pi symbol}% +\UnicodeMathSymbol{"1D7CA}{\mbfDigamma }{\mathalpha}{mathematical bold capital digamma}% +\UnicodeMathSymbol{"1D7CB}{\mbfdigamma }{\mathalpha}{mathematical bold small digamma}% +\UnicodeMathSymbol{"1D7CE}{\mbfzero }{\mathord}{mathematical bold digit 0}% +\UnicodeMathSymbol{"1D7CF}{\mbfone }{\mathord}{mathematical bold digit 1}% +\UnicodeMathSymbol{"1D7D0}{\mbftwo }{\mathord}{mathematical bold digit 2}% +\UnicodeMathSymbol{"1D7D1}{\mbfthree }{\mathord}{mathematical bold digit 3}% +\UnicodeMathSymbol{"1D7D2}{\mbffour }{\mathord}{mathematical bold digit 4}% +\UnicodeMathSymbol{"1D7D3}{\mbffive }{\mathord}{mathematical bold digit 5}% +\UnicodeMathSymbol{"1D7D4}{\mbfsix }{\mathord}{mathematical bold digit 6}% +\UnicodeMathSymbol{"1D7D5}{\mbfseven }{\mathord}{mathematical bold digit 7}% +\UnicodeMathSymbol{"1D7D6}{\mbfeight }{\mathord}{mathematical bold digit 8}% +\UnicodeMathSymbol{"1D7D7}{\mbfnine }{\mathord}{mathematical bold digit 9}% +\UnicodeMathSymbol{"1D7D8}{\Bbbzero }{\mathord}{mathematical double-struck digit 0}% +\UnicodeMathSymbol{"1D7D9}{\Bbbone }{\mathord}{mathematical double-struck digit 1}% +\UnicodeMathSymbol{"1D7DA}{\Bbbtwo }{\mathord}{mathematical double-struck digit 2}% +\UnicodeMathSymbol{"1D7DB}{\Bbbthree }{\mathord}{mathematical double-struck digit 3}% +\UnicodeMathSymbol{"1D7DC}{\Bbbfour }{\mathord}{mathematical double-struck digit 4}% +\UnicodeMathSymbol{"1D7DD}{\Bbbfive }{\mathord}{mathematical double-struck digit 5}% +\UnicodeMathSymbol{"1D7DE}{\Bbbsix }{\mathord}{mathematical double-struck digit 6}% +\UnicodeMathSymbol{"1D7DF}{\Bbbseven }{\mathord}{mathematical double-struck digit 7}% +\UnicodeMathSymbol{"1D7E0}{\Bbbeight }{\mathord}{mathematical double-struck digit 8}% +\UnicodeMathSymbol{"1D7E1}{\Bbbnine }{\mathord}{mathematical double-struck digit 9}% +\UnicodeMathSymbol{"1D7E2}{\msanszero }{\mathord}{mathematical sans-serif digit 0}% +\UnicodeMathSymbol{"1D7E3}{\msansone }{\mathord}{mathematical sans-serif digit 1}% +\UnicodeMathSymbol{"1D7E4}{\msanstwo }{\mathord}{mathematical sans-serif digit 2}% +\UnicodeMathSymbol{"1D7E5}{\msansthree }{\mathord}{mathematical sans-serif digit 3}% +\UnicodeMathSymbol{"1D7E6}{\msansfour }{\mathord}{mathematical sans-serif digit 4}% +\UnicodeMathSymbol{"1D7E7}{\msansfive }{\mathord}{mathematical sans-serif digit 5}% +\UnicodeMathSymbol{"1D7E8}{\msanssix }{\mathord}{mathematical sans-serif digit 6}% +\UnicodeMathSymbol{"1D7E9}{\msansseven }{\mathord}{mathematical sans-serif digit 7}% +\UnicodeMathSymbol{"1D7EA}{\msanseight }{\mathord}{mathematical sans-serif digit 8}% +\UnicodeMathSymbol{"1D7EB}{\msansnine }{\mathord}{mathematical sans-serif digit 9}% +\UnicodeMathSymbol{"1D7EC}{\mbfsanszero }{\mathord}{mathematical sans-serif bold digit 0}% +\UnicodeMathSymbol{"1D7ED}{\mbfsansone }{\mathord}{mathematical sans-serif bold digit 1}% +\UnicodeMathSymbol{"1D7EE}{\mbfsanstwo }{\mathord}{mathematical sans-serif bold digit 2}% +\UnicodeMathSymbol{"1D7EF}{\mbfsansthree }{\mathord}{mathematical sans-serif bold digit 3}% +\UnicodeMathSymbol{"1D7F0}{\mbfsansfour }{\mathord}{mathematical sans-serif bold digit 4}% +\UnicodeMathSymbol{"1D7F1}{\mbfsansfive }{\mathord}{mathematical sans-serif bold digit 5}% +\UnicodeMathSymbol{"1D7F2}{\mbfsanssix }{\mathord}{mathematical sans-serif bold digit 6}% +\UnicodeMathSymbol{"1D7F3}{\mbfsansseven }{\mathord}{mathematical sans-serif bold digit 7}% +\UnicodeMathSymbol{"1D7F4}{\mbfsanseight }{\mathord}{mathematical sans-serif bold digit 8}% +\UnicodeMathSymbol{"1D7F5}{\mbfsansnine }{\mathord}{mathematical sans-serif bold digit 9}% +\UnicodeMathSymbol{"1D7F6}{\mttzero }{\mathord}{mathematical monospace digit 0}% +\UnicodeMathSymbol{"1D7F7}{\mttone }{\mathord}{mathematical monospace digit 1}% +\UnicodeMathSymbol{"1D7F8}{\mtttwo }{\mathord}{mathematical monospace digit 2}% +\UnicodeMathSymbol{"1D7F9}{\mttthree }{\mathord}{mathematical monospace digit 3}% +\UnicodeMathSymbol{"1D7FA}{\mttfour }{\mathord}{mathematical monospace digit 4}% +\UnicodeMathSymbol{"1D7FB}{\mttfive }{\mathord}{mathematical monospace digit 5}% +\UnicodeMathSymbol{"1D7FC}{\mttsix }{\mathord}{mathematical monospace digit 6}% +\UnicodeMathSymbol{"1D7FD}{\mttseven }{\mathord}{mathematical monospace digit 7}% +\UnicodeMathSymbol{"1D7FE}{\mtteight }{\mathord}{mathematical monospace digit 8}% +\UnicodeMathSymbol{"1D7FF}{\mttnine }{\mathord}{mathematical monospace digit 9}% +\UnicodeMathSymbol{"1EEF0}{\arabicmaj }{\mathop}{arabic mathematical operator meem with hah with tatweel}% +\UnicodeMathSymbol{"1EEF1}{\arabichad }{\mathop}{arabic mathematical operator hah with dal}% + +% /© +% +% ------------------------------------------------ +% The UNICODE-MATH package <wspr.io/unicode-math> +% ------------------------------------------------ +% This package is free software and may be redistributed and/or modified under +% the conditions of the LaTeX Project Public License, version 1.3c or higher +% (your choice): <http://www.latex-project.org/lppl/>. +% ------------------------------------------------ +% Copyright 2006-2019 Will Robertson, LPPL "maintainer" +% Copyright 2010-2017 Philipp Stephani +% Copyright 2011-2017 Joseph Wright +% Copyright 2012-2015 Khaled Hosny +% ------------------------------------------------ +% +% ©/ + diff --git a/macros/luatex/optex/usebib.opm b/macros/luatex/optex/usebib.opm new file mode 100644 index 0000000000..4ff38c8736 --- /dev/null +++ b/macros/luatex/optex/usebib.opm @@ -0,0 +1,334 @@ +% opmac-bib +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Petr Olsak, version Feb. 2018 (beta) + +% This is module for OPmac macros, see http://petr.olsak.net/opmac.html +% The command: +% \usebib/<sorttype> (<style>) (bibfiles> +% for direct reading .bib files by OPmac macros (without bibTeX) is implemented here. +% The implementation depends on librarian.tex package by Paul Isambert. +% Use: +% \input opmac \input opmac-bib +% or simply: +% \input opmac-bib +% before using the command \usebib. +% For more information see the end of this file. + +\ifx\MakeReference\udefined \else \endinput \fi +\ifx\OPmacversion\undefined \input opmac \fi +\ifx\printbib\undefined + \errmessage{Please, upgrade OPmac to version Apr. 2014 or newer} + \endinput\fi + +% we needn't \errmessage when bad TeX engnine is detected during \input librarian: + +\def\tmp{} +\let\errmessageori=\errmessage +\def\errmessage#1{\def\tmp{error}} +\let\newwriteori=\newwrite % we need not to create \jobname.lbr: +\def\newwrite#1{\csname lb@restoreat\endcsname \endinput} +\catcode`\_=12 +\input librarian +\catcode`\_=11 +\let\errmessage=\errmessageori +\let\newwrite=\newwriteori +\ifx\tmp\empty\else + \def\usebib/#1 (#2) #3 {% + \opwarning{eTeX and (pdfTeX or XeTeX or LuaTeX) not detected}% + \immediate\write16{\space\space + But librarian package needs it. \noexpand\usebib ignored.}% + } + \endinput \fi + +% The \usebib command: + +\def\usebib/#1 (#2) #3 {% + \ifx\citelist\empty + \opwarning{No cited items. \noexpand\usebib ignored}% + \else + \bgroup \par + \ifx\bibpart\undefined \def\bibpart{none}\fi + \catcode`<=12 + \ifx\savedttchar\undefined\else \catcode\savedttchar=12 \fi + \def\opmacbibstyle{#2}% + \input bib-#2.opm + \bibtexhook + \let\citeI=\relax \xdef\citelist{\citelist\citelistB}% + \global\let\addcitelist=\writeXcite + \def\tmp##1[*]##2\relax{\def\tmp{##2}}\expandafter\tmp\citelist[*]\relax + \ifx\tmp\empty\else % there was \nocite[*] used. + \setbox0=\vbox{\def\citelist{}\adef@{\readbibentry}% + \input #3.bib + \expandafter}\expandafter\def\expandafter\citelist\expandafter{\citelist}% + \fi + \def\citeI[##1]{\csname lb@cite\endcsname{##1}{\bibpart}{}{}}\citelist + \BibFile{#3}% + \if s#1\def\warntwobytes{}\def\warnthreebytes{}% \scantokens is used during sorting + \SortList{\bibpart}\fi + \ReadList{\bibpart}% + \egroup + \fi +} +\def\readbibentry#1#{\readbibentryA} +\def\readbibentryA#1{\readbibentryB#1,,\relax!.} +\def\readbibentryB#1#2,#3\relax!.{\addto\citelist{\citeI[#1#2]}} + +% Corrections in librarian macros: + +\tmpnum=\catcode`\@ \catcode`\@=11 +\def\lb@checkmissingentries#1,{% we needn't \errmessage here, only \opmacwarning + \def\lb@temp{#1}% + \unless\ifx\lb@temp\lb@eoe + \lb@ifcs{#1}{fields}% + {}% + {\opwarning{\string\usebib: entry [#1] isn't found in .bib file(s)}}% + \expandafter\lb@checkmissingentries + \fi +} +\def\lb@readentry#1#2#3,{% space before key have to be ingnored + \def\lb@temp{#2#3}% we need case sensitive keys + \def\lb@next{\expandafter\lb@gotoat\lb@gobbletoeoe}% + \lb@ifcs\lb@temp{requested}% + {\let\lb@entrykey\lb@temp + \lb@ifcs\lb@entrykey{fields}{}% + {\lb@defcs\lb@entrykey{fields}{}% + \lowercase{\lb@addfield{entrytype}{#1}}% + \let\lb@next\lb@analyzeentry}}{}% + \lb@next +} +\let\lb@compareA=\lb@compare +\let\lb@preparesortA=\lb@preparesort +\def\lb@compare#1\lb@eoe#2\lb@eoe{% SpecialSort: + \ifx\lb@sorttype\lb@namestring + \ifx\sortfield\undefined \lb@compareA#1\lb@eoe#2\lb@eoe + \else + \expandafter\RetrieveFieldInFor\expandafter{\sortfield}\lb@entrykey\lb@temp + \ifx\lb@temp\empty \toks1={#1\lb@eoe}\else \toks1=\expandafter{\lb@temp\lb@eoe}\fi + \expandafter\RetrieveFieldInFor\expandafter{\sortfield}\lb@currententry\lb@temp + \ifx\lb@temp\empty \toks2={#2\lb@eoe}\else \toks2=\expandafter{\lb@temp\lb@eoe}\fi + \edef\lb@temp{\noexpand\lb@compareA\space\the\toks1 \space\the\toks2}\lb@temp + \fi + \else \lb@compareA#1\lb@eoe#2\lb@eoe \fi +} +\def\lb@preparesort#1#2\lb@eoe{% + \if#1-% + \def\lb@sorttype{#2}% + \else + \def\lb@sorttype{#1#2}% + \fi + \lb@preparesortA#1#2\lb@eoe +} +\def\SpecialSort#1{\def\sortfield{#1}} +\def\WriteImmediateInfo#1{} % the existence of .lbr file bocks new reading of .bib +\catcode`\@=\tmpnum + +% Main action per every entry: + +\def\MakeReference{\par \ifnum\bibnum>0 \bibskip \fi + \advance\bibnum by1 + \isdefined{bim:\the\bibnum}\iftrue + \edef\tmpb{\csname bim:\the\bibnum\endcsname}% + \bibmark=\expandafter{\tmpb}% + \else \bibmark={}\fi + \noindent \edef\tmpb{\EntryKey}% + \printbib \dest[cite:\the\bibnum]% + \bgroup + \RetrieveFieldIn{entrytype}\entrytype + \csname print:BEGIN\endcsname + \isdefined{print:\entrytype}\iftrue + \csname print:\entrytype\endcsname + \else + \ifx\entrytype\empty \else + \opwarning{Entrytype @\entrytype\space from [\EntryKey] undefined}% + \csname print:misc\endcsname + \fi\fi + \csname print:END\endcsname + \ifx\wref\wrefrelax\else \immediate\wref\Xbib{{\EntryKey}{\the\bibnum}{\the\bibmark}}\fi + \egroup \par +} + +% The \bprinta, \bprintb, \bprintc, \bprintv commands used in the style files: + +\def\bprinta {\bprintb*} +\def\bprintb #1[#2#3]{% + \def\bibfieldname{#2#3}% + \if!#2\relax + \def\bibfieldname{#3}% + \RetrieveFieldIn{#3}\bibfield + \ifx\bibfield\empty\else + \RetrieveFieldIn{#3number}\namecount + \def\bibfield{\csname Read#3\expandafter\endcsname\csname #3name\endcsname}% + \fi + \else + \RetrieveFieldIn{#2#3}\bibfield + \fi + \if^#1^% + \ifx\bibfield\empty \expandafter\expandafter\expandafter \doemptyfield + \else \expandafter\expandafter\expandafter \dofullfield \fi + \else \expandafter \bprintaA + \fi +} +\def\dofullfield#1#2{\def\dofield##1{#1}\expandafter\dofield\expandafter{\bibfield}} +\def\doemptyfield#1#2{\def\dofield##1{#2}\expandafter\dofield\expandafter{\bibfield}} +\let\Readauthor=\ReadAuthor \let\Readeditor=\ReadEditor +\def\bprintaA #1#2{\ifx\bibfield\empty #2\else\bprintaB #1**\eee\fi} +\def\bprintaB #1*#2*#3\eee{\if^#3^#1\else\expandafter\bprintaC\expandafter{\bibfield}{#1}{#2}\fi} +\def\bprintaC #1#2#3{#2#1#3} +\def\bprintc#1#2{\bprintcA#1#2**\relax} +\def\bprintcA#1#2*#3*#4\relax{\ifx#1\empty \else \if^#4^#2\else#2#1#3\fi\fi} +\def\bprintv [#1]#2#3{\def\tmpa{#2}\def\tmpb{#3}\bprintvA #1,,} +\def\bprintvA #1,{% + \if^#1^\tmpb\else + \RetrieveFieldIn{#1}\tmp + \ifx \tmp\empty + \else \tmpa \def\tmpb{}\def\tmpa{}% + \fi + \expandafter \bprintvA + \fi +} + +% Various macros + multilinguas: + +\def\bibwarning{\opwarning{Missing field \string"\bibfieldname\string" in [\EntryKey]}} + +\def\slet#1#2{\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} +\def\mtdef#1#2#3#4{\sdef{_mt:#1:en}{#2} \sdef{_mt:#1:cs}{#3} + \if$#4$\slet{_mt:#1:sk}{_mt:#1:cs} + \else \sdef{_mt:#1:sk}{#4} + \fi +} + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The following command is implemented here: + + \usebib/<sorttype> (<style>) <bibfiles> + +where <sorttype> is one letter 'c' (references ordered by citation order in +the text) or 's' (references ordered by key in the style file), +<style> is the part of the name `opmac-bib-<style>.tex' of the style file +and <bibfiles> are one or more .bib file names without suffix separated by +comma without space. Example: + + \usebib/s (simple) mybase,yourbase + +This command reads the <bibfiles> directly and creates the list of +bibliographics references (only those declared by by \cite[] or \nocite[] +in the text). The formatting of such references is defined in the style +file. The usage is mentioned in OPmac documentation too. + +The principle "first entry wins" is used. Suppose + + \usebib/s (simple) local,global + +If an entry with the same label is declared in local.bib and in +global.bib too then the first wins. So, you can set an exceptions in your +local.bib file for your document, for example. + + +Notes for style writers: +------------------------ + +The opmac-bib-<style>.tex file must define the commands: + +\authorname ... formatting of one name in the authors list. The macro can + use the following data: \NameCount (the number of the currently + processed author name in the list), 0\namecount (the total number of the + authors in the list), \Lastname, \Firstname, \Von, \Junior (the parts of + the name). See the documentation of the librarian package for more info. + +\editorname ... the same as \authorname, but for editors list. + +print:<entrytype> (defined by \sdef) for formatting the entry of <entrytype>. + The <entrytype> have to be lowercase. This command can use the command: + +\bprinta [<fieldname>] {<if defined>} {<if not defined>}. The part <if defined> + is executed if <fieldname> is declared in .bib file for the entry which is + currently processed. Else the part <if not defined> is processed. + The part <if defined> can include the * parameter which is replaced + by the value of the <fieldname>. The part <if not defined> can include + the \bibwarning command if the <fieldname> is mandatory. +\bprintb [<fieldname>] {<if defined>} {<if not defined>}. The same as + \bprinta, but the ##1 parameter is used instead *. Differences: ##1 + parameter can be used more than once and can be enclosed in nested + braces. The * parameter can be used at most once and cannot be enclosed + in braces. Warning: if the \bprintb commands are nested (\bprintb in + \bprintb), then you need to write ####1 parameter for internal \bprintb. + But if \bprinta commands are nested then the * parameter is not dubbled. +\pbprintc \macro {<if non-empty>}. The <if non-empty> part is executed if + \macro is non-empty. The * parameter can be used, it is replaced by + the \macro. +\bprintv [<field1>,<field2>,...] {<if defined>} {<if not defined>}. + The part <if defined> is executed if <field1> or <filed2> or ... + is defined, else the second part <if not defined> is executed. + There is one filed name or the list field names separated by commas. + The parts cannot include any parameter. + +There are two special fieldnames: !author and !editor. The processed list of +authors or editors (by repeatedly calling \authorname or \editorname) are +used here insted of raw data. + +You can define print:BEGIN and/or print:END which is executed at the begin or +end of each <entrytype>. The formatting does not solve the numbering and +paragraph indentation of the entry. This is processed by \printbib macro +used in OPmac (and may be redefined by the author or document designer). + +You can declare \bimark={something} in the print:END macro. This bibmark is +saved to the .ref file (created by OPmac) and used in the next TeX run as \cite +marks when \nonumcitations is set. + +The whole style file is read in the group during \usebib command is executed +before typesetting the reference list. Each definition or setting is local +here. + +If you are using non-standard fieldnames in .bib database and bib. style, +you has to declare them by \CreateField {<fieldname>}. + +You can declare \SortingOrder in the manner documented by librarian package. + +If your style adds some words or abbreviations you can make them +multilingual by saying \mtext{<label>} instead such word and +\mtdef{<label>} {<English>} {<Czech>} {<Slovak>} declaration. +The right part is printed by current value of the \language regiter. +You can add more languages by re-defining the \mtdef command +and by \sdef{lan:<language number>}{<language mark>}. See the opmac.tex +for inspiration. + +If you are using \nonumcitations, then the \bibmark toks register have to be +prepared in the style file (in print:BEGIN, print:END, in \authorname etc.) +This value will be used in the \cite[] places in the document. + +The example of the style file is in opmac-bib-simple.tex. + +User or author of the bib. style can create the hidden field which has a +precedence while sorting names. Example: + + \CreateField {sortedby} + \SpecialSort {sortedby} + +Suppose that the .bib file includes: + + ... + author = "Jan Chadima", + sortedby = "Hzzadima Jan", + ... + +Now, this author is sorted between H and I, because the Ch digraph in this +name has to be sorted by this rule. + +If you need (for example) to place the autocitations before other citations, +then you can mark your entries in .bib file by sortedby = "@", because this +character is sorted before A. + + +History: +-------- + +Apr. 2014: released +Jan. 2016: "first entry wins" implemented +Apr. 2016: \readentry -> \readbibentry, \usebib->\MakeReference +Feb. 2018: \input librarian does not create \jobname.lbr + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end of the opmac-bib.tex diff --git a/macros/luatex/optex/verbatim.opm b/macros/luatex/optex/verbatim.opm new file mode 100644 index 0000000000..acc7922a8d --- /dev/null +++ b/macros/luatex/optex/verbatim.opm @@ -0,0 +1,189 @@ +%% This is part of OpTeX project, see http://petr.olsak.net/optex + +\_codedecl \begtt {Verbatim <2020-02-14>} + +\_newdimen\_ttindent \_ttindent=\_parindent + % indentation in \begtt...\endtt and \verbinput +\_def\_ttskip{\medskip} % space above and below \begtt, \verbinput +\_mathchardef\_ttpenalty=100 % penalty between lines in \begtt, \verbinput + +\_def\_code#1{\_unexpanded\_ea{\_csname _code \_endcsname{#1}}} +\_protected\_sdef{_code }#1{{\_escapechar=-1 \_ea}% + \_ea\_printinverbatim\_ea{\_detokenize{#1}}} +\_def\_printinverbatim#1{\_leavevmode\_hbox{\_tt \_the\_intthook\_relax #1}} + +\_public \code ; + +\_newcount\_ttline \_ttline=-1 +\_newcount\_viline +\_newread\_vifile + +\_newcatcodetable \_verbatimcatcodes +\_def\_setverb{\_begingroup + \_def\do##1{\_catcode`##1=12 } + \_dospecials + \_savecatcodetable\_verbatimcatcodes % all characters are normal + \_endgroup +} +\_setverb +\_def\_setverb{\_catcodetable\_verbatimcatcodes }% + +% \begtt ... \endtt + +\_eoldef \_begtt #1{% + \_par \_vskip\_parskip \_ttskip \_bgroup \_wipeepar + \_setverb \_adef{ }{\ }% + \_parindent=\_ttindent \_parskip=0pt + \_the\_tthook #1% + \_ifnum\_ttline<0 \_else + \_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font + \_toksapp\_everypar{\_global\_advance\_ttline by1 \_printttline}\_fi + \_def\par##1{\_endgraf\_ifx##1\_egroup\_else\_penalty\_ttpenalty\_leavevmode\_fi ##1}% + \_obeylines \_startverb} + +\_catcode`\|=0 \_catcode`\\=12 + |_def|_startverb#1\endtt{|_tt|_the|_ptthook#1|_endtt} +|_normalcatcodes + +\def\_endtt{\_egroup\_par\_ttskip\_testparA} +\_def\_testparA{\_ea\_testparB\_romannumeral-`\.} +\_def\_testparB{\_futurelet\_tmpa\_testparC} +\_def\_testparC{\_ifx\_tmpa\_par\_else\afternoindent\_fi} + +\_def\_printttline{\_llap{\_sevenrm\_the\_ttline\_kern.9em}} + +\_newtoks\_tthook +\_newtoks\_ptthook +\_newtoks\_intthook + +\_def\_activettchar#1{% + \_ifx\_savedttchar\_undefined\_else \_catcode\_savedttchar=\_savedttcharc \_fi + \_chardef\_savedttchar=`#1% + \_chardef\_savedttcharc=\_catcode`#1% + \_adef{#1}{{\_setverb\_adef{ }{\ }\_catcode`#1=13 \_ea}\_readverb}% + \_bgroup\_lccode`\~=`#1\_lowercase{\_egroup\_def\_readverb ##1~}{\_printinverbatim{##1}}% + \_catcode`#1=13 +} + +\_newcount\_viline +\_newread\_vifile + +\_def\_verbinput (#1) #2 {\_par \_def\_tmpa{#2}% + \_ifx\_vifilename\_tmpa \_else + \_openin\_vifile=#2 + \_global\_viline=0 \_global\_let\_vifilename=\_tmpa + \_ifeof\_vifile + \_opwarning{\_noexpand\verbinput - file "#2" is unable to reading} + \_ea\_ea\_ea\_skiptorelax + \_fi + \_fi + \_viscanparameter #1+\_relax +} +\_def\_skiptorelax#1\_relax{} + +\_def \_viscanparameter #1+#2\_relax{% + \_if$#2$\_viscanminus(#1)\_else \_viscanplus(#1+#2)\_fi +} +\_def\_viscanplus(#1+#2+){% + \_if$#1$\_tmpnum=\_viline + \_else \_ifnum#1<0 \_tmpnum=\_viline \_advance\_tmpnum by-#1 + \_else \_tmpnum=#1 + \_advance\_tmpnum by-1 + \_ifnum\_tmpnum<0 \_tmpnum=0 \_fi % (0+13) = (1+13) + \_fi \_fi + \_edef\_vinolines{\_the\_tmpnum}% + \_if$#2$\_def\_vidolines{0}\_else\_edef\_vidolines{#2}\_fi + \_doverbinput +} +\_def\_viscanminus(#1-#2){% + \_if$#1$\_tmpnum=0 + \_else \_tmpnum=#1 \_advance\_tmpnum by-1 \_fi + \_ifnum\_tmpnum<0 \_tmpnum=0 \_fi % (0-13) = (1-13) + \_edef\_vinolines{\_the\_tmpnum}% + \_if$#2$\_tmpnum=0 + \_else \_tmpnum=#2 \_advance\_tmpnum by-\_vinolines \_fi + \_edef\_vidolines{\_the\_tmpnum}% + \_doverbinput +} +\_def\_doverbinput{% + \_tmpnum=\_vinolines + \_advance\_tmpnum by-\_viline + \_ifnum\_tmpnum<0 + \_openin\_vifile=\_vifilename\_space + \_global\_viline=0 + \_else + \_edef\_vinolines{\_the\_tmpnum}% + \_fi + \_vskip\_parskip \_ttskip \_bgroup \_wipeepar + \_setverb \_adef{ }{\ }% + \_ifx\_savedttchar\_undefined \_else \_catcode\_savedttchar=12 \_fi + \_parindent=\_ttindent \_parskip=0pt + \_the\_tthook\_relax + \_ifnum\_ttline<-1 \_else + \_tenrm \_thefontscale[700]\_ea\_let\_ea\_sevenrm\_the\_font + \_everypar\_ea{\_the\_everypar \_glob\_advance\_ttline by1 \_printttline}\_fi + \_def\par##1{\_endgraf\_ifx##1\_egroup\_else\_penalty\_ttpenalty\_leavevmode\_fi ##1}% + \_obeylines \_tmpnum=0 \_lccode`\~=`\^^M \_lowercase{\_def\_tmpb{~}}% + \_loop \_ifeof\_vifile \_tmpnum=\_vinolines\_space \_fi + \_ifnum\_tmpnum<\_vinolines\_space + \_vireadline \_advance\_tmpnum by1 \_repeat %% skip line + \_ifnum\_ttline=-1 \_ttline=\_viline \_let\_glob=\_relax \_else\_let\_glob=\_global \_fi + \_tmpnum=0 \_ifnum\_vidolines=0 \_tmpnum=-1 \_fi + \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_fi + \_loop \_ifnum\_tmpnum<\_vidolines\_space + \_vireadline + \_ifeof\_vifile \_tmpnum=\_vidolines\_space \_else \_viprintline \_fi %% print line + \_ifnum\_vidolines=0 \_else\_advance\_tmpnum by1 \_fi + \_repeat + \_tt\_ea\_the\_ea\_ptthook\_tmpb\_egroup\_par\_ttskip\_testparA +} +\_def\_vireadline{\_read\_vifile to \_tmp \_global\_advance\_viline by1 } +\_def\_viprintline{\_ea\_addto\_ea\_tmpb\_ea{\_tmp}} + +\_public + \begtt \activettchar \tthook \ptthook \intthook \verbinput ; + + + +\_endcode %--------------------------------------- + +`\code{text}` is a macro which writes verbatim-like inline text and it is +robust to use it in parameters of macros or section names etc. User have to +escape the following characters: percent, hash mark, escape, space (if there +are more than one consecutive spaces) and `{`, `}` (if these braces are +unbalanced in the `\code` parameter). For example + +\begtt + \code{\\text, \%\#} ... \text, %# + \code{@{..}*&^$ $} ... prints the same without escaping, but you can + escape these characters too, if you want. + \code{a \ b} ... two spaces between a b, the second one must be escaped + \code{xy\{z} ... unbalanced brace must be escaped +\endtt + +If you set a character as `\activettchar` then it can be used as boundary +character of inline code. The text betweent these boundary characters are +printed without any change. For example +\code{\`}`\print % whatever #&`\code{\`} does `\print % whatever #&` +if `\activettchar`\code{\`} was declared. + +But this in/line verbatim text cannot be used inside parameters of +macros, for example inside section names. Use `\code` in such situation. + + +\secc Implementation notes + +If the code is used in non-detokenized `\write` parameter, we must to +`detokenize` its parameter and write `\code` as prefix again. The second +(internal) `\code` is a macro with the name followed by a space. So + +\begtt + \code{\\aha\%} ... writes: \code {\\aha\%} into workong file. +\endtt + +This can be read again without any chnge of meaning of the parameter (the +second space after `\code` sequence will be ingnored). + +If the `\code` is used in normal horizontal mode, then escape characters are +ignored using `\ecsapechar=-1 \detokenize`. + diff --git a/macros/xetex/latex/xecjk/xeCJK.dtx b/macros/xetex/latex/xecjk/xeCJK.dtx index 1d528a3997..360459e541 100644 --- a/macros/xetex/latex/xecjk/xeCJK.dtx +++ b/macros/xetex/latex/xecjk/xeCJK.dtx @@ -194,7 +194,7 @@ Copyright and Licence %<*package|config|fntef|listings|xunicode|xunextra> %<!(config|xunextra)>\NeedsTeXFormat{LaTeX2e} %<!(config|xunextra)>\RequirePackage{expl3} -%<+!driver>\GetIdInfo$Id: xeCJK.dtx 2628481 2020-02-14 20:30:07 +0800 Qing Lee <sobenlee@gmail.com> $ +%<+!driver>\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee <sobenlee@gmail.com> $ %<package> {Typesetting CJK scripts with XeLaTeX} %<config> {Configuration file for xeCJK package} %<fntef> {xeCJK font effect} @@ -207,7 +207,7 @@ Copyright and Licence %<listings>\ProvidesExplPackage{xeCJK-listings} %<xunicode>\ProvidesExplPackage{xunicode-addon} %<xunextra>\ProvidesExplFile{xunicode-extra.def} -%<!driver> {\ExplFileDate}{3.8.1}{\ExplFileDescription} +%<!driver> {\ExplFileDate}{3.8.2}{\ExplFileDescription} %</package|config|fntef|listings|xunicode|xunextra> %<*driver> \documentclass{ctxdoc} @@ -285,7 +285,7 @@ Copyright and Licence % \changes{v3.8.0}{2020/02/09}{兼容 \LaTeXe\ 2020/02/02 对 \pkg{NFSS} 的修改。} % \changes{v3.8.0}{2020/02/09}{清理过时的兼容性补丁代码。} % -% \CheckSum{10752} +% \CheckSum{10763} % \GetFileId{xeCJK.sty} % % \title{\bfseries\pkg{xeCJK} 宏包} @@ -6674,6 +6674,8 @@ Copyright and Licence % \end{macrocode} % \end{macro} % +% \changes{v3.8.2}{2020/02/17}{修复分区字体错误。} +% % \begin{macro}[int]{\xeCJK_select_font:n,\xeCJK_block_family:nn} % 若当前 CJK 字体族没有定义子分区 |#1| 的字体,则使用 \tn{CJKfamilydefault} 的对应 % 分区字体;若 \tn{CJKfamilydefault} 也没有定义该分区字体,则使用当前 CJK 字体族的 @@ -6688,13 +6690,16 @@ Copyright and Licence } \cs_new_protected_nopar:Npn \@@_select_font:Nnn #1#2#3 { - \cs_if_exist_use:NF #1 - { - \xeCJK_block_family:nn {#2} {#3} - \@@_font_initial:Nn #1 { #2/#3 } - } + \cs_if_exist:NF #1 + { \@@_block_font_initial:Nnn #1 {#2} {#3} } + #1 } \cs_generate_variant:Nn \@@_select_font:Nnn { c } +\cs_new_protected_nopar:Npn \@@_block_font_initial:Nnn #1#2#3 + { + \xeCJK_block_family:nn {#2} {#3} + \@@_font_initial:Nn #1 { #2/#3 } + } \cs_new_protected_nopar:Npn \xeCJK_block_family:nn #1#2 { \xeCJK_family_if_exist:xF { #1/#2 } @@ -6976,20 +6981,20 @@ Copyright and Licence { \@@_pass_args:nnnn { \xeCJK_set_family:nnn { \CJKrmdefault } } {#1} {#2} - { \normalfont } + { \@@_preamble_family:n { \CJKrmdefault } } } \cs_new_eq:NN \setCJKromanfont \setCJKmainfont \NewDocumentCommand \setCJKsansfont { o m } { \@@_pass_args:nnnn { \xeCJK_set_family:nnn { \CJKsfdefault } } {#1} {#2} - { \normalfont } + { \@@_preamble_family:n { \CJKsfdefault } } } \NewDocumentCommand \setCJKmonofont { o m } { \@@_pass_args:nnnn { \xeCJK_set_family:nnn { \CJKttdefault } } {#1} {#2} - { \normalfont } + { \@@_preamble_family:n { \CJKttdefault } } } % \end{macrocode} % \end{macro} @@ -7002,6 +7007,16 @@ Copyright and Licence \@onlypreamble \setCJKromanfont % \end{macrocode} % +% \changes{v3.8.2}{2020/02/17}{避免导言区字体警告。} +% +% \begin{macro}{\@@_preamble_family:n} +% 用在 \tn{setCJKmainfont} 等主要命令之后,确保导言区有 CJK 字体可用。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_preamble_family:n #1 + { \str_if_eq:eeT {#1} { \CJKfamilydefault } { \normalfont } } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\setCJKfamilyfont, \newCJKfontfamily, \CJKfontspec} % \changes{v3.4.3}{2016/11/18}{允许字体属性可选项在后的新语法。} % 分别用于预声明 CJK 字体族和声明并马上调用 CJK 字体族。 diff --git a/macros/xetex/latex/xecjk/xeCJK.pdf b/macros/xetex/latex/xecjk/xeCJK.pdf Binary files differindex 5b2afe4299..ae7269bfd0 100644 --- a/macros/xetex/latex/xecjk/xeCJK.pdf +++ b/macros/xetex/latex/xecjk/xeCJK.pdf diff --git a/macros/xetex/latex/xecjk/xunicode-symbols.pdf b/macros/xetex/latex/xecjk/xunicode-symbols.pdf Binary files differindex e4bb1ff146..cc30fd0c5a 100644 --- a/macros/xetex/latex/xecjk/xunicode-symbols.pdf +++ b/macros/xetex/latex/xecjk/xunicode-symbols.pdf |