summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/asmejour/asmejour.cls
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/asmejour/asmejour.cls')
-rw-r--r--macros/latex/contrib/asmejour/asmejour.cls654
1 files changed, 356 insertions, 298 deletions
diff --git a/macros/latex/contrib/asmejour/asmejour.cls b/macros/latex/contrib/asmejour/asmejour.cls
index 283ab8a382..62f4d90efd 100644
--- a/macros/latex/contrib/asmejour/asmejour.cls
+++ b/macros/latex/contrib/asmejour/asmejour.cls
@@ -6,8 +6,8 @@
%%
%%
%% This file's version and date are:
- \def\versionno{1.20}
- \def\versiondate{2022/12/30\space}
+ \def\versionno{1.21}
+ \def\versiondate{2023/10/22\space}
%%
%% Author: John H. Lienhard V
%% Department of Mechanical Engineering
@@ -43,7 +43,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2022 John H. Lienhard
+%% Copyright (c) 2023 John H. Lienhard
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
%% associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -71,46 +71,45 @@
\RequirePackage{xparse}[2020/02/25]
\fi
-\RequirePackage{etoolbox}
+\RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc.
\RequirePackage{ifthen}
%%%%%%%%%%%%% Test compatibility of older distributions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% backward compatibility (thanks Ulrike Fischer)
+\providecommand\IfFormatAtLeastTF{\@ifl@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\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15
\IfFormatAtLeastTF{2020/02/25}{%
- \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020 or later are strongly recommended for best results}
+ \ClassInfo{asmeconf}{Your LaTeX format is dated \fmtversion. LaTeX distributions 2020/10/01 or later are strongly recommended, for best results}
}{%
- \ClassError{asmeconf}{Your LaTeX format is dated \fmtversion. Formats dated 2020 or later are recommended for the 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 the errors for now, but your abstract will probably not compile properly.)}%
+ \ClassError{asmeconf}{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 the errors for now, but your abstract will probably 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].}%
}
\DeclareDocumentCommand\LogNote{m}{%
\IfFormatAtLeastTF{2021/11/15}{%
- \ClassNoteNoLine{asmejour}{#1}% New with the recent LaTeX format
+ \ClassNoteNoLine{asmejour}{#1}% Added to LaTeX in Nov. 2021
}{%
\ClassWarningNoLine{asmejour}{#1}%
}
}
-%% provide iftex command \ifpdftex for those still running old distributions
-\IfFormatAtLeastTF{2019/11/07}{%
- \RequirePackage{iftex}% check whether pdftex or another engine is used
- }{%
- \LogNote{The asmeconf class requires the missing package iftex---trying a work-around.}
- % Code copied from iftex package written by the LaTeX3 Project (used under LPPL).
- % \csname and \let construct useful for hiding \ifzzz tokens from outer level \if tests.
- \def\IFTEX@let#1#2{%
- \expandafter\let\csname if#1\expandafter\endcsname
- \csname if#2\endcsname}
- % pdftex (including in dvi mode)
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname pdftexversion\endcsname\relax
- \IFTEX@let{pdftex}{false}
- \else
- \IFTEX@let{pdftex}{true}
- \fi
- \IFTEX@let{PDFTeX}{pdftex}
-}
+%% Test whether \DocumentMetadata has been loaded (Thank you Ulrike Fischer)
+\newif\if@asme@pdfmanagement
+\ExplSyntaxOn
+\bool_if:nTF
+ {
+ \bool_lazy_and_p:nn
+ {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
+ { \pdfmanagement_if_active_p: }
+ }
+ {
+ \@asme@pdfmanagementtrue
+ }
+ {
+ \@asme@pdfmanagementfalse
+ }
+\ExplSyntaxOff
%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -119,8 +118,6 @@
\SetupKeyvalOptions{
family=asmejour,
prefix=asmejour@,
- family=pdfaopt,
- prefix=pdafopt@,
setkeys=\kvsetkeys,
}
@@ -129,20 +126,31 @@
\PassOptionsToPackage{#1}{mathalfa}%
}
-%% set key [nodefaultsups] to obtain newtx superiors font for footnotes.
-\newboolean{DefaultSups}\setboolean{DefaultSups}{true}
-\define@key{asmejour}{nodefaultsups}[false]{%
- \setboolean{DefaultSups}{#1}
-}
+%% set key [nodefaultsups] to obtain the newtx superiors font for footnotes.
+\DeclareBoolOption{nodefaultsups}
-%% set barcolor= to a color name defined by xcolor package
-\newcommand\@ColorName{black} % default
-\define@key{asmejour}{barcolor}[Goldenrod3]{%
- \renewcommand\@ColorName{#1}
-}
+%% Option to obtain line numbers [lineno]
+\DeclareBoolOption{lineno}
-%% the key main= passes the choice of main language to babel
+%% Option to balance column height on last page [balance]
+\DeclareBoolOption{balance}
+
+%% Option to omit lists of figures and tables
+\DeclareBoolOption{nolists}
+
+%% 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 [barcolor=] to a color name defined by xcolor package
+\DeclareStringOption[black]{barcolor}
+
+%% the key main= passes the choice of main language to babel
\newif\ifaj@mainset\aj@mainsetfalse
\define@key{asmejour}{main}[english]{%
\PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflicts between certain .ldf files under "main=".
@@ -153,7 +161,7 @@
}%
}
-%% only main= is actually needed, but keeping these three legacy commands for backward compatibility
+%% only main= is actually needed, but keeping these three legacy commands for backward compatibility (these will disappear in 2024 or so)
\define@key{asmejour}{lang}[english]{% deprecated option
\PassOptionsToPackage{main=#1,#1}{babel}%
\PassOptionsToPackage{pdflang=en}{hyperref}
@@ -178,12 +186,11 @@
\fi
%% Suppress warnings about unused global options, 2021/12/01
-\DeclareDefaultOption{}% suppress warning about unused mathalfa and barcolor options
+\DeclareDefaultOption{}% suppress warning about unused mathalfa option
\ProcessKeyvalOptions{asmejour}
%% Turn off these keys now that we're done with them
-\def\@KeyFamily{asmejour}
\NewDocumentCommand\aj@DisableOption{m}{%
\DisableKeyvalOption[%
action=ignore,%
@@ -191,57 +198,62 @@
]{#1}{\@KeyFamily}%
}
\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\aj@DisableOption}}
-\@DisableKeys{nodefaultsups;mathalfa;barcolor;main;lang;lang-second;lang-third}
+
+\def\@KeyFamily{asmejour}
+\@DisableKeys{nodefaultsups;mathalfa;barcolor;lineno;balance;nolists;govt;govtsome;contractor;main;lang;lang-second;lang-third}
%%%%%%% PDF/A Compliance Keys %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
+
\newif\ifaj@setpdfa\aj@setpdfafalse
\newif\ifaj@pdfaone\aj@pdfaonefalse
-\ifpdftex %% pdf/a compliance has only been configured for pdflatex
-%
- %%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u)
- \define@key{pdfaopt}{pdf-a}[true]{%
- \aj@setpdfatrue
- \PassOptionsToPackage{pdfa,pdfapart=3,pdfaconformance=u}{hyperref}%
- }
- %%% to select part 1, 2 or 3
- \define@key{pdfaopt}{pdfapart}[3]{%
- \PassOptionsToPackage{pdfapart=#1}{hyperref}%
- \ifthenelse{\equal{#1}{1}}{\aj@pdfaonetrue}{\relax}%
- }
- %% to select conformance b or u. NB: a is not possible with pdfLaTeX, and u is not possible with 1.
- \define@key{pdfaopt}{pdfaconformance}[u]{%
- \PassOptionsToPackage{pdfaconformance=#1}{hyperref}%
- }
-\else
- \define@key{pdfaopt}{pdf-a}[true]{%
- \aj@setpdfatrue
+\if@asme@pdfmanagement\else
+
+ \SetupKeyvalOptions{
+ family=pdfaopt,
+ prefix=pdafopt@,
+ setkeys=\kvsetkeys,
}
-\fi
-
-\ProcessKeyvalOptions{pdfaopt}
-
-%% Done with these keys, so we can now disable them
-\def\@KeyFamily{pdfaopt}
-\@DisableKeys{pdf-a;pdfapart;pdfaconformance}
+
+ \ifpdftex %% pdf/a compliance has only been configured for pdflatex. Revised 2023/10/20
+ %
+ %%% set key [pdfa] to activate pdf/a compliance (default is pdf/A-3u)
+ \define@key{pdfaopt}{pdf-a}[true]{%
+ \aj@setpdfatrue
+ \PassOptionsToPackage{pdfa}{hyperref}
+ \AtBeginDocument{\hypersetup{pdfapart=3,pdfaconformance=u}}% note: hyperref takes these options if hyperxmp is loaded
+ }
+ %%% to select part 1, 2 or 3
+ \define@key{pdfaopt}{pdfapart}[3]{%
+ \def\asmejour@tempa{#1}
+ \AtBeginDocument{\hypersetup{pdfapart=\asmejour@tempa}}
+ \ifthenelse{\equal{#1}{1}}{\aj@pdfaonetrue}{\relax}%
+ }
+ %% to select conformance b or u. NB: a is not possible with pdfLaTeX, and u is not possible with 1.
+ \ExplSyntaxOn
+ \define@key{pdfaopt}{pdfaconformance}[u]{%
+ \str_set:Ne \l_tmp_str { \str_uppercase:n {#1} }
+ \AtBeginDocument{\hypersetup{pdfaconformance=\l_tmp_str}}
+ }
+ \ExplSyntaxOff
+ \else
+ \define@key{pdfaopt}{pdf-a}[true]{%
+ \aj@setpdfatrue
+ }
+ \fi
+ \ProcessKeyvalOptions{pdfaopt}
+
+ %% Done with these keys, so we can now disable them
+ \def\@KeyFamily{pdfaopt}
+ \@DisableKeys{pdf-a;pdfapart;pdfaconformance}
+\fi
%%%%%%%%%% Further class options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Option to obtain line numbers [lineno]
-\newif\ifaj@lineno\aj@linenofalse
-\DeclareOption{lineno}{\aj@linenotrue}
-
-%%% Option to balance column height on last page [balance]
-\newif\ifaj@balance\aj@balancefalse
-\DeclareOption{balance}{\aj@balancetrue}
-
-%% Option to omit lists of figures and tables
-\newif\ifaj@lists\aj@liststrue
-\DeclareOption{nolists}{\aj@listsfalse}
-
%% Option to omit ASME footer
\DeclareOption{nofoot}{%
\AtBeginDocument{\pagestyle{plain}%
@@ -251,6 +263,7 @@
}
}
}
+
%% Option to omit ASME copyright
\DeclareOption{nocopyright}{%
\AtBeginDocument{\fancypagestyle{title}{%
@@ -262,44 +275,63 @@
}
}
-%% Option for copyright notice if all authors are government employees [govt]
-\newif\ifaj@govt\aj@govtfalse
-\DeclareOption{govt}{\aj@govttrue}
-
-%% Option for copyright notice if some (not all) authors are government employees [govtsome]
-\newif\ifaj@govtsome\aj@govtsomefalse
-\DeclareOption{govtsome}{\aj@govtsometrue}
-
-%% Option for government contractor copyright notice [contractor]
-\newif\ifaj@contractor\aj@contractorfalse
-\DeclareOption{contractor}{\aj@contractortrue}
-
%% 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
%% ASME word separation is greater than newtxtext defaults so change these parameters.
\PassOptionsToPackage{spacing=0.3em, stretch=0.18em, shrink=0.10em}{newtxtext}% increased shrink from 0.08, 2021/01/30
-%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups]
-\ifthenelse{\boolean{DefaultSups}}{\PassOptionsToPackage{defaultsups}{newtxtext}}{\relax}
-
%% Disable newtxtext osf option, which is not appropriate for documents in this class
\DeclareOption{osf}{%
\PassOptionsToPackage{lining}{newtxtext}%
}
+%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups]
+%% This naming is inverse to the newtxtext package, which uses the superior font by default!
+\ifasmejour@nodefaultsups
+ \ifpdftex
+ \else
+ \ClassWarningNoLine{asmejour}{The [nodefaultsups] option is only supported with pdftex. It will be ignored}%
+ \fi
+\else
+ \ifpdftex
+ \PassOptionsToPackage{defaultsups}{newtxtext}
+ \fi
+\fi
+
%% Option to hyphenate the typewriter font [hyphenate]
\DeclareOption{hyphenate}{%
\PassOptionsToPackage{hyphenate}{inconsolata}%
\LogNote{Allowing hyphenation of typewriter font}%
}
+
+\DeclareOption{hyphenate}{%
+ \ifpdftex
+ \PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata
+ \LogNote{Allowing hyphenation of typewriter font}%
+ \else
+ \ClassWarningNoLine{asmejour}{The [hyphenate] option is only supported with pdftex. It will be ignored}%
+ \fi
+}
+
%% Option to enforce monospacing of words the typewriter font [mono]
+\def\MonoNotMono{WordSpace={1,1.33,1.67}}% for Inconsolatazi4; default allows word spacing (is not mono)
\DeclareOption{mono}{%
- \PassOptionsToPackage{mono}{inconsolata}%
+ \ifpdftex
+ \PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata
+ \else
+ \def\MonoNotMono{}%
+ \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}{%
- \PassOptionsToPackage{var0}{inconsolata}% var0 is a key via xkeyval in inconsolata
+ \ifpdftex
+ \PassOptionsToPackage{var0}{inconsolata}% var0 is a key via xkeyval in inconsolata
+ \else
+ \def\ssztwo{+ss02}% stylistic alternate for regular zero
+ \fi
}
%% Suppress warnings about keys as unused global options
@@ -307,6 +339,7 @@
\ProcessOptions \relax
+
%%%%%%%%%%%% Page size, bibliography, graphics, color, etc. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage[paperheight=285.7mm, paperwidth=215.900mm, left=21.100mm, right=21.100mm, top=15.9mm, bottom = 24mm, footskip=8mm]{geometry}
@@ -320,8 +353,16 @@
\renewcommand*{\bibfont}{\footnotesize}
\RequirePackage{graphicx}
-\ifpdf\def\MyColorOption{fixpdftex}\else\ifluatex\def\MyColorOption{luatex}\else\def\MyColorOption{}\fi\fi
-\RequirePackage[hyperref,\MyColorOption,dvipsnames,svgnames,x11names]{xcolor}
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}% remove obsolete options, 2023/10/23
+
+% Allow pre 2021/11/15 formats to see the graphicx alt key without causing an error, in preparation for tagged pdf
+\IfFormatAtLeastTF{2021/11/15}{
+ \relax
+}{
+ \AtBeginDocument{
+ \IfPackageLoadedTF{graphicx}{\define@key{Gin}{alt}{}}{\relax}
+ }
+}
% Nice solution from DPC to prevent aux file errors when switching from pdflatex to lualatex
\ifx\directlua\undefined
@@ -345,6 +386,7 @@
\renewcommand*{\bottomrule}{\specialrule{0.5pt}{1pt}{\doublerulesep}\specialrule{0.5pt}{0pt}{0pt}}
%%%%%%%%%%%%% PDF/A related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% new pdf management in LaTeX, using \DocumentMetaData{..}, is preferred to this approach.
\ifpdftex
\ifaj@pdfaone
\pdfminorversion=4 % for pdf/a-1 need version 4, not 7
@@ -355,9 +397,8 @@
\RequirePackage[utf8]{inputenc}% for backward compatibility with pre-2018 LaTeX distributions
\else
\ifaj@setpdfa\ClassWarningNoLine{asmejour}{pdf-a option requires pdfLaTeX engine. Under LuaLaTeX, use %
- \protect\RequirePackage{pdfmanagement-testphase} %
- \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmejour}}\fi%
- \ifluatex
+ \protect\DocumentMetadata{pdfstandard=A-3b} before \protect\documentclass[..]{asmeconf}}\fi%
+ \ifx\directlua\undefined\else
\directlua{
if pdf.getminorversion() \string~= 7 then
if (status.pdf_gone and status.pdf_gone > 0)
@@ -368,7 +409,7 @@
end
end
\fi
- }% will lose some accented characters this way... better to use fontspec, if the systems fonts exist.
+ }% will lose some accented characters this way... better to use fontspec, if the system fonts exist.
\fi
@@ -381,29 +422,68 @@
\RequirePackage[helvratio=0.91]{newtxtext}% add this scaling 2022/06/26
\RequirePackage[varl,varqu]{inconsolata}% sans typewriter font; restored varl, varqu 2020/08/10
\RequirePackage[]{newtxmath}
-\else % use lualatex without font support for other languages (easier set-up and still enables luacode for numerics). Added 2022/06/26.
- \renewcommand*\rmdefault{ntxtlf} % roman font for math
- \RequirePackage[T1]{fontenc} % qhv and zi4 are not TU encoded, 2021/12/24
- \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
- \DeclareFontFamily{T1}{zi4}{}% typewriter (Inconsolata)
- \DeclareFontShape{T1}{zi4}{m}{n}{<-> s*[1.0] t1-zi4r-5}{}% with options varl and var qu
- \DeclareFontShape{T1}{zi4}{b}{n}{<-> s*[1.0] t1-zi4b-5}{}
- \DeclareFontShape{T1}{zi4}{bx}{n}{<-> s*[1.0] t1-zi4b-5}{}
- \RequirePackage[]{newtxmath} % options will be as passed from newtx
- \RequirePackage[type1text,nofontspec,helvratio=0.91]{newtxtext}% will lose some accented characters this way ... better to use fontspec
- \@ifpackagelater{newtxtext}{2022/02/28}{\relax}{%
- \ClassWarning{asmeconf}{Your copy of the newtxtext package is older than 2022/02/28, so you will see error messages about unknown options 'type1text' and 'nofontspec'. You can click through these for now, but I recommend you update your LaTeX installation for best results.}
- }
- \providecommand*{\DeclareFontFamilySubstitution}[3]{\relax}% folks with old latex formats will get a different typewriter font...
- \AtBeginDocument{%
- \DeclareFontFamilySubstitution{T1}{\ttdefault}{zi4}
- }
+\else % use lualatex with newtxmath and fontspec for text primary fonts. Revised 2023/10/21.
+%
+ %% 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
+%
+ \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 DON'T have these fonts, you will see ERROR messages!}
+%
+ \IfFontExistsTF{TeXGyreTermesX}{}{\ClassWarning{asmeconf}{\FontWarning} }
+ \IfFontExistsTF{texgyreheros}{}{ \ClassWarning{asmeconf}{\FontWarning} }
+ \IfFontExistsTF{Inconsolatazi4}{}{\ClassWarning{asmeconf}{\FontWarning} }
+ %
+ \setmainfont{TeXGyreTermesX}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},%% This stretch matches newtxtext a little better. 1.4
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Italic,
+ BoldFont = *-Bold,
+ BoldItalicFont = *-BoldItalic,
+ Numbers = Lining,
+ ]
+ \setsansfont{texgyreheros}[% Presumes these are system fonts! Available at: http://www.gust.org.pl/projects/e-foundry/tex-gyre
+ WordSpace = {1,1.4,1},
+ Extension = .otf,
+ UprightFont = *-regular,
+ ItalicFont = *-italic,
+ 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)
+ \MonoNotMono,
+ Scale=1.05,% rescaled from 1, 22/03/10
+ Extension = .otf,
+ UprightFont = *-Regular,
+ ItalicFont = *-Regular,% has no italic face
+ BoldFont = *-Bold,
+ BoldItalicFont = *-Bold,% has no italic face
+ RawFeature = {+ss01,\ssztwo,+ss03},
+ ]
\fi
+%% override \textsu if using default superiors (allow for undefined \textsu in fontspec). Revised 2023/10/21
+\providecommand\NewCommandCopy{\let} % for pre-2020/10 LaTeX distributions
+\providecommand\RenewCommandCopy{\let}
-%% override \textsu if using default superiors
-\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax}
+\ifx\textsu\undefined\NewCommandCopy\textsu\textsuperscript\fi
+\ifasmejour@nodefaultsups\else
+ \RenewCommandCopy\textsu\textsuperscript
+\fi
+%%
\RequirePackage[]{mathalfa}% load optional fonts for Calligraphy, Script, etc.
@@ -427,13 +507,7 @@
\emergencystretch 3em
%% TeX Gyre Heros Condensed is qhvc (regular is qhv).
-\ifluatex % 2022/05/08
- \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
-\fi
-\newcommand*{\CondSans}{\fontencoding{T1}\selectfont\fontfamily{qhvc}\selectfont}
+\newcommand*{\CondSans}{\fontencoding{T1}\fontfamily{qhvc}\selectfont}% remove extra \selectfont, 2023/10/21
\renewcommand\huge{\@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 font only
@@ -444,101 +518,101 @@
%% It's intended for use in the figure and table captions.
%% Fonts are from newtxsf package.
\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}
-\SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{n}% \mathsf is upright
+ \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}
+ \SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{n}% \mathsf is upright
%% These lines are to provide math accents for the sans and sansbold math versions.
%% The accents from ntxsfmi work normally with regular times fonts. Added 2021/01/27
\DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it}
-\SetSymbolFont{lettersAB}{normal}{U}{ntxsfmia}{m}{it}
-\SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{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}
+ \SetSymbolFont{lettersAB}{normal}{U}{ntxsfmia}{m}{it}
+ \SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{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{\sfDelta}{\mathalpha}{lettersAB}{1}
-\DeclareMathSymbol{\sfTheta}{\mathalpha}{lettersAB}{2}
-\DeclareMathSymbol{\sfLambda}{\mathalpha}{lettersAB}{3}
-\DeclareMathSymbol{\sfXi}{\mathalpha}{lettersAB}{4}
-\DeclareMathSymbol{\sfPi}{\mathalpha}{lettersAB}{5}
-
-\DeclareMathSymbol{\sfSigma}{\mathalpha}{lettersAB}{6}
-\DeclareMathSymbol{\sfUpsilon}{\mathalpha}{lettersAB}{7}
-\DeclareMathSymbol{\sfPhi}{\mathalpha}{lettersAB}{8}
-\DeclareMathSymbol{\sfPsi}{\mathalpha}{lettersAB}{9}
-\DeclareMathSymbol{\sfOmega}{\mathalpha}{lettersAB}{10}
-
-\DeclareMathSymbol{\sfalpha}{\mathalpha}{lettersAB}{11}
-\DeclareMathSymbol{\sfbeta}{\mathalpha}{lettersAB}{12}
-\DeclareMathSymbol{\sfgamma}{\mathalpha}{lettersAB}{13}
-\DeclareMathSymbol{\sfdelta}{\mathalpha}{lettersAB}{14}
-\DeclareMathSymbol{\sfepsilon}{\mathalpha}{lettersAB}{15}
-
-\DeclareMathSymbol{\sfzeta}{\mathalpha}{lettersAB}{16}
-\DeclareMathSymbol{\sfeta}{\mathalpha}{lettersAB}{17}
-\DeclareMathSymbol{\sftheta}{\mathalpha}{lettersAB}{18}
-\DeclareMathSymbol{\sfiota}{\mathalpha}{lettersAB}{19}
-\DeclareMathSymbol{\sfkappa}{\mathalpha}{lettersAB}{20}
-
-\DeclareMathSymbol{\sflambda}{\mathalpha}{lettersAB}{21}
-\DeclareMathSymbol{\sfmu}{\mathalpha}{lettersAB}{22}
-\DeclareMathSymbol{\sfnu}{\mathalpha}{lettersAB}{23}
-\DeclareMathSymbol{\sfxi}{\mathalpha}{lettersAB}{24}
-\DeclareMathSymbol{\sfpi}{\mathalpha}{lettersAB}{25}
-
-\DeclareMathSymbol{\sfrho}{\mathalpha}{lettersAB}{26}
-\DeclareMathSymbol{\sfsigma}{\mathalpha}{lettersAB}{27}
-\DeclareMathSymbol{\sftau}{\mathalpha}{lettersAB}{28}
-\DeclareMathSymbol{\sfupsilon}{\mathalpha}{lettersAB}{29}
-\DeclareMathSymbol{\sfphi}{\mathalpha}{lettersAB}{30}
-
-\DeclareMathSymbol{\sfchi}{\mathalpha}{lettersAB}{31}
-\DeclareMathSymbol{\sfpsi}{\mathalpha}{lettersAB}{32}
-\DeclareMathSymbol{\sfomega}{\mathalpha}{lettersAB}{33}
-\DeclareMathSymbol{\sfvarepsilon}{\mathalpha}{lettersAB}{34}
-\DeclareMathSymbol{\sfvartheta}{\mathalpha}{lettersAB}{35}
-
-\DeclareMathSymbol{\sfvarpi}{\mathord}{lettersAB}{36}
-\DeclareMathSymbol{\sfvarrho}{\mathord}{lettersAB}{37}
-\DeclareMathSymbol{\sfvarsigma}{\mathord}{lettersAB}{38}
-\DeclareMathSymbol{\sfvarphi}{\mathord}{lettersAB}{39}
-\DeclareMathSymbol{\sfitvarkappa}{\mathalpha}{lettersAB}{40}
-\DeclareMathSymbol{\sfvarkappa}{\mathalpha}{lettersAB}{40}
-\DeclareMathSymbol{\sfitnabla}{\mathalpha}{lettersAB}{42}
-\DeclareMathSymbol{\sfnabla}{\mathalpha}{lettersAB}{43}
-\DeclareMathSymbol{\sfhslash}{\mathalpha}{lettersAB}{52}% this is not upright
-\DeclareMathSymbol{\sfhbar}{\mathalpha}{lettersAB}{53}% this is not upright
+ \DeclareMathSymbol{\sfGamma}{\mathalpha}{lettersAB}{0}% adjust to avoid overwriting newtxmath commands,
+ \DeclareMathSymbol{\sfDelta}{\mathalpha}{lettersAB}{1}
+ \DeclareMathSymbol{\sfTheta}{\mathalpha}{lettersAB}{2}
+ \DeclareMathSymbol{\sfLambda}{\mathalpha}{lettersAB}{3}
+ \DeclareMathSymbol{\sfXi}{\mathalpha}{lettersAB}{4}
+ \DeclareMathSymbol{\sfPi}{\mathalpha}{lettersAB}{5}
+
+ \DeclareMathSymbol{\sfSigma}{\mathalpha}{lettersAB}{6}
+ \DeclareMathSymbol{\sfUpsilon}{\mathalpha}{lettersAB}{7}
+ \DeclareMathSymbol{\sfPhi}{\mathalpha}{lettersAB}{8}
+ \DeclareMathSymbol{\sfPsi}{\mathalpha}{lettersAB}{9}
+ \DeclareMathSymbol{\sfOmega}{\mathalpha}{lettersAB}{10}
+
+ \DeclareMathSymbol{\sfalpha}{\mathalpha}{lettersAB}{11}
+ \DeclareMathSymbol{\sfbeta}{\mathalpha}{lettersAB}{12}
+ \DeclareMathSymbol{\sfgamma}{\mathalpha}{lettersAB}{13}
+ \DeclareMathSymbol{\sfdelta}{\mathalpha}{lettersAB}{14}
+ \DeclareMathSymbol{\sfepsilon}{\mathalpha}{lettersAB}{15}
+
+ \DeclareMathSymbol{\sfzeta}{\mathalpha}{lettersAB}{16}
+ \DeclareMathSymbol{\sfeta}{\mathalpha}{lettersAB}{17}
+ \DeclareMathSymbol{\sftheta}{\mathalpha}{lettersAB}{18}
+ \DeclareMathSymbol{\sfiota}{\mathalpha}{lettersAB}{19}
+ \DeclareMathSymbol{\sfkappa}{\mathalpha}{lettersAB}{20}
+
+ \DeclareMathSymbol{\sflambda}{\mathalpha}{lettersAB}{21}
+ \DeclareMathSymbol{\sfmu}{\mathalpha}{lettersAB}{22}
+ \DeclareMathSymbol{\sfnu}{\mathalpha}{lettersAB}{23}
+ \DeclareMathSymbol{\sfxi}{\mathalpha}{lettersAB}{24}
+ \DeclareMathSymbol{\sfpi}{\mathalpha}{lettersAB}{25}
+
+ \DeclareMathSymbol{\sfrho}{\mathalpha}{lettersAB}{26}
+ \DeclareMathSymbol{\sfsigma}{\mathalpha}{lettersAB}{27}
+ \DeclareMathSymbol{\sftau}{\mathalpha}{lettersAB}{28}
+ \DeclareMathSymbol{\sfupsilon}{\mathalpha}{lettersAB}{29}
+ \DeclareMathSymbol{\sfphi}{\mathalpha}{lettersAB}{30}
+
+ \DeclareMathSymbol{\sfchi}{\mathalpha}{lettersAB}{31}
+ \DeclareMathSymbol{\sfpsi}{\mathalpha}{lettersAB}{32}
+ \DeclareMathSymbol{\sfomega}{\mathalpha}{lettersAB}{33}
+ \DeclareMathSymbol{\sfvarepsilon}{\mathalpha}{lettersAB}{34}
+ \DeclareMathSymbol{\sfvartheta}{\mathalpha}{lettersAB}{35}
+
+ \DeclareMathSymbol{\sfvarpi}{\mathord}{lettersAB}{36}
+ \DeclareMathSymbol{\sfvarrho}{\mathord}{lettersAB}{37}
+ \DeclareMathSymbol{\sfvarsigma}{\mathord}{lettersAB}{38}
+ \DeclareMathSymbol{\sfvarphi}{\mathord}{lettersAB}{39}
+ \DeclareMathSymbol{\sfitvarkappa}{\mathalpha}{lettersAB}{40}
+ \DeclareMathSymbol{\sfvarkappa}{\mathalpha}{lettersAB}{40}
+ \DeclareMathSymbol{\sfitnabla}{\mathalpha}{lettersAB}{42}
+ \DeclareMathSymbol{\sfnabla}{\mathalpha}{lettersAB}{43}
+ \DeclareMathSymbol{\sfhslash}{\mathalpha}{lettersAB}{52}% this is not upright
+ \DeclareMathSymbol{\sfhbar}{\mathalpha}{lettersAB}{53}% this is not upright
%%% sans math version, potential value with PGFPlots, and provisionally called in subfigure captions.
%%% this is experimental, still needs stress testing. 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}
+ \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}
%%%%%%%%%%%%%%%%% Some adjustments to math layout %%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -554,32 +628,25 @@
%%%%%%%%%%%%%%%%% 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)}{}{}
%% Ensure that the current font is used for equation tags, not \normalfont as set by amsmath
\def\maketag@@@#1{\hbox{\m@th#1}}
-%% Italicize alph part of subequation numbers. 30 Dec 2022.
-\RenewDocumentEnvironment{subequations}{}{%
- \refstepcounter{equation}%
- \protected@edef\theparentequation{\theequation}%
- \setcounter{parentequation}{\value{equation}}%
- \setcounter{equation}{0}%
- \def\theequation{\theparentequation{\itshape\alph{equation}}}%
- \ignorespaces
-}{%
- \setcounter{equation}{\value{parentequation}}%
- \ignorespacesafterend
-}
+%% Italicize alph part of subequation numbers. Revised 2023/10/20
+\patchcmd{\subequations}{\theparentequation\alph{equation}}{\theparentequation\itshape\alph{equation}}{}{}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ifaj@lineno
+%%%%% lineno related %%%%
+
+\ifasmejour@lineno
\RequirePackage[switch,mathlines]{lineno}%
\renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}}%
\AtBeginDocument{\linenumbers}%
- \ifaj@balance
+ \ifasmejour@balance
\ClassWarningNoLine{asmejour}{Package lineno loaded, so final column balancing will be disabled}%
\fi
%%% Allow line numbering in AMS math environments.
@@ -600,7 +667,7 @@
%
\else
\ProvideDocumentEnvironment{linenomath}{}{}{}%
- \ifaj@balance % balancing through flushend can produce weird errors
+ \ifasmejour@balance % balancing through flushend can produce weird errors
\RequirePackage{flushend}% flushend package is NOT compatible with lineno
\AtEndDocument{\flushcolsend}%
\LogNote{Calling flushend package to balance column height on last page}%
@@ -612,6 +679,7 @@
%% ASME page proofs seem to align the number at top of the line, rather than bottom as done here.
+
%%%%%%%%%%%%%%%%% Footer Set Up %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%% footer text names %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -690,16 +758,12 @@
%% include a comma for sequential footnotes
-\newcommand\nextToken\relax
+\ExplSyntaxOn
+ \cs_new:Npn \__asmejour_NoteComma:n { \peek_meaning:NT \footnote { \textsu{\mdseries,} } }
+ \cs_new_eq:NN \__savefootnote \footnote
+ \cs_gset_protected:Npn \footnote #1 { \__savefootnote{#1}\__asmejour_NoteComma:n }
+\ExplSyntaxOff
-\let\oldfootnote\footnote
-\renewcommand\footnote[1]{%
- \oldfootnote{#1}\futurelet\nextToken\isOtherfnote}
-
-\newcommand\isOtherfnote{%
- \ifx\footnote\nextToken\textsu{\mdseries,}%
- \fi%
-}
%%%%%%%%% Caption Related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -769,22 +833,7 @@
%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\newif\if@asme@pdfmanagement% Thanks to Ulrike Fischer
-\ExplSyntaxOn
-\bool_if:nTF
- {
- \bool_lazy_and_p:nn
- {\cs_if_exist_p:N \pdfmanagement_if_active_p:}
- { \pdfmanagement_if_active_p: }
- }
- {
- \@asme@pdfmanagementtrue
- }
- {
- \@asme@pdfmanagementfalse
- }
-\ExplSyntaxOff
-
+%% new pdf management in LaTeX, with \DocumentMetaData{..}, is preferred to this approach.
\ifpdftex
%%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation.
\IfFormatAtLeastTF{2020/10/01}{\relax}{%
@@ -817,23 +866,12 @@
\fi
\fi
-\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf
-
-% Patch bug in hyperxmp, unless a more recent version is used.
-\@ifpackagelater{hyperxmp}{2022/07/07}{% 2020/11/22}{%
- \relax
- }{%
- \newcount\hypxmp@tempcnt
- \define@key{Hyp}{pdfapart}{%
- \afterassignment\hyxmp@no@bad@parts\hypxmp@tempcnt=0#1\relax
- \hyxmp@pdfstringdef\@pdfapart{\the\hypxmp@tempcnt}%
- }
-}
+%%%
\RequirePackage[psdextra]{hyperref} % recent kernel transition suggests providing most hyperref options via \hypersetup,
% but setting psdextra here (for additional math support in bookmarks) 2021/12/23
\hypersetup{%
- unicode, % Unicode encoded PDF strings
+ unicode, % Unicode encoded PDF strings, default as of hyperref v7.0
pdfborder={0 0 0},%
bookmarksnumbered=true,%
bookmarksopen=true,%
@@ -858,6 +896,25 @@
\providecommand\hrefurl[2]{\href{#1}{#2}}% to address certain issues around URL recognition with new pdf management code, 2021/12/22
%% This alias is also incorporated into asmejour.bst
+\if@asme@pdfmanagement
+ \ClassInfo{asmejour}{pdfmanagement is defined. Class file will not load hyperxmp}
+\else
+ \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{asmeconf}{hyperxmp v5.11 or later is in use}
+ }{%
+ \ifx\undefined\hyxmp@no@bad@parts\relax\else
+ \newcount\hypxmp@tempcnt
+ \define@key{Hyp}{pdfapart}{%
+ \afterassignment\hyxmp@no@bad@parts\hypxmp@tempcnt=0#1\relax
+ \hyxmp@pdfstringdef\@pdfapart{\the\hypxmp@tempcnt}%
+ }
+ \fi
+ }
+\fi
+
%%%%%% Adjustments to accommodate hyperref bookmarks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% ==> recent and evolving development of \pdfstring removes all robust commands from bookmarks, so
@@ -886,7 +943,7 @@
}
%% Let's make sure footnotes in section headings don't break pdf bookmarks.
-\robustify{\footnote}
+%\robustify{\footnote} % redefined footnote above is protected, 2023/10/21
\pdfstringdefDisableCommands{%
\def\footnote#1{}%
}
@@ -929,26 +986,9 @@
\newlength\nomenwidth
\newlength\savitemsep
-%% ==> xparse "g" argument used in this version of \entry is deprecated; so have phased out this version, 2021/12/22
-%% If the second argument of \entry is omitted, a bold section heading is produced, e.g. \entry{Greek Letters}
-%\NewDocumentCommand{\entry}{m g}{%
-% \IfNoValueTF{#2}{%
-% \itemsep12\p@ plus 4\p@ minus 4\p@% \bigskip
-% \goodbreak\item[\bfseries#1\hfill]\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000%
-% }{%
-% \item[\hfill#1${} = {}$]#2%
-% \@itempenalty=-\@lowpenalty%
-% \setlength\itemsep\savitemsep%
-% \settowidth\@widest{#1${} = {}$}%
-% \ifdim\@widest>\widest \global\setlength\widest\@widest\fi%
-% }
-%}
-
\NewDocumentCommand{\entry}{m m}{%
-\ifblank{#2}{%
- \ClassWarningNoLine{asmejour}{The command \protect\entry should have two arguments. For subheadings, \protect\EntryHeading is preferred}
- \itemsep12\p@ plus 4\p@ minus 4\p@% \bigskip
- \goodbreak\item[\bfseries#1\hfill]\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000%
+ \ifblank{#2}{%
+ \ClassError{asmejour}{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.}
}{%
\item[\hfill#1${} = {}$]#2%
\@itempenalty=-\@lowpenalty%
@@ -961,7 +1001,7 @@
%% A separate command command for nomenclature subheadings
\NewDocumentCommand\EntryHeading{m}{%
\itemsep12\p@ plus 4\p@ minus 4\p@% \bigskip
- \goodbreak\item[\bfseries#1\hfill]\itemsep3\p@ plus 1\p@ minus 1\p@\@itempenalty=1000%
+ \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}
@@ -994,7 +1034,9 @@
%%%%%%%%%%%%%%%% List of figures and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% ASME requires these lists for production.
-\ifaj@lists
+\ifasmejour@nolists
+ \LogNote{Omitting lists of figures and tables}%
+\else
\AtEndDocument{%
\clearpage
\twocolumn[%
@@ -1004,9 +1046,20 @@
\end{@twocolumnfalse}
]%
}%
-\else
- \LogNote{Omitting lists of figures and tables}%
\fi
+%\ifaj@lists
+% \AtEndDocument{%
+% \clearpage
+% \twocolumn[%
+% \begin{@twocolumnfalse}
+% \listoffigures
+% \listoftables
+% \end{@twocolumnfalse}
+% ]%
+% }%
+%\else
+% \LogNote{Omitting lists of figures and tables}%
+%\fi
%%%%%%%%%%%%%%%% Author/Title/Abstract block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1066,7 +1119,12 @@
\NewDocumentCommand\@SetAbstract{+m}{% add + to enable blank lines, etc. 2021/01/31
\SetVerticalCoffin{\Abstract}{114mm}{%
- \noindent\itshape%
+ \ifasmejour@lineno
+ \rightlinenumbers*
+ \renewcommand*{\thelinenumber}{\roman{linenumber}}
+ \internallinenumbers
+ \fi
+ \noindent\itshape%
#1
\@keywords\par%
\vspace*{4mm}% <== at bottom of abstract to extend rule
@@ -1081,7 +1139,7 @@
\else
\addtolength{\rulecofheight}{7.0mm}
\fi
- \SetHorizontalCoffin \ruleblock {\color{\@ColorName}\rule{2.1mm}{\rulecofheight}}
+ \SetHorizontalCoffin \ruleblock {\color{\asmejour@barcolor}\rule{2.1mm}{\rulecofheight}}
\JoinCoffins\firstrowauthorblock[vc,r]\ruleblock[vc,l](\coffinsep,0pt)
\JoinCoffins\firstrowauthorblock[vc,r]\Title[vc,l](\coffinsep,0pt)
\centerline{\TypesetCoffin\firstrowauthorblock} %% in this instance, \centerline is better than \centering
@@ -1125,11 +1183,11 @@
\footnotetext{\CAwords\@CAsep \@CAemail}% includes legacy code, will remove \@CA commands eventually
\fi
\ifaj@Date\revfootnote{\@Date}\else\relax\fi
- \ifaj@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@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
- \ifaj@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@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
- \ifaj@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@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
}