texlive[73649] Master/texmf-dist: asmeconf (30jan25)

commits+karl at tug.org commits+karl at tug.org
Thu Jan 30 22:10:06 CET 2025


Revision: 73649
          https://tug.org/svn/texlive?view=revision&revision=73649
Author:   karl
Date:     2025-01-30 22:10:06 +0100 (Thu, 30 Jan 2025)
Log Message:
-----------
asmeconf (30jan25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/asmeconf/README.md
    trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.pdf
    trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.tex
    trunk/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls

Modified: trunk/Master/texmf-dist/doc/latex/asmeconf/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmeconf/README.md	2025-01-30 21:09:48 UTC (rev 73648)
+++ trunk/Master/texmf-dist/doc/latex/asmeconf/README.md	2025-01-30 21:10:06 UTC (rev 73649)
@@ -1,7 +1,7 @@
  
   #asmeconf: A latex template for ASME conference papers#
  
-  Version 1.39 dated 2025/01/26.
+  Version 1.40 dated 2025/01/29.
 
   ####Overview####
   This class provides a LaTeX template for ASME Conference papers formatted according to
@@ -80,6 +80,11 @@
  
  ####Change log####
  
+ v1.40 (2025/01/29)
+ - Drop titlesec package to avoid degrading tag structure
+ - Rework tagging of coffins in author/affiliation block
+ - Fix minor bug that transferred spaces following \\affil and \\CorrespondingAuthor into superscripts
+
  v1.39 (2025/01/26)
  - Recode title and author blocks into expl3, adjust code to support tagged pdf
  - Revise other expl3 command and variable naming

Modified: trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.tex	2025-01-30 21:09:48 UTC (rev 73648)
+++ trunk/Master/texmf-dist/doc/latex/asmeconf/asmeconf-template.tex	2025-01-30 21:10:06 UTC (rev 73649)
@@ -4,7 +4,7 @@
 %%  This file is asmeconf-template.tex, a LaTeX template to format ASME Conference papers according to
 %%  the requirements on ASME's conference web pages, and including hypertext support for the pdf.
 %%
-%%  This file is version 1.39 dated 2025/01/26
+%%  This file is version 1.40 dated 2025/01/29
 %%  
 %%  As of version 1.11, this template defaults to ASME's newer conference guidelines first posted July 2019.
 %% 			Those guidelines changed the requested author block formatting to be inline. 
@@ -149,13 +149,13 @@
 %
 %	For a sole author or a single affiliation for all authors, {#} may be left empty, as \affil{} and \SetAffiliation{} (but not with [grid] option!)
 %
-%   \CorrespondingAuthor{email} follows that author's affiliation, no spaces.  
+%   \CorrespondingAuthor{email} follows that author's affiliation, no spaces before or after 
 %   If multiple corresponding authors, put both email addresses in the same command and place after both authors.
 %
 %   \JointFirstAuthor, if applicable, follows the affiliation of the relevant authors, no spaces.
 
 \SetAuthors{%
-	John H. Lienhard\affil{1}\JointFirstAuthor\CorrespondingAuthor{}, 
+    John H. Lienhard\affil{1}\JointFirstAuthor\CorrespondingAuthor{}, 
 	Luis Hern\'andez\affil{2}\JointFirstAuthor, 
 	Maria Silva\affil{3}, 
 	Henry Tudor\affil{4},  
@@ -162,7 +162,7 @@
 	Catherine~Parr\affil{4}\CorrespondingAuthor{lienhard at mit.edu, kate at thepalace.gov}
 	}
 
-\SetAffiliation{1}{Massachusetts Institute of Technology, Cambridge, MA }
+\SetAffiliation{1}{Massachusetts Institute of Technology, Cambridge, MA}
 \SetAffiliation{2}{Institution or Company Name, City, State}
 \SetAffiliation{3}{Institution or Company Name, City, Province, Canada}
 \SetAffiliation{4}{Hampton Court Palace, Richmond, England}
@@ -393,7 +393,7 @@
 
 \subsubsection*{Date Accessed} The \verb|urldate={..}| field may be used to provide the date on which a given url was accessed. By default, the text printed will be \texttt{Accessed `date',}. The word ``Accessed'' may be changed using the \verb|urltype={..}| field.
 
-\subsubsection*{Conference Location and Date} To specify the city and date of a conference, you can use \verb|venue={..}| and \verb|eventdate={..}| with the entries \verb|@inproceeedings{..| and \verb|@proceeedings{..|.
+\subsubsection*{Conference Location and Date.} To specify the city and date of a conference, you can use \verb|venue={..}| and \verb|eventdate={..}| with the entries \verb|@inproceeedings{..| and \verb|@proceeedings{..|.
 
 \subsubsection*{Capitalization of Titles} ASME's bibliography style requires that document titles be in title case. The first letters of principal words are capitalized. Do this in the \texttt{.bib} file.
 
@@ -541,7 +541,7 @@
 consecutively, following those in the paper. Consider $\rho \neq \textrm{fn}(p)$:
 \begin{align}
 \frac{d\Gamma}{dt} &{}= \frac{d}{dt} \int_{\mathcal{C}} \mathbf{u} \cdot d\mathbf{r}\\
-				   &{}= \int_{\mathcal{C}} \frac{D\mathbf{u}}{Dt} \cdot d\mathbf{r} + \underbrace{\int_{\mathcal{C}} \mathbf{u}\cdot d\biggl( \frac{d\mathbf{r}}{dt}\Biggr)}_{=\, 0} \\[-2pt]
+				   &{}= \int_{\mathcal{C}} \frac{D\mathbf{u}}{Dt} \cdot d\mathbf{r} + \underbrace{\int_{\mathcal{C}} \mathbf{u}\cdot d\biggl( \frac{d\mathbf{r}}{dt}\biggr)}_{=\, 0} \\[-2pt]
                    &{}= \iint_{\mathcal{S}} \nabla \times \frac{D\mathbf{u}}{Dt}  \cdot d\mathbf{A}\\
                    &{}= \iint_{\mathcal{S}}  \nabla p \times \nabla \left( \frac{1}{\rho}\right) \cdot d\mathbf{A}
 \end{align}
@@ -610,7 +610,7 @@
 \end{abstract*}
 \end{selectlanguage}% edited by Aarón Montoya-Moraga
 
-%% If you have trouble with the following passages, you may deleting this stuff and remove the associated language option from \documentclass[..].
+%% If you have trouble with the following passages, delete them and remove the associated language option from \documentclass[..].
 \typeout{If you have trouble with the following passages, your file may not be saved in utf-8 format, or your LaTeX format may be old, or you may not have the assumed font installed. You can delete those lines to resolve the issue.}
 
 %% Examples of abstracts in other languages. The first three are intended for pdflatex, not lualatex.

Modified: trunk/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls	2025-01-30 21:09:48 UTC (rev 73648)
+++ trunk/Master/texmf-dist/tex/latex/asmeconf/asmeconf.cls	2025-01-30 21:10:06 UTC (rev 73649)
@@ -5,8 +5,8 @@
 %%  ASME conference requirements as represented on ASME's conference web pages in 2025.
 %%
 %%  This file's version and date:
-	\def\versionno{1.39}
-	\def\versiondate{2025/01/26\space}
+	\def\versionno{1.40}
+	\def\versiondate{2025/01/29\space}
 %%
 %%  Author: John H. Lienhard, V
 %%          Department of Mechanical Engineering
@@ -505,32 +505,34 @@
 %%   subfigures are not specifically addressed in this patch
 %% 	 babel [spanish] option is NOT compatible with tagging !!
 \ifasmeconf at captionpatch
-%% set github discussion of this patch by Ulrike Fischer
+%%  see github discussion of this patch by Ulrike Fischer
 %% 	https://github.com/latex3/tagging-project/issues/720#issuecomment-2386568711
-    \RemoveFromHook{begindocument}[latex-lab-testphase-float]
-    \ExplSyntaxOn
-    \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
+	\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
-
+ 
 \DeclareCaptionLabelFormat{uppercase}{\MakeTextUppercase{#1} #2}
 \DeclareCaptionTextFormat{boldmath}{\mathversion{sansbold}#1}
 \DeclareCaptionTextFormat{sansmath}{\mathversion{sans}#1}
@@ -1125,37 +1127,43 @@
 
 %%%%%%%%%  Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%% wish to accommodate hyperref
-
-\RequirePackage[raggedright,indentafter]{titlesec}
-
 %% ASME specifies 10 pt headings
-\titleformat{\section}{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\thesection .}{0.5em}{\MakeTextUppercase}
 
-\titleformat{\subsection}{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\thesubsection}{0.5em}{}
-\titleformat{\subsubsection}[runin]{\mathversion{sansbold}\bfseries\sffamily}{\thesubsubsection}{0.5em}{}[.\hspace*{0.5em}]
+%% This approach is intended to avoid breaking tagging code, 2025/01/29
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+                                   {12pt \@plus 4pt \@minus 2pt}%
+                                   {1pt \@plus 2pt \@minus 2pt}%
+                                   {\mathversion{sansbold}\bfseries\sffamily\raggedright\MakeUppercase}}
+\renewcommand\subsection{\@startsection {subsection}{1}{\z@}%
+                                   {12pt \@plus 4pt \@minus 2pt}%
+                                   {1pt \@plus 1pt \@minus 1pt}%
+                                   {\mathversion{sansbold}\normalsize\bfseries\sffamily\raggedright}}
+\renewcommand\subsubsection{\@startsection {subsubsection}{1}{\parindent}%
+                                   {6pt \@plus 3pt \@minus 2pt}%
+                                   {-0.5em}%
+                                   {\mathversion{sansbold}\bfseries\normalsize\sffamily}}
+\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{0.5em}}{}{}
+\patchcmd{\@ssect}{\relax #5}{\relax #5.}{}{}% only \subsubsection* will follow this path
+\let\paragraph\subsubsection
 
-\titlespacing\section{0pt}{12pt plus 4pt minus 2pt}{1pt plus 1pt minus 1pt} % from 2 pt 2 pt 1 pt, 2019/7/7
-\titlespacing\subsection{0pt}{12pt plus 4pt minus 2pt}{0pt plus 2pt minus 1pt}
-\titlespacing\subsubsection{\parindent}{6pt plus 3pt minus 2pt}{0pt plus 2pt minus 1pt} % from 12 4 3, 2019/7/7
+\renewcommand{\appendix}{
+    \par
+    \setcounter{section}{0}
+    \setcounter{subsection}{0}
+    \gdef\thesection{\@Alph\c at section}
+    \gdef\thesubsection{\@Alph\c at section.\@arabic\c at subsection}
+    \pretocmd{\section}{\gdef\@seccntformat##1{\appendixname\ \csname the##1\endcsname.\hspace{0.5em}}}{}{}
+    \let\savhangfrom\@hangfrom
+    \pretocmd{\section}{\gdef\@hangfrom{\relax}}{}{}
+    \pretocmd{\subsection}{\gdef\@seccntformat##1{\csname the##1\endcsname.\hspace{0.5em}}}{}{}
+    \pretocmd{\subsection}{\gdef\@hangfrom{\savhangfrom}}{}{}
+    \patchcmd{\@kernel at tag@hangfrom}{\hangindent \wd\@tempboxa\noindent}{\noindent}{}{}
+}
+%% still need to zero out \hangfrom in appendix \section when tagging is active. 
 
-%%  Special handling of the appendices            
-%%  Assumes that appendices are the last content in paper
-%%  Code revised to better support tagged pdf, 2024/07/26.
-\patchcmd{\appendix}{%
-   \setcounter{subsection}{0}%
-}{%
-   \setcounter{subsection}{0}\pdfbookmark[1]{\appendicesname}{appendices}%
-}{}{}
-\apptocmd{\appendix}{\titleformat{\section}[block]{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase}}{}{}
-% Changed to block layout (rather than default hanging) whilst retaining \raggedright, since "Appendix X." is a very wide hanging indent. 2024/07/26
 
-%% This patches titlesec's unprotected re-definition of \footnote. See discussion here: https://github.com/jbezos/titlesec/issues/48 
-%% Without this patch, recent versions of LaTeX will require \protect\footnote in section headings.
-%% This issue may be corrected in titlesec, but keeping the patch for backward compatibility.
-\patchcmd{\ttl at select}{\def\footnote}{\protected\def\footnote}{\typeout{Asmeconf.sty patched titlesec to have protected def of footnote}}{}
-
-
 %%%%%%%%%%  Hyperref, bookmarks, and PDF/A  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \ifpdftex
@@ -1323,6 +1331,17 @@
 
 %%%%%%%%%%%%%  Define special environments  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+\ExplSyntaxOn
+%% In case tagging is not loaded, 2025/01/26
+\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: } 
+	  \cs_new:Nn  \tagpdfparaOff         { \scan_stop: }
+	  \cs_new:Nn  \tagpdfparaOn          { \scan_stop: }
+	}
+\ExplSyntaxOff
+
 %%%%%% Introduce some special section and other names %%%%%%%%%%%
 
 \providecommand{\nomname}{Nomenclature}  
@@ -1343,16 +1362,26 @@
 	}
 }
 
-\DeclareDocumentEnvironment{abstract}{}{% Overwrites existing abstract environment
+\ExplSyntaxOn
+\DeclareDocumentEnvironment{abstract}{+b}{% Overwrites existing abstract environment
+%    \tag_struct_begin:n{tag=Sect, title-o=\abstractname}
 	\section*{\abstractname}\itshape
+	#1
 	}
-	{\upshape\@keywords
-}
+	{
+		\upshape\@keywords 
+%		\par\tag_struct_end:n
+		\ignorespacesafterend
+	}
 \NewDocumentEnvironment{abstract*}{}{% Abstract with no keywords (same as using empty \keywords{} with first abstract)
+%    \tag_struct_begin:n{tag=Sect, title-o=\abstractname}
 	\section*{\abstractname}\itshape
 	}
-	{\ignorespacesafterend
-}
+	{
+%	\par\tag_struct_end:n
+	\ignorespacesafterend
+	}
+\ExplSyntaxOff
 
 %%   Nomenclature environment  %%%%%%%%%%%%%%%%%%
 %%
@@ -1374,8 +1403,10 @@
 
 %%   Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns. 
 %%   Second optional argument can be used to rename the environment, e.g., to List of Symbols.
+\ExplSyntaxOn
 \NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname}}{%
-        \setlength{\columnsep}{2em} 
+ %       \tag_struct_begin:n{tag=Sect, title-o=\nomname}
+		\setlength{\columnsep}{2em} 
         \setlength{\nomenwidth}{#1}
         \section*{#2}
         \raggedright
@@ -1388,7 +1419,11 @@
              \addtolength{\leftmargin}{\labelsep}%
 			 \setlength{\savitemsep}{\itemsep}%
         }%
-}{\end{list}\ignorespacesafterend} 
+}{\end{list}
+%  \tag_struct_end:
+  \ignorespacesafterend
+}
+\ExplSyntaxOff
 
 %%%%%%%%%%%%%%%%%  Headers and Title  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -1413,15 +1448,7 @@
 }
 \providecommand\@PaperTitle{\hbox{ }}
 
-
 \ExplSyntaxOn
-%% In case tagging is not loaded, 2025/01/26
-\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: } 
-	}
-
 \NewDocumentCommand\@HeaderTitle{}{%
 	\tag_struct_begin:n{tag=Div, title=Conference~information}
 	{\bfseries\sffamily
@@ -1463,10 +1490,9 @@
 %% Flag for corresponding author (expecting just one, but if two enter both email addresses and flag both authors)
 \newif\ifac at CA\ac at CAfalse
 
-\NewDocumentCommand\CorrespondingAuthor{m}{% Revised this command 2020/12/29, to make the CA email mandatory but possibly empty
-   \ignorespaces$\bm{^\ast}$%
+\NewDocumentCommand\CorrespondingAuthor{>{\TrimSpaces} m}{% Revised 2020/12/29 (make CA email mandatory but possibly empty); edit 2025/01/27
    \global\ac at CAtrue%
-   \ifblank{#1}{%
+   \IfBlankTF{#1}{%
          \gdef\@CAsep{\relax}%
          \gdef\@CAemail{\relax}%
          }{%
@@ -1473,9 +1499,9 @@
          \gdef\@CAsep{:\space}%
          \gdef\@CAemail{#1}%
    }%
+   $\bm{^\ast}$\ignorespaces % \ignorespaces is ignored due to code for commas in successive footnotes, below.
 }
 
-
 %%%% option to use the traditional grid layout of authors or the inline style
 
 \ifasmeconf at grid
@@ -1520,7 +1546,7 @@
 		\seq_gput_right:Nn  \g__asmeconf_author_seq      {#1}
 		\__asmeconf_stripaffilnumber:n { #1 }
 		\seq_gput_right:Nn  \g__asmeconf_affiliation_seq { \c_empty_tl } % clear sequence for later use	
-		\seq_gput_right:NV  \g__asmeconf_authoraffil_seq { \int_use:N \g__affiltagno_int } % clear sequence for later use	
+		\seq_gput_right:NV  \g__asmeconf_authoraffil_seq { \int_use:N \g__affiltagno_int }	
 	 }
 	\msg_new:nnn { \ClassName } { missingauthor } { Missing~author~name,~check~for~extra~comma~in~\SetAuthors! }
 
@@ -1664,7 +1690,6 @@
 
     % backward compatibility 
     \cs_if_exist:NF \tl_set:Ne  { \cs_generate_variant:Nn \tl_set:Nn {Ne} }
-    % \cs_if_exist:NF \iow_term:e { \cs_generate_variant:Nn \iow_term:n {e} }
 
     \NewDocumentCommand\@ConstructAuthorBlock{}{%
      	\int_compare:nNnT { \g__asmeconf_authorcnt_int } >  { 3 } {
@@ -1712,7 +1737,7 @@
 \else
 	%%%%%%%%%%%%%%%%%%%%%%   New author layout (inline)  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 	%%
-	%% converted to expl3,  17 August 2024
+	%% converted to expl3, 17 August 2024; revised 27 January 2025
     
     \ExplSyntaxOn 
 
@@ -1721,14 +1746,16 @@
     \coffin_new:N \g__asmeconf_affiliationsblock_coffin
 
     \cs_if_exist:NF \cs_gset:Npe  { \cs_generate_variant:Nn \cs_gset:Npn {Npe} }     
+	\tl_new:N \asmeconf_authors_tl
     \NewDocumentCommand\SetAuthors{m}{
-         \vcoffin_gset:Nnn \g__asmeconf_authorblock_coffin {\textwidth} % switched to vcoffin 2024/10/16 to accommodate tagging
+		\tl_gset:Nn \g_asmeconf_formattedauthors_tl 
          {
-	         \centering\sffamily\bfseries\ignorespaces#1\ignorespaces
+	         \centering\sffamily\bfseries #1
+	     }
 	         \__asmeconf_striptokens:n {#1}
 	  		 \cs_gset:Npe \@author { \tl_use:N \g_asmeconf_authors_tl }% set \@author = list of authors, 2024/07/31
-         }
     }
+
     %% strip \affil{..}, \JointFirstAuthor, \CorrespondingAuthor{...} from argument
     \cs_new_protected:Nn  \__asmeconf_striptokens:n { 
         \tl_set:Nn \l_tmpa_tl {#1}
@@ -1742,18 +1769,17 @@
     }   
     
     \def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}%
-    
+    \seq_gclear_new:N \g__asmeconf_affiliations_seq
     \NewDocumentCommand\SetAffiliation{mm}{%
-       \vcoffin_set:Nnn \g__asmeconf_affiliationblock_coffin { \textwidth } {
-       \ifblank{#1}{%
-       		\centering\sffamily#2\ignorespaces}{% empty argument for 1 author or 1 affiliation, where affiliation need not be tagged
-          	\centering\sffamily\footnotemark[#1]#2\ignorespaces}%
-       }      
-       \coffin_gjoin:NnnNnnnn \g__asmeconf_affiliationsblock_coffin { hc } { b } \g__asmeconf_affiliationblock_coffin {hc } { t } { 0pt} { -1pt } 
-    }
+       \ifblank{#1}{
+       		\seq_gput_right:Nn \g__asmeconf_affiliations_seq { \centering\sffamily \tl_trim_spaces:n{ #2 } }%
+		}{
+		    \seq_gput_right:Nn \g__asmeconf_affiliations_seq { \footnotemark[#1]\centering\sffamily \tl_trim_spaces:n{ #2 } }%
+    	}
+	}
             
 	%%% Affiliation mark
-    \NewDocumentCommand{\affil}{m}{%
+    \NewDocumentCommand{\affil}{>{\TrimSpaces} m}{%
     	\ifblank{#1}{%
 			\ClassWarning{\ClassName}{Empty affiliation tag}%
 			\@gobble% addresses modification for commas
@@ -1762,26 +1788,44 @@
           
  	%%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%%
     \cs_new:Npn   \__asmeconf_OtherNoteComma:n { 
+    	\peek_remove_spaces:n { % added 2025/01/27
     		\peek_meaning:NTF \affil 
 				{ \textsuperscript{\mdseries,} }
 				{ \peek_meaning:NTF \CorrespondingAuthor 
 							{ \textsuperscript{\mdseries,} } 
     						{ \peek_meaning:NT \JointFirstAuthor { \textsuperscript{\mdseries,} } }
-				}
+			}
+		}
 	}
     \cs_new_eq:NN \__asmeconf_saveAF \affil
     \cs_gset_protected:Npn \affil #1               { \__asmeconf_saveAF{#1} \__asmeconf_OtherNoteComma:n } 
     \cs_new_eq:NN \__asmeconf_saveCA \CorrespondingAuthor
-    \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__asmeconf_saveCA{#1} \__asmeconf_OtherNoteComma:n } 
+    \cs_gset_protected:Npn \CorrespondingAuthor #1 { \__asmeconf_saveCA{#1} \__asmeconf_OtherNoteComma:n  } 
     \cs_new_eq:NN \__asmeconf_saveJA \JointFirstAuthor
     \cs_gset_protected:Npn \JointFirstAuthor       { \__asmeconf_saveJA     \__asmeconf_OtherNoteComma:n }  
 
-	%%%    
+	%%% 
+	%% next construct author/affiliation coffin 
+	\int_zero_new:N   \g_asmeconf_count_affil_int
     \NewDocumentCommand\@SetAuthorBlock{}{%
+    \leavevmode
+    \tagpdfparaOff % this pair of tagpdf macros may change over time, 2025/01/28
+       \vcoffin_gset:Nnn \g__asmeconf_authorblock_coffin {\textwidth} % switched to vcoffin 2024/10/16 to accommodate tagging
+       		{ \tl_use:N \g_asmeconf_formattedauthors_tl }
+		\seq_remove_duplicates:N \g__asmeconf_affiliations_seq
+		\int_gset:Nn \g_asmeconf_count_affil_int {\seq_count:N \g__asmeconf_affiliations_seq}
+		\int_zero_new:N  \l__asmeconf_affilno_int
+		\int_until_do:nNnn { \l__asmeconf_affilno_int } > { \g_asmeconf_count_affil_int } {
+	        \vcoffin_set:Nnn \g__asmeconf_affiliationblock_coffin { \textwidth } {
+	        	\seq_item:Nn \g__asmeconf_affiliations_seq { \l__asmeconf_affilno_int }
+        	}
+        \coffin_gjoin:NnnNnnnn \g__asmeconf_affiliationsblock_coffin { hc } { b } \g__asmeconf_affiliationblock_coffin {hc } { t } { 0pt} { -1pt }
+        \int_incr:N \l__asmeconf_affilno_int
+		}
        \coffin_gjoin:NnnNnnnn \g__asmeconf_authorblock_coffin { hc } { b } \g__asmeconf_affiliationsblock_coffin {hc } { t } { 0pt} { -\baselineskip } 
        \coffin_typeset:Nnnnn  \g__asmeconf_authorblock_coffin { l }{ T }{ 0pt }{ 0pt }
+	\tagpdfparaOn\par
     }
-
     \ExplSyntaxOff
 \fi % end if...else for grid
 
@@ -1794,7 +1838,6 @@
       	  \@HeaderTitle 
           \vspace*{2\baselineskip}
 	      \par\tag_struct_begin:n{tag=Div, title=Author~and~affilation}
-	      %% tag structure for inline style still needs work, 2025/01/26
           \ifasmeconf at grid
              \@SetAuthorBlock\@ConstructAuthorBlock
           \else



More information about the tex-live-commits mailing list.