texlive[74870] Master/texmf-dist: asmejour (6apr25)
commits+karl at tug.org
commits+karl at tug.org
Mon Apr 7 21:47:37 CEST 2025
Revision: 74870
https://tug.org/svn/texlive?view=revision&revision=74870
Author: karl
Date: 2025-04-07 21:47:37 +0200 (Mon, 07 Apr 2025)
Log Message:
-----------
asmejour (6apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/bibtex/bst/asmejour/asmejour.bst
trunk/Master/texmf-dist/doc/latex/asmejour/README.md
trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-sample.bib
trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.pdf
trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.tex
trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf
trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.tex
trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-1.pdf
trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-2a.pdf
trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-2b.pdf
trunk/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
Modified: trunk/Master/texmf-dist/bibtex/bst/asmejour/asmejour.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/asmejour/asmejour.bst 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/bibtex/bst/asmejour/asmejour.bst 2025-04-07 19:47:37 UTC (rev 74870)
@@ -4,7 +4,7 @@
%% *** This bibtex style follows ASME journals ***
%%
%%
- %% This file is asmejour.bst, version 1.08 dated 2024/02/03.
+ %% This file is asmejour.bst, version 1.09 dated 2025/04/04.
%%
%% This file was generated and edited by John Lienhard.
%% This file is a derivative work under Clause 6 of the LPPL license.
@@ -86,6 +86,9 @@
%% Modifications in v1.08 (2024/02/03)
%% correct punctuation in journal macros
%%
+ %% Modifications in v1.09 (2025/04/04)
+ %% support chapter and page in @book
+ %%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
%% Massachusetts Institute of Technology
@@ -1570,6 +1573,8 @@
format.book.crossref output.nonnull
}
if$
+ format.chapter.pages output
+ format.pages output
format.note output
fin.urllink.entry
}
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmejour/README.md 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/doc/latex/asmejour/README.md 2025-04-07 19:47:37 UTC (rev 74870)
@@ -1,7 +1,7 @@
#asmejour: A template for ASME journal papers#
- Version 1.24 dated 2025/01/26.
+ Version 1.25 dated 2025/04/07.
####Overview####
This class provides a template to format preprints in the style of journal papers published by the American Society of Mechanical Engineers.
@@ -67,6 +67,27 @@
####Change log####
+v1.25 (2025/04/07)
+ - Add support for unicode-math, using fonts from TeX Live. Lualatex now loads unicode-math by default.
+ - Drop these packages: titlesec, enumitem, ifthen, iftex, totcount, hyperxmp, inputenc, bookmark, glyphtounicode
+ - Move hologo package loading from .cls file to .tex file
+ - Drop \[mathalfa\] class option. User can instead load mathalpha in the preamble when using pdftex
+ - Drop legacy PDF/A options \[pdf-a, pdfaconformance, pdfapart\]. Use \\DocumentMetadata instead
+ - Select larger small caps from newtxtext by default, drop \[largesc\] option
+ - Switch to \LaTeX's native keyvalue mechanism; load kvoptions package only for backward compatibility
+ - Change vertical skip adjustment on multline environment from 7pt to 10pt (= \\jot in this class)
+ - Reduce use of etoolbox in favor of Latex's hook mechanisms; this limits asmejour to Latex formats dated 2020/10 or later
+ - Fixed operator encoding for sans and sansbold math versions (to OT1)
+ - Add pages and chapter to @book reference in asmejour.bst; use pages= rather than eid= in sample .bib
+ - Reduce space between items in lists
+ - This version is backward compatible to the 2020/10 latex format. Older versions will not compile.
+ - Convert sample images to PDF/A-3u
+ - Convert remaining title block code to expl3
+ - Add error message for unused \\author command
+ - Construct \\@author token list for consistency with standard classes
+ - Revise documentation
+ - v1.25 is PDF/UA-2 compliant if: \[captionpatch\] option is used; subcaptions are not used; figures are compliant; and \[nolists\] option is called or \\ref\* is used in optional argument of captions. Validation: Arlington model and demo.vera.org.
+
v1.24 (2025/01/26)
- Drop metalogo package
- Add optional line numbers to author and title text
@@ -95,7 +116,7 @@
v1.21 (2023/10/22)
- Adjust loading order of hyperxmp and hyperref to accommodate v5.12 of hyperxmp package
- Change code that italicizes letters in subequation numbers to avoid conflict with hyperref
- - Adjust font loading under luaLaTeX, now requiring that TeX Gyre Termes, TeX Gyre Heros, and Inconsolatazi4 are installed as system fonts
+ - Adjust font loading under luaLaTeX, now requiring that TeX Gyre Termes, TeX Gyre Heros, and Inconsolatazi4 are available
- Enable line numbers in abstract
- Revise code handling footnotes (now protected); revise code handling most package options; remove some legacy code.
- Minor correction to asmejour.bst for \\hrefurl when used separately from asmejour.cls
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-sample.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-sample.bib 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-sample.bib 2025-04-07 19:47:37 UTC (rev 74870)
@@ -1,6 +1,6 @@
%% Sample bibliography file for asmejour.bst and asmejour.cls
%%
-%% Revised: 9 August 2024
+%% Revised: 2025-04-05
%% Copyright John H. Lienhard, MIT
%% Offered under the MIT license: https://ctan.org/license/mit
@@ -42,9 +42,9 @@
publisher = {John Wiley and Sons},
address = {New York, NY},
}
-%% book supports these fields: author OR editor, year, title, edition, version,
+%% book supports these fields: author OR editor, year, title, edition, version
%% series, volume OR number, publisher, address, type,
-%% doi OR url OR eprint with archive, note.
+%% doi OR url OR eprint with archive, page, chapter, note.
%% type={} field can change "Chap." to something else.
@incollection{stevens1999,
@@ -110,8 +110,8 @@
title = {A Dog's Life in Berlin},
publisher = {Oxford University Press},
address = {New York},
- doi = {10.1055/acprof.oso/97890.0394.000},
- note = {\doi{10.1055/acprof.oso/97890.0394.000}},
+ doi = {10.1115/1.888209},
+ note = {\doi{10.1115/1.888209}},
}
%% This example shows how to print a doi even though the doi field is hyperlinked to the title. An alternative is:
%% note = {\url{https://doi.org/10.1055/acprof.oso/97890.0394.000}},
@@ -130,24 +130,34 @@
@online{kern,
author = {Uwe Kern},
- year = {2021},
+ year = {2024},
title = {Extending \LaTeX's color facilities: the \textsf{xcolor} package},
- version = {2.13},
+ version = {3.02},
organization = {Comprehensive \TeX\ Archive Network},
url = {https://ctan.org/pkg/xcolor},
- urldate = {Dec. 22, 2021},
+ urldate = {Apr. 4, 2025},
}
@online{sharpe1,
author = {Michael Sharpe},
- year = {2021},
+ year = {2025},
title = {New {TX} Font Package},
- version = {1.659},
+ version = {1.756},
organization = {Comprehensive \TeX\ Archive Network},
url = {https://ctan.org/pkg/newtx},
- urldate = {Dec. 22, 2021},
+ urldate = {Apr. 3, 2025},
}
+ at online{robertson2023,
+ author = {Will Robertson},
+ title = {Experimental Unicode mathematical typesetting: The \textsf{unicode-math} package},
+ version = {0.8r},
+ organization = {Comprehensive \TeX\ Archive Network},
+ year = {2023},
+ url = {https://ctan.org/pkg/unicode-math},
+ urldate = {March 9, 2025},
+}
+
@article{lienhard2020,
author = {Lienhard, John H.},
title = {Heat Transfer in Flat-Plate Boundary Layers: A Correlation for Laminar, Transitional, and Turbulent Flow},
@@ -154,14 +164,16 @@
journal = jht,
volume = {142},
number = {6},
- eid = {061805},
+ pages = {061805},
year = {2020},
month = jun,
doi = {10.1115/1.4046795},
}
-%% Note eid field rather than page numbers. Will not produce "pp." before the eid number.
-%% May include numpages = {} to get "eid (numpages pages)"
-%% Note use of jht macro for title title (produces "ASME J. Heat Transfer"). All ASME journals have macros.
+% eid = {061805},
+%% Note use of pages field rather than eid,to follow ASME style of putting "p." before the eid number.
+%
+%% May include numpages = {#} with eid to get "eid (# pages)"
+%% Note use of jht macro for title (produces "ASME J. Heat Transfer"). All ASME journals have macros.
@article{lienhard2019,
author = {Lienhard, John H.},
@@ -169,21 +181,21 @@
journal = jht,
volume = {141},
number = {5},
- eid = {052701},
+ pages = {052701},
year = {2019},
month = mar,
doi = {10.1115/1.4042158},
}
-%% note use of: eid in place of pages, and use of jhmt macro for the journal name
+%% note use of: pages to hold eid, and use of jhmt macro for the journal name
@online{sharpe2,
author = {Michael Sharpe},
- year = {2018},
- title = {The \textsf{mathalfa} Package},
- version = {1.10},
+ title = {The \textsf{mathalpha}, {AKA} \textsf{mathalfa} Package},
+ version = {1.145},
organization = {Comprehensive \TeX\ Archive Network},
- url = {https://ctan.org/pkg/mathalfa},
- urldate = {Apr. 27, 2019},
+ year = {2025},
+ url = {https://ctan.org/pkg/mathalpha},
+ urldate = {March 9, 2025},
}
@online{fairbairns,
@@ -198,12 +210,12 @@
@online{fear,
author = {Simon Fear},
- year = {2019},
+ year = {2020},
title = {Publication Quality Tables in \LaTeX},
organization = {Comprehensive \TeX\ Archive Network},
version = {1.6180339},
url = {https://www.ctan.org/pkg/booktabs},
- urldate = {Nov. 6, 2019},
+ urldate = {Apr. 3, 2025},
}
@manual{GSL,
@@ -217,13 +229,12 @@
and Michael Booth
and Fabrice Rossi
and Rhys Ulerich},
- version = {2.4},
+ version = {2.7},
versiontype = {Release},
organization = {Free Software Foundation},
address = {Boston, MA},
- year = 2017,
+ year = 2021,
url = {https://www.gnu.org/software/gsl/},
- urldate = {Dec. 12, 2018},
}
%% manual supports these fields: author, year, title, edition, organization, address,
%% doi, eprint with archive, urldate, url, version, versiontype, note.
@@ -244,10 +255,10 @@
@online{texshop,
author = {Richard Koch},
- title = {{\TeX}{S}hop, Version 4.01},
- year = {2018},
+ title = {{\TeX}{S}hop, Version 5.49},
+ year = {2025},
url = {https://pages.uoregon.edu/koch/texshop/obtaining.html},
- urldate = {Apr. 16, 2018},
+ urldate = {Apr. 3, 2025},
organization = {University of Oregon},
address = {Eugene, OR},
}
@@ -254,52 +265,52 @@
@online{tolusis,
author = {Sigitas Tolu{\v{s}}is},
- year = {2017},
title = {The \textsf{flushend} Package},
- version = {3.3},
+ version = {4.0},
organization = {Comprehensive \TeX\ Archive Network},
- url = {https://www.ctan.org/pkg/flushend},
- urldate = {Oct. 1, 2019},
+ year = {2021},
+ url = {https://www.ctan.org/pkg/flushend},
+ urldate = {March 14, 2025},
}
@online{bottcher,
- author = {Stephan I. B{\"o}ttcher and Uwe L{\"u}ck},
- year = {2005},
+ author = {Stephan I. B{\"o}ttcher and Uwe L{\"u}ck and Karl Wette},
title = {\textsf{lineno.sty}: A {\LaTeX} Package to Attach Line Numbers to Paragraphs},
- version = {4.41},
+ version = {5.4},
organization = {Comprehensive \TeX\ Archive Network},
+ year = {2025},
url = {https://www.ctan.org/pkg/lineno},
- urldate = {Aug. 17, 2019},
+ urldate = {March 14, 2025},
}
@online{oostrum,
author = {Piet van Oostrum},
- year = {2019},
title = {The \textsf{fancyhdr} and \textsf{extramarks} Packages},
- version = {3.10},
+ version = {5.2},
organization = {Comprehensive \TeX\ Archive Network},
- url = {https://www.ctan.org/pkg/lineno},
- urldate = {Aug. 17, 2019},
-}
+ year = {2025},
+ url = {https://www.ctan.org/pkg/fancyhdr},
+ urldate = {March 14, 2025},
+}
@online{amsmath,
author = {{American Mathematical Society} and {LATEX3 Project}},
- year = {2018},
- title = {User's Guide for the \textsf{amsmath} Package },
- version = {2.1},
+ title = {User's Guide for the \textsf{amsmath} Package},
+ version = {2.17t},
organization = {Comprehensive \TeX\ Archive Network},
+ year = {2024},
url = {https://ctan.org/tex-archive/macros/latex/required/amsmath/amsldoc.pdf},
- urldate = {July 5, 2019},
+ urldate = {March 14, 2025},
}
- at online{lienhard2022,
- author = {Lienhard, V, John H.},
+ at online{lienhard2025,
+ author = {Lienhard, John H.},
title = {Wide Equations in {\texttt{asmejour.cls}}},
- version = {1.0},
+ version = {1.04},
organization = {Comprehensive \TeX\ Archive Network},
- year = {2022},
+ year = {2025},
url = {https://www.ctan.org/pkg/asmejour},
- urldate = {January 10, 2022},
+ urldate = {Apr. 5, 2025},
}
@book{ww1927,
@@ -310,6 +321,8 @@
publisher = {Cambridge University Press},
address = {Cambridge, UK},
url = {https://archive.org/details/courseofmodernan00whit},
+ chapter = {XIII},
+ pages = {265--280},
}
@article{euler1740,
@@ -334,16 +347,6 @@
}
% note={English translation by I.\ Bruce available here at \url{http://www.17centurymaths.com/contents/introductiontoanalysisvol1.htm}},
- at online{milde,
- author = {G\"{u}nter Milde},
- title = {{\texttt{substitutefont}}---Easy font substitution},
- version = {0.1.4},
- organization = {Comprehensive \TeX\ Archive Network},
- year = {2013},
- url = {https://www.ctan.org/pkg/substitutefont},
- urldate = {Dec. 9, 2020},
-}
-
@book{fourier1822,
author = {Jean Baptiste Joseph Fourier},
year = {1822},
@@ -480,16 +483,16 @@
}
@book{ahtt,
- author = {Lienhard, IV, John H. and Lienhard, V, John H.},
+ author = {Lienhard, V, John H. and Lienhard, IV, John H.},
title = {A Heat Transfer Textbook},
publisher = {Phlogiston Press},
- year = 2019,
+ year = 2024,
volume = {},
series = {},
address = {Cambridge, MA},
- edition = {5},
+ edition = {6},
month = aug,
- version = {5.00},
+ version = {6.00},
url = {https://ahtt.mit.edu},
}
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.tex 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/doc/latex/asmejour/asmejour-template.tex 2025-04-07 19:47:37 UTC (rev 74870)
@@ -3,7 +3,7 @@
%%
%% This file is asmejour-template.tex, a template to format papers in the style of ASME journal papers.
%%
-%% This file is version 1.24 dated 2024/01/26
+%% This file is version 1.25 dated 2024/04/07
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -23,7 +23,7 @@
%%
%% * Option to balance column heights on final page [balance]. This option sometimes
%% * misbehaves, so use it with an awareness that it can create unexpected problems.
-%% * This option is not compatible with line numbering.
+%% * This option is not compatible with line numbering and requires [nolists] option.
%%
%% * Options for copyright notices:
%% * Omit the ASME copyright from the footer [nocopyright]
@@ -35,39 +35,36 @@
%%
%% * Option for single column formatting [singlecolumn].
%%
-%% * Many options for calligraphic, script, and fraktur fonts from the mathalfa package; the
-%% * example value used is: mathalfa=cal=euler (use Euler font for \mathcal)
-%% * some other options for cal are: dutchcal, zapfc, cm (default), boondox,...
-%% * frak (fraktur), bb (blackboard bold), scr (script) may also be controlled.
+%% * Option for upright integrals [upint]
%%
-%% * Math options from M. Sharpe's newtxmath package: upright integrals [upint];
-%% * [varvw] for a v and w that are better distinguished from Greek nu; and other options
+%% * Additional math options from M. Sharpe's newtxmath package (pdfTeX only):
+%% * [varvw] for v and w that are better distinguished from Greek nu; fine
+%% * adjustments to subscripts [subscriptcorrection]; and various other options
%% * such as [smallerops, varg, slantedGreek, frenchmath, varbb, cmbraces].
+%%
+%% * Support for the unicode-math package and its math options (LuaLaTeX only)
%%
-%% * With pdfTeX, an option to use newtxtext's slightly larger small capitals font [largesc]
+%% * Options for the typewriter font:
+%% * [var0] replace default slashed zero by an unslashed zero
+%% * [mono] force interword separation to be monospaced
+%% * [hyphenate] allow hyphenation (pdfTeX only). Typewriter fonts usually are not hyphenated.
%%
-%% * Options for typewriter font
-%% * [var0] replace default slashed zero by unslashed zero
-%% * [mono] force interword separation to monospacing
-%% * [hyphenate] allow hyphenation, with pdfTeX only (normally, the typewriter font is not hyphenated)
-%%
%% * Options for the babel package to support passages in other languages (such as a translated
%% * abstract in an appendix), e.g. [german]. The main language will default to English
%% * unless a different main language is selected, e.g. [main=spanish]. See Appendix B for details.
%%
-%% * Legacy options for PDF/A compliance. With pdfTeX, [pdf-a] will produce PDF/A-3u compliance with sRGB OutputIntent.
-%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] will select other levels: 1b, 2b, 2u, and 3b.
-%% *
-%% * Since 2022, LaTeX has included integrated support for pdf-a, through the \DocumentMetadata{..}
-%% * command. This preferred approach works with both pdfTeX and luaLaTeX. The asmeconf class supports this new feature,
-%% * which can replace the aforementioned class options. (An up-to-date LaTeX installation is required.)
+%% * PDF/A archivability compliance. Since 2022, LaTeX has included integrated support for PDF/A,
+%% * through the \DocumentMetadata{..} command. This works with both pdfTeX and luaLaTeX.
+%% * The legacy PDF/A class options have been dropped as of mid-2025.
%%
-%% For details of the newtx and mathalfa packages, refer to their documentation (available at CTAN: http://ctan.org).
+%% For details of the newtx package, refer to its documentation (available at CTAN: http://ctan.org).
%%
%% The use of commands defined or modified by the asmejour class is illustrated below. In particular, some care
-%% is needed when using complicated math and macros in section headings,also illustrated below.
+%% is needed when using complicated math and macros in section headings, also illustrated below.
%%
- %=========================================================
+%% ==> LaTeX distributions older than Oct. 2020 are not supported.
+%%
+ %========================================================================
%%
%% LICENSE:
%%
@@ -77,13 +74,13 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% RECOMMENDED new pdf management code.
+%% RECOMMENDED pdf management code.
%% This addition the LaTeX kernel was made by the LaTeX Project team in June 2022.
%% see https://www.latex-project.org/news/latex2e-news/ltnews35.pdf
%% If you have problems with these lines, your LaTeX format may be out of date. You can comment them out.
\DocumentMetadata{%
- pdfstandard=A-3u,% A-2b, A-2u, A-3b, or A-3u. Don't use u option (unicode) with LuaLaTeX.
+ pdfstandard=A-3u,% A-2b, A-2u, A-3b, or A-3u; don't use A-3u with pdftex
pdfversion=1.7,
lang=en-US,
}
@@ -90,9 +87,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Class options are described above.
-\documentclass[nocopyright,upint,varvw,barcolor=Goldenrod3,mathalfa=cal=euler,balance,hyphenate,german]{asmejour}%
+%% Class options are described above. Use only the options you need. (Note: mathalfa option dropped in v1.25;
+%% load mathalpha in your preamble instead.)
+\documentclass[nocopyright,upint,varvw,hyphenate,barcolor=Goldenrod3,german]{asmejour}%
+\usepackage{hologo} % access various latex logos if needed
+
+
%%%% pdf metadata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\hypersetup{%
@@ -101,7 +102,7 @@
pdfkeywords={ASME journal paper, LaTeX template, BibTeX style, asmejour class},% <=== change to YOUR pdf keywords
pdfsubject = {Describes the asmejour LaTeX template}, % <=== change to YOUR subject
% pdfurl={https://ctan.org/pkg/asmejour},% may delete
- pdflicenseurl={https://ctan.org/pkg/asmejour},% may delete
+% pdflicenseurl={https://ctan.org/pkg/asmejour},% may delete
}
%%%% Journal name and optional copyright year %%%%%%%%%%%%%%
@@ -150,12 +151,11 @@
%%% Change these to your keywords. Keywords are automatically printed at the end of the abstract.
%%% This command must come BEFORE the end of the abstract.
%%% If you don't want keywords, omit the \keyword{..} command.
-\keywords{ASME, Paper, Template, {\upshape\LaTeX}, {\upshape\hologo{BibTeX}}}
+\keywords{ASME, Paper, Template, {\upshape\LaTeX}, {\upshape\hologo{BibTeX}}, {\upshape\hologo{pdfLaTeX}}, {\upshape\hologo{LuaLaTeX}} }
-
%% Abstract should be no more than 250 words
\begin{abstract}
-This paper is an example and {\upshape\LaTeX} template for the {\upshape\texttt{asmejour}} class. Papers typeset in this class will follow ASME journal style for margins, fonts, headings, captions, and reference formats. The class will also lay out the author, title, and abstract in ASME style. The pdf file produced will include internal and external hyperlinks, bookmarks, and pdf metadata. The class is intended to be used with the {\upshape\texttt{asmejour.bst} \hologo{BibTeX}}, which is part of this distribution. This style produces modern reference formats, following current ASME styles and including hyperlinked DOI and URL fields. Options to the class include line numbering, final column balancing, various math options, government copyright notices, 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 and a {\upshape\LaTeX} template for the {\upshape\texttt{asmejour}} class. Papers typeset in this class will follow ASME journal style for margins, fonts, headings, captions, and reference formats. The class will also lay out the author, title, and abstract in ASME style. The pdf file produced will include internal and external hyperlinks, bookmarks, and pdf metadata. The class is intended to be used with the {\upshape\texttt{asmejour.bst} \hologo{BibTeX}} style, which is part of this distribution. This style produces modern reference formats, including hyperlinked DOI and URL fields, and following current ASME practice. Options to the class include line numbering, final column balancing, various math options, government copyright notices, 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}
\date{Version \versionno, \today}%% You can modify this information as desired.
@@ -173,11 +173,11 @@
The \texttt{asmejour} class typesets papers with margins, fonts, headings, captions, and reference formats that follow those used in journals published by the American Society of Mechanical Engineers (ASME). Internal and external hyperlinks will be set automatically, and the pdf file will contain bookmarks and metadata. Many other useful features are supported.
-This class is not a publication of ASME, although the author has published in ASME journals since 1984. The intended use of this package is to enable authors to format their papers in ASME style prior to submission to an ASME journal for peer review.
+This class is not a publication of ASME, but the author has published in ASME journals since 1984. The intended use of this package is to enable authors to format their papers in ASME style prior to submission to an ASME journal for peer review.
The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the block containing the author[s], title, and abstract. The class calls a number of packages, all of which are contained in up-to-date versions of \TeX~Live, Mac\TeX, and similar platforms. If you find that you are missing a package, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}).
-For \hologo{LuaLaTeX}, you must have the following fonts installed as system fonts on your computer: TeX Gyre Termes, TeX Gyre Heros, and Insolatazi4. These fonts can be downloaded at no charge here: \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre} and \url{https://ctan.org/tex-archive/fonts/inconsolata/opentype}. No additional fonts should need to be loaded with \hologo{pdfLaTeX}.
+Both \hologo{pdfLaTeX} and \hologo{LuaLaTeX} will load fonts that should be in your \LaTeX\ installation (all are in TeX Live). If fonts are missing from your installation, you can get them in CTAN (\href{http://ctan.org}{ctan.org}). For best results, use an up-to-date \LaTeX\ installation and update it every year or so.
\subsection{Essential Initial Commands}
To begin, fill in the fields to be completed at top of the \texttt{asmejour-template.tex} file. The first are pdf metadata in the preamble that will tag the pdf file itself. Next is the \verb|\JourName{..}| command, which should be changed as appropriate (omit ``Journal of'').
@@ -202,7 +202,7 @@
Citations will be numbered automatically \cite{DKE1969}. They should be inserted at the appropriate point using a \verb|\cite{ref}| command~\cite{toohey2007,gibson2008}. The citations will be automatically sorted and compressed, as well, if they are given in a set \cite{stevens1999, DKE1969, wions2006, oligaria2011, mollen2014, smith2014, apple2019}. If naming a reference explicitly, put ``Ref.''\ in front of the number, as in Ref.~\cite{smith2014}. Reference~\cite{smith2014} is appropriate at the beginning of a sentence.
See the \texttt{asmeconf-sample.bib} file for examples of how to enter your references.
-Equations are typeset in the usual way. The class file loads the \texttt{amsmath} and \texttt{mathtools} packages. Further, the \texttt{newtxmath} package used for the math fonts includes many additional features.
+Equations are typeset in the usual way. The class file loads the \texttt{amsmath} and \texttt{mathtools} packages, which provide many macros to support sophisticated mathematics. Both work with either \hologo{pdfLaTeX} or \hologo{LuaLaTeX}.
\begin{equation}\label{eqn:1}
\mathbf{q} = -k\nabla T
\end{equation}
@@ -211,17 +211,17 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Section Headings and Captions}
-ASME requires that section headings and captions be set in bold face. In addition, the captions must be in sans serif type. The \texttt{asmejour} class will do this automatically. You can place \verb|\cite{..}|, \verb|\ref{..}|, \verb|\label{..}|, and into headings and captions directly, as you would in the main text. You can place \verb|\footnote{..}| into headings, but not into captions.\footnote{See \texttt{tex-stackexchange} for various approaches to footnotes in captions, if they seem necessary. For footnotes in tables, use the \texttt{tablefootnote} package.}
+ASME sets section headings and captions in bold face. In addition, the captions are in sans-serif type. The \texttt{asmejour} class chose appropriate fonts automatically. You can place \verb|\cite{..}|, \verb|\ref{..}|, \verb|\label{..}|, and into headings and captions directly, as you would in the main text. You can place \verb|\footnote{..}| into headings, but not into captions.\footnote{See \texttt{tex-stackexchange} for various approaches to footnotes in captions, if they seem necessary. For footnotes in tables, use the \texttt{tablefootnote} package.}
-Sections may either be numbered or left unnumbered. ASME publishes papers in either style.
+Sections may be numbered or left unnumbered. ASME publishes papers in either style.
-Math can be used in captions or section headings, and an appropriate math font will be automatically selected. For a section heading that includes complicated math (and macros), you may use the optional argument of \verb|\section[..]{..}| to create a pdf bookmark without losing characters or producing warnings or errors. See the \texttt{asmejour-template.tex} source file for examples of this technique. These bookmarks should usually be text expressions, although some math is supported.
+Single-sentence captions should not end with a period. Multi-sentence captions do include periods.
-If you wish to override the default math format in a heading or caption, put \verb|\mathversion{normal}| in the heading or caption. (The \texttt{newtxmath} package \cite{sharpe1} includes a complete set of bold math fonts, however, so the need to override should be rare.)
+Math can be used in captions or section headings, and an appropriate math font will be selected automatically. For a section heading that includes complicated math (and macros), you may use the optional argument of \verb|\section[..]{..}| to create a pdf bookmark without losing characters or producing warnings or errors. See the \texttt{asmejour-template.tex} source file for examples of this technique. These bookmarks should usually be text expressions, although some math is supported.
-Single-sentence captions should not end with a period. Multi-sentence captions do include periods.
+If you wish to override the default math format in a heading or caption, put \verb|\mathversion{normal}| in the heading or caption.
-\subsection{Subsection Headings}
+\subsection{More About Headings}
Section, subsection, and subsubsection headings should be in title case (first letter of primary words capitalized). ASME does not use \verb|\paragraph|, so the class file equates this command to \verb|\subsubsection|.
@@ -230,7 +230,8 @@
%% captions go below figures
\begin{figure}
\centering\includegraphics[width=\linewidth,alt={Linearization errors}]{sample-figure-1.pdf}
-\caption{Caption with math, eqn.~\eqref{eqn:1}: $\Delta T/T_m$ vs.\ $\Delta T/T_1$~\cite{lienhard2019}\label{fig:1}}
+% best practice is to change \eqref to (\ref* ) in optional argument of caption, but it's usually not important
+\caption[Caption with math, eqn.~(\ref*{eqn:1}): $\Delta T/T_m$ vs.\ $\Delta T/T_1$~\cite{lienhard2019}]{Caption with math, eqn.~\eqref{eqn:1}: $\Delta T/T_m$ vs.\ $\Delta T/T_1$~\cite{lienhard2019}\label{fig:1}}
\end{figure}
%%%%%%%%%%%%% end figure %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -244,7 +245,7 @@
The \texttt{booktabs} package \cite{fear} is loaded (and customized) to provide versions of \verb|\toprule|, \verb|\midrule|, and \verb|\bottomrule| appropriate to ASME-style tables.
-Table~\ref{tab:4} shows a table that spans both text columns. Figure~\ref{fig:2} shows a figure spanning both columns. Two column tables and figures will always float to the top of a later page. Subframes in figures, such as Fig.~\ref{fig:interior-region}, may be referenced individually.
+Table~\ref{tab:4} spans both text columns using the \texttt{table*} environment. Figure~\ref{fig:2} spans both columns using the \texttt{figure*} environment. Two column tables and figures will always float to the top of a later page. Subcaptions in figures, such as Fig.~\ref{fig:isothermal-wall}, may be labeled and referenced individually.
Text in the figures should be checked for legibility at either single-column width (about 83~mm) or full-column width (about 170~mm). Figure captions should be placed below figures. Images in figures are handled by the standard \texttt{graphicx} package.
@@ -257,7 +258,7 @@
\begin{subfigure}[t]{0.5\textwidth} % You will get same result using \begin{minipage}[t]{0.5\textwidth}
\centering{
\includegraphics[width=0.9\linewidth,alt={Nusselt number data for isothermal wall}]{sample-figure-2a.pdf}
- \subcaption{\label{fig:interior-region}}
+ \subcaption{}\label{fig:isothermal-wall}
}%
\end{subfigure}%
%%%%%%%% don't leave a break here
@@ -264,9 +265,9 @@
\begin{subfigure}[t]{0.5\textwidth} % You will get same result using \begin{minipage}[t]{0.5\textwidth}
\centering{
\includegraphics[width=0.927\linewidth,alt={Nusselt number data for constant heat flux wall}]{sample-figure-2b.pdf}
- \subcaption{\label{fig:exterior-region}}
+ \subcaption{}\label{fig:uniform-flux-wall}
}\end{subfigure}%
-\caption{A figure with two subfigures: \subref{fig:interior-region} uniform wall temperature; and \subref{fig:exterior-region} uniform wall heat flux, unheated starting length \cite{lienhard2020}\label{fig:2}}
+\caption{A figure with two subfigures: \subref{fig:isothermal-wall} uniform wall temperature; and \subref{fig:uniform-flux-wall} uniform wall heat flux, unheated starting length \cite{lienhard2020}\label{fig:2}}
\end{figure*}
%%%%%%%%%%%%%%% end two column figure %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -275,13 +276,13 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Reference Formatting with \texttt{asmejour.bst}}
-The {\upshape\texttt{asmejour.bst}} \hologo{BibTeX} style follows the reference styles observed in ASME journals in 2021.\footnote{\texttt{asmejour.bst} is intended as a replacement for the older style \texttt{asmems4.bst}, which does not follow ASME's current reference formats or support DOI and URL.} The vast majority of published references are to journal papers and books. Examples for these and many other entry types are given in the \texttt{asmejour-sample.bib} file, which is part of this distribution. Citations and references are managed by the standard \texttt{natbib} package.
+The {\upshape\texttt{asmejour.bst}} \hologo{BibTeX} style follows the reference styles observed in ASME journals in 2025.\footnote{\texttt{asmejour.bst} is intended as a replacement for the older style \texttt{asmems4.bst}, which does not follow ASME's current reference formats or support DOI and URL.} The vast majority of published references are to journal papers and books. Examples for these and many other entry types are given in the \texttt{asmejour-sample.bib} file, which is part of this distribution. Citations and references are managed by the \texttt{natbib} package.
Nevertheless, a few comments are necessary.
\subsection{Capitalization of Titles} ASME's bibliography style requires that titles be in title case. The first letters of principal words are capitalized. This must be done when writing the \texttt{.bib} file.
-%(ASME capitalizes ``With'', but not other prepositions).
+ASME capitalizes ``With'', but not other prepositions.
-\subsection{Hyperlinked Titles or Paper Numbers} When the entries \verb|@article{..|, \verb|@book{..|, \verb|@inbook{..|, \verb|@incollection{..|, \verb|@proceedings{..|, or \verb|@techreport{..| include \verb|doi={..}|, the document title, paper number, or report number will be hyperlinked to that doi number, and the doi number will not be printed. If no doi is included, but a url or eprint is included, then the title will be hyperlinked to that url or eprint. To display the doi (or the url or eprint when no doi is given), put it into the \verb|note={..}| field (using \verb|\doi{..| or \verb|\url{..| ):
+\subsection{Hyperlinked Titles or Paper Numbers} When the entries \verb|@article{..|, \verb|@book{..|, \verb|@inbook{..|, \verb|@incollection{..|, \verb|@proceedings{..|, or \verb|@techreport{..| include \verb|doi={..}|, the document title, paper number, or report number will be hyperlinked to that doi number, and the doi number will not be printed. If no doi is included, but a url or eprint is included, then the title will be hyperlinked to that url or eprint. To display the doi (or the url or eprint when no doi is given), put it into the \verb|note={..}| field (using \verb|\doi{..}| or \verb|\url{..}| ) like this:
\begin{quote}
\verb|note = {\doi{10.1115/1.4042912}}|
\end{quote}
@@ -292,7 +293,7 @@
%% captions go above tables
\begin{table}[t]
-\caption{A simple table\label{tab:1}}
+\caption{A simple table}\label{tab:1}
\centering{%
\begin{tabular}{l l r}
\toprule
@@ -338,7 +339,7 @@
\subsection{Conference Location and Date} For the entry types \verb|@inproceeedings{..| and \verb|@proceeedings{..|, you may include \verb|venue={..}| and \verb|eventdate={..}| to specify the city and the date of a conference. Omit \verb|address={..}| if \verb|venue={..}| is used.
\subsection{Version Number\footnote{Footnotes can appear in \texttt{\string\section} commands.\label{ftnt:3}}}
-The \verb|version={..}| field may be used with \verb|@book|, \verb|@online|, and \verb|@manual|. By default, the text will read \texttt{Version `number'} as in Refs.~\cite{sharpe1,sharpe2}, but different wording may be selected using the \verb|versiontype={..}| field, to have ``Revision'' or something similar, as in Ref.~\cite{GSL}. ASME often puts the version in the title, as in Refs.~\cite{dlmf, texshop}, so I've left the final decision for discussion between the authors and the copy editor.
+The \verb|version={..}| field may be used with \verb|@book|, \verb|@online|, and \verb|@manual|. By default, the text will read \texttt{Version `number'} as in Refs.~\cite{sharpe1,sharpe2}, but different wording may be selected using the \verb|versiontype={..}| field, e.g., to say ``Revision'' or something similar, as in Ref.~\cite{GSL}. ASME often puts the version in the title, as in Refs.~\cite{dlmf, texshop}, so I've left the final decision for discussion between the authors and the copy editor.
\subsection{Articles in Collections} In addition to the standard entry, \verb|@incollection{..|, an entry \verb|@inserialcollection{..| is defined for serials in which each volume has a different title. See the \texttt{asmejour-sample.bib} file for discussion and compare Ref.~\cite{clauser56} to Ref.~\cite{DKE70}.
@@ -353,16 +354,28 @@
\end{multline}
An example using \texttt{align} appears in Appendix~\ref{app:zetafunction}.
-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 floats and page breaks. See the examples in~\cite{lienhard2022}.
+For equations that seem impossible to break over several lines, two options are available. First,
+an experimental package for setting equations that span two columns, \texttt{asmewide.sty}, can be loaded, although that code may require hand-fitting around floats and page breaks (see the examples in~\cite{lienhard2025}). Second, a new page can be started in one-column mode, then returning to two-column mode:
+\begin{verbatim}
+\twocolumn[A passage of single column text.
+\[ F = \textrm{wide and unbreakable expression} \]
+]
+\end{verbatim}
+That approach also involves finding a break point, to avoid leaving a lot of white space on the previous pages.
+
Math italics are used for Roman and lower-case 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:newton2}
\vec{F} = m \vec{a} \quad\textrm{or}\quad \vec{\mathrm{F}} = m \vec{\mathrm{a}} \quad\textrm{or}\quad \mathbf{F} = m \mathbf{a} \quad\textrm{or}\quad \vec{\mathsf{F}} = m \vec{\mathsf{a}}
\end{equation}
-The class file also provides upright sans-serif Greek letters with \verb|\sfalpha| and similar expressions (e.g., $\sfalpha, \sfbeta, \sfgamma, \sfdelta$ \ldots $\bm{\sfalpha, \sfbeta, \sfgamma, \sfdelta \ldots}$).
-% (Note that the \verb|newtxmath| options \verb|frenchmath| and \verb|slantedGreek| also affect how Greek letters are presented.)
-ASME typesets vectors in upright bold, like the third instance in Eq.\ \eqref{eqn:newton2}, and sets matrices in bold italic. In the next equation, $\mathbf{w}$ is a vector and $\bm{J}_1$ is a matrix:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% The next passage needs to run with either lualatex or pdftex, which call bold-italic math differently. So we define the following to work with either:
+\newcommand*\MyMathbfit[1]{\ifPDFtex\bm{#1}\else\symbfit{#1}\fi}
+
+
+ASME typesets vectors in upright bold, like the third instance in Eq.~\eqref{eqn:newton2}, and sets matrices in bold italic. In the next equation, $\mathbf{w}$ is a vector and $\MyMathbfit{J}_1$ is a matrix:
\begin{equation}\label{eqn:dw}
d\mathbf{w} =
\begin{pmatrix}
@@ -371,50 +384,64 @@
\underbrace{\begin{pmatrix}
\partial u/\partial x & \partial u/\partial y \\
\partial v/\partial x & \partial v/\partial y
- \end{pmatrix}}_{=\,\bm{J}_1} \begin{pmatrix}
+ \end{pmatrix}}_{=\,\MyMathbfit{J}_1} \begin{pmatrix} %% see 12 lines above for \MyMathbfit !
dx \\ dy
\end{pmatrix}
\end{equation}
-
-To get additional symbols in bold math, you can use the \verb|\bm{..}| macro from the \texttt{bm} package, which is loaded by the class
+Note that selecting bold-face italic depends on the engine: with \hologo{pdfTeX}, do \verb|\bm{..}|; with \hologo{LuaLaTeX}, do \verb|\symbfit{..}|. But for both engines, you can get upright letters, as used in the text font, using \verb|\mathbf{..}| or with \verb|\textbf{..}|
\begin{equation}
-\mathbf{u}_r = u_r\bm{\hat{\textbf{\i}}}+v_r\bm{\hat{\textbf{\j}}}+w_r\bm{\hat{\textbf{k}}}
+\mathbf{u}_r = u_r\,\hat{\textbf{\i}}+v_r\,\hat{\textbf{\j}}+w_r\,\hat{\textbf{k}}
\end{equation}
-or, \textit{very} rarely, \verb|\mathversion{bold}| for an entire equation\footnote{For sans-serif math expressions, \texttt{asmejour.cls} provides \texttt{\string\mathversion \{sans\}} and \texttt{\string\mathversion \{sansbold\}}. These fonts can act as engineering gothic for figures.}:
+or, \textit{very} rarely (perhaps never?), \verb|\mathversion{bold}| for an entire equation\footnote{For sans-serif math expressions, \texttt{asmejour.cls} provides \texttt{\string\mathversion \{sans\}} and \texttt{\string\mathversion \{sansbold\}}. These fonts can act as engineering gothic for figures.}:
\mathversion{bold}\begin{equation}
S = k \ln w = k \ln \biggl(\frac{N!}{\prod_i N_i!}\biggr)
\end{equation}
-\mathversion{normal}% avoid extra line break with %
+\mathversion{normal}% avoiding an extra line break with %
+Note that the math version must be changed \textit{before} starting math mode. To end bold, do \verb|\mathversion{normal}|.
-\subsection{\texttt{newtxmath} and \texttt{mathalpha}} The \texttt{newtxmath} package~\cite{sharpe1}, loaded by default, includes a large number of options for mathematics, most of which can be called as options to \verb|\documentclass|. For example, the \texttt{upint} option of \texttt{newtxmath} selects upright integral signs (rather than slanted integral signs):
+Slanted lower-case greek letters are available in the usual way, e.g., \verb|\alpha|. The class file also provides \textit{upright} sans-serif Greek letters with \verb|\sfalpha| and similar expressions: $\sfalpha, \sfbeta, \sfgamma, \sfdelta,$ etc. Bold upright sans-serif greek can be obtained in \hologo{pdfTeX} as \verb|\bm{\sfalpha}| or in \hologo{LuaLaTeX} as \verb|\sfbfalpha|.
+
+Also note that \texttt{newtxmath} (\hologo{pdfTeX}) provides upright, serif Greek letters as, e.g., \verb|\upomega| (vs.\ \verb|\omega|).
+
+\subsection{The \texttt{newtxmath} and \texttt{unicode-math} Packages~\cite{sharpe1,robertson2023}} The \texttt{newtxmath} package, loaded by default with \hologo{pdfLaTeX}, includes many options for mathematics, most of which can be called as options to \verb|\documentclass|. For example, the \texttt{upint} option selects upright integral signs (rather than slanted integral signs):
\begin{quote}
-\verb|\documentclass[upint]{asmejour}|.
+\verb|\documentclass[upint]{asmeconf}|.
\end{quote}
-The option \verb|subscriptcorrection| improves the spacing of math subscripts. Math options are discussed further in the \texttt{asmejour-template.tex} file.
+The option \verb|subscriptcorrection| improves the spacing of math subscripts. Math options are discussed further in the \texttt{asmeconf-template.tex} file.
-In addition, many options for calligraphic, script, and fraktur fonts are available through the \texttt{mathalfa} package, which is also loaded. These may be invoked, for example, as
-\begin{quote}
-\verb|\documentclass[mathalfa=cal=euler]{asmejour}|
+If using \hologo{LuaLaTeX}, the math features of \texttt{unicode-math} are available. These include commands to select a boldface, upright symbol, \verb|\symbfup{..}| or \verb|\mathbfup{..}|, to select boldface fraktur symbol, \verb|\symbffrak{..}| or \verb|\mathbffrak{..}|, and so on. See the documentation of \texttt{unicode-math} for details~\cite{robertson2023}.
+
+The \texttt{[upint]} option also works under \hologo{LuaLaTeX}.
+
+
+\subsection{Controlling Calligraphic, Script, Fraktur, or BB Fonts}
+With \hologo{pdfLaTeX}, the \texttt{[mathalpha]} package may be loaded in the preamble~\cite{sharpe2}.\footnote{As of v1.25, the \texttt{[mathalfa]} class option has been dropped.} This package supports variety of font for calligraphic, fraktur, script, and blackboard bold fonts. For example,
+\begin{center}
+\verb|\usepackage[cal=euler,frak=boondox]{mathalpha}|
+\end{center}
+selects the Euler font for \verb|\mathcal| and the Boondox font for \verb|\mathfrak|. See the \texttt{mathalpha} documentation for details~\cite{sharpe2}.
+
+Under \hologo{LuaLaTeX}, the \texttt{unicode-math} \texttt{range} function can be used to select such fonts~\cite{robertson2023}. For example, the following command in the preamble would select the Euler Math font for calligraphic, script, fraktur, and blackboard bold fonts:
+\begin{quote}\raggedright
+\verb|\setmathfont{Euler-Math}[|
+\verb| range={cal,scr,frak,bb},|
+\verb| Extension=.otf,Scale=MatchUppercase]|
\end{quote}
-which selects the Euler font for \verb|\mathcal|, as in $A \in \mathcal{P}(A)$. %($\mathcal{T}_1 \subset \mathcal{T}_2$)
-To see all the font options, refer to the \texttt{mathalfa} documentation \cite{sharpe2}.
-The class is designed for use with \texttt{newtxmath} and does not support the \texttt{unicode-math} package.
%% Dealing with complicated math in a section heading: optional argument of \section provides the pdf bookmark
-%% without losing characters or producing warnings/errors. Note that bookmark can include simple math and \eqref{..}.
-%% newtxmath provides the option for upright Greek letters as \upomega (vs. \omega), etc.
-\subsection[Math in a Section Heading: \omega\cdot U=0]{Math in a Section Heading: $\tilde{\upomega}\cdot\hat{\mathrm{U}}=0$}
+%% without losing characters or producing warnings/errors. Note that bookmark can include simple math.
+%% The command \mathbf{U} takes the U the character from the bold text font
+\subsection[Math in a Section Heading: \omega\cdot U=0]{Math in a Section Heading: $\dot{\omega}\cdot\mathbf{U}=0$}
To include complicated math in a section heading without producing bookmark-related errors, use the optional argument of \verb|\section| to create the pdf bookmark. The heading above was set with the following command:
\begin{quote}\raggedright
\verb|\subsection[Math in a Section Heading:|
\hspace*{1em}\verb|\omega\cdot U=0]{Math in a Section Heading:|
-\hspace*{1em}\verb|$\tilde{\upomega}\cdot\hat{\mathrm{U}}=0$}|
+\hspace*{1em}\verb|$\dot{\omega}\cdot\mathbf{U}}=0$}|
\end{quote}
-Note that bookmarks can include simple math. Also note that \texttt{newtxmath} provides the option to obtain upright Greek letters, such as \verb|\upomega| (vs.\ \verb|\omega|).
+Note that bookmarks can include simple math.
-
\subsection{Units and Nomenclature} ASME requires SI units. U.~S.\ style units may follow in parentheses. Be sure to put your symbols into the nomenclature list, including the SI units.
@@ -440,7 +467,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Additional Options for \texttt{asmejour.cls}}
-%The class accepts a number of options in addition to those already described.
\subsection{Lists of Figures and Tables} A list of figures and a list of tables are generated automatically as the last page. To omit these lists, use the option \texttt{[nolists]}.
@@ -447,25 +473,26 @@
\subsection{Final Column Balancing} The option \texttt{[balance]} invokes the the \texttt{flushend} package~\cite{tolusis}.
This package will attempt to give equal height to the two columns on the last page. The performance of this package is sometimes inconsistent (with odd page layout or, very rarely, errors), so use this option with caution.
-\subsection{Line Numbers} The option \texttt{[lineno]} invokes the the \texttt{lineno} package~\cite{bottcher}. This will produce line numbers in the margins. You must run \LaTeX\ \textit{twice} for proper placement of the numbers. The \texttt{lineno} package is not compatible with the \texttt{flushend} package that makes final short columns the same height. Balancing is disabled when this option is called. See the documentation of the \texttt{lineno} package for further commands to control line numbering. The abstract, tables, captions, and footnotes will not be numbered.
+\subsection{Line Numbers} The option \texttt{[lineno]} invokes the the \texttt{lineno} package~\cite{bottcher}, which produces line numbers in the margins. You must run \LaTeX\ \textit{twice} for proper placement of the numbers. The \texttt{lineno} package is not compatible with the \texttt{flushend} package that makes final short columns the same height. Balancing is disabled when this option is called. See the documentation of the \texttt{lineno} package for further commands to control line numbering. The abstract, tables, captions, and footnotes will not be numbered.
\subsection{Changing the Footer Text}\label{sec:footer} The option \texttt{[nofoot]} will omit everything other than a page number from the page footer. The option \texttt{nocopyright} will omit the ASME copyright from the first page footer. The command \verb|\PreprintString{..}| replaces the words \textsf{PREPRINT FOR REVIEW}. The left and right preprint strings can be changed separately using an optional argument: \verb|\PreprintString{..}[L]| and \verb|\PreprintString{..}[R]|.
The final paper number may be added to the page number using \verb|\PaperNumber{..}|.
-The footers are all generated with the \texttt{fancyhdr} package~\cite{oostrum}, and you can change them using the commands of that package.
+The footers are generated with the \texttt{fancyhdr} package~\cite{oostrum}.
\subsection{Vertical Space on Title Page} The space between the author/title/abstract block and the main text defaults to 12.5~mm. Infrequently, a different value may be desirable. The space can be changed using \verb|\AbstractSep{..}|, where the argument is a \LaTeX\ dimension with units (e.g., 5mm).
-\subsection{Federal Copyright Notices} Several types of copyright statement can be placed an unnumbered footnote on the first page. Use the option \texttt{[govt]} when all authors are federal employees, \texttt{[govtsome]} when some authors are federal employees, and \texttt{[contractor]} when the authors are federal contractors.
+\subsection{Federal Copyright Notices} Several types of copyright statement can be placed in an unnumbered footnote on the first page. Use the option \texttt{[govt]} when all authors are federal employees, \texttt{[govtsome]} when some authors are federal employees, and \texttt{[contractor]} when the authors are federal contractors.
-\subsection{Archivability:~PDF/A} In June 2022, the \LaTeX 3 team added support for PDF/A to the \LaTeX\ kernel, using the command \verb|\DocumentMetadata{..}|. This approach works with \textit{both} \hologo{pdfLaTeX} and \hologo{LuaLaTeX}. Note that accessible conformance~(\texttt{a}) is still under development by the \LaTeX3 team.
-For out-of-date \LaTeX\ formats, compliance with PDF/A standards can be enabled using the legacy option \texttt{[pdf-a]} when running with \hologo{pdfLaTeX}. The default setting is PDF/A-3u with sRGB OutputIntent (\texttt{sRGB.icc}). If levels 1b, 2b, 2u, or 3b are desired, use the
-options \texttt{[pdfapart=1 or 2 or 3]} and \texttt{[pdfaconformance=b or u]}. Accessible conformance~(\texttt{a}) is not possible with this method.
+\subsection{Archivability:~PDF/A} In June 2022, the \LaTeX{}3 team added support for PDF/A to the \LaTeX\ kernel through the command \verb|\DocumentMetadata{..}|. This approach works with \textit{both} \hologo{pdfLaTeX} and \hologo{LuaLaTeX}. Note that accessible conformance~(\texttt{a} or \texttt{UA-2} level, a.k.a.\ ``well-tagged PDF'') is still under development by the \LaTeX3 team.
+As of \texttt{asmejour} v1.25, the legacy PDF/A options \texttt{[pdf-a]}, \texttt{[pdfapart=]}, and \texttt{[pdfaconformance=]} have been dropped.
+
+
\subsection{Typewriter Font Options} This font is the sans-serif, monospaced font \texttt{inconsolata}. By default, the word spacing is variable, but option \texttt{[mono]} ends this behavior. A slashed zero is the default; option \texttt{[var0]} removes the slash. Option \texttt{[hyphenate]} enables hyphenation of the typewriter font when running \hologo{pdfTeX}.
-\subsection{Single column layout} The option \texttt{[singlecolumn]} switches from two-column to single-column layout.
+\subsection{Single column layout} The class option \texttt{[singlecolumn]} switches from two-column to one-column layout.
%%%%%%%%%%%%%%% begin two column table %%%%%%%%%%%%%%%%%%
%
@@ -509,9 +536,9 @@
Documentation is provided in this file and by comments in the \texttt{.tex} source code. Examples of references are shown in the \texttt{asmejour-sample.bib} file. The \texttt{asemjour.bst} file produces references following ASME's current formats. The code is compatible with both {\hologo{pdfLaTeX}} and \hologo{LuaLaTeX}. This package is not a publication of ASME and is offered at no cost under the terms of the \hrefurl{https://ctan.org/license/mit}{MIT license}.
\begin{enumerate}
-\item First conclusion
+\item First conclusion
\item Second conclusion
-\item Third conclusion
+\item Third conclusion
\end{enumerate}
@@ -531,18 +558,21 @@
%%%%%%%%% NOMENCLATURE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% Name of nomenclature can be changed using an optional argument to the environment.
+%% The width of labels is set after two latex runs. If you don't like the result, an optional
+%% argument to the environment can be given with the desired width, e.g., [20pt].
+%% The name "nomenclature" can be changed using an optional second argument to the environment.
+%% e.g., \begin{nomenclature}[40pt][List of Symbols]
%%
-%% \EntryHeading{Greek Letters}
-%% \entry{symbol}{definition}
+%% Entries may be given as shown below:
%%
-%% Must run latex twice to align the columns.
-
+%% \EntryHeading{Greek Letters}
+%% \entry{symbol}{definition}
+%%
\begin{nomenclature}
% capital letter comes first, lower case second
% don't capitalize first word of the definition
-\entry{$\overline{h}$}{average heat transfer coefficient (W m$^{-2}$ K$^{-1}$)}
+\entry{$\overline{h}$}{average heat transfer coefficient (W m$\cramped{^{-2}}$ K$\cramped{^{-1}}$)}% \cramped{} lowers superscripts; see documentation of mathtools package!
\entry{$k$}{thermal conductivity (W m$^{-1}$ K$^{-1}$)}
\entry{$\mathbf{q}$}{heat flux vector (W m$^{-2}$)}
@@ -564,11 +594,10 @@
%%%%%%%%%%%%%%% APPENDICES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Note that appendices will be "numbered" A, B, C, ... etc. Use \section, not \section*
-%% Subsections need not be numbered, use \subsection*
-%% The equation counter is reset for each appendix
-%% Figures will be numbered consecutively
+%% The equation counter is automatically reset for each appendix
+%% Figures will be numbered consecutively with the paper.
-\appendix %%% starting appendices
+\appendix % starts appendices
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Incomplete Zeta Function~\cite{lienhard2019}\label{app:zetafunction}}
@@ -580,31 +609,34 @@
\end{align}
When $\lambda T \rightarrow \infty$, $f = 1$ and the last equation yields the well-known result
\begin{equation}
-\sigma T^4 =\frac{2\pi k_B^4 T^4}{h^3c_o^2} \underbrace{\int_0^\infty \frac{t^3}{e^t - 1} \, dt}_{\equiv\mspace{2mu} \zetaup(4)\Gamma(4)}
+\sigma T^4 =\frac{2\pi k_B^4 T^4}{h^3c_o^2} \underbrace{\int_0^\infty \frac{t^3}{e^t - 1} \, dt}_{\equiv\mspace{2mu} \zeta(4)\Gamma(4)}
\end{equation}
-where the Gamma function $\Gamma(4) = 3!$ and the Riemann zeta function, $\zetaup(4)$, has the indicated integral representation \cite[\S13.12]{ww1927}. A classical result due to Euler \cite{euler1740} gives $\zetaup(4) = \pi^4/90$ (see also \cite[\S167]{euler1748}), from which we recover the usual definition of the Stefan-Boltzmann constant, $\sigma$.
+where the Gamma function $\Gamma(4) = 3!$ and the Riemann zeta function, $\zeta(4)$, has the indicated integral representation \cite[\S13.12]{ww1927}. A classical result due to Euler \cite{euler1740} gives $\zeta(4) = \pi^4/90$ (see also \cite[\S167]{euler1748}), from which we recover the usual definition of the Stefan-Boltzmann constant, $\sigma$.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Language Support\label{app:language}}
ASME publishes in English, but the \texttt{babel} package is loaded for users who may wish to include other languages.
-For example, an author might wish to include an appendix that provides the abstract in another language.
+For example, an author might wish to include an appendix that provides the abstract in another language. As an example,
+a passage in German is shown in \selectlanguage{german}\appendixname~\ref{app:pohlhausen}\selectlanguage{english}.
When more than one language option is included in \verb|\documentclass[..]{asmejour}|, English will be
-assumed to be the main language of the document. (To choose a different main language, set \texttt{[main=..]}).
-If no language options are given, the package defaults to English. As an example, a passage in German is
-shown in \selectlanguage{german}\appendixname~\ref{app:pohlhausen}\selectlanguage{english}.
+assumed to be the main language of the document. (To choose a different main language, set the class option \texttt{[main=..]}).
The standard caption and section names will follow \texttt{babel}'s dictionary for primary languages other than English. Users may additionally change ``Keywords'', ``Nomenclature'', and ``Corresponding author'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, and \verb|\CAwords|. Changes to the page footer were described in Sec.~\ref{sec:footer}. The pdf bookmark for ``Appendices'' by be changed by renewing \verb|\appendicesname|.
-The font encoding is set to T1 and utf-8 input is supported:
+The font encoding is set to T1 (\hologo{pdfLaTeX}) or TU (\hologo{LuaLaTeX}), and utf-8 input is supported:
%% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete these lines 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.}
\ifluatex\typeout{Under LuaLaTeX, some of these accents must be obtained as escaped characters, with \=a, \c{e}, \l, \.o, \oe, \v{z}, \'z, etc.}\fi
-àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż
+àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż.
-No effort has been made to support customization of language-specific fonts (some fonts can be implemented using the \texttt{substitutefont} package~\cite{milde}). The bibliography style, \texttt{asmejour.bst}, is designed in English and aimed at \texttt{BibTeX}. Multilingual bibliographies can be supported using \texttt{BibLaTeX}.
+Note that some languages make characters ``active.'' For example, the \texttt{[spanish]} option of \texttt{babel} makes the period character active. This change conflicts with the default behavior of \texttt{dcolumn} in this class, which aligns table columns of type \verb|d{m.n}| on the decimal point (see comments in the \texttt{.cls} file).
+No effort has been made to support customization of language-specific fonts.\footnote{For English, you \textit{must} have these OpenType fonts (\texttt{.otf}) installed (all are in TeX Live and will be present if your installation is complete and up-to-date): TeX Gyre Termes, TeX Gyre Termes Math, TeX Gyre Heros, Inconsolatazi4, XITSMath-Bold, LeteSansMath, LeteSansMath-Bold, and STIX Two Math.} Such fonts can be implemented using \texttt{babel} commands with \texttt{fontspec} under \hologo{LuaLaTeX}. The bibliography style, \texttt{asmejour.bst}, is designed in English and aimed at \texttt{BibTeX}.
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\selectlanguage{german}
@@ -612,8 +644,9 @@
In einer strömenden Flussigkeit sind Wärmeleitung und Wärmekonvektion Vorgänge, die mit der inneren Reibung (oder Impulsleitung) und mit der Impulskonvektion große Aehnlichkeit besitzen. Mathematisch findet dies seinen Ausdruck in dem gleichartigen Bau der Differentialgleichungen, die einerseits für die Temperatur und anderseits für den Geschwindigkeitsvektor in der Flüssigkeit bestehen. Man kann daraus auf eine Beziehung
zwischen dem Wärmeaustanch und dem Reibungswiderstand schließen, die eine strömende Flüssigkeit an einem festen Körper hervorrufen. Dies ist zuerst von Prandtl ausgesprochen und durchgeführt worden, und zwar für turbulente Vorgänge, unter der vereinfachenden Annahme von Wärmequellen und -senken im Innern der Flüssigkeit~\cite{pohlhausen1921}.
-\selectlanguage{english}
+\selectlanguage{english}% don't forget to return to your main language
+
%%%%%%%%%%%%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\nocite{*} %% <=== Delete this line - unless you wish to typeset the entire contents of your .bib file.
@@ -627,4 +660,3 @@
%% To omit final list of figures and tables, use the class option [nolists]
\end{document}
-
\ No newline at end of file
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.tex 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/doc/latex/asmejour/asmewide_example/asmejour-wide-equation-examples.tex 2025-04-07 19:47:37 UTC (rev 74870)
@@ -21,8 +21,8 @@
\documentclass[nocopyright,nolists]{asmejour}
%% This file's version and date are:
- \def\AJwidetextversion{1.03}
- \def\AJverdate{January 26, 2025}
+ \def\AJwidetextversion{1.04}
+ \def\AJverdate{April 5, 2025}
%
\usepackage{asmewide}
\usepackage{lipsum}% Latin filler text (lipsum generates a message about 'unused global options' - this can be ignored)
@@ -143,10 +143,13 @@
\textcolor{red}{A two-column wide figure, Fig.~\ref{fig:1}, has floated from a previous page to the top of this page, but this figure does not interfere with the \texttt{widetext} environment (a single column figure would cause problems).}
+% let's have this work with either pdftex or luatex
+\newcommand*\MyBoldPhi{\ifPDFtex\bm{\Phi}\else\symbfup{\Phi}\fi}
+
\begin{widetext}
\begin{equation}\label{eqn:WT1}
\mathbf{WT1:}\quad
-\mathfrak{W}(\bm{\Phi})= \begin{Vmatrix}
+\mathfrak{W}(\MyBoldPhi)= \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]
@@ -251,14 +254,14 @@
\begin{widetext}[5]% reducing \stripsep from the default 10pt to 5pt with the option [5], to make more room below the equation number
\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}}
+\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{\displaystyle\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
+\newpage % note some differences in the size between pdftex and luatex; luatex needs this forced page break
\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\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{\displaystyle\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}
\vskip 3pt % some extra space for cramped equation number
@@ -271,7 +274,7 @@
\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
+ \ne \frac{1}{\sqrt{\displaystyle\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}
@@ -300,9 +303,9 @@
\lipsum[40-54]
-\textcolor{red}{For eqn.~\eqref{eqn:WT7}, we drop the bottom line, keeping the top line and reducing the vertical space a bit: \texttt{\textbackslash begin\{widetext\}[8][t]}.}
-\begin{widetext}[8][t]
-\begin{equation}\label{eqn:WT7}
+\textcolor{red}{For eqn.~\eqref{eqn:WT7}, we drop the bottom line, keeping the top line and removing the vertical space: \texttt{\textbackslash begin\{widetext\}[0][t]}.}
+\begin{widetext}[0][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}
@@ -317,7 +320,7 @@
\begin{widetext}[][b]
\begin{equation}\label{eqn:WT8}
\mathbf{WT8:}\quad
-\mathfrak{W}(\bm{\Phi})= \begin{Vmatrix}
+\mathfrak{W}(\MyBoldPhi)= \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]
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-2a.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/asmejour/sample-figure-2b.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/tex/latex/asmejour/asmejour.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/asmejour/asmejour.cls 2025-04-07 19:47:26 UTC (rev 74869)
+++ trunk/Master/texmf-dist/tex/latex/asmejour/asmejour.cls 2025-04-07 19:47:37 UTC (rev 74870)
@@ -5,8 +5,8 @@
%% The asmejour.cls file should be used with the files asmejour.bst (for citations) and asmejour-template.tex.
%%
%% This file's version and date are:
- \def\versionno{1.24}
- \def\versiondate{2025/01/26\space}
+ \def\versionno{1.25}
+ \def\versiondate{2025/04/07\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -21,14 +21,14 @@
%% 4. Support citations, footnotes, and bold face math in section headings
%% 5. Provide optional line numbers for editing and review
%% 6. Support balancing height of columns on the last page
-%% 7. Support archival PDF/A standards
-%% 8. Provide copyright notices for government employees and government contractors
-%% 9. Enable various math and text features from the newtxmath, mathalfa, and newtxtext packages
-%% 10. Support inclusion of passages in languages other than English
+%% 7. Provide copyright notices for government employees and government contractors
+%% 8. Enable various math features from the newtxmath or unicode-math packages
+%% 9. Support inclusion of passages in languages other than English
%%
%% This class is compatible with both pdfLaTeX and LuaLaTeX. All packages required by the class
%% are in standard distributions, such as TeX Live, and are also available at CTAN (https://ctan.org/).
-%% The use of an up-to-date (Nov. 2022 or later) and complete LaTeX distribution is strongly recommended.
+%% The use of a complete and up-to-date (Nov. 2022 or later) LaTeX distribution is strongly recommended;
+%% ==> Distributions older than Oct. 2020 are not supported.
%%
%% The title block is set by specific commands that are described in the asmejour-template.tex file.
%%
@@ -59,39 +59,36 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{asmejour}[\versiondate asmejour paper format]
+\ProvidesClass{asmejour}[\versiondate asmejour paper format (JHL)]
-\LoadClass[twoside,9pt]{extarticle}% twocolumn format initiated in \MakeTitle command 2024/07/20
+\LoadClass[twoside,9pt]{extarticle}% twocolumn format initiated by \maketitle command 2024/07/20
-\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc.
-\RequirePackage{ifthen}
-
+\newif\ifasmejour at pdftex
+\newif\ifPDFtex
\ExplSyntaxOn
- \str_const:Nn \ClassName {asmejour}
+ \sys_if_engine_pdftex:T {
+ \asmejour at pdftextrue
+ \PDFtextrue % for end user
+ }
+ \str_const:Nn \ClassName {asmejour}
+ \prop_put:Nnn \g_msg_module_type_prop { \ClassName } { Class }
\ExplSyntaxOff
+\RequirePackage{etoolbox}% patch amsmath and section headings
+
+
%%%%%%%%%%%%% Some compatibility for older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\providecommand\IfFormatAtLeastTF{\@ifl at t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01
\providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01
-\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23
\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15
\IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2020/10/01 or later are recommended for the asmejour class. Older formats may generate errors or fail entirely!}{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 any errors for now, but your abstract will not compile properly if you lack the xparse package [2020/02/25], and the code will crash entirely if you lack the iftex package [2019/11/07].}%
+ \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats older than 2020-10-01 will throw errors and may fail entirely! Formats dated 2022-11-01 or later are strongly recommended for the asmejour class.}{Please UPDATE your LaTeX distribution. TeX Live is available for download at no charge: see \string https://www.tug.org/texlive/.}%
}
-% check whether pdfmanagement (\DocumentMetadata) has been loaded (else fall back to hyperxmp and bookmark packages after loading hyperref)
-\newif\ifasme at pdfmanagement
-\IfPDFManagementActiveTF{
- \asme at pdfmanagementtrue
-}{
- \asme at pdfmanagementfalse
- \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead}
-}
-
-% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error
+% Allow pre 2021/11/15 formats to see the graphicx alt= key without causing an error
\IfFormatAtLeastTF{2021/11/15}{
\relax
}{
@@ -105,177 +102,150 @@
\RequirePackage{xparse}[2020/02/25]
\fi
-% Provide pre-2020/10 installations with basic unicode character mappings
-\IfFormatAtLeastTF{2020/10/01}{\relax}{%
- \pdfgentounicode=1 %% enable CMaps; was moved into the latex kernel Oct 2020
- \input glyphtounicode.tex %% lists of mappings; was moved into the latex kernel Oct 2020
-}
+% kvoptions and fnpos may be loaded as fallbacks for pre-2022/11 formats
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{kvoptions}% this package calls kvsetkeys
-\SetupKeyvalOptions{
- family=\ClassName,
- prefix=asmejour@,
- setkeys=\kvsetkeys,
-}
+\ExplSyntaxOn
+%\debug_on:n {all}
-%% for mathalfa, so we may pass options in this format: mathalfa=cal=euler, mathalfa=frak=boondox
-\define at key{\ClassName}{mathalfa}{%
- \PassOptionsToPackage{#1}{mathalfa}%
-}
+\msg_new:nnn { \ClassName } { mainlang } { Selecting~#1~as~the~primary~language }
+\msg_new:nnn { \ClassName } { mathalfa } { Former~mathalfa~option~has~been~dropped;~instead,~load~mathalpha~package~in~your~preamble }
-%% Option to obtain line numbers [singlecolumn], 2024/07/20
-\DeclareBoolOption{singlecolumn}
+\newif\ifasmejour at mainset
-%% Option to obtain line numbers [lineno]
-\DeclareBoolOption{lineno}
-%% Option to balance column height on last page [balance]
-\DeclareBoolOption{balance}
+%% Now create options and keys
+\IfFormatAtLeastTF{2022/11/01}{
+ \str_new:N \asmejour at barcolor
+ \str_set:Nn \asmejour at barcolor { black }% default
+%
+ %% Set main language
+ \cs_new:Nn \__asmejour_setupmain:n {
+ \PassOptionsToPackage{ main=#1 }{babel}
+ \asmejour at mainsettrue
+ \msg_note:nnn { \ClassName } { mainlang } {#1}
+ }
+ \DeclareKeys[\ClassName]
+ {
+ balance .if = asmejour at balance ,% Option to balance column height on last page [balance]
+ balance .usage = load ,
+ barcolor .store = \asmejour at barcolor ,% Optional color for vertical bar in title block [barcolor= ], from xcolor package
+ barcolor .usage = preamble ,
+ captionpatch .if = asmejour at captionpatch ,% Option to patch caption package for tagged pdf [captionpatch]. Experimental, 2025/03/31
+ captionpatch .usage = load ,
+ contractor .if = asmejour at contractor ,% Option for government contractor copyright notice [contractor]
+ contractor .usage = load ,
+ govt .if = asmejour at govt ,% Option for copyright notice if all authors are government employees [govt]
+ govt .usage = load ,
+ govtsome .if = asmejour at govtsome ,% Option for copyright notice if some (not all) authors are government employees [govtsome]
+ govtsome .usage = load ,
+ lineno .if = asmejour at lineno ,% Option to obtain line numbers [lineno]
+ lineno .usage = load ,
+ main .code = \__asmejour_setupmain:n { #1 },% Option to set main language (for babel) [main= ]
+ main .usage = preamble ,
+ mathalfa .code = \msg_warning:nn { \ClassName } { mathalfa },% Warn about old [mathalfa= ] keyvalue; an imperfect fix. 2025/04/01
+ mathalfa .usage = load ,
+ nocopyright .if = asmejour at nocopyright ,% Option to omit ASME copyright notice [nocopyright]
+ nocopyright .usage = load ,
+ nofoot .if = asmejour at nofoot ,% Option to omit ASME footers [nofoot]
+ nofoot .usage = load ,
+ nolists .if = asmejour at nolists ,% Option to omit lists of figures and tables [nolists]
+ nolists .usage = load ,
+ singlecolumn .if = asmejour at singlecolumn ,% Option for single column layout [singlecolumn]
+ singlecolumn .usage = load ,
+ }
+ \DeclareUnknownKeyHandler[\ClassName]{\relax}% suppress warning about unused keys
+ \ProcessKeyOptions
+
+}{% And more compatibility code for distributions pre-2022/11
+ \RequirePackage{kvoptions}% this package loads kvsetkeys
+ \SetupKeyvalOptions{
+ family=\ClassName,
+ prefix=asmejour@,
+ setkeys=\kvsetkeys,
+ }
+ %% Option to balance column height on last page [balance]
+ \DeclareBoolOption{balance}
+ %% Option to patch caption package for tagged pdf [captionpatch]. Experimental, 2025/03/31
+ \DeclareBoolOption{captionpatch}
+ %% Option for government contractor copyright notice [contractor]
+ \DeclareBoolOption{contractor}
+ %% Option for copyright notice if all authors are government employees [govt]
+ \DeclareBoolOption{govt}
+ %% Option for copyright notice if some (not all) authors are government employees [govtsome]
+ \DeclareBoolOption{govtsome}
+ %% Option to obtain line numbers [lineno]
+ \DeclareBoolOption{lineno}
+ %% Option to omit ASME copyright notice [nocopyright]
+ \DeclareBoolOption{nocopyright}
+ %% Option to omit ASME footers [nofoot]
+ \DeclareBoolOption{nofoot}
+ %% Option to omit lists of figures and tables
+ \DeclareBoolOption{nolists}
+ %% Option for single column layout [singlecolumn], 2024/07/20
+ \DeclareBoolOption{singlecolumn}
+
+ %% set key [barcolor=] to pass a color name defined by xcolor package
+ \DeclareStringOption[black]{barcolor}
-%% Option to omit lists of figures and tables
-\DeclareBoolOption{nolists}
-
-%% Option to omit ASME copyright notice [nocopyright]
-\DeclareBoolOption{nocopyright}
-
-%% Option to omit ASME footers [nofoot]
-\DeclareBoolOption{nofoot}
-
-%% Option for copyright notice if all authors are government employees [govt]
-\DeclareBoolOption{govt}
-
-%% Option for copyright notice if some (not all) authors are government employees [govtsome]
-\DeclareBoolOption{govtsome}
-
-%% Option for government contractor copyright notice [contractor]
-\DeclareBoolOption{contractor}
-
-%% set key [barcolor=] to pass a color name defined by xcolor package
-\DeclareStringOption[black]{barcolor}
-
-%% the key [main= ] to pass the choice of main language to babel
-\newif\ifaj at mainset\aj at mainsetfalse
-\define at key{\ClassName}{main}{%
- \PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflicts between certain .ldf files under "main=".
- \aj at mainsettrue
- \ClassNoteNoLine{\ClassName}{Selecting #1 as the primary language}
+ %% the key [main= ] to pass the choice of main language to babel
+ \newif\ifasmejour at mainset
+ \define at key{\ClassName}{main}{%
+ \PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflicts between certain .ldf files under "main=".
+ \asmejour at mainsettrue
+ \msg_note:nnn { \ClassName } { mainlang } {#1}
+ }
+ %% the key [mathalfa= ] was dropped with v1.25; instead, load the mathalpha package in your preamble
+ \define at key{\ClassName}{mathalfa}{%
+ \msg_note:nn { \ClassName } { mathalfa }
+ }
+ %% Suppress warnings about unused global options, 2021/12/01
+ \DeclareDefaultOption{}
+ \ProcessKeyvalOptions{\ClassName}
+
+ %% Turn off these keys now that we're done with them
+ \NewDocumentCommand\asmejour at DisableOption{m}{%
+ \DisableKeyvalOption[%
+ action=ignore,%
+ class=\ClassName%
+ ]{#1}{\asmejour at KeyFamily}%
+ }
+ \def\asmejour at KeyFamily{}
+ \NewDocumentCommand\asmejour at DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\asmejour at DisableOption}}
+ \asmejour at DisableKeys{singlecolumn;lineno;balance;nolists;nocopyright;nofoot;govt;govtsome;contractor;barcolor;main;mathalfa}
}
-%% Suppress warnings about unused global options, 2021/12/01
-\DeclareDefaultOption{}
-
-\ProcessKeyvalOptions{\ClassName}
-
-%% Turn off these keys now that we're done with them
-\NewDocumentCommand\aj at DisableOption{m}{%
- \DisableKeyvalOption[%
- action=ignore,%
- class=\ClassName%
- ]{#1}{\@KeyFamily}%
-}
-\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\aj at DisableOption}}
-
-\def\@KeyFamily{\ClassName}
-\@DisableKeys{mathalfa;singlecolumn;lineno;balance;nolists;nocopyright;nofoot;govt;govtsome;contractor;barcolor;main}
-
-
%% if main language was not was chosen explicitly, default to English
-\ifaj at mainset\relax\else
+\ifasmejour at mainset\relax\else
\PassOptionsToPackage{main=english}{babel}%
- \ClassNoteNoLine{\ClassName}{Selecting English as the primary language, since main= not set}%
+ \ClassNoteNoLine{\ClassName}{Selecting~English~as~the~primary~language,~since~main=~not~set}%
\fi
+\ExplSyntaxOff
-%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
+%%%%%%%%% Various font-related options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\ifaj at setpdfa\aj at setpdfafalse
-\newif\ifaj at pdfaone\aj at pdfaonefalse
+%% option for upright integral signs, rather than default slanted integrals, [upint]
+\def\UpInt{}% default slanted integrals in STIX Two Math font with unicode-math
+\DeclareOption{upint}{%
+ \ifasmejour at pdftex
+ \PassOptionsToPackage{upint}{newtxmath}% this option exists in newtxmath
+ \else
+ \def\UpInt{+ss08}% upright integrals in STIX Two Math font and Lete Sans Math fonts
+ \fi
+}
-\ifasme at pdfmanagement\else
-
- \SetupKeyvalOptions{
- family=pdfaopt,
- prefix=pdfaopt@,
- setkeys=\kvsetkeys,
- }
-
- \ifpdftex %% configure pdf/a compliance for pdflatex. Revised 2023/10/20
- %
- %%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u)
- \define at key{pdfaopt}{pdf-a}[true]{%
- \aj at setpdfatrue
- \PassOptionsToPackage{pdfa}{hyperref}
- \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% hyperref takes these options if hyperxmp is loaded
- }
- %%% to select part 1, 2 or 3
- \define at key{pdfaopt}{pdfapart}[3]{%
- \def\asmejour at tempa{#1}
- \AtBeginDocument{\hypersetup{pdfapart=\asmejour at tempa}}
- \ifthenelse{\equal{#1}{1}}{\aj at pdfaonetrue}{\relax}%
- }
- %% to select conformance b or u. NB: a is not currently possible with pdfLaTeX; u not possible with 1.
- \ExplSyntaxOn
- \define at key{pdfaopt}{pdfaconformance}[u]{%
- \str_set:Ne \l_tmp_str { \str_uppercase:n {#1} }
- \AtBeginDocument{\hypersetup{pdfaconformance=\l_tmp_str}}
- }
- \ExplSyntaxOff
- \else
- \define at key{pdfaopt}{pdf-a}[true]{%
- \aj at setpdfatrue
- }
- \fi
-
- \ProcessKeyvalOptions{pdfaopt}
-
- %% Done with these keys, so we can now disable them
- \def\@KeyFamily{pdfaopt}
- \@DisableKeys{pdf-a;pdfapart;pdfaconformance}
-
- %% new pdf management in LaTeX, using \DocumentMetaData{..}, is preferred to this approach.
- \ifpdftex
- \ifaj at pdfaone
- \pdfminorversion=4 % for pdf/a-1 need version 4, not 7
- \else
- \pdfminorversion=7 % this selection is not required
- \fi
- \else
- \ifaj at setpdfa\ClassWarningNoLine{\ClassName}{pdf-a option requires pdfLaTeX. Under LuaLaTeX, use %
- \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{\ClassName}}%
- \fi
- \ifx\directlua\undefined\else % default under lualatex is 1.4
- \directlua{
- if pdf.getminorversion() \string~= 7 then
- if (status.pdf_gone and status.pdf_gone > 0)
- or (status.pdf_ptr and status.pdf_ptr > 0) then
- tex.error("PDF version cannot be changed anymore")
- else
- pdf.setminorversion(7)
- end
- end
- }
- \fi
- \fi
+%% Select larger small capitals font from newtxtext, set as default 2025/03/30
+\ifasmejour at pdftex
+ \PassOptionsToPackage{largesc=true}{newtxtext}
\fi
-
-%%%%%%%%% Various font-related options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% Option for slightly larger small capitals font [largesc], corrected 2021/01/29
-\DeclareOption{largesc}{\PassOptionsToPackage{largesc=true}{newtxtext}}% largesc is a boolean key in newtxtext
-
-%% Disable newtxtext osf option, which is not appropriate for documents in this class
-\DeclareOption{osf}{%
- \PassOptionsToPackage{lining}{newtxtext}%
-}
-
+%% Option to allow hyphenation of typewriter font [hyphenate]
\DeclareOption{hyphenate}{%
- \ifpdftex
+ \ifasmejour at pdftex
\PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
\ClassNoteNoLine{\ClassName}{Allowing hyphenation of typewriter font}%
\else
@@ -284,9 +254,9 @@
}
%% Option to enforce monospacing of words the typewriter font [mono]
-\def\MonoNotMono{WordSpace={1,1,1}}% rescaled tt font to match pdf, 2024/07/30
+\def\MonoNotMono{WordSpace={1,1,1}}% rescale fontspec's tt font to match pdf tt font, 2024/07/30
\DeclareOption{mono}{%
- \ifpdftex
+ \ifasmejour at pdftex
\PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata
\else
\def\MonoNotMono{WordSpace={1,0,0},PunctuationSpace={3}}% 2024/07/30, these are actually default WordSpace values
@@ -293,10 +263,10 @@
\fi
}
-%% option for unslashed zero typewriter font [var0].
+%% Option for unslashed zero typewriter font [var0]
\def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero
\DeclareOption{var0}{%
- \ifpdftex
+ \ifasmejour at pdftex
\PassOptionsToPackage{var0}{inconsolata}% var0 is a key via xkeyval in inconsolata
\else
\def\ssztwo{+ss02}% stylistic alternate for regular zero
@@ -305,7 +275,6 @@
%% Suppress warnings about keys as unused global options
\DeclareOption*{}
-
\ProcessOptions \relax
@@ -330,54 +299,55 @@
\RequirePackage{array}
\RequirePackage{dcolumn}% column alignment on decimal places
-\newcolumntype{d}[1]{D{.}{.}{#1}}
+ \newcolumntype{d}[1]{D{.}{.}{#1}}
+ % NB: The above conflicts with babel's Spanish language option which makes "." an active character.
+ % Instead: use "," as the decimal separator, choose columntype "," (as in "12,234"), and put
+ % \newcolumntype{,}[1]{D{,}{,}{#1}} in your preamble.
+
%% make \hline in tables heavier than default 0.4pt
-\setlength\arrayrulewidth{.5\p@}
+\setlength\arrayrulewidth{0.5\p@}
+%% use double-rules for top and bottom of tables, per ASME style
\RequirePackage{booktabs}
-\renewcommand*{\toprule}{\specialrule{0.5pt}{0pt}{\doublerulesep}\specialrule{0.5pt}{0pt}{3pt}}
-\renewcommand*{\midrule}{\specialrule{0.5pt}{2pt}{3pt}}
-\renewcommand*{\bottomrule}{\specialrule{0.5pt}{1pt}{\doublerulesep}\specialrule{0.5pt}{0pt}{0pt}}
+ \renewcommand*{\toprule}{\specialrule{0.5pt}{0pt}{\doublerulesep}\specialrule{0.5pt}{0pt}{3pt}}
+ \renewcommand*{\midrule}{\specialrule{0.5pt}{2pt}{3pt}}
+ \renewcommand*{\bottomrule}{\specialrule{0.5pt}{1pt}{\doublerulesep}\specialrule{0.5pt}{0pt}{0pt}}
%%%%%%%%%%%%% Font related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{mathtools}% loads and extends amsmath
-\RequirePackage[]{babel}
+\RequirePackage[]{babel}% supports languages other than English, if used.
-\ifpdftex
+\ifasmejour at pdftex
\RequirePackage[T1]{fontenc}
- \RequirePackage[utf8]{inputenc}% for backward compatibility with pre-2018 LaTeX distributions
%% ASME word separation is greater than newtxtext defaults so change these parameters.
%% increased shrink from 0.08, 2021/01/30; add this helvetica scaling 2022/06/26
\RequirePackage[helvratio=0.91, spacing=0.3em, stretch=0.18em, shrink=0.10em]{newtxtext}% default {0.25em,0.2em,0.1em}
\RequirePackage[varl,varqu]{inconsolata}% sans typewriter font; restored varl, varqu 2020/08/10
\RequirePackage[]{newtxmath}
-\else % use lualatex with newtxmath and fontspec for text primary fonts. Revised 2023/10/21.
+ \RequirePackage{bm}% load after all math for expanded access to bold math
%
- %% TeX Gyre Heros Condensed is qhvc (regular is qhv).
- \RequirePackage[T1]{fontenc} % qhvc is not TU encoded
- \DeclareFontFamily{T1}{qhvc}{}
- \DeclareFontShape{T1}{qhvc}{m}{n}{<-> s*[0.91] ec-qhvcr}{} %% see t1qhvc.fd; 0.9-->0.94 2022/01/15; 0.94-->0.91 2022/06/26
- \DeclareFontShape{T1}{qhvc}{b}{n}{<-> s*[0.91] ec-qhvcb}{} %% see t1qhvc.fd; 0.9-->0.94 2022/01/15; 0.94-->0.91 2022/06/26
+\else
+ % Revised 2025/04/01
+ \RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+ % suppress tiresome warnings about lack of integration between mathtools and unicode-math
+ % unicode-math loads the fontspec package
%
- \RequirePackage[varqu,varl]{inconsolata} % typewriter font for math
- \renewcommand\rmdefault{ntxtlf} % roman font for math
- \DeclareFontFamily{T1}{\sfdefault}{} % sf for math
- \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,}
-%
- \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed as system fonts on your computer: TeX Gyre Termes and TeX Gyre Heros (from \string http://www.gust.org.pl/projects/e-foundry/tex-gyre) and Inconsolatazi4 (\string https://ctan.org/tex-archive/fonts/inconsolata/opentype). If you DON'T have these fonts, you will see ERROR messages!}
+ \def\FontWarning{For luaLaTeX, you MUST have these OpenType fonts installed on your computer: TeX Gyre Termes X, TeX Gyre Termes Math, TeX Gyre Heros, Inconsolatazi4, XTISMath-Bold, LeteSansMath-Bold, LeteSansMath, and STIXTwoMath. All are in TeX Live and CTAN. If you DON'T have these fonts, you will see warning or ERROR messages}
%
- \IfFontExistsTF{TeX Gyre Termes}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
- \IfFontExistsTF{texgyreheros}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
- \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{TexGyreTermesX-regular.otf}{}{ \ClassErrorNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyretermes-math.otf}{}{ \ClassErrorNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros-regular.otf}{}{ \ClassErrorNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4-Regular.otf}{}{ \ClassErrorNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{XITSMath-Bold.otf}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{LeteSansMath-Bold.otf}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{LeteSansMath.otf}{}{ \ClassWarningNoLine{\ClassName}{\FontWarning} }
+ \IfFontExistsTF{STIXTwoMath-Regular.otf}{}{ \ClassErrorNoLine{\ClassName}{\FontWarning} }
%
- % The newtx package includes a modified version of TeXGyreTermes called TexGyreTermesX, which could be loaded instead (includes
- \setmainfont{TeXGyreTermes}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ % The newtx package includes a modified version of TeXGyreTermes called TexGyreTermesX, which could be loaded instead.
+ \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! In CTAN (under the newtx heirarchy)
WordSpace = {1.20,1.44,1.2},% This stretch matches newtxtext fontdimens (reset 2024/07/30)
PunctuationSpace = {1.33},% reset 2024/07/30
Extension = .otf,
@@ -390,6 +360,7 @@
\setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
WordSpace = {1,1,1.0036},%% This stretch matches newtxtext fontdimens (reset 2024/07/30)
PunctuationSpace = {1.0036},% reset 2024/07/30
+ Scale=0.91,% same as for newtx; former value 0.9 too small 2022/01/15
Extension = .otf,
UprightFont = *-regular,
ItalicFont = *-italic,
@@ -396,7 +367,6 @@
BoldFont = *-bold,
BoldItalicFont = *-bolditalic,
Numbers = Lining,
- Scale=0.91,% 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)
Scale=1.0,% rescaled 1.05, 2022/03/10; reset to 1 2024/07/30, based on fontdimen6 (and all others!)
@@ -405,16 +375,120 @@
ItalicFont = *-Regular,% has no italic face
BoldFont = *-Bold,
BoldItalicFont = *-Bold,% has no italic face
- RawFeature = {+ss01,\ssztwo,+ss03},
+ RawFeature = {+ss01,\ssztwo,-ss03},
\MonoNotMono,% WordSpace and PunctuationSpace are set in the class option [mono]
]
+ \setmathfont{texgyretermes-math}[% Presumes it's installed! http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ Scale=MatchUppercase,
+ Extension = .otf,
+ ]
+ \ExplSyntaxOn
+ \IfFontExistsTF{XITSMath-Bold.otf}{
+ \setmathfont{XITSMath-Bold.otf}[Scale=MatchUppercase,version=bold]% font is missing \cdot U+22C5
+ \setmathfontface\mathrm{XITSMath-Bold.otf}[Scale=MatchUppercase,version=bold]
+ \AddToHook{begindocument/end} % this command added to LaTeX, 2020/10
+ {
+ \NewCommandCopy{\standardcdot}{\cdot} % thanks to Enrico Gregorio and David Carlisle for this solution
+ \cs_set_protected:Npn \cdot
+ {
+ \str_if_eq:vnTF { math at version } { bold }
+ { \cdotp } % U+00B7
+ { \standardcdot } % U+22C5
+ }
+ }
+ }{
+ \ClassWarningNoLine{\ClassName}{XITS Math Bold font not found, falling back to Tex Gyre Termes Math with FakeBold}%
+ \setmathfont{texgyretermes-math}[Scale=MatchUppercase,version=bold,FakeBold=3.5]
+ \setmathfontface\mathrm{texgyretermes-math}[Scale=MatchUppercase,version=bold,FakeBold=3.5]
+ }
+ \ExplSyntaxOff
+%
+ % set up sans and sansbold math fonts
+ \IfFontExistsTF{LeteSansMath-Bold.otf}% the bold version was released a few months after the regular, but we need both.
+ {
+ \setmathfont{LeteSansMath-Bold}[% In TeX Live. A newer math font (2024/05), boldface sans serif
+ Scale=MatchUppercase,
+ Extension = .otf,
+ RawFeature={\UpInt},
+ version=sansbold,
+ ]
+ \setmathfontface\mathrm{LeteSansMath-Bold.otf}[
+ Scale=MatchUppercase,
+ version=sansbold
+ ]
+ \setmathfont{LeteSansMath}[
+ Scale=MatchUppercase,
+ Extension = .otf,
+ RawFeature={\UpInt},
+ version=sans,
+ BoldFont = *-Bold,
+ NFSSFamily=lsm,
+ ]
+ \setmathfontface\mathrm{LeteSansMath.otf}[
+ Scale=MatchUppercase,
+ version=sans,
+ ]
+ \setmathfontface\mathbf{LeteSansMath-Bold.otf}[
+ Scale=MatchUppercase,
+ version=sans,
+ ]
+ \setmathfont{STIXTwoMath-Regular}[% In TeX Live. Substitution for bigger integrals (similar to newtxmath)
+ Extension = .otf,
+ Scale=MatchUppercase,
+ RawFeature={\UpInt},
+ BoldFont=*,
+ range={"0222B-"02233,"02A0B-"02A1C,},
+ ]
+ }{
+ \ClassWarningNoLine{\ClassName}{Lete Sans Math Bold font not found, falling back to Fira Math with FakeBold}%
+ \setmathfont{FiraMath-Regular}[% 2020 version of Regular is in TeX Live
+ Scale=MatchUppercase,
+ Extension = .otf,
+ version=sansbold,
+ FakeBold = 4,
+ ]
+ \setmathfontface\mathrm{FiraMath-Regular.otf}[
+ Scale=MatchUppercase,
+ version=sansbold,
+ FakeBold = 4,
+ ]
+ \setmathfont{FiraMath-Regular}[% 2020 version of Regular is in TeX Live
+ Scale=MatchUppercase,
+ Extension = .otf,
+ version=sans,
+ NFSSFamily=fsm,
+ BoldFont=*,
+ BoldFeatures = {FakeBold=4},
+ ]
+ \setmathfontface\mathrm{FiraMath-Regular.otf}[
+ Scale=MatchUppercase,
+ version=sans,
+ ]
+ \setmathfontface\mathbf{FiraMath-Regular.otf}[
+ Scale=MatchUppercase,
+ version=sans,
+ FakeBold=4,
+ ]
+ \setmathfont{STIXTwoMath-Regular}[% In TeX Live. Subst. bigger integrals (similar to newtxmath) + cal,scr,frak
+ Extension = .otf,
+ Scale=MatchUppercase,
+ BoldFont = *,
+ RawFeature={\UpInt},
+ range={"0222B-"02233,"02A0B-"02A1C,frak,bffrak,cal,bfcal,scr,bfscr}
+ ]
+ }
+%
+ \setmathfontface\mathsf{texgyreheros-bold.otf}[Scale=0.91,version=sansbold] % for sf
+ \setmathfontface\mathit{texgyreheros-bolditalic.otf}[Scale=0.91,version=sansbold] % for it
+ \setmathfontface\mathtt{Inconsolatazi4-Bold.otf}[Scale=1.0,version=sansbold] % for tt
+
+ \setmathfontface\mathsf{texgyreheros-regular.otf}[Scale=0.91,version=sans] % for sf
+ \setmathfontface\mathit{texgyreheros-italic.otf}[Scale=0.91,version=sans] % for it
+ \setmathfontface\mathtt{Inconsolatazi4-Regular.otf}[Scale=1.0,version=sans] % for tt
+%%
+ \setoperatorfont\normalfont % to enable sans or bold operators, etc.
\fi
-\RequirePackage[]{mathalfa}% load optional fonts for Calligraphy, Script, etc.
-
-\RequirePackage{bm}% load after all math for expanded access to bold math
-
-%% In addition to the word spacing options declared in line 371...
%% Relative to size9.clo: leading reduced to 10 pt; displayskips made greater
\renewcommand\normalsize{%
\@setfontsize\normalsize\@ixpt{10\p@}% % <== was \@xipt
@@ -431,48 +505,55 @@
\tolerance 2500
\emergencystretch 3em
-%% TeX Gyre Heros Condensed is qhvc (regular is qhv).
+%% Fonts for author and title only: TeX Gyre Heros Condensed (qhvc, regular is qhv)
+\DeclareFontFamily{T1}{qhvc}{}% qhvc is not TU encoded
+\DeclareFontShape{T1}{qhvc}{m}{n}{<-> s*[0.91] ec-qhvcr}{} %% see t1qhvc.fd; 0.9-->0.94 2022/01/15; 0.94-->0.91 2022/06/26
+\DeclareFontShape{T1}{qhvc}{b}{n}{<-> s*[0.91] ec-qhvcb}{} %% see t1qhvc.fd; 0.9-->0.94 2022/01/15; 0.94-->0.91 2022/06/26
\newcommand*{\CondSans}{\fontencoding{T1}\fontfamily{qhvc}\selectfont}% remove extra \selectfont, 2023/10/21
-\renewcommand\huge{\@setfontsize\huge{14}{14}} %... for author names only
+\newcommand\Condhuge{\@setfontsize\huge{14}{14}} %... for author names only
\newcommand*{\CondSansBold}{\renewcommand\bfdefault{b}\fontencoding{T1}\fontfamily{qhvc}\selectfont\bfseries}
-\renewcommand\Huge{\@setfontsize\Huge{26.5}{26.5}} %... for title only
+\newcommand\CondHuge{\@setfontsize\Huge{26.5}{26.5}} %... for title only
-\RequirePackage{hologo}% Access to various LaTeX logos (for use in the documentation). Dropped metalog 2024/08/09
-
-%% This provides sans serif italic and sans serif bold italic math, against with fonts from newtxsf.
-%% For use in the figure and table captions.
-\DeclareMathVersion{sansbold}
+\ifasmejour at pdftex
+ %% sans math version, potential value with PGFPlots, etc., 2021/01/25 %%%
+ \DeclareMathVersion{sans}
+ \SetSymbolFont{letters}{sans}{OML}{ntxsfmi}{m}{it}
+ \SetSymbolFont{lettersA}{sans}{U}{ntxsfmia}{m}{it}
+ \IfFormatAtLeastTF{2016/01/05}{%
+ \SetSymbolFont{symbols}{sans}{LMS}{ntxsy}{m}{n}
+ }{\relax}
+ \SetSymbolFont{largesymbols}{sans}{LMX}{ntxexx}{m}{n}
+ \SetSymbolFont{largesymbolsTXA}{sans}{U}{ntxexa}{m}{n}
+ \SetSymbolFont{operators}{sans}{OT1}{\sfdefault}{m}{n}% fixed encoding 2025/04/04
+ \SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}% make upright 2021/01/31.
+%
+ %% sans serif italic and sans serif bold italic math
+ \DeclareMathVersion{sansbold}
\SetSymbolFont{letters}{sansbold}{OML}{ntxsfmi}{b}{it}
\SetSymbolFont{lettersA}{sansbold}{U}{ntxsfmia}{b}{it}
\SetSymbolFont{symbols}{sansbold}{LMS}{ntxsy}{b}{n}
\SetSymbolFont{largesymbols}{sansbold}{LMX}{ntxexx}{b}{n}% added 2021/01/26
\SetSymbolFont{largesymbolsTXA}{sansbold}{U}{ntxexa}{b}{n}% added 2021/01/26
- \SetSymbolFont{operators}{sansbold}{\encodingdefault}{\sfdefault}{\bfdefault}{n}
+ \SetSymbolFont{operators}{sansbold}{OT1}{\sfdefault}{\bfdefault}{n}% fixed encoding 2025/04/04
\SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{n}% \mathsf is upright
+%
+\fi
-%% Provide math accents for the sans and sansbold math versions. Accents from ntxsfmi work normally
-%% with regular times fonts. 2021/01/27
-\DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it}
+%%%%%%%%%%%%%% Sans serif upright greek and sans mathversion %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% revised 2025/04/03
+%
+\ifasmejour at pdftex
+ %% Provide sans-serif *upright* Greek letters, following a suggestion by Michael Sharpe (March 2019).
+ %% Following Sharpe's newtxsf implementation of the STIX fonts, under the LaTeX Project Public License.
+ %% (Note that \mathversion{sansbold} provides sans-serif *italic* Greek letters.)
+
+ \DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{normal}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{it}
+ \SetSymbolFont{lettersAB}{sans}{U}{ntxsfmia}{m}{it}
\SetSymbolFont{lettersAB}{sansbold}{U}{ntxsfmia}{b}{it}
- \DeclareFontSubstitution{U}{ntxsfmia}{m}{it}
-
- \DeclareMathAccent{\grave}{\mathord}{lettersAB}{254}
- \DeclareMathAccent{\acute}{\mathord}{lettersAB}{255}
- \DeclareMathAccent{\check}{\mathord}{lettersAB}{186}
- \DeclareMathAccent{\breve}{\mathord}{lettersAB}{187}
- \DeclareMathAccent{\bar}{\mathord}{lettersAB}{221}
- \DeclareMathAccent{\mathring}{\mathord}{lettersAB}{222}
- \DeclareMathAccent{\hat}{\mathord}{lettersAB}{223}
- \DeclareMathAccent{\dot}{\mathord}{lettersAB}{224}
- \DeclareMathAccent{\tilde}{\mathord}{lettersAB}{219}
-
-%% Provide sans-serif *upright* Greek letters, following a suggestion by Michael Sharpe. 2021/12/22
-%% Following Sharpe's newtxsf implementation of the STIX fonts, under the LaTeX Project Public License.
-%% (Note that \mathversion{sansbold} provides sans-serif *italic* Greek letters.)
-
- \DeclareMathSymbol{\sfGamma}{\mathalpha}{lettersAB}{0}% adjust to avoid overwriting newtxmath commands,
+
+ \DeclareMathSymbol{\sfGamma}{\mathalpha}{lettersAB}{0}% adjust to avoid overwriting newtxmath commands, 2021/01/25
\DeclareMathSymbol{\sfDelta}{\mathalpha}{lettersAB}{1}
\DeclareMathSymbol{\sfTheta}{\mathalpha}{lettersAB}{2}
\DeclareMathSymbol{\sfLambda}{\mathalpha}{lettersAB}{3}
@@ -515,7 +596,7 @@
\DeclareMathSymbol{\sfvarepsilon}{\mathalpha}{lettersAB}{34}
\DeclareMathSymbol{\sfvartheta}{\mathalpha}{lettersAB}{35}
- \DeclareMathSymbol{\sfvarpi}{\mathord}{lettersAB}{36}
+ \DeclareMathSymbol{\sfvarpi}{\mathord}{lettersAB}{36}% added these 2021/01/25
\DeclareMathSymbol{\sfvarrho}{\mathord}{lettersAB}{37}
\DeclareMathSymbol{\sfvarsigma}{\mathord}{lettersAB}{38}
\DeclareMathSymbol{\sfvarphi}{\mathord}{lettersAB}{39}
@@ -525,17 +606,146 @@
\DeclareMathSymbol{\sfnabla}{\mathalpha}{lettersAB}{43}
\DeclareMathSymbol{\sfhslash}{\mathalpha}{lettersAB}{52}% this is not upright
\DeclareMathSymbol{\sfhbar}{\mathalpha}{lettersAB}{53}% this is not upright
+\else
+ \IfFontExistsTF{LeteSansMath-Bold}
+ {
+ \DeclareSymbolFont{lsmgreek}{TU}{lsm}{m}{n}% NFSSFamily lsm set above
+ \SetSymbolFont{lsmgreek}{normal}{TU}{lsm}{m}{n}
+ \SetSymbolFont{lsmgreek}{bold}{TU}{lsm}{b}{n}
+ \def\ac at sansgreek{\symlsmgreek}
+ }{
+ \DeclareSymbolFont{fsmgreek}{TU}{fsm}{m}{n}% NFSSFamily fsm set above
+ \SetSymbolFont{fsmgreek}{normal}{TU}{fsm}{m}{n}
+ \SetSymbolFont{fsmgreek}{bold}{TU}{fsm}{b}{n}
+ \def\ac at sansgreek{\symfsmgreek}
+ }
+ % uppercase greek
+ \Umathchardef\sfAlpha="0 \ac at sansgreek "0391
+ \Umathchardef\sfBeta="0 \ac at sansgreek "0392
+ \Umathchardef\sfGamma="0 \ac at sansgreek "0393
+ \Umathchardef\sfDelta="0 \ac at sansgreek "0394
+ \Umathchardef\sfEpsilon="0 \ac at sansgreek "0395
+ \Umathchardef\sfZeta="0 \ac at sansgreek "0396
+ \Umathchardef\sfEta="0 \ac at sansgreek "0397
+ \Umathchardef\sfTheta="0 \ac at sansgreek "0398
+ \Umathchardef\sfIota="0 \ac at sansgreek "0399
+ \Umathchardef\sfKappa="0 \ac at sansgreek "039A
+ \Umathchardef\sfLambda="0 \ac at sansgreek "039B
+ \Umathchardef\sfMu="0 \ac at sansgreek "039C
+ \Umathchardef\sfNu="0 \ac at sansgreek "039D
+ \Umathchardef\sfXi="0 \ac at sansgreek "039E
+ \Umathchardef\sfOmicron="0 \ac at sansgreek "039F
+ \Umathchardef\sfPi="0 \ac at sansgreek "03A0
+ \Umathchardef\sfRho="0 \ac at sansgreek "03A1
+ \Umathchardef\sfSigma="0 \ac at sansgreek "03A3
+ \Umathchardef\sfTau="0 \ac at sansgreek "03A4
+ \Umathchardef\sfUpsilon="0 \ac at sansgreek "03A5
+ \Umathchardef\sfPhi="0 \ac at sansgreek "03A6
+ \Umathchardef\sfChi="0 \ac at sansgreek "03A7
+ \Umathchardef\sfPsi="0 \ac at sansgreek "03A8
+ \Umathchardef\sfOmega="0 \ac at sansgreek "03A9
+ %
+ % lowercase greek, upright forms selected
+ \Umathchardef\sfalpha="0 \ac at sansgreek "03B1
+ \Umathchardef\sfbeta="0 \ac at sansgreek "03B2
+ \Umathchardef\sfgamma="0 \ac at sansgreek "03B3
+ \Umathchardef\sfdelta="0 \ac at sansgreek "03B4
+ \Umathchardef\sfvarepsilon="0 \ac at sansgreek "03B5 % see note below
+ \Umathchardef\sfzeta="0 \ac at sansgreek "03B6
+ \Umathchardef\sfeta="0 \ac at sansgreek "03B7
+ \Umathchardef\sftheta="0 \ac at sansgreek "03B8
+ \Umathchardef\sfiota="0 \ac at sansgreek "03B9
+ \Umathchardef\sfkappa="0 \ac at sansgreek "03BA
+ \Umathchardef\sflambda="0 \ac at sansgreek "03BB
+ \Umathchardef\sfmu="0 \ac at sansgreek "03BC
+ \Umathchardef\sfnu="0 \ac at sansgreek "03BD
+ \Umathchardef\sfxi="0 \ac at sansgreek "03BE
+ \Umathchardef\sfomicron="0 \ac at sansgreek "03BF
+ \Umathchardef\sfpi="0 \ac at sansgreek "03C0
+ \Umathchardef\sfrho="0 \ac at sansgreek "03C1
+ \Umathchardef\sfvarsigma="0 \ac at sansgreek "03C2
+ \Umathchardef\sfsigma="0 \ac at sansgreek "03C3
+ \Umathchardef\sftau="0 \ac at sansgreek "03C4
+ \Umathchardef\sfupsilon="0 \ac at sansgreek "03C5
+ \Umathchardef\sfphi="0 \ac at sansgreek "03C6
+ \Umathchardef\sfchi="0 \ac at sansgreek "03C7
+ \Umathchardef\sfpsi="0 \ac at sansgreek "03C8
+ \Umathchardef\sfomega="0 \ac at sansgreek "03C9
+ %
+ % character variants
+ \Umathchardef\sfvartheta="0 \ac at sansgreek "03D1
+ \Umathchardef\sfvarphi="0 \ac at sansgreek "03D5
+ \Umathchardef\sfvarpi="0 \ac at sansgreek "03D6
+ \Umathchardef\sfvarkappa="0 \ac at sansgreek "03F0
+ \Umathchardef\sfvarrho="0 \ac at sansgreek "03F1
+ \Umathchardef\sfvarTheta="0 \ac at sansgreek "03F4
+ \Umathchardef\sfepsilon="0 \ac at sansgreek "03F5 % this is the lunate form
+ %
+ % uppercase bold greek
+ \Umathchardef\sfbfAlpha="0 \ac at sansgreek "1D6A8
+ \Umathchardef\sfbfBeta="0 \ac at sansgreek "1D6A9
+ \Umathchardef\sfbfGamma="0 \ac at sansgreek "1D6AA
+ \Umathchardef\sfbfDelta="0 \ac at sansgreek "1D6AB
+ \Umathchardef\sfbfEpsilon="0 \ac at sansgreek "1D6AC
+ \Umathchardef\sfbfZeta="0 \ac at sansgreek "1D6AD
+ \Umathchardef\sfbfEta="0 \ac at sansgreek "1D6AE
+ \Umathchardef\sfbfTheta="0 \ac at sansgreek "1D6AF
+ \Umathchardef\sfbfIota="0 \ac at sansgreek "1D6B0
+ \Umathchardef\sfbfKappa="0 \ac at sansgreek "1D6B1
+ \Umathchardef\sfbfLambda="0 \ac at sansgreek "1D6B2
+ \Umathchardef\sfbfMu="0 \ac at sansgreek "1D6B3
+ \Umathchardef\sfbfNu="0 \ac at sansgreek "1D6B4
+ \Umathchardef\sfbfXi="0 \ac at sansgreek "1D6B5
+ \Umathchardef\sfbfOmicron="0 \ac at sansgreek "1D6B6
+ \Umathchardef\sfbfPi="0 \ac at sansgreek "1D6B7
+ \Umathchardef\sfbfRho="0 \ac at sansgreek "1D6B8
+ \Umathchardef\sfbfvarTheta="0 \ac at sansgreek "1D6B9
+ \Umathchardef\sfbfSigma="0 \ac at sansgreek "1D6BA
+ \Umathchardef\sfbfTau="0 \ac at sansgreek "1D6BB
+ \Umathchardef\sfbfUpsilon="0 \ac at sansgreek "1D6BC
+ \Umathchardef\sfbfPhi="0 \ac at sansgreek "1D6BD
+ \Umathchardef\sfbfChi="0 \ac at sansgreek "1D6BE
+ \Umathchardef\sfbfPsi="0 \ac at sansgreek "1D6BF
+ \Umathchardef\sfbfOmega="0 \ac at sansgreek "1D6C0
+ %
+ % lowercase bold greek, upright forms selected
+ \Umathchardef\sfbfalpha="0 \ac at sansgreek "1D6C2
+ \Umathchardef\sfbfbeta="0 \ac at sansgreek "1D6C3
+ \Umathchardef\sfbfgamma="0 \ac at sansgreek "1D6C4
+ \Umathchardef\sfbfdelta="0 \ac at sansgreek "1D6C5
+ \Umathchardef\sfbfvarepsilon="0 \ac at sansgreek "1D6C6 % see note below
+ \Umathchardef\sfbfzeta="0 \ac at sansgreek "1D6C7
+ \Umathchardef\sfbfeta="0 \ac at sansgreek "1D6C8
+ \Umathchardef\sfbftheta="0 \ac at sansgreek "1D6C9
+ \Umathchardef\sfbfiota="0 \ac at sansgreek "1D6CA
+ \Umathchardef\sfbfkappa="0 \ac at sansgreek "1D6CB
+ \Umathchardef\sfbflambda="0 \ac at sansgreek "1D6CC
+ \Umathchardef\sfbfmu="0 \ac at sansgreek "1D6CD
+ \Umathchardef\sfbfnu="0 \ac at sansgreek "1D6CE
+ \Umathchardef\sfbfxi="0 \ac at sansgreek "1D6CF
+ \Umathchardef\sfbfomicron="0 \ac at sansgreek "1D6D0
+ \Umathchardef\sfbfpi="0 \ac at sansgreek "1D6D1
+ \Umathchardef\sfbfrho="0 \ac at sansgreek "1D6D2
+ \Umathchardef\sfbfvarsigma="0 \ac at sansgreek "1D6D3
+ \Umathchardef\sfbfsigma="0 \ac at sansgreek "1D6D4
+ \Umathchardef\sfbftau="0 \ac at sansgreek "1D6D5
+ \Umathchardef\sfbfupsilon="0 \ac at sansgreek "1D6D6
+ \Umathchardef\sfbfphi="0 \ac at sansgreek "1D6D7
+ \Umathchardef\sfbfchi="0 \ac at sansgreek "1D6D8
+ \Umathchardef\sfbfpsi="0 \ac at sansgreek "1D6D9
+ \Umathchardef\sfbfomega="0 \ac at sansgreek "1D6DA
+ %
+ % character variants, bold
+ \Umathchardef\sfbfepsilon="0 \ac at sansgreek "1D6DC % this is the lunate form
+ \Umathchardef\sfbfvartheta="0 \ac at sansgreek "1D6DD
+ \Umathchardef\sfbfvarkappa="0 \ac at sansgreek "1D6DE
+ \Umathchardef\sfbfvarphi="0 \ac at sansgreek "1D6DF
+ \Umathchardef\sfbfvarrho="0 \ac at sansgreek "1D6E0
+ \Umathchardef\sfbfvarpi="0 \ac at sansgreek "1D6E1
+\fi
-%%% sans math version, potential value with PGFPlots, called in subfigure captions. 2021/01/30
-\DeclareMathVersion{sans}
- \SetSymbolFont{letters}{sans}{OML}{ntxsfmi}{m}{it}
- \SetSymbolFont{lettersA}{sans}{U}{ntxsfmia}{m}{it}
- \SetSymbolFont{lettersAB}{sans}{U}{ntxsfmia}{m}{it}
- \SetSymbolFont{symbols}{sans}{LMS}{ntxsy}{m}{n}
- \SetSymbolFont{largesymbols}{sans}{LMX}{ntxexx}{m}{n}
- \SetSymbolFont{largesymbolsTXA}{sans}{U}{ntxexa}{m}{n}
- \SetSymbolFont{operators}{sans}{\encodingdefault}{\sfdefault}{m}{n}
- \SetMathAlphabet{\mathsf}{sans}{\encodingdefault}{\sfdefault}{m}{n}
+% and simple cheat to avoid errors when switching from luatex to pdftex with the template example
+\providecommand*\mitDelta{\Delta}
%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -542,17 +752,17 @@
\setlength{\jot}{10pt}% <== default is 3pt
-%% multline has an "extra line" above it, so subtract from \abovedisplayskip to remove imbalance
-\BeforeBeginEnvironment{multline}{\addtolength\abovedisplayskip{-7pt}}
-\AfterEndEnvironment{multline}{\addtolength\abovedisplayskip{+7pt}}
+%% multline has an extra \jot above it, so subtract from \abovedisplayskip to remove imbalance
+%% see: https://tex.stackexchange.com/a/637071/119566
+\AddToHook{env/multline/begin}{\addtolength\abovedisplayskip{-10pt}}% 2025/04/06 increase to 10pt from 7pt, use hooks rather than etoolbox
+\AddToHook{env/multline/end}{\addtolength\abovedisplayskip{+10pt}}
+
\allowdisplaybreaks % ASME allows these breaks
%%%%%%%%%%%%%%%%% Equation and Line Numbering %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{etoolbox}% patching amsmath
-
%% ASME puts equation tags in blue
\patchcmd{\tagform@}{(\ignorespaces#1\unskip\@@italiccorr)}{\color{blue}(\ignorespaces#1\unskip\@@italiccorr)}{}{}
@@ -563,7 +773,6 @@
% \def\tagform@#1{\maketag@@@{(\ignorespaces#1\unskip\@@italiccorr)}}
% \def\maketag@@@#1{\hbox{\m at th\normalfont#1}}
-
%% Italicize alph part of subequation numbers. Revised 2023/10/20
\patchcmd{\subequations}{\theparentequation\alph{equation}}{\theparentequation\itshape\alph{equation}}{}{}
@@ -582,23 +791,21 @@
%%% has been corrected to account for the AMS math environments. Retaining temporarily for backward compatibility.
%%% postdisplaypenalty adjusted to avoid extra line number at end, see: https://tex.stackexchange.com/a/461192/
\IfPackageAtLeastTF{lineno}{2023/05/19}{\relax}{
- \NewDocumentCommand{\aj at losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
+ \NewDocumentCommand{\asmejour at losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}}
%
- \NewDocumentCommand{\aj at FixAMSMath}{m}{%
- \AtBeginEnvironment{#1}{\aj at losepostpenalty\linenomath}%
+ \NewDocumentCommand{\asmejour at FixAMSMath}{m}{%
+ \AtBeginEnvironment{#1}{\asmejour at losepostpenalty\linenomath}%
\AtEndEnvironment{#1}{\endlinenomath}%
- \AtBeginEnvironment{#1*}{\aj at losepostpenalty\linenomath}%
+ \AtBeginEnvironment{#1*}{\asmejour at losepostpenalty\linenomath}%
\AtEndEnvironment{#1*}{\endlinenomath}%
}
- %
- \NewDocumentCommand{\aj at FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\aj at FixAMSMath}}
- %
- \aj at FixAll{align;alignat;gather;flalign;multline}
+ \NewDocumentCommand{\asmejour at FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\asmejour at FixAMSMath}}
+ \asmejour at FixAll{align;alignat;gather;flalign;multline}
}
%
\else
\ProvideDocumentEnvironment{linenomath}{}{}{}%
- \ifasmejour at balance % balancing through flushend can produce weird errors.
+ \ifasmejour at balance % balancing by flushend can produce weird errors.
\RequirePackage{flushend}% flushend package is NOT compatible with lineno.
\AtEndDocument{\flushcolsend}%
\ClassNoteNoLine{\ClassName}{Calling flushend package to balance column height on last page}%
@@ -608,7 +815,7 @@
\providecommand{\@LN at col}[1]{\relax}% avoid errors in the aux file when lineno is dropped
\providecommand{\@LN}[2]{\relax}
-%% ASME page proofs seem to align the number at top of the line, rather than bottom as done here.
+%% ASME page proofs seem to align the line number at top of the line, rather than bottom as done here.
%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -673,7 +880,6 @@
\fi
}
-
%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{footmisc}%
@@ -693,11 +899,11 @@
}
%% Produces an unmarked footnote about the revision date.
-%% This command is invoked by \date as part of \MakeTitlePage below.
+%% This command is invoked by \date as part of \maketitle below.
%% Text can be anything given as the argument to \date{..}.
\NewDocumentCommand{\revfootnote}{m}{\begin{NoHyper}\def\@thefnmark{}\@footnotetext{\hspace{-3pt}#1}\end{NoHyper}}% \gdef -->\def 2021/12/23
-%% The above has been offset per style and modified to eliminate missing anchor warning from hyperref that the following version causes
+%% The above has been offset per style and modified to eliminate missing anchor warning from hyperref that the following \def would cause
%%\def\revfootnote{\gdef\@thefnmark{}\@footnotetext}
@@ -711,21 +917,49 @@
%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\addto{\captionsenglish}{%
- \renewcommand{\figurename}{Fig.}
- \renewcommand{\tablename}{Table}
-}
-
\RequirePackage[labelfont={sf,bf},hypcap=false]{caption}
\RequirePackage[hypcap=false,list=true]{subcaption}
+%% This option is experimental and documented only here, 2025/04/01
+%% purpose is to allow tagged pdf based on current latex-lab code
+%% subcaptions are not specifically addressed in this patch
+%% babel [spanish] option is NOT compatible with tagging.
+\ifasmejour at captionpatch
+%% see github discussion of this patch by Ulrike Fischer
+%% https://github.com/latex3/tagging-project/issues/720#issuecomment-2386568711
+ \ExplSyntaxOn
+ \IfPackageLoadedTF{tagpdf}{% this test may need to be removed once latex-lab moves to kernel code
+ \RemoveFromHook{begindocument}[latex-lab-testphase-float]
+ \socket_new_plug:nnn{tagsupport/parbox/before}{caption}
+ {
+ \tagpdfparaOn %restart para tagging
+ \tl_if_empty:NTF\@current at float@struct
+ {
+ \tag_struct_begin:n{tag=Caption,firstkid}
+ }
+ {
+ \tag_struct_begin:n{tag=Caption,parent=\@current at float@struct,firstkid}
+ }
+ }
+ \socket_new_plug:nnn{tagsupport/parbox/after}{caption}
+ {
+ \tag_struct_end:
+ }
+ \l at addto@macro\caption at beginex@hook{%
+ \tagpdfparaOff %leavevmode in parbox should not start paragraph structure
+ \AssignSocketPlug{tagsupport/parbox/before}{caption}
+ \AssignSocketPlug{tagsupport/parbox/after}{caption}}
+ }{}
+ \ExplSyntaxOff
+\fi
+
\DeclareCaptionTextFormat{boldmath}{\mathversion{sansbold}#1}
-\DeclareCaptionTextFormat{sansmath}{\mathversion{sans}#1}% strictly speaking, this is unnecessary.
+\DeclareCaptionTextFormat{sansmath}{\mathversion{sans}#1}% ASME's subcaptions actually do not allow math...
\captionsetup[figure]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad}
\captionsetup[table]{labelfont={sf,bf},textfont={sf,bf},textformat=boldmath,labelsep=quad,skip=0.5\baselineskip}
-%% 2021/01/30: ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text, no bold face.
+%% 2021/01/30: ASME only labels subfigures with a sans serif, italic (a), (b),... no caption text or math, no bold face.
\captionsetup[subfigure]{labelfont={sf},textfont={sf},textformat=sansmath,labelformat=simple}% default: =parens
\renewcommand\thesubfigure{(\textit{\alph{subfigure}})}
@@ -733,83 +967,156 @@
\renewcommand\thesubtable{(\textit{\alph{subtable}})}
-%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Section Headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage[raggedright,indentafter]{titlesec}
+% Revised 2025/03/30, removing titlesec package
-\titleformat{\section}{\mathversion{bold}\bfseries\large\raggedright}{\thesection}{1em}{}
-\titleformat{\subsection}[runin]{\mathversion{bold}\bfseries}{\thesubsection}{1em}{}[.]
-\titleformat{\subsubsection}[runin]{\itshape}{\thesubsubsection}{1em}{}[.]
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {14pt \@plus 3pt \@minus 2pt}%
+ {3pt \@plus 2pt \@minus 1pt}%
+ {\mathversion{bold}\bfseries\large\raggedright}}
+\renewcommand\subsection{\@startsection {subsection}{2}{3.5mm}%
+ {12pt \@plus 3pt \@minus 2pt}%
+ {-0.5em}%
+ {\mathversion{bold}\normalsize\bfseries\raggedright}}
+\renewcommand\subsubsection{\@startsection {subsubsection}{3}{3.5mm}%
+ {12pt \@plus 3pt \@minus 2pt}%
+ {-0.5em}%
+ {\itshape\normalsize}}
+\patchcmd{\thesection}{\@arabic\c at section}{\@arabic\c at section}{}{}
+\patchcmd{\thesubsection}{\thesection.\@arabic\c at subsection}{\@arabic\c at section.\@arabic\c at subsection}{}{}
+\patchcmd{\@seccntformat}{\quad}{\hspace*{1em}}{}{}
+\let\paragraph\subsubsection
-\titlespacing\section{0pt}{14pt plus 3pt minus 2pt}{3pt plus 2pt minus 1pt}
-\titlespacing{\subsection}{\parindent}{12pt plus 3pt minus 2pt}{0.5em}
-\titlespacing{\subsubsection}{\parindent}{12pt plus 3pt minus 2pt}{0.5em}
+% note, 2025/04/07: \mathversion{bold} gets tagged as a formula in display headings, which \@xsect, etc. handle differently. Unclear why this happens.
-%% ASME style does not seem to go lower than third level heading, so ...
-%% ...put \paragraph into \subsubsection settings.
-\titleformat{\paragraph}[runin]{\itshape}{\thesubsubsection}{0.5em}{}[.]
-\titlespacing{\paragraph}{\parindent}{14pt plus 3pt minus 2pt}{0.5em}
+% Insert period at end of subsection and subsubsection titles
+% Would prefer a more streamlined approach, but no simple hook for #8 in \section
+\let\oldsubsection\subsection
+\RenewDocumentCommand{\subsection}{s o m}{%
+ \IfBooleanTF{#1} % starred version
+ {\IfNoValueTF{#2}
+ {\oldsubsection*{#3.}} % no optional arg
+ {\oldsubsection*[#2]{#3.}}%
+ }
+ {\IfNoValueTF{#2}
+ {\oldsubsection{#3.}} % no optional arg
+ {\oldsubsection[#2]{#3.}}%
+ }%
+}
+\let\oldsubsubsection\subsubsection
+\RenewDocumentCommand{\subsubsection}{s o m}{%
+ \IfBooleanTF{#1} % starred version
+ {\IfNoValueTF{#2}
+ {\oldsubsubsection*{#3.}} % no optional arg
+ {\oldsubsubsection*[#2]{#3.}}%
+ }
+ {\IfNoValueTF{#2}
+ {\oldsubsubsection{#3.}} % no optional arg
+ {\oldsubsubsection[#2]{#3.}}%
+ }%
+}
-%% Special handling of the appendices
-%% Assumes that appendices are the last technical content in paper
+% Special handling of the appendices
+% Assumes that appendices are the last technical content in paper
+% Tagging code, if loaded, uses \@kernel at tag@hangfrom
+\ExplSyntaxOn
+\cs_new_protected:Nn \__asmejour_change_hangindent: {
+ \cs_if_exist:NT \@kernel at tag@hangfrom {
+ \cs_new_eq:NN \__asmejour_sav at kernel@tag at hangfrom \@kernel at tag@hangfrom
+ % modify command in latex-lab-sec
+ \cs_gset_protected:Npn \@app at kernel@tag at hangfrom ##1
+ {
+ \tagstructbegin{tag=\l__tag_para_tag_tl}
+ \cs_if_exist_use:N \__tag_gincr_para_begin_int:
+ \tagstructbegin{tag=Lbl}
+ \setbox\@tempboxa
+ \hbox
+ {
+ \bool_lazy_and:nnT
+ {\tag_if_active_p:}
+ {\g__tag_mode_lua_bool}
+ {\tagmcbegin{tag=Lbl}}
+ {##1}
+ }
+ \tag_suspend:n{hangfrom}
+ % \hangindent \wd\@tempboxa\noindent %% <== changing this line only
+ \hangindent 0pt\noindent
+ \tag_resume:n{hangfrom}
+ \tagmcbegin{}\box\@tempboxa\tagmcend\tagstructend\tagmcbegin{}
+ }
+ \cs_set_eq:NN \@kernel at tag@hangfrom \@app at kernel@tag at hangfrom
+ }
+ \cs_new_eq:NN \__asmejour_sav at hangfrom \@hangfrom
+ \cs_gset_protected:Npn \@app at hangfrom ##1
+ {
+ \setbox\@tempboxa\hbox{{##1}}%
+ % \hangindent \wd\@tempboxa\noindent\box\@tempboxa} %% <== changing this line only
+ \hangindent 0pt\noindent\box\@tempboxa
+ }
+}
\providecommand*{\appendicesname}{Appendices}
-\newcounter{appeqn}%% Code revised to better support tagged pdf, 2024/07/24
-\patchcmd{\appendix}{%
- \setcounter{subsection}{0}}{%
- \setcounter{subsection}{0}%
- \pdfbookmark[1]{\appendicesname}{appendices}%
- \@addtoreset{equation}{appeqn}\stepcounter{appeqn}%
- \gdef\theequation{\@Alph\c at section\@arabic\c at equation}%
-}{}{}
-\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{bold}\bfseries\large\raggedright}{\appendixname\ \thesection:}{0.5em}{}}
+\renewcommand{\appendix}{
+ \par
+ \__asmejour_change_hangindent:
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \@addtoreset{equation}{section}
+ \pdfbookmark[1]{\appendicesname}{appendices}
+ \gdef\theequation{\@Alph\c at section\@arabic\c at equation}
+ \gdef\thesection{\@Alph\c at section}
+ \gdef\thesubsection{\@Alph\c at section.\@arabic\c at subsection}
+ \AddToHook{cmd/section/before}{
+ \gdef\@seccntformat##1{\appendixname\ \csname the##1\endcsname :\hspace{0.5em}}
+ \def\@hangfrom{\@app at hangfrom}
+ \def\@kernel at tag@hangfrom{\@app at kernel@tag at hangfrom}
+ }
+ \AddToHook{cmd/subsection/before}{ % added to Latex 2020/10/01
+ \gdef\@seccntformat##1{\csname the##1\endcsname.\hspace{0.5em}}
+ \def\@hangfrom{\__asmejour_sav at hangfrom}
+ \def\@kernel at tag@hangfrom{\__asmejour_sav at kernel@tag at hangfrom}
+ }
+}
+\ExplSyntaxOff
-%% natbib's \bibsection controls section heading for References.
+% natbib's \bibsection controls section heading for References.
+% If you wish to customize the title of the reference list put \renewcommand{\refname}{Other Title}
+% into the .tex file, after the preamble (before the other bib commands near the end)
-%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%% List environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\RequirePackage{enumitem}
+% Revised 2025/03/30, removing enumitem
-\setlist[enumerate,1]{label = (\arabic*), ref = (\arabic*),labelindent=3mm, leftmargin=*,noitemsep}
-%% I have no examples of sublists...
+\renewcommand\labelenumi{(\theenumi)} % cf. article.cls
+\setlength\leftmargini{2em} % reset here b/c @twocolumn not yet invoked
+% No extra space between list items (cf. size9.clo)
+\AddToHook{begindocument/end}{
+ \AddToHook{cmd/@listi/after}{
+ \parsep 0\p@
+ \itemsep 0\p@
+ }
+}
+%\AtBeginDocument{
+% \patchcmd{\@listi}{\parsep 4\p@ \@plus 2\p@ \@minus \p@}{\parsep 0\p@}{}{}
+% \patchcmd{\@listi}{\itemsep \parsep}{\itemsep 0\p@}{}{}
+%}
%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ifpdftex
+\ifasmejour at pdftex
%%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
- %%% as of 2024/07/28, these are still necessary with \DocumentMetadata{pdfstandard=A-3u}. Note: glyphtounicode-cmex.tex is now in latex-lab.
+ %%% as of 2024/07/28, these are still necessary with \DocumentMetadata{pdfstandard=A-3u}.
\InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings
+ \InputIfFileExists{glyphtounicode-cmex.tex}{}{} %% additional mappings in latex-lab.
\InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings
-
- %% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
- \ifaj at setpdfa
- %%%% the pdfmanagement options from Ulrike Fischer 2021/06/12
- \ifasme at pdfmanagement
- \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load a color profile}
- \else
- \ClassInfo{\ClassName}{pdfmanagement not defined. Class file will load a color profile}%
- %%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production)
- \immediate\pdfobj stream attr{/N 3} file{sRGB.icc}
- \pdfcatalog{%
- /OutputIntents [
- <<
- /Type /OutputIntent
- /S /GTS_PDFA1
- /DestOutputProfile \the\pdflastobj\space 0 R
- /OutputConditionIdentifier (sRGB)
- /Info (sRGB)
- >>
- ]
- }
- \fi
- \fi
\fi
%%%
-\RequirePackage[psdextra]{hyperref} % provide most hyperref options via \hypersetup, but per documentation
+\RequirePackage[psdextra]{hyperref} % provide most hyperref options via \hypersetup, but also per documentation
% set [psdextra] here (for additional math support in bookmarks) 2021/12/23
\hypersetup{%
pdfborder={0 0 0},
@@ -828,36 +1135,16 @@
\urlstyle{same} % don't switch to typewriter font
\RequirePackage{doi} % supports nasty characters in some doi's
-\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for ASME specification
+\renewcommand{\doitext}{doi:~} % change from default, {doi:}, to this for ASME specification
-\providecommand*{\toclevel at subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
+\providecommand*{\toclevel at subfigure}{1}% <== to address unknown bookmark level of subfigure. 2021/12/24
+\providecommand\hrefurl[2]{\href{#1}{#2}}% <== in case no \DocumentMetadata{..}
-\ifasme at pdfmanagement
- \ClassInfo{\ClassName}{pdfmanagement is defined. Class file will not load hyperxmp}
-\else
- \providecommand\hrefurl[2]{\href{#1}{#2}}% if new pdf management code is not loaded, 2021/12/22
- % This alias is also incorporated into asmejour.bst
- \RequirePackage{bookmark} %% improves handling of pdf bookmarks
- \RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
- % Patch bug in hyperxmp, unless a more recent version is used.
- \@ifpackagelater{hyperxmp}{2022/10/15}{% v5.11 or later
- \relax
- % \ClassInfo{\ClassName}{hyperxmp v5.11 or later is in use}
- }{%
- \ifx\undefined\hyxmp at no@bad at parts\relax\else
- \newcount\hypxmp at tempcnt
- \define at key{Hyp}{pdfapart}{%
- \afterassignment\hyxmp at no@bad at parts\hypxmp at tempcnt=0#1\relax
- \hyxmp at pdfstringdef\@pdfapart{\the\hypxmp at tempcnt}%
- }
- \fi
- }
-\fi
%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%
%%% Recent development of \pdfstring has removed all robust commands from bookmarks (2021/12/23).
-%%% By mid-2024, no errors are thrown except for \bm; however, these commands serve to still suppress warnings.
+%%% By mid-2024, no errors are thrown except for \bm; however, these commands still serve to suppress warnings.
%%% Math shift by $..$ still creates a warning, but I am leaving that in place. To avoid, use \( .. \) instead.
%% Since \bm is useful in headings, this fix will reduce frequency with which
@@ -883,7 +1170,7 @@
}
%% Let's make sure footnotes in section headings don't break pdf bookmarks.
-%\robustify{\footnote} % redefined footnote above is protected, 2023/10/21
+%\robustify{\footnote} % the redefined footnote above is protected, 2023/10/21
\pdfstringdefDisableCommands{%
\def\footnote#1{}%
}
@@ -895,6 +1182,7 @@
\providecommand{\keywordname}{Keywords}
\providecommand{\CAwords}{Corresponding Author.}
+
%%%%%%%%%%%%% Nomenclature Environment %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Nomenclature environment in ASME Journal Style.
@@ -903,19 +1191,19 @@
%% Second argument can be used to rename the section, e.g., to List of Symbols.
\newlength\widest
-\newlength\@widest
+\newlength\asmejour at widest
\newlength\nomenwidth
\newlength\savitemsep
\NewDocumentCommand{\entry}{m m}{%
\ifblank{#2}{%
- \ClassError{\ClassName}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument for \protect\entry. You need to include a second argument.}
+ \ClassError{\ClassName}{The command \protect\entry should have two arguments. For subheadings, use \protect\EntryHeading}{It appears that you gave only one argument to \protect\entry. You must include a second argument.}
}{%
\item[\hfill#1${} = {}$]#2%
\@itempenalty=-\@lowpenalty%
\setlength\itemsep\savitemsep%
- \settowidth\@widest{#1${} = {}$}%
- \ifdim\@widest>\widest \global\setlength\widest\@widest\fi%
+ \settowidth\asmejour at widest{#1${} = {}$}%
+ \ifdim\asmejour at widest>\widest \global\setlength\widest\asmejour at widest\fi%
}
}
@@ -925,15 +1213,9 @@
\goodbreak\item[\bfseries#1\hfill]\mbox{}\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000% add \mbox for tagged pdf, 2023/10/20
}
-\RequirePackage{totcount}
-\newtotcounter{savedlength}
-% a total counter for saving the value of \nomenwidth
-
-\AtBeginDocument{\setlength{\nomenwidth}{\totvalue{savedlength}sp}}
-% value is the length in scaled points (sp)
-
-\NewDocumentEnvironment{nomenclature}{O{\nomenwidth} O{\nomname}}{%
- \setlength{\widest}{0em}
+\newlength\savwidest
+\NewDocumentEnvironment{nomenclature}{O{\nomenwidth} O{\nomname} }{
+ \setlength{\widest}{0em}
\section*{#2}
\raggedright
\begin{list}{}{%
@@ -945,13 +1227,17 @@
\setlength{\labelwidth}{#1}
\setlength{\leftmargin}{\labelwidth}
\addtolength{\leftmargin}{\labelsep}
- \setlength\savitemsep\itemsep
+ \setlength\savitemsep\itemsep % EntryHeading changes \itemsep from 0pt
}%
}{%
- \setcounter{savedlength}{\widest}%
+ \immediate\write\@auxout{\global\savwidest=\the\widest}% after the preamble, the aux file will set this value...
\end{list}\ignorespacesafterend
}
-
+\AtBeginDocument{
+ \setlength{\nomenwidth}{\savwidest} % ...and this will set nomenwidth to the saved widest label width
+}
+
+
%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ASME requires these lists for production.
@@ -987,7 +1273,8 @@
\dim_new:N \g__asmejour_rulecofheight_dim
\dim_new:N \g__asmejour_titleheight_dim
-\cs_new:Nn \__asmejour_internallinenumbers:n {
+\cs_new:Nn \__asmejour_internallinenumbers:n
+{
\ifasmejour at lineno
\str_if_in:nnT {#1} {R} { \rightlinenumbers* }
\str_if_in:nnT {#1} {r} { \rightlinenumbers* }
@@ -996,64 +1283,114 @@
\fi
}
+%% In case tagging is not loaded, 2025/04/06
+\cs_if_exist:NF \tag_struct_begin:n
+ {
+ \cs_new:Npn \tag_struct_begin:n #1 { \scan_stop: }
+ \cs_new:Nn \tag_struct_end: { \scan_stop: }
+ }
+
%% This command is used in the .tex file
\NewDocumentCommand\SetAuthorBlock{m m}{
\__asmejour_setauthorblock:nn { #1 } { #2 }
}
-
-\hcoffin_gset:Nn \g__asmejour_firstrowauthorblock_coffin {}
\int_gzero_new:N \g__asmejour_authorno_int
+\seq_new:N \g__asmejour_author_seq
+\msg_new:nnn { \ClassName } { missingauthor } { Missing~author~name,~check~\SetAuthorBlock~command[s]! }
+
+%% Attach each successive authorblock to the list, which is saved in \g__asmejour_firstrowauthorblock_coffin
+\cs_if_exist:NF \str_set:Ne { \cs_generate_variant:Nn \str_set:Nn {Ne} }
+
\cs_new:Nn \__asmejour_setauthorblock:nn {
- \int_gincr:N \g__asmejour_authorno_int
- \vcoffin_set:Nnn \g__asmejour_authorblock_coffin {48.2mm} {
+ \int_gincr:N \g__asmejour_authorno_int
+ \tl_if_empty:nT {#1} {
+ \msg_warning:nn { \ClassName } { missingauthor }
+ }
+ \seq_gput_right:Nn \g__asmejour_author_seq {#1}
+ \str_set:Ne \ltmpa_str { Author~\int_use:N \g__asmejour_authorno_int }
+ \tag_struct_begin:n{tag=Div, title-o={ \ltmpa_str } }
+ \vcoffin_gset:Nnn \g__asmejour_authorblock_coffin {48.2mm}
+ {
\__asmejour_internallinenumbers:n {}
\raggedleft\sffamily
- {\huge\CondSansBold \tl_trim_spaces:n { #1 } }\\
+ {\Condhuge\CondSansBold \tl_trim_spaces:n { #1 } }\\
\CondSans#2
}
- \int_compare:nNnTF { \g__asmejour_authorno_int } = { 1 } {
- \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin { hc } {t } { 0pt } { 0pt }
+ \tag_struct_end:
+ \int_compare:nNnTF { \g__asmejour_authorno_int } = { 1 }
+ {
+ \coffin_gjoin:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin { hc } {t } { 0pt } { 0pt }
\dim_gset:Nn \g__asmejour_rulecofheight_dim { \coffin_ht:N \g__asmejour_firstrowauthorblock_coffin + \coffin_dp:N \g__asmejour_firstrowauthorblock_coffin }
}{
- \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin {hc } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinsep_dim }
+ \coffin_gjoin:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { hc } { b } \g__asmejour_authorblock_coffin {hc } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinsep_dim }
\dim_gset:Nn \g__asmejour_rulecofheight_dim { \coffin_ht:N \g__asmejour_firstrowauthorblock_coffin + \coffin_dp:N \g__asmejour_firstrowauthorblock_coffin }
}
}
%% Standard coffin poles are (l hc r t T vc b B). See xcoffins documentation.
-\NewDocumentCommand\@SetTitle{m}{
- \cs_gset:Npn \@title {#1} % 2024/07/30 (make this standard command available)
- \vcoffin_set:Nnn \g__asmejour_title_coffin {114mm} {
- \__asmejour_internallinenumbers:n {R}
- \vspace*{0.5mm}% <== ASME doesn't align bar and text
- \noindent\Huge\CondSansBold\raggedright
- #1
- \par
- }
+% build comma-separated list of author names
+\cs_if_exist:NF \tl_set:Ne { \cs_generate_variant:Nn \tl_set:Nn {Ne} }
+\cs_if_exist:NF \seq_item:NV { \cs_generate_variant:Nn \seq_item:Nn {NV} }
+\tl_new:N \g_asmejour_authors_tl
+\tl_gset:Nn \g_asmejour_authors_tl \c_empty_tl
+\cs_new_protected:Nn \__asmejour_concataut: {
+ \int_set:Nn \l_tmpa_int {1}
+ \tl_clear:N \l_tmpb_tl
+ \int_do_until:nNnn { \l_tmpa_int } > { \g__asmejour_authorno_int }
+ {
+ \tl_set:Ne \l_tmpb_tl { \seq_item:NV \g__asmejour_author_seq \l_tmpa_int }
+ \regex_replace_all:nnN { \cA\~ } {\ } \l_tmpb_tl % replace ~ by space in author list
+ \tl_replace_all:Nnn \l_tmpb_tl { \affil } { \use_none:n }% include in case of carry-over from asmeconf
+ \tl_remove_all:Nn \l_tmpb_tl { \JointFirstAuthor } % include in case of carry-over from asmeconf
+ \tl_remove_all:Nn \l_tmpb_tl { \CorrespondingAuthor } % takes no argument in asmejour, unlike asmeconf
+ \int_compare:nNnT { \l_tmpa_int } < { \g__asmejour_authorno_int } {
+ \tl_put_right:Nn \l_tmpb_tl { ,~ }
+ }
+ \tl_gput_right:NV \g_asmejour_authors_tl \l_tmpb_tl
+ \int_incr:N \l_tmpa_int
+ }
+ %\iow_term:e { Authors:~ \tl_use:N \g_asmejour_authors_tl } % diagnostic only
}
-%% \keywords is used in the .tex file
+\cs_new:Nn \__asmejour_settitle:n
+{
+ \cs_gset:Npn \@title {#1} % 2024/07/30 (make this standard command available)
+ \tag_struct_begin:n{tag=Title, title=Title}
+ \vcoffin_gset:Nnn \g__asmejour_title_coffin {114mm}
+ {
+ \__asmejour_internallinenumbers:n {R}
+ \vskip 0.5mm % <== ASME doesn't align bar and text
+ \noindent\CondHuge\CondSansBold\raggedright
+ #1
+ \par
+ }
+ \tag_struct_end:
+}
+
+%% \keywords command is used in the .tex file
\cs_new:Npn \__asmejour_keywords {\relax}
\NewDocumentCommand{\keywords}{m}{% removed g option, 2021/01/30
\cs_gset:Npn \__asmejour_keywords { \par\vskip\baselineskip\noindent{\keywordname :}~#1 }
}
-\NewDocumentCommand\@SetAbstract{+m}{% add + to enable blank lines, etc. 2021/01/31
- \vcoffin_set:Nnn \g__asmejour_abstract_coffin {114mm}{
+\cs_new:Nn \__asmejour_setabstract:n
+{
+ \tag_struct_begin:n{tag=Div, title=Abstract}
+ \vcoffin_gset:Nnn \g__asmejour_abstract_coffin {114mm}
+ {
\__asmejour_internallinenumbers:n {R}
\noindent\itshape
#1
\__asmejour_keywords\par
- \vspace*{4mm}% <== at bottom of abstract to extend rule
+ \vskip 4mm % <== at bottom of abstract to extend rule
}
+ \tag_struct_end:
}
-\NewDocumentCommand{\@ConstructAuthorBlock}{}{%
- \__asmejour_constructauthorblock:
-}
+%% Now assemble and typeset the author, title, and abstract coffins
\cs_new:Nn \__asmejour_constructauthorblock: {
- \coffin_join:NnnNnnnn \g__asmejour_title_coffin { l } { b } \g__asmejour_abstract_coffin { l } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinspace_dim }
+ \coffin_gjoin:NnnNnnnn \g__asmejour_title_coffin { l } { b } \g__asmejour_abstract_coffin { l } {t } { 0pt } { - \dim_use:N \g__asmejour_coffinspace_dim }
\dim_gset:Nn \g__asmejour_titleheight_dim { \coffin_ht:N \g__asmejour_title_coffin + \coffin_dp:N \g__asmejour_title_coffin }
\if_dim:w \g__asmejour_titleheight_dim > \g__asmejour_rulecofheight_dim
\dim_gset:Nn \g__asmejour_rulecofheight_dim { \g__asmejour_titleheight_dim }
@@ -1060,10 +1397,12 @@
\else:
\dim_add:Nn \g__asmejour_rulecofheight_dim {7.0mm}
\fi:
- \hcoffin_set:Nn \g__asmejour_ruleblock_coffin { \color{\asmejour at barcolor}\rule{2.1mm}{ \dim_use:N \g__asmejour_rulecofheight_dim } }
- \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_ruleblock_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
- \coffin_join:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_title_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
- \coffin_typeset:Nnnnn \g__asmejour_firstrowauthorblock_coffin { l }{t }{ 0pt }{ 0pt }
+ \hcoffin_gset:Nn \g__asmejour_ruleblock_coffin { \color{\asmejour at barcolor}\rule{2.1mm}{ \dim_use:N \g__asmejour_rulecofheight_dim } }
+ \coffin_gjoin:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_ruleblock_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
+ \coffin_gjoin:NnnNnnnn \g__asmejour_firstrowauthorblock_coffin { vc } { r } \g__asmejour_title_coffin {vc } { l } { \dim_use:N \g__asmejour_coffinsep_dim } { 0pt }
+ \coffin_typeset:Nnnnn \g__asmejour_firstrowauthorblock_coffin { l }{t }{ 0pt }{ 0pt }
+ \__asmejour_concataut:
+ \cs_gset:Npn \@author { \tl_use:N \g_asmeconf_authors_tl }
}
\ExplSyntaxOff
@@ -1073,11 +1412,11 @@
%% ASME apparently does not recognize joint first authors...so I have not coded that functionality
%% Flag for corresponding author (only one expected, although this code supports more than one)
-\newif\ifaj at CA\aj at CAfalse
+\newif\ifasmejour at CA
%% ASME prefers email to be in address block, not CA footnote; removed option 2021/01/30
\NewDocumentCommand{\CorrespondingAuthor}{}{%
- \global\aj at CAtrue%
+ \global\asmejour at CAtrue%
\def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}%
\footnotemark%
\addtocounter{footnote}{-1}% in case of more than one CA
@@ -1084,64 +1423,76 @@
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% make the title block
-\newlength{\@AbstractSep}%% <== separation of author/abstract coffin from main two-column text.
-\setlength{\@AbstractSep}{12.5mm}
-\NewDocumentCommand\AbstractSep{m}{\setlength{\@AbstractSep}{#1}}
+\ExplSyntaxOn
-\NewDocumentCommand{\@MakeTitlePage}{}{%
+%% space between title block an start of two-column text
+\skip_new:N \g__asmejour_AbstractSep_skip
+\skip_gset:Nn \g__asmejour_AbstractSep_skip {12.5mm plus 2mm minus 2mm }
+
+\NewDocumentCommand\AbstractSep{m}{
+ \skip_gset:Nn \g__asmejour_AbstractSep_skip {#1}
+}
+
+\cs_new:Npn \__asmejour_maketitle:
+{
\thispagestyle{title}%
- \ifasmejour at singlecolumn % 2024/07/20
- \@ConstructAuthorBlock
- \vspace*{\@AbstractSep}
+ \ifasmejour at singlecolumn % added 2024/07/20
+ \__asmejour_constructauthorblock:
+ \vskip \g__asmejour_AbstractSep_skip
\else
\twocolumn[
- \@ConstructAuthorBlock
- \vspace*{\@AbstractSep}
+ \__asmejour_constructauthorblock:
+ \vskip \g__asmejour_AbstractSep_skip
]
\fi
- \ifaj at CA
+ \ifasmejour at CA
\addtocounter{footnote}{1}
\footnotetext{\CAwords}
\fi
\DateFootnote
- \ifasmejour at contractor\revfootnote{The United States Government retains, and by accepting the article for publication, the publisher acknowledges that the United States Government retains, a non-exclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for United States Government purposes.}%
+ \ifasmejour at contractor\revfootnote{The~United~States~Government~retains,~and~by~accepting~the~article~for~publication,~the~publisher~acknowledges~that~the~United~States~Government~retains,~a~non-exclusive,~paid-up,~irrevocable,~worldwide~license~to~publish~or~reproduce~the~published~form~of~this~work,~or~allow~others~to~do~so,~for~United~States~Government~purposes.}%
\fi
- \ifasmejour at govt\revfootnote{This material is declared a work of the U.S. Government and is not subject to copyright protection in the United States. Approved for public release; distribution is unlimited.}%
+ \ifasmejour at govt\revfootnote{This~material~is~declared~a~work~of~the~U.~S.~Government~and~is~not~subject~to~copyright~protection~in~the~United~States.~Approved~for~public~release;~distribution~is~unlimited.}%
\fi
- \ifasmejour at govtsome\revfootnote{This work was authored in part by a U.\ S.\ Government employee in the scope of his/her employment. ASME disclaims all interest in the U.\ S.\ Government's contribution.}%
+ \ifasmejour at govtsome\revfootnote{This~work~was~authored~in~part~by~a~U.~S.~Government~employee~in~the~scope~of~his/her~employment.~ASME~disclaims~all~interest~in~the~U.~S.~Government's~contribution.}%
\fi
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% Provide compatibility with titling commands from standard LaTeX article class
+%% Redefine titling commands from standard LaTeX article class
-\RenewDocumentCommand{\maketitle}{}{\@MakeTitlePage}
-\RenewDocumentCommand{\title}{}{\@SetTitle}
+\RenewDocumentCommand{\maketitle}{}{\__asmejour_maketitle:}
+\RenewDocumentCommand{\title}{m}{ \__asmejour_settitle:n {#1} }
+\RenewDocumentCommand{\author}{m}{
+ \msg_error:nn { \ClassName }{ authornotused }
+}
+\msg_new:nnnn { \ClassName } { authornotused }{ In~the~asmejour~class,\\ the~\author~command~is~not~used.\\ Use~\SetAuthorBlock{Name}{Address}~for~each~author~instead. } { The~\author~command~is~not~defined~in~the~asmejour~class.~Use~\SetAuthorBlock{Name}{Address}~as~described~in~the~documentation. }
-\RenewDocumentEnvironment{abstract}{+b}{\gdef\tmp{\@SetAbstract{#1}}\aftergroup\tmp}{\ignorespaces}
-%% Thanks to DPC for the suggestion of \gdef\tmp{...
+\RenewDocumentEnvironment{abstract}{+b}{\gdef\tmp{ \__asmejour_setabstract:n {#1} }\aftergroup\tmp}{\ignorespacesafterend}
+%% Thanks to David Carlisle for the suggestion of \gdef\tmp{...
%% Put date as an unnumbered footnote at bottom of first column
-\ExplSyntaxOn
- \bool_new:N \g__asmejour_date_bool
- \tl_new:N \g__asmejour_date_tl
- \tl_new:N \DateFootnote
- \bool_gset_true:N \g__asmejour_date_bool
- \tl_gset:Nn \g__asmejour_date_tl { \today }
- \tl_gset:Nn \DateFootnote {
- \if_bool:N \g__asmejour_date_bool \revfootnote{\g__asmejour_date_tl} \else: \fi:
- }
- \RenewDocumentCommand{\date}{m}
- {
- \tl_if_empty:nTF {#1}
- { \bool_gset_false:N \g__asmejour_date_bool }
- { \tl_gset:Nn \g__asmejour_date_tl { #1 } }
- }
-\ExplSyntaxOff
+%% If \date command is not used, default to \DateFootnote
+\bool_new:N \g__asmejour_date_bool
+\bool_gset_true:N \g__asmejour_date_bool
+\tl_new:N \g__asmejour_date_tl
+\tl_gset:Nn \g__asmejour_date_tl { \today }
+\tl_new:N \DateFootnote
+\tl_gset:Nn \DateFootnote {
+ \if_bool:N \g__asmejour_date_bool \revfootnote{\g__asmejour_date_tl} \else: \fi:
+}
+\RenewDocumentCommand{\date}{m}
+{
+ \tl_if_empty:nTF {#1}
+ { \bool_gset_false:N \g__asmejour_date_bool }
+ { \tl_gset:Nn \g__asmejour_date_tl { #1 } }
+}
\RenewDocumentCommand{\thanks}{m}{\relax}%% disabling this standard command, as it is inconsistent with this format
+\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
More information about the tex-live-commits
mailing list.