diff options
Diffstat (limited to 'macros/latex/contrib')
24 files changed, 771 insertions, 181 deletions
diff --git a/macros/latex/contrib/asmeconf/README.md b/macros/latex/contrib/asmeconf/README.md index 272f025bf2..66bbf88e30 100644 --- a/macros/latex/contrib/asmeconf/README.md +++ b/macros/latex/contrib/asmeconf/README.md @@ -1,11 +1,11 @@ #asmeconf: A latex template for ASME conference papers# - Version 1.27 dated 2021/12/26. + Version 1.28 dated 2022/02/14. ####Overview#### This class provides a LaTeX template for ASME Conference papers formatted according to - the requirements on ASME's web pages (as posted in 2021): + the requirements on ASME's web pages (as posted in 2022): [www.asme.org/publications-submissions/proceedings/formatting-the-paper](https://www.asme.org/publications-submissions/proceedings/formatting-the-paper) @@ -61,6 +61,7 @@ -- fontspec for abstracts in 25 languages in one paper -- grid-style layout of author names/addresses -- footers for government employees + -- asmewide.sty and example of use, for two-column equations This work is not a publication of ASME itself. @@ -78,6 +79,9 @@ --- ####Change log#### + v1.28 (2022/02/14) + - Introduce asmewide.sty, an experimental package for setting page-width equations in a two column format. A document with examples of use is included. + - Increase scale of sans serif font under fontspec from 0.9 to 0.94, to better match newtxtext under pdflatex v1.27 (2021/12/26): - fix bug in captions that appeared in Jan. 2021 (code not uppercasing caption text) @@ -156,7 +160,7 @@ ####License#### - Copyright (c) 2021 John H. Lienhard + Copyright (c) 2022 John H. Lienhard Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, diff --git a/macros/latex/contrib/asmeconf/asmeconf-sample.bib b/macros/latex/contrib/asmeconf/asmeconf-sample.bib index 01163ef34f..4e81f236e3 100644 --- a/macros/latex/contrib/asmeconf/asmeconf-sample.bib +++ b/macros/latex/contrib/asmeconf/asmeconf-sample.bib @@ -1,6 +1,6 @@ %% Sample bibliography file for asmeconf.bst and asmeconf.cls %% -%% Revised 18 January 2021 +%% Revised 10 January 2022 %% Copyright John H. Lienhard, MIT %% Offered under the MIT license: https://ctan.org/license/mit @@ -280,6 +280,16 @@ urldate = {July 5, 2019}, } +@online{lienhard2022, + author = {Lienhard, V, John H.}, + title = {Wide Equations in {\texttt{asmeconf.cls}}}, + version = {1.0}, + organization = {Comprehensive \TeX\ Archive Network}, + year = {2022}, + url = {https://www.ctan.org/pkg/asmeconf}, + urldate = {January 10, 2022}, +} + @online{sharpe1, author = {Michael Sharpe}, title = {New {TX} Font Package}, diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.pdf b/macros/latex/contrib/asmeconf/asmeconf-template.pdf Binary files differindex 5cbfbf7019..81365c217c 100644 --- a/macros/latex/contrib/asmeconf/asmeconf-template.pdf +++ b/macros/latex/contrib/asmeconf/asmeconf-template.pdf diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.tex b/macros/latex/contrib/asmeconf/asmeconf-template.tex index 93e2621929..1e3c938e79 100644 --- a/macros/latex/contrib/asmeconf/asmeconf-template.tex +++ b/macros/latex/contrib/asmeconf/asmeconf-template.tex @@ -4,11 +4,11 @@ %% This file is asmeconf-template.tex, a LaTeX template to format ASME Conference papers according to %% the requirements on ASME's conference web pages, and including hypertext support for the pdf. %% -%% This file is version 1.27 dated 2021/12/26 +%% This file is version 1.28 dated 2022/02/14 %% -%% As of version 1.11, this template follows ASME's newer conference guidelines first posted July 2019. -%% The new guidelines have changed the requested author block formatting to be inline. -%% (This LaTeX template continues to support the traditional grid format as a package option.) +%% As of version 1.11, this template defaults to ASME's newer conference guidelines first posted July 2019. +%% Those guidelines changed the requested author block formatting to be inline. +%% This LaTeX template continues to support the traditional grid format as a package option, [grid]. %% Nomenclature now follows the abstract. Abstract text is set in italics. %% %% Author: John H. Lienhard V @@ -50,8 +50,8 @@ %% * replace the aforementioned class options. (An up-to-date LaTeX installation is required to use this.) %% %% * Many options for calligraphic, script, and fraktur fonts from the mathalfa package; the -%% * example shown here is: [mathalfa=cal=euler] to use Euler font for \mathcal. -%% * Some other options for cal are: dutchcal, zapfc, cm (default), boondox,... +%% * example shown here is: [mathalfa=cal=boondoxo] to use a Boondox font for \mathcal. +%% * Some other options for cal are: dutchcal, zapfc, cm (default), euler,... %% * frak (fraktur), bb (blackboard bold), scr (script) may also be chosen this way. %% * For details, refer to mathalfa documentation (at CTAN: http://ctan.org). %% @@ -78,7 +78,7 @@ %% %% LICENSE: %% -%% Copyright (c) 2021 John H. Lienhard +%% Copyright (c) 2022 John H. Lienhard %% %% Offered under the MIT license: https://ctan.org/license/mit %% @@ -89,7 +89,7 @@ %% Remove the [colorlinks] option before *final* submission to ASME, to get black text for printing, %% but keep that option for other uses. -\documentclass[balance,upint,subscriptcorrection,varvw,mathalfa=cal=euler,spanish,french,greek,russian,vietnamese,pdf-a,colorlinks]{asmeconf} +\documentclass[balance,upint,subscriptcorrection,varvw,mathalfa=cal=boondoxo,spanish,french,greek,russian,vietnamese,pdf-a,fontspec,colorlinks]{asmeconf} %%%%% pdf metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -111,11 +111,11 @@ % You can comment these out if for some reason you don't want a header. % Use title case (first letters capitalized), not all capitals -\ConfName{Proceedings of the ASME 2021\linebreak International Mechanical Engineering Congress and Exposition} -\ConfAcronym{IMECE21} -\ConfDate{November 1-4, 2021} -\ConfCity{Virtual Conference, Online} -\PaperNo{IMECE2021-XXXX} +\ConfName{Proceedings of the ASME 2022\linebreak International Mechanical Engineering Congress and Exposition} +\ConfAcronym{IMECE2022} +\ConfDate{November XX-YY, 2022} % update once this is known (expected March 2022) +\ConfCity{Location, ST} % update once this is known (expected March 2022) +\PaperNo{IMECE2022-XXXX} % Units of measure (e.g., cm) and other specialty lowercase terms in the title should be % enclosed in \NoCaseChange{...} to maintain lower case type @@ -172,7 +172,7 @@ %% Abstract should be 200 words or less \begin{abstract} -This paper is an example of and a {\upshape\LaTeX} template for typesetting ASME conference papers using the {\upshape\texttt{asmeconf}} class. This {\upshape\LaTeX} template follows ASME guidelines for margins, fonts, headings, captions, and reference formats as of 2021. The class is intended to be used with the {\upshape\texttt{asmeconf.bst} \hologo{BibTeX}} style for reference formatting, which is part of this distribution. The template produces pdfs that contain hyperlinks, bookmarks, and metadata; and references can include the DOI and URL fields. Links may be colored, for online use, or black, for publication. The class enables inline author names, following ASME's current style, but can also produce the traditional grid style. Options include line numbering, final column balancing, various math options, government copyright, and archivability (PDF/A). In addition, section headers may contain mathematics, references, citations, and footnotes. The class is compatible with {\upshape\hologo{pdfLaTeX}} or {\upshape\hologo{LuaLaTeX}}. +This paper is an example of and a {\upshape\LaTeX} template for typesetting ASME conference papers using the {\upshape\texttt{asmeconf}} class. This {\upshape\LaTeX} template follows ASME guidelines for margins, fonts, headings, captions, and reference formats as of 2022. The class is intended to be used with the {\upshape\texttt{asmeconf.bst} \hologo{BibTeX}} style for reference formatting, which is part of this distribution. The template produces pdfs that contain hyperlinks, bookmarks, and metadata; and references can include the DOI and URL fields. Links may be colored, for online use, or black, for publication. The class enables inline author names, following ASME's current style, but can also produce the traditional grid style. Options include line numbering, final column balancing, various math options, government copyright, and archivability (PDF/A). In addition, section headers may contain mathematics, references, citations, and footnotes. The class is compatible with {\upshape\hologo{pdfLaTeX}} or {\upshape\hologo{LuaLaTeX}}. \end{abstract} %%%%%%%%% NOMENCLATURE (OPTIONAL) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -207,7 +207,7 @@ This paper is an example of and a {\upshape\LaTeX} template for typesetting ASM The \texttt{\hrefurl{https://ctan.org/pkg/asmeconf}{asmeconf}} class typesets papers with margins, fonts, headings, captions, and reference formats that follow the specifications for conference papers of the American Society of Mechanical Engineers (ASME). In contrast to older ASME \LaTeX\ templates, \texttt{asmeconf} will set internal and external hyperlinks, and the pdf file will contain bookmarks and metadata. Many other useful features have been incorporated. This class is not a publication of ASME, but the author has published in ASME conferences since 1983. -The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the blocks containing the author[s], title, and abstract. This class loads a number of other packages, all of which are contained in up-to-date versions of \hrefurl{https://www.tug.org/texlive/}{\TeX\ Live}, \hrefurl{http://www.tug.org/mactex/}{Mac\TeX}, and similar platforms. If you find that you are missing one of these packages, you may obtain it at no cost from CTAN (\hrefurl{https://ctan.org}{ctan.org}). +The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the blocks containing the author[s], title, and abstract. This class loads a number of other packages, all of which are contained in up-to-date versions of \hrefurl{https://www.tug.org/texlive/}{\TeX\ Live}, \hrefurl{http://www.tug.org/mactex/}{Mac\TeX}, and similar platforms. If you get an error message about a missing package, you may download it at no cost from CTAN (\hrefurl{https://ctan.org}{ctan.org}). \subsection{Essential Initial Commands} @@ -317,16 +317,6 @@ Our competitor's test & 72.321 & 141.384 \\ %%%%%%%%%%%%%%%% end table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Tables and Figures} - -Table \ref{tab:1} is an example of a simple table. Table captions should be placed above tables. -The class loads the \texttt{booktabs} package (used for horizontal rules in Tables \ref{tab:1} and \ref{tab:2}), and the \texttt{array} and \texttt{dcolumn} packages which provide extended capabilities for columns in the \texttt{tabular} environment (see Table \ref{tab:2}). Table \ref{tab:3} is an example of a table that spans two columns. Two column tables (and figures) will always float to the top of a later page. - -Figure captions go below figures. Figure~\ref{fig:2} is an example of a figure that spans two columns and includes subfigures. The text in figures (and tables) should be no smaller than 6~point type. Images in figures are handled by the standard \texttt{graphicx} package. - -Landscape figures and tables may be produced at full-page size by putting \verb|\usepackage[figuresright]{rotating}| in your \texttt{.tex} file's preamble and using the \texttt{sidewaystable*} and \texttt{sidewaysfigure*} environments~\cite{fairbairns}. - %%%%%%%%%%%%%%% begin two column table %%%%%%%%%%%%%%%%%% \begin{table*} \caption{A table spanning two columns\label{tab:3}}% @@ -358,6 +348,15 @@ Landscape figures and tables may be produced at full-page size by putting \verb| %%%%%%%%%%%%%%%%% end two column table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables and Figures} + +Table \ref{tab:1} is an example of a simple table. Table captions should be placed above tables. +The class loads the \texttt{booktabs} package (used for horizontal rules in Tables \ref{tab:1} and \ref{tab:2}), and the \texttt{array} and \texttt{dcolumn} packages which provide extended capabilities for columns in the \texttt{tabular} environment (see Table \ref{tab:2}). Table \ref{tab:3} is an example of a table that spans two columns. Two column tables (and figures) will always float to the top of a later page. + +Figure captions go below figures. Figure~\ref{fig:2} is an example of a figure that spans two columns and includes subfigures. The text in figures (and tables) should be no smaller than 6~point type. Images in figures are handled by the standard \texttt{graphicx} package. + +Landscape figures and tables may be produced at full-page size by putting \verb|\usepackage[figuresright]{rotating}| in your \texttt{.tex} file's preamble and using the \texttt{sidewaystable*} and \texttt{sidewaysfigure*} environments~\cite{fairbairns}. @@ -365,7 +364,7 @@ Landscape figures and tables may be produced at full-page size by putting \verb| \section{Reference Formatting with \NoCaseChange{\texttt{asmeconf.bst}}\footnote{If you have text in a section heading or caption that you do not want to be capitalized, such as an SI unit, enclose it in a \texttt{\textbackslash NoCaseChange} command.}}\label{sec:references} -The {\upshape\texttt{asmeconf.bst}} \hologo{BibTeX} style follows the reference styles shown on ASME's conference web site in 2021.\footnote{\texttt{asmeconf.bst} is intended as a replacement for the old \texttt{asmems4.bst}, which does not follow ASME's current reference formats or support DOI and URL.} +The {\upshape\texttt{asmeconf.bst}} \hologo{BibTeX} style follows the reference styles shown on ASME's conference web site in 2022.\footnote{\texttt{asmeconf.bst} is intended as a replacement for the old \texttt{asmems4.bst}, which does not follow ASME's current reference formats or support DOI and URL.} Examples for these and many other cases are given in the \texttt{asmeconf-sample.bib} file, which is part of this distribution. Citations and references are managed by the standard \texttt{natbib} package. Nevertheless, a few comments are necessary. %% sub-subsections should *not* be numbered according to ASME's style @@ -378,7 +377,7 @@ Basic support for \texttt{eprint} numbers is also included, generating a url at \subsubsection*{Date Accessed} The \verb|urldate={..}| field may be used to provide the date on which a given url was accessed. By default, the text printed will be \texttt{Accessed `date',}. The word ``Accessed'' may be changed using the \verb|urltype={..}| field. -\subsubsection*{Conference Location and Date} For \verb|@inproceeedings{..| and \verb|@proceeedings{..|, you may include \verb|venue={..}| and \verb|eventdate={..}| to specify the city and date of a conference. +\subsubsection*{Conference Location and Date} To specify the city and date of a conference, you can use \verb|venue={..}| and \verb|eventdate={..}| with the entries \verb|@inproceeedings{..| and \verb|@proceeedings{..|. \subsubsection*{Capitalization of Titles} ASME's bibliography style requires that document titles be in title case. The first letters of principal words are capitalized. Do this in the \texttt{.bib} file. @@ -429,7 +428,7 @@ In most cases, the need for a wide equation can be eliminated by using one of th \end{multline} An example using \texttt{align} appears in Appendix~\ref{appendix:a}. -An alternative solution may be to set large equations into two-column-wide tables or figures. While a package exists for setting equations that span two columns (\texttt{widetext.sty}), that code is erratic in relation to floats and page breaks. +An alternative solution may be to set large equations into two-column-wide tables or figures. An experimental package for setting equations that span two columns, \texttt{asmewide.sty}, can be loaded as well, but that code may require hand-fitting around figures, tables, and page breaks. See the examples in~\cite{lienhard2022}. Math italics are used for Roman and Greek letters by default. If you want an upright letter in math, you can use the relevant math alphabet, e.g., \verb|\mathrm, \mathbf, \mathsf|: \begin{equation}\label{eqn:dw} @@ -447,9 +446,9 @@ The option \verb|subscriptcorrection| improves the spacing of math subscripts. T In addition, many options for calligraphic, fraktur, and script fonts are available as options to the \texttt{mathalfa} package, which is also loaded. These may be invoked, for example, as \begin{center} -\verb|\documentclass[mathalfa=cal=euler]{asmeconf}| +\verb|\documentclass[mathalfa=cal=boondoxo]{asmeconf}| \end{center} -which selects the Euler font for \verb|\mathcal|, as in $A \in \mathcal{P}(A)$. To find all the font options, refer to the \texttt{mathalfa} package documentation \cite{sharpe2}. +which selects a Boondox font for \verb|\mathcal|, as in $A \in \mathcal{P}(A)$. To find all the font options, refer to the \texttt{mathalfa} package documentation \cite{sharpe2}. The \texttt{asmeconf} class is designed to be used with \texttt{newtxmath} and does not support the \texttt{unicode-math} package. @@ -552,7 +551,7 @@ shown in \selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{e The input encoding can be utf-8, as for these glyphs: %% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue. -\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue. Under LuaLaTeX, be sure to load the [fontspec] option}% +\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue. Under LuaLaTeX, you can load the [fontspec] option if you have the relevant systems fonts installed}% àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż. Fonts similar to Times/Helvetica are automatically used when the Greek, Vietnamese, or selected cyrillic-alphabet languages are called as options under {\upshape\hologo{pdfLaTeX}}. Using {\upshape\hologo{LuaLaTeX}} with the \texttt{[fontspec]} option, many additional scripts are available; see the supplemental notes for such usage~\cite{lienhard2021}. Possibilities include Arabic, Bengali, Chinese, Devanagari (e.g., for Hindi), Hangul (for Korean), Kana (for Japanese), and Tamil. \textit{The {\upshape\texttt{[fontspec]}} option requires a \LaTeX\ installation dated October 2020 or later.} diff --git a/macros/latex/contrib/asmeconf/asmeconf.bst b/macros/latex/contrib/asmeconf/asmeconf.bst index aec731ec0a..0e378d305d 100644 --- a/macros/latex/contrib/asmeconf/asmeconf.bst +++ b/macros/latex/contrib/asmeconf/asmeconf.bst @@ -1,10 +1,10 @@ %%%%% %%%%% *** This .bst produces the reference format for ASME conference papers. *** -%%%%% *** Follows the examples given on ASME's conference web pages in early 2021. *** +%%%%% *** Follows the examples given on ASME's conference web pages in early 2022. *** %%%%% *** https://www.asme.org/publications-submissions/proceedings/author-guidelines/elements-of-a-paper/references *** %%%%% *** The examples given by ASME do *not* cover all possibilities *** %%%%% -%%%%% This file is version 1.13 dated 2021/12/02 +%%%%% This file is version 1.13 dated 2021/12/02 (and checked 2022/02/14) %%%%% %%%%% Author: John H. Lienhard V %%%%% Department of Mechanical Engineering diff --git a/macros/latex/contrib/asmeconf/asmeconf.cls b/macros/latex/contrib/asmeconf/asmeconf.cls index 7ed5a6ca17..8a2a2c952f 100644 --- a/macros/latex/contrib/asmeconf/asmeconf.cls +++ b/macros/latex/contrib/asmeconf/asmeconf.cls @@ -2,11 +2,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% This file provides the asmeconf LaTeX class for formatting conference papers according to -%% ASME conference requirements as represented on ASME's conference web pages in 2021. +%% ASME conference requirements as represented on ASME's conference web pages in 2022. %% %% This file's version and date: - \def\versionno{1.27} - \def\versiondate{2021/12/26\space} + \def\versionno{1.28} + \def\versiondate{2022/02/14\space} %% %% Author: John H. Lienhard, V %% Department of Mechanical Engineering @@ -28,10 +28,11 @@ %% 11. Support inclusion of passages in languages other than English %% %% This class is compatible with either pdfLaTeX or LuaLaTeX. FontSpec may be loaded as an option (to -%% access language-specific fonts), but the class does not support unicode-math. All packages required -%% by the class are in TeXLive and CTAN (https://ctan.org/). +%% access language-specific fonts), but the class does not support unicode-math. %% %% Use an up-to-date LaTeX distribution: for pdfLaTeX, TeX Live 2016 or later; for LuaLaTeX, TeX Live 2021 or later. +%% A complete LaTeX installation is also recommended: asmeconf loads ~30 packages, in addition to LaTeX core packages. +%% All packages required by the class are in TeXLive and CTAN (https://ctan.org/). %% %% Commands for entering conference headers and author names are specific to this class. %% See asmeconf-template.tex for details. @@ -46,7 +47,7 @@ %% %% LICENSE: %% -%% Copyright (c) 2021 John H. Lienhard +%% Copyright (c) 2022 John H. Lienhard %% %% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and %% associated documentation files (the "Software"), to deal in the Software without restriction, @@ -80,9 +81,9 @@ %%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date (thanks Ulrike Fischer) +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date -\IfFormatAtLeastTF{2017/01/01}{% +\IfFormatAtLeastTF{2017/04/15}{% \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 or later are strongly recommended for best results} }{% \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020 or later are recommended for the asmeconf class. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now.}% @@ -304,6 +305,11 @@ % %%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u) \define@key{pdfaopt}{pdf-a}[true]{% + \IfFormatAtLeastTF{2018/12/01}{% + \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2019 or later are necessary with the [pdf-a] option} + }{% + \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2018/12/01 or later are necessary for the [pdf-a] option. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. Meanwhile, you can remove the [pdf-a] option and try again}% + } \ac@setpdfatrue \PassOptionsToPackage{pdfa,pdfapart=3,pdfaconformance=u}{hyperref}% note: hyperref takes these options if hyperxmp is loaded } @@ -456,8 +462,8 @@ \RequirePackage[utf8]{inputenc} % for backward compatibility with pre-2018 LaTeX distributions \else \ifluatex - \ifac@setpdfa\ClassWarningNoLine{asmejour}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use % - \protect\DeclareDocumentMetadata{pdfstandard=A-3b} before \protect\begin{document}}% + \ifac@setpdfa\ClassWarningNoLine{asmeconf}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use % + \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}% \fi \directlua{ if pdf.getminorversion() \string~= 7 then @@ -510,7 +516,7 @@ \renewcommand\rmdefault{ntxtlf} % roman font for math \RequirePackage[T1]{fontenc} % qhv is not TU encoded, 2021/12/24 \DeclareFontFamily{T1}{\sfdefault}{} % sf for math - \DeclareFontShape{T1}{\sfdefault}{m}{n}{<-> s*[0.9] ec-qhvr}{} %% see t1qhv.fd + \DeclareFontShape{T1}{\sfdefault}{m}{n}{<-> s*[0.94] ec-qhvr}{} %% see t1qhv.fd; 0.9-->0.94 2022/01/15 \RequirePackage[]{newtxmath} % newtxmath still handles mathematics \RequirePackage[no-math]{fontspec} \defaultfontfeatures{Ligatures=TeX,} @@ -532,7 +538,7 @@ BoldFont = *-bold, BoldItalicFont = *-bolditalic, Numbers = Lining, - Scale=0.9, + Scale=0.94,% same as for newtx; former value 0.9 too small 2022/01/15 ] \setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live) \MonoNotMono,% match newtxtext if we enable wordspacing @@ -899,7 +905,7 @@ \babelprovide[import, captions/abstract = Muhtasari, language = Default]{swahili} % \else % use lualatex without font support for other languages (easier set-up and still enables luacode for numerics) - \RequirePackage[]{newtxtext}% will lose some accented characters this way ... better to use fontspec + \RequirePackage[nofontspec]{newtxtext}% will lose some accented characters this way ... better to use fontspec \RequirePackage[varqu,varl]{inconsolata}% sans typewriter font \RequirePackage[]{newtxmath} \fi @@ -1041,6 +1047,9 @@ \newif\if@asme@pdfmanagement% Thanks to Ulrike Fischer +% New 2021/07/23, don't implement yet +% \IfPDFManagementActiveTF{\@asme@pdfmanagementtrue}{\@asme@pdfmanagementfalse} + \ExplSyntaxOn \IfFormatAtLeastTF{2020/02/02}{% \bool_if:nTF diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.pdf Binary files differnew file mode 100644 index 0000000000..3b915adbcc --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.pdf diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.tex b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.tex new file mode 100644 index 0000000000..209cf294ca --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmeconf-template-widetext.tex @@ -0,0 +1,348 @@ +%% +%% Examples of a widetext environment for setting wide equations in the asmeconf class. +%% Copyright (c) 2021 John H. Lienhard. Use under the MIT license: https://ctan.org/license/mit +%% +%% USAGE: * \begin{widetext} ...wide material here... \end{widetext} +%% OPTIONAL ARGUMENTS: +%% * \begin{widetext[N] .. changes upper/lower separation of wide material from default 5pt to Npt +%% * \begin{widetext}[][tbn]: t = top line only; b = bottom line only; n = no lines. BOTH arguments are REQUIRED, even if first is left empty. +%% +%% The widetext environment can only appear once per page. It clashes with floats and footnotes, as discussed herein. +%% +%% NB: the strip environment from cuted is incompatible with the [lineno] option to asmeconf! + +\documentclass[nofoot,colorlinks,balance,pdf-a]{asmeconf} + +\def\ACwidetextversion{1.0} +\def\ACwidetextdate{January 10, 2022} + +\usepackage{lipsum}% Latin filler text +\usepackage{asmewide} + + +\begin{filecontents}{asme-wide-equations.bib} +@online{lienhard2021, + author = {Lienhard, John H., V}, + title = {{\texttt{asmeconf}}: A template for {ASME} conference papers}, + organization = {Comprehensive \TeX\ Archive Network}, + version = {{\versionno}}, + year = {2021}, + url = {https://ctan.org/pkg/asmeconf}, + urldate = {{\today}}, +} +@online{tolucsis1, + author = {Sigitas Tolu\v{s}is}, + year = {2021}, + title = {The \texttt{cuted} package}, + version = {2.0}, + organization = {Comprehensive \TeX\ Archive Network}, + url = {https://ctan.org/pkg/cuted}, + urldate = {Dec. 30, 2021}, +} +@online{tolucsis2, + author = {Sigitas Tolu\v{s}is}, + year = {2021}, + title = {The \texttt{sttools} collection}, + version = {3.0}, + organization = {Comprehensive \TeX\ Archive Network}, + url = {https://ctan.org/pkg/sttools}, + urldate = {Dec. 30, 2021}, +} +@book{stakgold, +author = {Ivar Stakgold}, +title = {Boundary Value Problems of Mathematical Physics}, +year = {1967}, +publisher = {Macmillan}, +address = {New York}, +} +\end{filecontents} + +\hypersetup{% + pdfauthor={John H. Lienhard}, + pdftitle={Wide Equations in asmeconf.cls}, + pdfkeywords={ASME conference paper, LaTeX template, wide equations, widetext}, + pdfsubject = {Examples of setting wide equations in the asmeconf LaTeX template}, + pdfurl={https://ctan.org/pkg/asmeconf}, + pdflicenseurl={https://ctan.org/pkg/asmeconf}, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\ConfName{Proceedings of the \texttt{asmeconf}\linebreak International Examples Congress and Exposition} +\ConfAcronym{AIECE22} +\ConfDate{January 10, 2022} +\ConfCity{Cambridge, MA} +\PaperNo{AIECE2022-0003} + +\SetAuthors{John H.\ Lienhard V\affil{}\CorrespondingAuthor{lienhard@mit.edu}} +\SetAffiliation{}{Fellow of ASME \\ +Rohsenow Kendall Heat Transfer Laboratory, \\ +Department of Mechanical Engineering,\\ +Massachusetts Institute of Technology, \\ +Cambridge, MA 02139 USA +} + +\title{Wide Equations in asmeconf.cls} +\maketitle + +\versionfootnote{Examples of \texttt{widetext} in \texttt{asmeconf}. Version \ACwidetextversion, \ACwidetextdate} + +\keywords{ASME conference paper, \LaTeX\ template, wide equations, asmeconf} + +\begin{abstract} +This paper gives several examples of typesetting very wide equations with {\upshape\LaTeX} in the {\upshape\texttt{asmeconf}} class~{\upshape\cite{lienhard2021}} using {\upshape\texttt{asmewide.sty}}. +The style defines a the {\upshape\texttt{widetext}} environment, built on the 2021 release of {\upshape\texttt{cuted.sty}~\cite{tolucsis1}} from the +{\upshape\texttt{sttools}} bundle~{\upshape\cite{tolucsis2}}, which is available from CTAN, \hrefurl{http://ctan.org}{ctan.org}. +Significant hand-fitting around pagebreaks, floats, and footnotes is required to obtain good results. Users can change the source file to explore the behavior and limitations of the {\upshape\texttt{widetext}} environment. \textcolor{red}{Only the text in \textbf{red} in this document meant +to be read---the rest is simply filler to aid in layout.} +\end{abstract} + + +\section{Introduction} +\lipsum[1-2] +\section{Section} +\lipsum[3] + +%%%%%%%%%%%%%%%%% begin two column figure %%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{figure*}[t] +\begin{subfigure}[c]{0.495\textwidth} +\centering{\includegraphics{zonal-harmonic2.pdf}}% +\subcaption{\label{fig:zonal}} +\end{subfigure} +%%%%%%%% don't leave a break here +\begin{subfigure}[c]{0.495\textwidth} +\centering{\includegraphics{tesseral-harmonic.pdf}}% +\subcaption{\label{fig:tesseral}}% +\end{subfigure}% +\caption{A figure with two subfigures: (a) Zonal harmonic $n=1, m=0$, (b) Tesseral harmonic $n=2, m=3$. See Appendix~\ref{sec:sph-har}.\label{fig:1}} +\end{figure*} +%%%%%%%%%%%%%%%%%%% end two column figure %%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\lipsum[4] +\subsection{Subsection} +\lipsum[5-6] + + +%%%%%%%%%%%%%%%%%%%% Example WT1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Single Wide Equation on the Page} + +\textcolor{red}{Equation~\eqref{eqn:WT1} is an equation with a matrix that is too large to fit into one column. A multiline math environment will not help because the equation cannot be broken into parts that each fit into a column. The \texttt{widetext} environment solves the problem.} + +\textcolor{red}{A two-column wide figure, Fig.~\ref{fig:1}, has floated from a previous page to the top of this page, but does not interfere with the \texttt{widetext} material (a one column float would interfere).} + +\begin{widetext} +\begin{equation}\label{eqn:WT1} +\mathbf{WT1:}\quad +\mathfrak{W}(\bm{\Phi})= \begin{Vmatrix} +\dfrac\varphi{(\varphi_1,\varepsilon_1)} & 0 & \hdotsfor{4} & 0 & \\[\jot] +\dfrac{\varphi k_{21}}{(\varphi_2,\varepsilon_1)} & \dfrac\varphi{(\varphi_2,\varepsilon_2)} & 0 & \hdotsfor{3} & 0 \\[\jot] +\dfrac{\varphi k_{31}}{(\varphi_3,\varepsilon_1)} &\dfrac{\varphi k_{32}}{(\varphi_3,\varepsilon_2)} & \dfrac\varphi{(\varphi_3,\varepsilon_3)}& 0 & \hdotsfor{2} & 0 \\[\jot] +\vdots & & & \smash{\rotatebox{15}{$\ddots$}} & & & \vdots \\[\jot] +\dfrac{\varphi k_{n-2\, 1}}{(\varphi_{n-2},\varepsilon_1)} & +\dfrac{\varphi k_{n-2\, 2}}{(\varphi_{n-2},\varepsilon_2)} &\hdotsfor{1} & \dfrac{\varphi k_{n-2\,n-3}}{(\varphi_{n-2},\varepsilon_{n-3})} & \dfrac\varphi{(\varphi_{n-2},\varepsilon_{n-2})}& 0& 0 \\[\jot] +\dfrac{\varphi k_{n-1\, 1}}{(\varphi_{n-1},\varepsilon_1)} & \dfrac{\varphi k_{n-1\, 2}}{(\varphi_{n-1},\varepsilon_2)} &\hdotsfor{2} & +\dfrac{\varphi k_{n-1\,n-2}}{(\varphi_{n-1},\varepsilon_{n-2})}& \dfrac{\varphi}{(\varphi_{n-1},\varepsilon_{n-1})} & 0 \\[\jot] +\dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)} & \dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)} & \hdotsfor{3} & +\dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})} & \dfrac{\varphi}{(\varphi_n,\varepsilon_n)} +\end{Vmatrix} +\end{equation} +\end{widetext} + +\lipsum[7-8] + + +%%%%%%%%%%%%%%%%%%%% Examples WT2 & WT3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Two Wide Equations on the Page} + +\lipsum[9-10] + +\begin{widetext} +\begin{equation}\mathbf{WT2:} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy + \ne \frac{1}{\sqrt{\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy}} +\end{equation} + +\textcolor{red}{In this case, we have a pair of wide equations on the same page. The \texttt{widetext} environment cannot be used twice on the same page! To resolve the conflict, we remain in single column mode between the two equations.} + +\textcolor{red}{This page also includes a single column float, Table~\ref{tab:2}. This float must come after the \texttt{widetext} environment. We use the \texttt{\textbackslash begin\{table\}[b]} option to force the table to the bottom of the column. The two column table, Table~\ref{tab:4}, floats to the top of the next page and creates no problems.} + +\begin{equation}\mathbf{WT3:} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy + \ne \frac{1}{\sqrt{\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy}} +\end{equation} +\end{widetext} + + +%%%%%%%%%%%%%%% begin single column table %%%%%%%%%%%%%%%%%%%%%% +\begin{table}[b] +\caption{Table with more complicated columns}\label{tab:2}% +\centering{% +\begin{tabular}{!{\hspace*{0.5cm}} >{\raggedright\hangindent=1em} p{3cm} d{3} @{\hspace*{1cm}} d{3} !{\hspace*{0.5cm}}} +\hline\hline +\rule{0pt}{10pt} Experiment & \multicolumn{1}{c@{\hspace*{1cm}}}{$u$ [m/s]} & \multicolumn{1}{c!{\hspace*{0.5cm}}}{$T$ [\textdegree C]} \\[1pt] +\hline +The first experiment we ran this morning & 124.3 & 68.3 \rule{0pt}{10pt} \\ +The second experiment we ran this morning & 82.50 & 103.46 \\ +Our competitor's data & 72.321 & 141.384 \\[1pt] +\hline\hline +\end{tabular} +} +\end{table} +%%%%%%%%%%%%%%%% end table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%% begin two column table %%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table*}[t] +\caption{A table spanning two columns}\label{tab:4}% +\centering{% +\begin{tabular*}{0.8\textwidth}{@{\hspace*{1.5em}}@{\extracolsep{\fill}}ccc!{\hspace*{3.em}}ccc@{\hspace*{1.5em}}} +\hline\hline +\multicolumn{1}{@{\hspace*{1.5em}}c}{$x$\rule{0pt}{11pt}} & +\multicolumn{1}{c}{$\textrm{erf}(x)$} & +\multicolumn{1}{c!{\hspace*{3.em}}}{$\textrm{erfc}(x)$} & +\multicolumn{1}{c}{$x$} & +\multicolumn{1}{c}{$\textrm{erf}(x)$} & +\multicolumn{1}{c@{\hspace*{1.5em}}}{$\textrm{erfc}(x)$} \\ \hline +0.00 & 0.00000 & 1.00000 & 1.10 & 0.88021 & 0.11980\rule{0pt}{11pt} \\ +0.05 & 0.05637 & 0.94363 & 1.20 & 0.91031 & 0.08969 \\ +0.10 & 0.11246 & 0.88754 & 1.30 & 0.93401 & 0.06599 \\ +0.15 & 0.16800 & 0.83200 & 1.40 & 0.95229 & 0.04771 \\ +0.20 & 0.22270 & 0.77730 & 1.50 & 0.96611 & 0.03389 \\ +0.30 & 0.32863 & 0.67137 & 1.60 & 0.97635 & 0.02365 \\ +0.40 & 0.42839 & 0.57161 & 1.70 & 0.98379 & 0.01621 \\ +0.50 & 0.52050 & 0.47950 & 1.80 & 0.98909 & 0.01091 \\ +0.60 & 0.60386 & 0.39614 & 1.82\makebox[0pt][l]{14} & 0.99000 & 0.01000 \\ +0.70 & 0.67780 & 0.32220 & 1.90 & 0.99279 & 0.00721 \\ +0.80 & 0.74210 & 0.25790 & 2.00 & 0.99532 & 0.00468 \\ +0.90 & 0.79691 & 0.20309 & 2.50 & 0.99959 & 0.00041 \\ +1.00 & 0.84270 & 0.15730 & 3.00 & 0.99998 & 0.00002 \\[2pt] +\hline\hline +\end{tabular*} +} +\end{table*} +%%%%%%%%%%%%%%%% end table %%%%%%%%%%%%%%%%%%% + +\lipsum[17-24] + + +%%%%%%%%%%%%%%%%%%%% Examples WT4 & WT5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Wide Equation Pair Split Across Page Break and Followed by Wide Equation} + +\textcolor{red}{Here, we turn off automatic top line so that it does not appear again at the top of the next page: \texttt{\textbackslash TopLineOff}. We instead issue a command to create the top line inside the \texttt{widetext} environment, \texttt{\textbackslash LineAbove}. We must remember to restore the automatic top line after we exit the \texttt{widetext} environment: \texttt{\textbackslash TopLineOn}.} + +\textcolor{red}{The \texttt{\textbackslash newpage} command may optionally be used between the equations to force the second one onto the following page, e.g., try removing the source code line \texttt{\textbackslash lipsum[27]} with and without \texttt{\textbackslash newpage}.} + +\begin{widetext} +\begin{equation}\mathbf{WT4:} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy + \ne \frac{1}{\sqrt{\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy}} +\end{equation}%\newpage +\begin{equation}\mathbf{WT5:} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy + \ne \frac{1}{\sqrt{\int_a^b\biggl\{g(y)^2\int_a^bf^2+f(y)^2 + \int_a^b g^2-2f(y)g(y)\int_a^b fg\biggr\}\,dy}} +\end{equation} + +\textcolor{red}{In this case, we again have a pair of wide equations on the same page, so we stay in single column mode +until both are done\footnotemark. The single column table, Table~\ref{tab:3}, is forced to the bottom of the page using the \texttt{[b]} option.} + +\lipsum[32-33] + +\begin{equation}\mathbf{WT6:} +\int_a^b\biggl\{\int_a^b[f(x)^2g(y)^2+f(y)^2g(x)^2] + -2f(x)g(x)f(y)g(y)\,dx\biggr\}\,dy + \ne \frac{1}{\sqrt{\int_a^b\biggl\{g^2\int_a^bf^2+f^2 + \int_a^b g^2-2fg\int_a^b fg\biggr\}\,dy}} +\end{equation} +\end{widetext} +\footnotetext{\textcolor{red}{The code from \texttt{cuted.sty} doesn't play well with footnotes, so we issue a \texttt{\textbackslash footnotemark} command inside the wide material and a separate \texttt{\textbackslash footnotetext\{..\}} command outside the wide environment.}}% +\lipsum[34-37] + +%%%%%%%%%%%%%%%%%%% begin linewidth table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table}[b] +\newcolumntype{C}{>{$}c<{$}} % math-mode version of "c" column type, from array package +\caption{\label{tab:3}Table at full column width with columns in math mode} +\centering{% +\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}CCCC@{\extracolsep{\fill}}} +\hline\hline +X_{z} & X_{c} & X_{c,m} & X_{c,2}\rule{0pt}{11pt}\\ + 3.92069 & 5.70943 & 6.32429 & 7.08757\\[2pt] +\varepsilon (T_1) & \varepsilon^i (T_1) & \varepsilon^i (T_m) & \alpha (T_1, T_2)\\ +0.7258 & 0.6237 & 0.6807 & 0.7964 \\[2pt] +q_\textrm{gray} & q_\textrm{int, $T_1$} & q_\textrm{int, $T_m$} & q_\textrm{exact}\\ +400.2 & 462.1 & 371.0 & 371.8 \\[1pt] +\hline\hline +\end{tabular*} +} +\end{table} +%%%%%%%%%%%%%%%%%%%% end linewidth table %%%%%%%%%%%%%%%%%%%%%%% + +\lipsum[40-48] + +\textcolor{red}{For eqn.~\eqref{eqn:WT7}, we drop the bottom line, keeping the top line and increasing the vertical space a bit: \texttt{\textbackslash begin\{widetext\}[8][t]}.} + +\begin{widetext}[8][t] +\begin{equation}\label{eqn:WT7} +\mathbf{WT7:}\quad +\cfrac{1}{1+ \cfrac{1}{abcxyz+(ax^2-by^3+cz^4)(\alpha\chi^2-\beta\upsilon^3+\kappa\zeta^4)(ax^4-by^3+cz^2)(a^2x^2-by^3+c^2z^2)}} +\end{equation} +\end{widetext} + +\lipsum[50-60] + +\textcolor{red}{In this case, we drop the top line: \texttt{\textbackslash begin\{widetext\}[][b]}.} + +\vskip 80pt% <== an extra skip to push this widetext over the edge + +\begin{widetext}[][b] +\begin{equation}\label{eqn:WT8} +\mathbf{WT8:}\quad +\mathfrak{W}(\bm{\Phi})= \begin{Vmatrix} +\dfrac\varphi{(\varphi_1,\varepsilon_1)} & 0 & \hdotsfor{4} & 0 & \\[\jot] +\dfrac{\varphi k_{21}}{(\varphi_2,\varepsilon_1)} & \dfrac\varphi{(\varphi_2,\varepsilon_2)} & 0 & \hdotsfor{3} & 0 \\[\jot] +\dfrac{\varphi k_{31}}{(\varphi_3,\varepsilon_1)} &\dfrac{\varphi k_{32}}{(\varphi_3,\varepsilon_2)} & \dfrac\varphi{(\varphi_3,\varepsilon_3)}& 0 & \hdotsfor{2} & 0 \\[\jot] +\vdots & & & \smash{\rotatebox{15}{$\ddots$}} & & & \vdots \\[\jot] +\dfrac{\varphi k_{n-2\, 1}}{(\varphi_{n-2},\varepsilon_1)} & +\dfrac{\varphi k_{n-2\, 2}}{(\varphi_{n-2},\varepsilon_2)} &\hdotsfor{1} & \dfrac{\varphi k_{n-2\,n-3}}{(\varphi_{n-2},\varepsilon_{n-3})} & \dfrac\varphi{(\varphi_{n-2},\varepsilon_{n-2})}& 0& 0 \\[\jot] +\dfrac{\varphi k_{n-1\, 1}}{(\varphi_{n-1},\varepsilon_1)} & \dfrac{\varphi k_{n-1\, 2}}{(\varphi_{n-1},\varepsilon_2)} &\hdotsfor{2} & +\dfrac{\varphi k_{n-1\,n-2}}{(\varphi_{n-1},\varepsilon_{n-2})}& \dfrac{\varphi}{(\varphi_{n-1},\varepsilon_{n-1})} & 0 \\[\jot] +\dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)} & \dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)} & \hdotsfor{3} & +\dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})} & \dfrac{\varphi}{(\varphi_n,\varepsilon_n)} +\end{Vmatrix} +\end{equation} +\end{widetext} + +\lipsum[55-56] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\appendix +\section{Spherical harmonics\label{sec:sph-har}} + +Without getting into the details, a regular function $f(\theta,\phi)$ on the surface of the unit sphere may be written +\begin{equation} +f(\theta,\phi) = \sum_{n=0}^\infty \sum_{m=-n}^n f_{m,n} Y_n^m(\theta,\phi) +\end{equation} +for $Y_n^m(\theta,\phi) = e^{i m\phi}P^{|m|}_n(\cos\theta)$, for $|m|<n$. The case $n=3$, $m=2$ (a \textit{tesseral harmonic}) is shown in Fig.~\ref{fig:tesseral}. + +These functions are orthogonal, with the normalization constant~\cite[App.~A]{stakgold}: +\begin{equation} +N_{m,n}=\int_0^{2\pi}\!\!d\phi\int_0^{\pi}\!\!d\theta \sin\theta\, \big|Y^m_n(\theta,\phi)\big|^2 = \frac{4\pi (n+|m|)!}{(2n+1)(n-|m|)!} +\end{equation} + +If $f$ is independent of the azimuthal angle $\phi$, the solution appears in ordinary Legendre polynomials, $P_n$, rather than associated Legendre polynomials, $P^m_n$ ($P^0_n = P_n$): +\begin{equation} +f(\theta) = \sum_{n=0}^\infty f_n\, P_n(\cos\theta) +\end{equation} +The terms in this series are called \textit{zonal harmonics}. + +%%%%%%%%%%%%%%%%%%%% bibliography %%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\bibliographystyle{asmeconf} +\bibliography{asme-wide-equations} + + +\end{document} diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmewide.sty b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmewide.sty new file mode 100644 index 0000000000..b0c9a481f2 --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/asmewide.sty @@ -0,0 +1,128 @@ +%% +%% This file is `asmewide.sty'. +%% +%% Copyright (c) 2022 John H. Lienhard. Use under the MIT license: https://ctan.org/license/mit +%% +%% Defines a widetext environment within ASME dimensions +%% Use for material spanning both columns (i.e., for wide equations) +%% +%% The original widetext environment was developed in revtex; elements of the present code have been modified revtex4-2.dtx, under LPPL1.3c. +%% The unmodified code is available at: https://ctan.org/pkg/revtex +%% This code also adopts concepts from the widetext.sty package by Anjishnu Sarkar, https://blog.pnas.org/widetext.sty. +%% The modifications made were: follow ASME dimensions; remove revtex-specific macros; update/rework commands; adapt to most recent cuted.sty +%% (Leaders don't vanish at pagebreaks, as in revtex, evidently related to how cuted.sty handles strip construction. Have coded around this.) +%% +%% Required packages: cuted.sty v2.0 and flushend.sty v4.0 [2021/10/04] or later; asmeconf.cls w/its required packages, esp. etoolbox, xparse +%% +%% The widetext environment can only appear once per page. It clashes with floats and footnotes, requiring some hand-fitting of page layouts. +%% +%% USAGE: * \begin{widetext} ...wide material here... \end{widetext} +%% OPTIONAL ARGUMENTS: +%% * \begin{widetext[N] .. changes upper/lower separation of wide material from default Xpt to Npt (X = 5pt asmeconf.cls; X = 10pt asmejour.cls) +%% * \begin{widetext}[][tbn]: t = top line only; b = bottom line only; n = no lines. BOTH arguments are REQUIRED, even if first is left empty. +%% +%% NB: the strip environment from cuted is incompatible with the [lineno] option to asmeconf and asmejour! +%% +\NeedsTeXFormat{LaTeX2e} + +\def\AW@versionno{1.0} +\def\AW@versiondate{2021/12/26\space} +\ProvidesPackage{asmewide}[\AW@versiondate\space v\AW@versionno\space ASME wide equation environment (JHL)] + +\ifdefined\NewDocumentCommand\else + \RequirePackage{xparse} +\fi +\RequirePackage{etoolbox} +\RequirePackage{cuted}[2021/10/04]%features used here were first added in the [2021/10/04] version of cuted.sty! +\@ifpackagelater{cuted}{2021/10/04}{% + \relax +}{% + \PackageError{asmewide}{Your version of cuted.sty is too old. You can get an update at https://ctan.org/pkg/cuted}{You need an up-to-date version of cuted.sty to run asmewide.sty.}% +} + +\RequirePackage{flushend}[2021/10/04] +% +% https://tex.stackexchange.com/a/43541/119566 +\def\@getcl@ss#1.cls#2\relax{\def\@currentclass{#1}} +\def\@getclass{\expandafter\@getcl@ss\@filelist\relax} +\@getclass +\typeout{Running asmewide.sty with the \@currentclass\space class.} +% +\newbox\@TopLeader +\newbox\@BottomLeader +\newlength\savparskip \setlength\savparskip{\parskip} +\newlength\@RuleWidth \AtBeginDocument{\setlength\@RuleWidth{\dimexpr(\columnwidth+0.5\columnsep-1pt)}} +\newlength\@TopSpace \setlength\@TopSpace{0ex} +\newlength\@TopCorr \setlength\@TopCorr{-5pt} +\def\@asmeindent{3.5mm} +\def\@TopRuleWeight{0.5pt} +\def\@BottomRuleWeight{0.5pt} +\def\@DSS{5}% default stripsep +% +\@ifclassloaded{asmeconf}{% + \setlength\@TopCorr{-1ex}% keep \abovedisplayskip since text could start the page + \setlength\@TopSpace{1ex}% provide space apparently lost with cuted.sty in asmeconf.cls + \def\@asmeindent{0.25in}% asmeconf +}{\relax} + +\@ifclassloaded{asmejour}{% + \AtBeginDocument{\setlength\@RuleWidth{\columnwidth}} + \setlength\@TopCorr{-9pt}% asmejour + \def\@BottomRuleWeight{1pt}% asmejour + \def\@DSS{10}% default stripsep, asmejour +}{\relax} +% +% Set ascenders and descenders 1.2 times greater than \baselineskip +\NewDocumentCommand\@SetTopLeader{}{% NB: boxes are cleared after they are used; this command is issued once with each widetext environment + \setbox\@TopLeader\vbox{% + \hbox to \@RuleWidth{% + \leaders\hrule height\@TopRuleWeight \hfil + \vrule height 1.2\baselineskip width\@TopRuleWeight} + } +} +\NewDocumentCommand\@TopLine{}{% + \vskip\@TopSpace + \dimen@\ht\@TopLeader\advance\dimen@\dp\@TopLeader + \cleaders\box\@TopLeader\vskip\dimen@ +} +\NewDocumentCommand\@SetBottomLeader{}{% + \setbox\@BottomLeader\hbox to \@RuleWidth{% + \vrule depth 1.2\baselineskip width\@BottomRuleWeight + \leaders\hrule height\@BottomRuleWeight \hfil + } +} +\NewDocumentCommand\@BottomLine{}{% + \par + \vskip 3pt% provide some space between low equation numbers and rule + \setbox\@BottomLeader\vbox{% + \hbox to \textwidth{\hfil\box\@BottomLeader}% + }% + \dimen@\ht\@BottomLeader\advance\dimen@\dp\@BottomLeader + \cleaders\box\@BottomLeader\vskip\dimen@ + \vskip -1.5pt% reduce trailing separation w.r.t. baseline when \stripsep = 0 +} +\preCutedStrip={\@TopLine} +\postCutedStrip={\@BottomLine} +\DeclareDocumentEnvironment{widetext}{O{\@DSS}o}{% + \@SetTopLeader + \@SetBottomLeader + \notblank{#1}{% + \setlength{\stripsep}{#1pt plus 5pt minus 5pt} + }{ + \setlength{\stripsep}{\@DSS pt plus 5pt minus 5pt} + } + \ifstrequal{#2}{t}{\setbox\@BottomLeader\vbox{}}{% + \ifstrequal{#2}{b}{\setbox\@TopLeader\vbox{\vskip \@TopCorr}}{%cuted inserts some additional space, we remove here + \ifstrequal{#2}{n}{\setbox\@TopLeader\vbox{\vskip \@TopCorr}\setbox\@BottomLeader\vbox{}}{\relax} + } + } + \begin{strip} + \setlength\parindent{\@asmeindent}% strip makes parindent zero; enlarge for ASME + \setlength\parskip{\savparskip}% strip makes \parskip zero w/o glue; set to match main text + }{% + \end{strip}\ignorespaces +} +%% +\endinput +%% +%% End of file `asmewide.sty'. diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/tesseral-harmonic.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/tesseral-harmonic.pdf Binary files differnew file mode 100644 index 0000000000..46f5268075 --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/tesseral-harmonic.pdf diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/zonal-harmonic2.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/zonal-harmonic2.pdf Binary files differnew file mode 100644 index 0000000000..abd55c5709 --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-wide-equation-example/zonal-harmonic2.pdf diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 52c3418055..050718cbb5 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2022/02/14}{1.626} +\ProvidesExplClass{easybook}{2022/02/15}{1.628} {Typeset Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -303,7 +303,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2022/02/14}{1.626} +\ProvidesExplPackage{easybase}{2022/02/15}{1.628} {Typeset Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -641,7 +641,7 @@ \cs_new_protected:Npn \eb_draw_markrule:nnnnn #1#2#3#4#5 { \group_begin: - \tl_if_empty:nF {#4} { \vspace*{#4} } + \tl_if_blank:nF {#4} { \vspace*{#4} } \color{#2}\hrule\@width #1\@height #3 \tl_if_novalue:nF {#5} { \vspace*{#5} } \group_end: @@ -730,7 +730,7 @@ \ctex_at_end_preamble:n { \bool_if:NF \l__eb_ps_used_bool { \pagestyle{fancy} } - \tl_if_empty:NF \l_eb_graphics_path_tl + \tl_if_blank:VF \l_eb_graphics_path_tl { \exp_args:NV \graphicspath \l_eb_graphics_path_tl } \providecommand{\kaishu}{\itshape} } @@ -1214,8 +1214,9 @@ \bool_if:NT \l__eb_toc_entry_hang_bool { \contentspush } { - \bool_if:NT \l__eb_toc_number_color_bool + \bool_if:NTF \l__eb_toc_number_color_bool { \textcolor{ctex@toc@number} } + { \use:n } { \thecontentslabel } \tl_use:c { l__eb_toc_#1_after_tl } } @@ -1990,7 +1991,7 @@ } { \cs_set_eq:NN \cite \citep } { \exp_args:NV \bibliographystyle \l__eb_bib_otherstyle_tl } - \tl_if_empty:NF \l__eb_bib_cite_style_tl + \tl_if_blank:VF \l__eb_bib_cite_style_tl { \exp_args:NV \setcitestyle \l__eb_bib_cite_style_tl } \NewDocumentCommand{\printbibliography}{st+o} { @@ -2023,7 +2024,7 @@ { \eb_put_biblatex:n { style = gb7714-2015 } } { \eb_put_biblatex:n { style = gb7714-2015ay } } { \eb_put_biblatex:n { style = \l__eb_bib_both_style_tl } } - \tl_if_empty:NF \l__eb_bib_cite_style_tl + \tl_if_blank:VF \l__eb_bib_cite_style_tl { \eb_put_biblatex:n { citestyle = \l__eb_bib_cite_style_tl } } \LoadPackage[backend = biber]{biblatex} \clist_map_function:NN \l__eb_bib_datafile_clist \addbibresource @@ -2270,7 +2271,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2022/02/14}{1.626} +\ProvidesExplFile{eb-tcolorbox.cfg}{2022/02/15}{1.628} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex c58bf2d8aa..d5fc5dc183 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 8dfe779fa2..39c87a9732 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -21,8 +21,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK 使用手册, - version = v1.626, - date = 2022/02/14, + version = v1.628, + date = 2022/02/15, authors = 瞿毅, info = 排版简体中文学位论文和书籍, email = q1jx@foxmail.com, @@ -343,7 +343,7 @@ 如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关命令。上面目录命令的可选参数改进了原本单一的功能,其中 \meta{键值列表} 的选项如下: \begin{options} - \keyval{level}{标题命令}\newtag + \keyval{level}{标题命令}\newtag% 设定输出目录标题的命令。如果使用 \option{title} 选项设置了双语标题则需要配合双语标题命令。 \begin{ctexexam} \tableofcontents[level = \chapter*] @@ -519,8 +519,8 @@ 上下标命令 \cs{supersub} 对应的上下标共同水平偏移量。 \kvsplit{spbcmd}{上标格式,下标格式} 上下标命令 \cs{supersub} 对应的上下标格式命令。以英文逗号分隔为前后两个部分分别设置上下标格式,也可以只有前部分,表示上标的格式。 - \keyval{vsep}{刚性长度}\Default{0.6ex} - 上下标命令 \cs{supersub} 对应的上下标额外垂直距离。 + \kvsplit{vsep}{上标偏移,下标偏移}\Default{0.6ex}\newtag[Changed]% + 上下标命令 \cs{supersub} 对应的上下标额外垂直距离。前部分为上标的偏移量,后部分为下标的偏移量。如果只有前部分则上下标各自垂直移动当前值的一半。 \keychoice{halign}{l,c,r}\Default{l} 上下标命令 \cs{supersub} 对应的上下标水平对齐方式,有左 \code{l}、居中 \code{c} 和右 \code{r} 三种对齐方式。 \end{options} @@ -899,7 +899,7 @@ 引导线选项 \option{tocrule} 中一般可以使用基于 \cs*{xleaders} 命令的 \cs{tocrule} 绘制引导线。 \keyval{tocafter}{距离命令}\dtag\Default{\cs*{hspace}\Marg{1em}} 目录条目编号与标题间的代码,默认为插入 \code{1em} 横向距离。 - \keyval{tocbelow}{距离命令}\dtag\newtag + \keyval{tocbelow}{距离命令}\dtag\newtag% 在目录条目下方执行的代码,可以插入垂直距离等命令。 \keyval{tocline}{条目定义}\dtag 这个选项扩展了图片、表格或代码题注在目录文件中的定义。选项中参数 \code{\#1} 代表相应题注编号 \cs*{the}\meta{计数器} 的值,参数 \code{\#2} 代表相应题注内容。 @@ -1262,6 +1262,7 @@ \end{commands} \appendix +\setlist[1]{} \begin{changelog}[title = 更新日志] \shortversion{v = 1.45,date = 2022/01/08,changes = 经过前期各模块的功能调整和错误修复,稳定版本正式发布。} \begin{version}[v = 1.46,date = 2022/01/12] diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md index 836e95a0af..63b5abae99 100644 --- a/macros/latex/contrib/siunitx/CHANGELOG.md +++ b/macros/latex/contrib/siunitx/CHANGELOG.md @@ -7,6 +7,15 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v3.0.49] - 2022-02-15 + +### Added +- Option `retain-explicit-decimal-marker` to allow printing of + significant decimal markers (see issue + [\#590](https://github.com/josephwright/siunitx/issues/590)) +- Option `print-zero-integer` to replace older `add-integer-zero` option + (see issue [\#587](https://github.com/josephwright/siunitx/issues/587)) + ## [v3.0.48] - 2022-02-07 ### Added @@ -14,7 +23,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ### Fixed - Printing blank entries in text mode (see issue - [\#5853](https://github.com/josephwright/siunitx/issues/585)) + [\#585](https://github.com/josephwright/siunitx/issues/585)) ## [v3.0.47] - 2022-02-03 @@ -1712,7 +1721,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ### Added - First public testing release (as `si`) -[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.48...HEAD +[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.49...HEAD +[v3.0.49]: https://github.com/josephwright/siunitx/compare/v3.0.48...v3.0.49 [v3.0.48]: https://github.com/josephwright/siunitx/compare/v3.0.47...v3.0.48 [v3.0.47]: https://github.com/josephwright/siunitx/compare/v3.0.46...v3.0.47 [v3.0.46]: https://github.com/josephwright/siunitx/compare/v3.0.45...v3.0.46 diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf Binary files differindex f427b017c8..6537e87694 100644 --- a/macros/latex/contrib/siunitx/siunitx-code.pdf +++ b/macros/latex/contrib/siunitx/siunitx-code.pdf diff --git a/macros/latex/contrib/siunitx/siunitx-emulation.dtx b/macros/latex/contrib/siunitx/siunitx-emulation.dtx index 87d213a3b9..aab7d478f2 100644 --- a/macros/latex/contrib/siunitx/siunitx-emulation.dtx +++ b/macros/latex/contrib/siunitx/siunitx-emulation.dtx @@ -421,7 +421,11 @@ } , add-decimal-zero .default:n = true , add-integer-zero .code:n = - { \@@_option_removed:V \l_keys_key_tl } , + { + \@@_option_deprecated:nn + { add-integer-zero } + { print-zero-integer } + } , close-bracket .code:n = { \@@_option_removed:V \l_keys_key_tl } , bracket-numbers .choice: , diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx index 98f52307c2..19b505bc33 100644 --- a/macros/latex/contrib/siunitx/siunitx-number.dtx +++ b/macros/latex/contrib/siunitx/siunitx-number.dtx @@ -97,11 +97,14 @@ % \meta{integer} and \meta{exponent} parts: these are required. The % \meta{uncertainty} part should either be blank or contain an % \meta{identifier} (as a brace group), followed by one or more data entries. -% Valid \meta{identifiers} currently are +% Valid uncertainty \meta{identifiers} currently are % \begin{itemize} % \item[\texttt{S}] A single symmetrical uncertainty (\foreign{e.g.}~a % statistical standard uncertainty) % \end{itemize} +% If a decimal marker should be explicitly recorded as present for a value +% with no decimal digits, the \meta{decimal} part should contain +% \cs{empty}. % \end{function} % % \begin{function}{\siunitx_number_process:NN} @@ -430,12 +433,24 @@ % \end{syntax} % \end{function} % +% \begin{function}{print-zero-integer} +% \begin{syntax} +% |print-zero-integer| = |true|\verb"|"|false| +% \end{syntax} +% \end{function} +% % \begin{function}{retain-explicit-plus} % \begin{syntax} % |retain-explicit-plus| = |true|\verb"|"|false| % \end{syntax} % \end{function} % +% \begin{function}{retain-explicit-decimal-marker} +% \begin{syntax} +% |retain-explicit-decimal-marker| = |true|\verb"|"|false| +% \end{syntax} +% \end{function} +% % \begin{function}{retain-zero-uncertainty} % \begin{syntax} % |retain-zero-uncertainty| = |true|\verb"|"|false| @@ -629,6 +644,7 @@ % \l_@@_input_uncert_open_tl , % \l_siunitx_number_input_sign_tl , % \l_@@_input_uncert_sign_tl , +% \l_@@_explicit_decimal_bool , % \l_@@_explicit_plus_bool , % \l_@@_zero_uncert_bool % } @@ -668,6 +684,8 @@ } , parse-numbers .bool_set:N = \l_siunitx_number_parse_bool , + retain-explicit-decimal-marker .bool_set:N = + \l_@@_explicit_decimal_bool , retain-explicit-plus .bool_set:N = \l_@@_explicit_plus_bool , retain-zero-uncertainty .bool_set:N = @@ -1287,13 +1305,21 @@ % depending on the setting for the indicator switch. For the integer % part, if no number has been collected then one or more non-significant % zeros have been dropped. Exactly one zero is therefore needed to make -% sure the parsed result is correct. +% sure the parsed result is correct. On the other hand, if the decimal +% is empty \emph{and} we are asked to track the presence of a marker, +% we store the indicator value \cs{empty}. % \begin{macrocode} \cs_new_protected:Npn \@@_parse_loop_main_end:NN #1#2 { - \bool_lazy_and:nnT - {#2} { \tl_if_empty_p:N \l_@@_partial_tl } - { \tl_set:Nn \l_@@_partial_tl { 0 } } + \tl_if_empty:NT \l_@@_partial_tl + { + \bool_if:NTF #2 + { \tl_set:Nn \l_@@_partial_tl { 0 } } + { + \bool_if:NT \l_@@_explicit_decimal_bool + { \tl_set:Nn \l_@@_partial_tl { \empty } } + } + } \tl_put_right:Nx #1 { { \exp_not:V \l_@@_partial_tl } @@ -2176,7 +2202,7 @@ % \end{macro} % % \begin{macro}{\@@_round:NN} -% \begin{macro}[EXP]{\@@_round_none:nnnnnnn} +% \begin{macro}[EXP]{\@@_round:nnnnnnn} % Rounding is at the top level simple enough: fire off the expandable % set up which does the work. % \begin{macrocode} @@ -2184,14 +2210,18 @@ { \tl_set:Nx #2 { - \cs:w - @@_round_ \l_@@_round_mode_tl :nnnnnnn - \exp_after:wN - \cs_end: #1 - } + \str_if_eq:VnTF \l_@@_round_mode_tl { none } + { \exp_not:V #1 } + { \exp_after:wN \@@_round:nnnnnnn #1 } + } + } +\cs_new:Npn \@@_round:nnnnnnn #1#2#3#4#5#6#7 + { + \str_if_eq:nnTF {#4} { \empty } + { \use:c { @@_round_ \l_@@_round_mode_tl :nnnnnnn } {#1} {#2} {#3} { } } + { \use:c { @@_round_ \l_@@_round_mode_tl :nnnnnnn } {#1} {#2} {#3} {#4} } + {#5} {#6} {#7} } -\cs_new:Npn \@@_round_none:nnnnnnn #1#2#3#4#5#6#7 - { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } } % \end{macrocode} % \end{macro} % \end{macro} @@ -3087,7 +3117,8 @@ % \l_@@_uncert_separator_tl , % \l_@@_tight_bool , % \l_@@_unity_mantissa_bool , -% \l_@@_zero_exponent_bool +% \l_@@_zero_exponent_bool , +% \l_@@_zero_integer_bool % } % Keys producing tokens in the output. % \begin{macrocode} @@ -3143,6 +3174,8 @@ \l_@@_unity_mantissa_bool , print-zero-exponent .bool_set:N = \l_@@_zero_exponent_bool , + print-zero-integer .bool_set:N = + \l_@@_zero_integer_bool , tight-spacing .bool_set:N = \l_@@_tight_bool , uncertainty-mode .choices:nn = @@ -3346,17 +3379,27 @@ { \@@_output_digits:nn { integer } { 1 } } } { - \bool_lazy_any:nT - { - { \l_@@_unity_mantissa_bool } - { ! \str_if_eq_p:nn { #1 . #2 } { 1. } } - { - \bool_lazy_and_p:nn - { \str_if_eq_p:nn {#3} { 0 } } - { ! \l_@@_zero_exponent_bool } - } + \bool_lazy_or:nnT + { \l_@@_zero_integer_bool } + { ! \str_if_eq_p:nn {#1} { 0 } } + { + \bool_lazy_any:nT + { + { \l_@@_unity_mantissa_bool } + { ! \str_if_eq_p:nn { #1 . #2 } { 1. } } + { + \bool_lazy_and_p:nn + { \str_if_eq_p:nn {#3} { 0 } } + { ! \l_@@_zero_exponent_bool } + } + { + \bool_lazy_and_p:nn + { \str_if_eq_p:nn {#1} { 0 } } + { \l_@@_zero_integer_bool } + } + } + { \@@_output_digits:nn { integer } {#1} } } - { \@@_output_digits:nn { integer } {#1} } } } \cs_new:Npn \@@_output_decimal:nn #1#2 @@ -3370,7 +3413,8 @@ { \exp_not:V \l_siunitx_number_output_decimal_tl } } \exp_not:n {#2} - \@@_output_digits:nn { decimal } {#1} + \str_if_eq:nnF {#1} { \empty } + { \@@_output_digits:nn { decimal } {#1} } } \cs_generate_variant:Nn \@@_output_decimal:nn { f } \cs_new:Npn \@@_output_digits:nn #1#2 @@ -3770,49 +3814,51 @@ % \begin{macrocode} \keys_set:nn { siunitx } { - bracket-ambiguous-numbers = true , - bracket-negative-numbers = false , - drop-exponent = false , - drop-uncertainty = false , - drop-zero-decimal = false , - evaluate-expression = false , - exponent-base = 10 , - exponent-mode = input , - exponent-product = \times , - expression = #1 , - fixed-exponent = 0 , - group-digits = all , - group-minimum-digits = 5 , - group-separator = \, , % ( - input-close-uncertainty = ) , - input-comparators = { <=>\approx\ge\geq\gg\le\leq\ll\sim } , - input-decimal-markers = { ., } , - input-digits = 0123456789 , - input-exponent-markers = dDeE , - input-ignore = \, , - input-open-uncertainty = ( , % ) - input-signs = +-\mp\pm , - input-uncertainty-signs = \pm , - minimum-decimal-digits = 0 , - minimum-integer-digits = 0 , - negative-color = , % ( - output-close-uncertainty = ) , - output-decimal-marker = . , - output-open-uncertainty = ( , % ) - parse-numbers = true , - print-implicit-plus = false , - print-unity-mantissa = true , - print-zero-exponent = false , - retain-explicit-plus = false , - retain-zero-uncertainty = false , - round-half = up , - round-minimum = 0 , - round-mode = none , - round-pad = true , - round-precision = 2 , - tight-spacing = false , - uncertainty-mode = compact , - uncertainty-separator = + bracket-ambiguous-numbers = true , + bracket-negative-numbers = false , + drop-exponent = false , + drop-uncertainty = false , + drop-zero-decimal = false , + evaluate-expression = false , + exponent-base = 10 , + exponent-mode = input , + exponent-product = \times , + expression = #1 , + fixed-exponent = 0 , + group-digits = all , + group-minimum-digits = 5 , + group-separator = \, , % ( + input-close-uncertainty = ) , + input-comparators = { <=>\approx\ge\geq\gg\le\leq\ll\sim } , + input-decimal-markers = { ., } , + input-digits = 0123456789 , + input-exponent-markers = dDeE , + input-ignore = \, , + input-open-uncertainty = ( , % ) + input-signs = +-\mp\pm , + input-uncertainty-signs = \pm , + minimum-decimal-digits = 0 , + minimum-integer-digits = 0 , + negative-color = , % ( + output-close-uncertainty = ) , + output-decimal-marker = . , + output-open-uncertainty = ( , % ) + parse-numbers = true , + print-implicit-plus = false , + print-unity-mantissa = true , + print-zero-exponent = false , + print-zero-integer = true , + retain-explicit-decimal-marker = false , + retain-explicit-plus = false , + retain-zero-uncertainty = false , + round-half = up , + round-minimum = 0 , + round-mode = none , + round-pad = true , + round-precision = 2 , + tight-spacing = false , + uncertainty-mode = compact , + uncertainty-separator = } % \end{macrocode} % diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx index 61d45f9621..0bd7fa2a8a 100644 --- a/macros/latex/contrib/siunitx/siunitx.dtx +++ b/macros/latex/contrib/siunitx/siunitx.dtx @@ -121,7 +121,7 @@ % % Identify the package and give the over all version information. % \begin{macrocode} -\ProvidesExplPackage {siunitx} {2022-02-07} {3.0.48} +\ProvidesExplPackage {siunitx} {2022-02-15} {3.0.49} {A comprehensive (SI) units package} % \end{macrocode} % diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf Binary files differindex 70e9f7d7ac..d737b16cf8 100644 --- a/macros/latex/contrib/siunitx/siunitx.pdf +++ b/macros/latex/contrib/siunitx/siunitx.pdf diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex index 62fa382f86..8854ff3f75 100644 --- a/macros/latex/contrib/siunitx/siunitx.tex +++ b/macros/latex/contrib/siunitx/siunitx.tex @@ -1256,22 +1256,23 @@ Table~\ref{tab:opt:num:in}. Type & \multicolumn{1}{l@{}}{Default} \\ \midrule - evaluate-expression & Switch & false \\ - expression & Literal & |#1| \\^^A ( - input-close-uncertainty & Literal & ) \\ - input-comparators & Literal & + evaluate-expression & Switch & false \\ + expression & Literal & |#1| \\^^A ( + input-close-uncertainty & Literal & ) \\ + input-comparators & Literal & <=>\cs{approx}\cs{ge}\cs{geq} \\ & & \cs{gg}\cs{le}\cs{leq}\cs{ll} \cs{sim} \\ - input-decimal-markers & Literal & ., \\ - input-digits & Literal & 0123456789 \\ - input-exponent-markers & Literal & dDeE \\ - input-ignore & Literal & \meta{none} \\ - input-open-uncertainty & Literal & ( \\ ^^A ) - input-signs & Literal & +-\cs{pm}\cs{mp} \\ - input-uncertainty-signs & Literal & \cs{pm} \\ - parse-numbers & Switch & true \\ - retain-explicit-plus & Switch & false \\ - retain-zero-uncertainty & Switch & false \\ + input-decimal-markers & Literal & ., \\ + input-digits & Literal & 0123456789 \\ + input-exponent-markers & Literal & dDeE \\ + input-ignore & Literal & \meta{none} \\ + input-open-uncertainty & Literal & ( \\ ^^A ) + input-signs & Literal & +-\cs{pm}\cs{mp} \\ + input-uncertainty-signs & Literal & \cs{pm} \\ + parse-numbers & Switch & true \\ + retain-explicit-decimal-marker & Switch & false \\ + retain-explicit-plus & Switch & false \\ + retain-zero-uncertainty & Switch & false \\ \bottomrule \end{tabular} \end{table} @@ -1361,15 +1362,21 @@ most notably in that a decimal marker must be |.|. \qty[expression = 10 * (#1)]{2 + 4 * 3}{\joule} \end{LaTeXdemo} +\DescribeOption{retain-explicit-decimal-marker} \DescribeOption{retain-explicit-plus} \DescribeOption{retain-zero-uncertainty} -The inclusion of a leading plus sign is usually unnecessary for positive -numbers, and so they are not retained as-standard when parsing. The -\opt{retain-explicit-plus} option is available to control this behaviour. -Similarly, an uncertainty of zero is normally not meaningful, and so is -ignored by the parser. This can be controlled using the +In some areas, a trailing decimal marker with no decimal part present is used +to show that zeros in the integer part are significant. This can be enabled +using the \opt{retain-explicit-decimal-marker} option. The inclusion of a +leading plus sign is usually unnecessary for positive numbers, and so they are +not retained as-standard when parsing. The \opt{retain-explicit-plus} option is +available to control this behaviour. Similarly, an uncertainty of zero is +normally not meaningful, and so is ignored by the parser. This can be +controlled using the \opt{retain-zero-uncertainty} option. \begin{LaTeXdemo} + \num{10.} \\ + \num[retain-explicit-decimal-marker]{10.} \\ \num{+345} \\ \num[retain-explicit-plus]{+345} \\ \num{12.3(0)} \\ @@ -1589,6 +1596,7 @@ conveys. The options are summarised in Table~\ref{tab:opt:num:out}. print-implicit-plus & Switch & false \\ print-unity-mantissa & Switch & true \\ print-zero-exponent & Switch & false \\ + print-zero-integer & Switch & false \\ tight-spacing & Switch & false \\ uncertainty-mode & Choice & compact \\ uncertainty-separator & Literal & \meta{none} \\ @@ -1750,16 +1758,21 @@ if no sign was present in the input. \DescribeOption{print-unity-mantissa} \DescribeOption{print-zero-exponent} -Printing of a mantissa of $1$ and an exponent of $0$ is controllable by the -options \opt{print-unity-mantissa} and \opt{print-zero-exponent}. The standard -settings print a mantissa of $1$ but omit an exponent of $0$. Notice that where -both are set to \opt{false}, the value $1$ will still be printed -(\foreign{i.e.}~\opt{print-zero-exponent} has a higher priority). +\DescribeOption{print-zero-integer} +Printing of a mantissa of $1$, an exponent of $0$ and an integer component of +$0$ is controllable by the options \opt{print-unity-mantissa}, +\opt{print-zero-exponent} and \opt{print-zero-integer}. The standard settings +print a mantissa of $1$ and an integer part of $0$, but omit an exponent of +$0$. Notice that where both \opt{print-unity-mantissa} and +\opt{print-zero-exponent} are set to \opt{false}, the value $1$ will still be +printed (\foreign{i.e.}~\opt{print-zero-exponent} has a higher priority). \begin{LaTeXdemo} \num{1e4} \\ \num[print-unity-mantissa = false]{1e4} \\ \num{444e0} \\ - \num[print-zero-exponent = true]{444e0} + \num[print-zero-exponent = true]{444e0} \\ + \num{0.123} \\ + \num[print-zero-integer = false]{0.123} \end{LaTeXdemo} \subsection{Lists, products and ranges} diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf Binary files differindex f7ef48f0cd..3593e9e4ad 100644 --- a/macros/latex/contrib/spbmark/spbmark.pdf +++ b/macros/latex/contrib/spbmark/spbmark.pdf diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty index 9b3b44c917..f273b8a978 100644 --- a/macros/latex/contrib/spbmark/spbmark.sty +++ b/macros/latex/contrib/spbmark/spbmark.sty @@ -9,7 +9,7 @@ % https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e}[2018/12/31] \RequirePackage{xparse,l3keys2e} -\ProvidesExplPackage{spbmark}{2022/02/12}{1.36} +\ProvidesExplPackage{spbmark}{2022/02/15}{1.37} {Customize superscripts and subscripts} \cs_generate_variant:Nn \box_set_ht:Nn { cv } @@ -19,6 +19,7 @@ \cs_generate_variant:Nn \msg_warning:nnn { nnV } \cs_generate_variant:Nn \str_case:nn { x } \cs_generate_variant:Nn \tl_if_novalue:nF { V } +\cs_generate_variant:Nn \tl_if_blank:nF { v } \cs_new_protected:Npn \spb_define:n { \keys_define:nn { ctex/style } } \cs_new_protected:Npn \spbset { \keys_set:nn { ctex/style } } @@ -54,6 +55,21 @@ { supersub } {#3} } } +\NewDocumentCommand{\spb@both@vsep@assign} + {>{\SplitArgument{1}{,}}m} + {\spb_supersub_both_vsep:nn #1} +\cs_new_protected:Npn \spb_supersub_both_vsep:nn #1#2 + { + \tl_if_novalue:nTF {#2} + { + \tl_set:Nn \l__spb_super_vsep_ii_tl { #1/2 } + \tl_set:Nn \l__spb_sub_vsep_ii_tl { #1/2 } + } + { + \tl_set:Nn \l__spb_super_vsep_ii_tl {#1} + \tl_set:Nn \l__spb_sub_vsep_ii_tl {#2} + } + } \cs_new_protected:Npn \defspbstyle #1#2 { \spb_define:n @@ -70,7 +86,7 @@ mode .initial:n = match, style .choice:, style .value_required:n = true, - vsep .tl_set:N = \l__spb_supersub_vsep_tl, + vsep .code:n = \spb@both@vsep@assign{#1}, vsep .initial:n = 0.6ex, halign .tl_set:N = \l__spb_supersub_halign_tl, halign .initial:n = l, @@ -89,7 +105,7 @@ \spb_local_case_init:nnn { \tl_set:Nn \l__spb_super_vmove_tl {#1} } { \tl_set:Nn \l__spb_sub_vmove_tl {#1} } - { \tl_set:Nn \l__spb_supersub_vsep_tl {#1} } + { \spb@both@vsep@assign{#1} } }, hmove .code:n = { @@ -119,17 +135,14 @@ } \cs_generate_variant:Nn \spb_box_super_move_up_ii:n { V } \cs_generate_variant:Nn \spb_box_sub_move_down_ii:n { V } -\dim_new:N \l__spb_supersub_half_vsep_tl \providecommand{\hbox_overlap_center:n}[1] { \hbox_to_zero:n { \hss #1\hss } } \cs_new:Npn \spb_hbox_overlap_vmove_ii:n #1 { - \tl_set:Nn \l__spb_supersub_half_vsep_tl - { \l__spb_supersub_vsep_tl/2 } \use:c { hbox_overlap_#1:n } - { \spb_box_super_move_up_ii:V \l__spb_supersub_half_vsep_tl } + { \spb_box_super_move_up_ii:V \l__spb_super_vsep_ii_tl } \use:c { hbox_overlap_#1:n } - { \spb_box_sub_move_down_ii:V \l__spb_supersub_half_vsep_tl } + { \spb_box_sub_move_down_ii:V \l__spb_sub_vsep_ii_tl } } \tl_new:N \l__spb_super_cmd_ii_tl @@ -203,9 +216,9 @@ } \cs_new_protected:Npn \spb_ht_dp_assign:nnn #1#2#3 { - \tl_if_empty:cF { l__#1_height_#3_tl } + \tl_if_blank:vF { l__#1_height_#3_tl } { \box_set_ht:cv { l__#1_#3_box } { l__#1_height_#3_tl } } - \tl_if_empty:cF { l__#1_depth_i_tl } + \tl_if_blank:vF { l__#1_depth_i_tl } { \box_set_dp:cv { l__#2_#3_box } { l__#2_depth_#3_tl } } } diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex index 4a3c3dcef6..11d7c9a839 100644 --- a/macros/latex/contrib/spbmark/spbmark.tex +++ b/macros/latex/contrib/spbmark/spbmark.tex @@ -6,8 +6,8 @@ { package = spbmark, title = the spbmark package, - version = v1.36, - date = 2022/02/12, + version = v1.37, + date = 2022/02/15, authors = Qu Yi, info = Customize superscript and subscript, email = q1jx@foxmail.com, @@ -30,7 +30,11 @@ \newcommand{#2}[2] {\code{\textcolor{argument}{#3\textnormal{#1{##1}{##2}}#4}}} } -\newcommand{\kvsplit}[3]{\item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}}} +\newcommand{\kvsplit}[3] + { + \item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}} + \cnltx@checkdefault{\hfill\newline} + } \newsplitarg{\splitoarg}{[}{]} \newsplitarg{\splitmarg}{\{}{\}} \newsplitarg{\splitdarg}{(}{)} @@ -112,7 +116,7 @@ The options common to \meta{kv list} of the three commands are as follows. They \pkg*{spbmark} uses the \cs{spbset} command to control the global default format of superscript and subscript. These options also apply to \meta{kv list} of the above commands. The values set by it will be overwritten by the optional parameters of the superscript and other commands. \end{commands} -The following list of keys control the format both of superscript or subscript. +The following list of keys control the format both of superscript \textcolor{red}{or} subscript. \begin{options} \keyval{spvmove}{fixed length}\Default{0pt} Extra vertical move of the superscript. @@ -144,22 +148,22 @@ The following list of keys control the format both of superscript or subscript. The distance between the subscript baseline and the next line. \end{options} -If \option{sphmove} is positive, the superscript or subscript moves to the right, conversely it moves to the left. However, for superscript, if \option{spvmove} is positive, the superscript moves up, conversely it moves down. For subscript, if \option{spvmove} is positive, the subscript moves down, conversely it moves up. +If \option{sphmove} is positive, the superscript or subscript moves to the right, conversely it moves to the left. The positive direction of vertical offset of subscript and superscript is opposite. For superscript, if \option{spvmove} is positive, the superscript moves up, conversely it moves down. For subscript, if \option{spvmove} is positive, the subscript moves down, conversely it moves up. -The following list of keys control the format of superscript and subscript. +The following list of keys control the format of superscript \textcolor{red}{and} subscript. \begin{options} \keyval{spbhmove}{fixed length}\Default{0pt} Extra vertical move of the superscript and the subscript. - \kvsplit{spbcmd}{super cmds}{sub cmds} \newline + \kvsplit{spbcmd}{super cmds}{sub cmds} The format commands of superscript and subscript. The first part is in superscript format, and the latter part is in subscript format. They are separated by commas, or only the first part exists. - \kvsplit{spbcmd+}{super cmds}{sub cmds} \newline + \kvsplit{spbcmd+}{super cmds}{sub cmds} Add code to the previous global superscript and subscript format commands. \keyval{spbheight}{fixed length} The distance between the superscript baseline and the previous line. \keyval{spbdepth}{fixed length} The distance between the subscript baseline and the next line. - \keyval{vsep}{fixed length}\Default{0.6ex} - The extra vertical distance between superscript and subscript. + \kvsplit{vsep}{super move}{sub move}\Default{0.6ex}\newtag[Changed]% + The extra vertical distance between superscript and subscript. The front part is the movement amount of the superscript, and the latter part is the movement amount of the subscript. If only the front part means that both are vertically shifted by one-half of the current value. \keychoice{halign}{l,c,r}\Default{l} The alignment of superscript and subscript, which contains \code{l}, \code{c}, and \code{r} parameters respectively for left, center, and right alignment. \end{options} |