From 8591b56496b93eed20f638ee1ce46b11c3f7be58 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 17 Jan 2021 03:02:33 +0000 Subject: CTAN sync 202101170302 --- macros/latex/contrib/asmeconf/README.md | 43 +- macros/latex/contrib/asmeconf/asmeconf-sample.bib | 80 +- .../latex/contrib/asmeconf/asmeconf-template.pdf | Bin 588137 -> 637738 bytes .../latex/contrib/asmeconf/asmeconf-template.tex | 228 +-- macros/latex/contrib/asmeconf/asmeconf.bst | 42 +- macros/latex/contrib/asmeconf/asmeconf.cls | 1536 ++++++++++++++------ .../latex/contrib/asmeconf/author-grid-style.pdf | Bin 246240 -> 0 bytes .../CONTRACTOR-copyright-asmeconf-template.pdf | Bin 0 -> 483046 bytes .../examples/GOVT-copyright-asmeconf-template.pdf | Bin 0 -> 482459 bytes .../examples/asmeconf-authorgrid-example.pdf | Bin 0 -> 610063 bytes .../examples/asmeconf-authorgrid-example.tex | 650 +++++++++ .../asmeconf/examples/asmeconf-fontspec.pdf | Bin 0 -> 381077 bytes .../asmeconf/examples/asmeconf-fontspec.tex | 444 ++++++ .../examples/asmeconf-lualatex-ode-example.pdf | Bin 0 -> 275358 bytes .../examples/asmeconf-lualatex-ode-example.tex | 254 ++++ 15 files changed, 2712 insertions(+), 565 deletions(-) delete mode 100644 macros/latex/contrib/asmeconf/author-grid-style.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/CONTRACTOR-copyright-asmeconf-template.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/GOVT-copyright-asmeconf-template.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.tex create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.pdf create mode 100644 macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.tex (limited to 'macros/latex/contrib/asmeconf') diff --git a/macros/latex/contrib/asmeconf/README.md b/macros/latex/contrib/asmeconf/README.md index af7db56372..e9385d88d1 100644 --- a/macros/latex/contrib/asmeconf/README.md +++ b/macros/latex/contrib/asmeconf/README.md @@ -1,11 +1,11 @@ #asmeconf: A template for ASME conference papers# - Version 1.21 dated 2020/12/10. + Version 1.22 dated 2021/01/14. ####Overview#### This class provides a template to format ASME Conference papers according to - the requirements on ASME's web pages (as posted in 2020). + the requirements on ASME's web pages (as posted in 2021). [www.asme.org/publications-submissions/proceedings/formatting-the-paper](https://www.asme.org/publications-submissions/proceedings/formatting-the-paper) @@ -21,12 +21,6 @@ - set author names and addresses in either the traditional grid or the more recent inline style -- enable various math and text features with newtxmath and newtxtext packages - -- support bold face, sans serif math in section headings - -- support footnotes in section headings - - provide line numbers for editing and review - support balancing of columns on last page @@ -35,6 +29,16 @@ - support copyright footer for federal employees and contractors +- enable various math and text features with newtxmath and newtxtext packages + +- support bold face, sans serif math in section headings + +- support footnotes in section headings + +- enable passages in other languages, e.g., for a translation of the abstract or a quotation + +- support for many scripts: Latin, Arabic, Bengali, Chinese, Cyrillic, Devanagari, Greek, Hangul, Japanese, Tamil + The .tex and .cls files are commented and should be self-explanatory. The files in this distribution are: @@ -48,9 +52,13 @@ * sample-figure-1.pdf, sample-figure-2a.pdf, - sample-figure-2b.pdf -- figures for the example + sample-figure-2b.pdf -- figures for the sample paper * - author-grid-style.pdf -- example of title page with "authorgrid" option + examples/ -- a directory of examples: + -- nonlinear ode integration within LaTeX using Lua code + -- fontspec for abstracts in 25 languages in one paper + -- grid-style layout of author names/addresses + -- footers for government employees This work is not a publication of ASME itself. @@ -69,6 +77,19 @@ ####Change log#### + v1.22 (2021/01/14): + - New command \\EntryHeading to produce subheadings in the nomenclature list; + - New syntax for \\CorrespondingAuthor command with the authorgrid option (**not backward compatible**) + - Add version field to the .bst file for publications online, manuals, and books; + - Revise sample .bib file; + - Enable language-specific fonts under pdflatex for Greek, Vietnamese, and cyrillic languages, with examples of abstracts in these languages; + - Enable fontspec support for many scripts and languages under LuaLaTeX, including also Arabic, Bengali, Chinese, Japanese, Korean, and Tamil; + - Provide example files for: authorgrid layout; integration of nonlinear ODE by LuaLaTeX; abstracts in 25 languages with fontspec+LuaLaTeX; + - Extensively revise code that handles class options and keys, also add additional warning and error messages; + - Create github issue tracker; + - Fix several minor bugs; + - Edit documentation. + v1.21 (2020/12/10): Edit documentation; update some usage of xparse under the hood; confirm compliance with substitutefont package. v1.20 (2020/11/08): Add options to change copyright notice for federal employees and contractors; rename option "oldauthors" as "authorgrid"; other minor edits. Thanks to Bret Van Poppel for suggesting the federal copyright. @@ -106,7 +127,7 @@ ####License#### - Copyright (c) 2020 John H. Lienhard + Copyright (c) 2021 John H. Lienhard Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, diff --git a/macros/latex/contrib/asmeconf/asmeconf-sample.bib b/macros/latex/contrib/asmeconf/asmeconf-sample.bib index 7fa393f413..0085c89e57 100644 --- a/macros/latex/contrib/asmeconf/asmeconf-sample.bib +++ b/macros/latex/contrib/asmeconf/asmeconf-sample.bib @@ -1,6 +1,6 @@ %% Sample bibliography file for asmeconf.bst and asmeconf.cls %% -%% Revised 10 December 2020 +%% Revised 14 January 2021 %% Copyright John H. Lienhard, MIT %% Offered under the MIT license: https://ctan.org/license/mit @@ -28,7 +28,8 @@ address = {New York}, } %% book supports these fields: author OR editor, year, title, edition, series, volume OR number -%% publisher, address, doi, url, eprint with archive, note. +%% publisher, address, doi, url, eprint with archive, version, versiontype, note. +%% You can change "Version" with "versiontype, e.g., versiontype = {Release}, @INCOLLECTION{stevens1999, author = {Thomas T. Stevens}, @@ -163,17 +164,29 @@ %% 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. -@online{milde, - author = {G\"{u}nter Milde}, - title = {{\texttt{substitutefont}}---Easy font substitution, Version 0.1.4}, +@online{bezos2020, + author = {Johannes L. Braams and Javier Bezos}, + title = {{\texttt{babel}}: Localization and internationalization}, organization = {Comprehensive \TeX\ Archive Network}, - year = {2013}, - url = {https://www.ctan.org/pkg/substitutefont}, - urldate = {December 9, 2020}, + version = {3.52}, + year = {2020}, + url = {https://ctan.org/pkg/babel}, + urldate = {January 3, 2021}, } -%% online supports these fields: author OR editor, year, title, organization, address, +%% online supports these fields: author OR editor, year, title, version, versiontype, organization, address, %% note, url OR eprint with archive, urldate, urltype %% You can change "Accessed" with "urltype", e.g., urltype = {retrieved}, +%% You can change "Version" with "versiontype, e.g., versiontype = {Release}, + +@online{lienhard2021, + author = {Lienhard, V, John H.}, + title = {Language Support in {\texttt{asmeconf}}: non-latin alphabets, {\LuaLaTeX}, and {\texttt{fontspec}}}, + version = {1.0}, + organization = {Comprehensive \TeX\ Archive Network}, + year = {2021}, + url = {https://www.ctan.org/pkg/asmeconf}, + urldate = {Pre-publication}, +} @book{fourier1822, author = {Jean Baptiste Joseph Fourier}, @@ -234,7 +247,7 @@ %% eprint + arxiv produces the same result as: url = {https://arxiv.org/abs/1509.06344v3}, @manual{GSL, - title = {{GNU} Scientific Library Release 2.4}, + title = {{GNU} Scientific Library}, author = {Mark Galassi and Jim Davies and James Theiler @@ -244,18 +257,23 @@ and Michael Booth and Fabrice Rossi and Rhys Ulerich}, + version = {2.4}, + versiontype = {Release}, organization = {Free Software Foundation}, address = {Boston, MA}, year = 2017, url = {https://www.gnu.org/software/gsl/}, } %% manual supports these fields: author, year, title, edition, organization, address, -%% doi, eprint with archive, urldate, url, note. +%% doi, eprint with archive, urldate, url, version, versiontype, note. +%% You can change "Accessed" with "urltype", e.g., urltype = {retrieved}, +%% You can change "Version" with "versiontype, e.g., versiontype = {Release}, @online{amsmath, author = {{American Mathematical Society} and {LATEX3 Project}}, - title = {User's Guide for the \textsf{amsmath} Package, Version 2.1}, + title = {User's Guide for the \textsf{amsmath} Package}, + version = {2.1}, organization = {Comprehensive \TeX\ Archive Network}, year = {2018}, url = {https://ctan.org/tex-archive/macros/latex/required/amsmath/amsldoc.pdf}, @@ -264,16 +282,18 @@ @online{sharpe1, author = {Michael Sharpe}, - title = {New {TX} Font Package, Version 1.554}, + title = {New {TX} Font Package}, + version = {1.640}, organization = {Comprehensive \TeX\ Archive Network}, - year = {2018}, + year = {2020}, url = {https://ctan.org/pkg/newtx}, - urldate = {April 27, 2019}, + urldate = {January 4, 2021}, } @online{sharpe2, author = {Michael Sharpe}, - title = {The \textsf{mathalfa} Package, Version 1.10}, + title = {The \textsf{mathalfa} Package}, + version = {1.10}, organization = {Comprehensive \TeX\ Archive Network}, year = {2018}, url = {https://ctan.org/pkg/mathalfa}, @@ -282,7 +302,8 @@ @online{tolusis, author = {Sigitas Tolu{\v{s}}is}, - title = {The \textsf{flushend} Package, Version 3.3}, + title = {The \textsf{flushend} Package}, + version = {3.3}, organization = {Comprehensive \TeX\ Archive Network}, year = {2017}, url = {https://www.ctan.org/pkg/flushend}, @@ -291,7 +312,8 @@ @online{bottcher, author = {Stephan I. B{\"o}ttcher and Uwe L{\"u}ck}, - title = {\textsf{lineno.sty}: A {\LaTeX} Package to Attach Line Numbers to Paragraphs, Version 4.41}, + title = {\textsf{lineno.sty}: A {\LaTeX} Package to Attach Line Numbers to Paragraphs}, + version = {4.41}, organization = {Comprehensive \TeX\ Archive Network}, year = {2005}, url = {https://www.ctan.org/pkg/lineno}, @@ -300,7 +322,8 @@ @online{oostrum, author = {Piet van Oostrum}, - title = {The \textsf{fancyhdr} and \textsf{extramarks} Packages, Version 3.10}, + title = {The \textsf{fancyhdr} and \textsf{extramarks} Packages}, + version = {3.10}, organization = {Comprehensive \TeX\ Archive Network}, year = {2019}, url = {https://www.ctan.org/pkg/fancyhdr}, @@ -309,13 +332,14 @@ @online{fairbairns, author = {Robin Fairbairns and Sebastian Rahtz and Leonor Barroca}, - title = {A Package for Rotated Objects in \LaTeX, Version 2.16d}, + title = {A Package for Rotated Objects in \LaTeX}, + version = {2.16d}, organization = {Comprehensive \TeX\ Archive Network}, year = {2016}, url = {https://www.ctan.org/pkg/rotating}, urldate = {October 2, 2019}, } - + @online{mpl, title = {mpl colormaps}, author = {St{\'e}fan {van der Walt} and Nathaniel Smith}, @@ -339,11 +363,12 @@ address = {Boston}, note = {{``The Locust Years''}}, } -%% inbook supports these fields: author OR editor, year, title, edition, version, series, +%% inbook supports these fields: author OR editor, year, title, edition, series, %% volume OR number, doi, url, eprint with archive, publisher, -%% address, note. +%% address, version, versiontype, note. %% %% type={} field changes "Chap." to something else. +%% You can change "Version" with "versiontype, e.g., versiontype = {Release}, @BOOK{book, @@ -359,3 +384,12 @@ note = {to appear}, } +% not currently citing this one + 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 = {December 9, 2020}, + diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.pdf b/macros/latex/contrib/asmeconf/asmeconf-template.pdf index 3e1a594226..883948a8b9 100644 Binary files a/macros/latex/contrib/asmeconf/asmeconf-template.pdf and b/macros/latex/contrib/asmeconf/asmeconf-template.pdf differ diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.tex b/macros/latex/contrib/asmeconf/asmeconf-template.tex index f9860ccbc8..638a8e11f0 100644 --- a/macros/latex/contrib/asmeconf/asmeconf-template.tex +++ b/macros/latex/contrib/asmeconf/asmeconf-template.tex @@ -1,44 +1,43 @@ % !TEX encoding = UTF-8 Unicode -%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% %% This file is asmeconf-template.tex, a template to format ASME Conference papers according to -%% the requirements on ASME's conference web pages. +%% the requirements on ASME's conference web pages, and including hypertext support for the pdf. %% -%% This file is version 1.21 dated 2020/12/10 +%% This file is version 1.22 dated 2021/1/14 %% %% As of version 1.11, this template follows ASME's newer conference guidelines first posted July 2019. %% The new guidelines have changed the requested author block formatting to be inline. %% (This template continues to support the traditional grid format as a package option.) -%% Nomenclature now follows the abstract. Abstract is in italics. +%% Nomenclature now follows the abstract. Abstract text is set in italics. %% %% Author: John H. Lienhard V %% Department of Mechanical Engineering %% Massachusetts Institute of Technology %% Cambridge, MA 02139-4307 USA %% -%% Class options are set up in the asmeconf.cls file. These include: +%% Class options include: %% -%% * Math options from M. Sharpe's newtxmath package: upright integrals [upint]; and +%% * 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 also -%% * [smallerops, varg, slantedGreek, frenchmath, varbb, cmbraces]. -%% * newtx version 1.5 or higher is recommended. +%% * [subscriptcorrection, smallerops, varg, frenchmath, varbb, cmbraces, slantedGreek,...] +%% * See newtx documentation for descriptions (at CTAN: http://ctan.org, v1.6 or higher best). %% %% * Many options for calligraphic, script, and fraktur fonts from the mathalfa package; the -%% * example value used is: [mathalfa=cal=euler] (to 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. +%% * example shown here is: [mathalfa=cal=euler] to 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 chosen this way. +%% * For details, refer to mathalfa documentation (at CTAN: http://ctan.org). %% %% * Options to: omit the ASME copyright footer [nofoot]; %% use government employee copyright notice [govt]; %% use government contractor copyright notice [contractor] %% -%% * An optional to use newtxtext's superiors font for footnotes [nodefaultsups] and an option -%% * for slightly larger small capitals [largesc] -%% %% * An option to balance the heights of columns on the last page [balance]. %% * This option is NOT compatible with the [lineno] option. %% -%% * An option to include line numbers [lineno]. The lineno package does not number equation -%% * lines, captions, tables, etc. You must *run twice* for proper placement of the line numbers. +%% * An option to include line numbers [lineno]. You must *run twice* for proper placement of the line numbers. +%% * The lineno package does not number titles, footnotes, captions, or tables. %% * This option will disable balancing column height on final page if that option has been invoked. %% * The lineno package won't always number the lines preceding displayed math in a paragraph because %% * paragraph has not ended. See that package's documentation for macros to address this problem, or @@ -48,40 +47,42 @@ %% * An option to use the traditional grid arrangement of author names [authorgrid]. See Appendix B for usage, %% * because the authors and affiliations must be entered differently in this case. (Same as former option [oldauthors]) %% -%% * An option to allow hyphenation of the typewriter font [hyphenate] -%% * Hyphenation is normally suppressed for typewriter mode because it is often used for code. +%% * Options for PDF/A compliance. [pdf-a] will produce PDF/A-3u compliance with sRGB OutputIntent. +%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] can enable levels 1b, 2b, 2u, and 3b. %% -%% * Options to set (for the babel package) a primary language [lang= ], and secondary or tertiary -%% * languages, [lang-second] and [lang-third]. English is the default when no language is set. -%% * If a secondary or tertiary language is set, the main language must also be set. -%% * The spanish module makes "." active, clashing with some code; \spanishdeactivate{.} stops this. +%% * Option to use superiors font from newtxtext for footnotes [nodefaultsups] and +%% * for slightly larger small capitals, [largesc], also from newtxtext. %% -%% * Options for PDF/A compliance. [pdf-a] will produce PDF/A-3u compliance with sRGB OutputIntent. -%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] allow other levels: 1b, 2b, 2u, and 3b. +%% * An option to allow hyphenation of the typewriter font [hyphenate], from inconsolata package. +%% * Hyphenation is normally suppressed for typewriter mode because it is often used for code. +%% * To replace the default variable word spacing by monospacing, use the option [mono]. +%% * To get a zero without a slash, use [var0] %% -%% For details of newtxmath and mathalfa, refer to their documentation (available on CTAN: http://ctan.org). +%% * Options (used by the babel package) to include passages in languages other than English (e.g., a translation +%% * of the abstract). Languages are called as options, e.g. [french], [spanish], [greek], [russian], etc. +%% * See Appendix C for details. %% -%% The use of commands defined or modified by the asmeconf class is illustrated below. In particular, -%% ASME requires capitalized, sans-serif section headings, and as a result some care is needed -%% when using macros in section headings, as also illustrated below. +%% The use of commands defined or modified by the asmeconf class is illustrated throughout this file. In particular, +%% ASME requires capitalized, sans-serif section headings, and as a result some care is needed when using macros +%% in section headings, as also illustrated below. %% %========================================================= %% -%% LICENSE: +%% LICENSE: %% -%% Copyright (c) 2020 John Lienhard +%% Copyright (c) 2021 John H. Lienhard %% %% Offered under the MIT license: https://ctan.org/license/mit %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Class options are described above. +%% Class options are described above. If you are not using the languages options, remove them. -\documentclass[varvw,largesc,upint,mathalfa=cal=euler,hyphenate,balance,lang-second=french,lang=english,colorlinks,pdf-a]{asmeconf} % <=== remove colorlinks before submission to ASME! +\documentclass[upint,subscriptcorrection,varvw,mathalfa=cal=euler,pdf-a,balance,spanish,french,greek,russian,vietnamese,colorlinks]{asmeconf} % <=== remove colorlinks before your *final* submission to ASME! But keep it for other purposes. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%% Fields to be completed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%% Fields to be completed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% pdf metadata %%%%%%%%%%%% %%%%% The user should edit %%%%%%%%%%%% @@ -89,27 +90,26 @@ \hypersetup{% pdftitle={ASME Conference Paper Template}, % <=== change to YOUR pdf file title pdfkeywords={ASME, Paper, Template, \LaTeX, Research}, % <=== change to YOUR pdf keywords - pdfauthor={John H. Lienhard}, % <=== change to YOUR name[s]!!! + pdfauthor={John H. Lienhard}, % <=== change to YOUR name[s]! } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} - % Change these fields to the right content for your conference. % You can comment these out if for some reason you don't want a header. % Use title case (first letters capitalized), not all capitals -\ConfName{Proceedings of the ASME 2020\linebreak International Mechanical Engineering Congress and Exposition} -\ConfAcronym{IMECE20} -\ConfDate{November 14-19, 2020} -\ConfCity{Portland, OR, USA} -\PaperNo{IMECE2020-XXXX} +\ConfName{Proceedings of the ASME 2021\linebreak International Mechanical Engineering Congress and Exposition} +\ConfAcronym{IMECE21} +\ConfDate{November 1-4, 2021} +\ConfCity{Virtual Conference, Online} +\PaperNo{IMECE2021-XXXX} % Units of measure and other specialty lowercase terms in the title should be % enclosed in \NoCaseChange{...} to maintain lower case type -% LaTeX will automatically set the title in all capital letters. +% LaTeX will automatically set the rest of the title in all capital letters. \title{Place Title Here: Place Subtitle After Colon} % <=== change to YOUR title @@ -122,24 +122,30 @@ % % \JointFirstAuthor, if applicable, follows the affiliation of the relevant authors, no spaces. -\SetAuthors{Luis Hern\'andez\affil{1}\JointFirstAuthor , Maria Silva\affil{2}\JointFirstAuthor, Henry Tudor\affil{3}, Catherine~Parr\affil{3}, John H.\ Lienhard V\affil{4}\CorrespondingAuthor{lienhard@mit.edu}} +\SetAuthors{Luis Hern\'andez\affil{1}\JointFirstAuthor , Maria Silva\affil{2}\JointFirstAuthor, Henry Tudor\affil{3}, Catherine~Parr\affil{3}\CorrespondingAuthor{}, John H.\ Lienhard V\affil{4}\CorrespondingAuthor{lienhard@mit.edu, kate@thepalace.gov}} \SetAffiliation{1}{Institution or Company Name, City, State} \SetAffiliation{2}{Institution or Company Name, City, Province, Canada} \SetAffiliation{3}{Hampton Court Palace, Richmond, England} \SetAffiliation{4}{Massachusetts Institute of Technology, Cambridge, MA } +% Note: Luis and Maria are not real people. Henry and Catherine have been dead for >450 years. + + +% To instead use the [authorgrid] option, follow the syntax in Appendix B. + \maketitle %%% Use this footnote for tracking various versions of your draft. Change text to suit your own needs. -%%% Remove from final version. +%%% REMOVE from final version of your paper. %%% \date{..} calls the same command. + \versionfootnote{Documentation for \texttt{asmeconf.cls}. Version \versionno; \today.}% <=== Delete before final submission. %%% 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, delete the command. +%%% This command MUST COME BEFORE the end of the abstract. +%%% If you don't want keywords, leave the argument of \keywords{} empty (or use the abstract* environment) \keywords{ASME, Paper, Template, \LaTeX, Research} @@ -159,22 +165,23 @@ This paper is an example of and a template for typesetting ASME Conference Paper %% The unit cm can be replaced by any LaTeX unit of dimension: pt, in, ex, em, pc, etc. %% Default is 2em. -%% Leave off second argument of \entry to produce a subheading (e.g., \entry{Greek letters} ) +%% \EntryHeading{Greek letters} produces an italicized subheading, e.g., \EntryHeading{Greek letters} +%% (Leaving off the second argument of \entry, e.g. \entry{Greek letters}, has the same effect) \begin{nomenclature} -\entry{Roman letters} +\EntryHeading{Roman letters} \entry{$k$}{Thermal conductivity [W m$^{-1}$ K$^{-1}$]} \entry{$\vec{q}$}{Heat flux vector [W m$^{-2}$]} -\entry{Greek letters} +\EntryHeading{Greek letters} \entry{$\alpha$}{Thermal diffusivity [m$^2$ s$^{-1}$]} \entry{$\nu$}{Kinematic viscosity [m$^2$ s$^{-1}$]} -\entry{Dimensionless groups} +\EntryHeading{Dimensionless groups} \entry{Pr}{Prandtl number, $\nu/\alpha$} \entry{Sc}{Schmidt number, $\nu/\mathcal{D}_{1,2}$} -\entry{Superscripts and subscripts} +\EntryHeading{Superscripts and subscripts} \entry{b}{bulk value} \entry{$\infty$}{free stream value} \end{nomenclature} @@ -185,7 +192,7 @@ This paper is an example of and a template for typesetting ASME Conference Paper \section{Introduction} The \texttt{asmeconf} class typesets papers with margins, fonts, headings, captions, and reference formats that follow the specifications for conference papers of the American Society of Mechanical Engineers (ASME). In contrast to older ASME \LaTeX\ templates, \texttt{asmeconf} will set internal and external hyperlinks, and the pdf file will contain bookmarks and metadata. Many other useful features have been incorporated. This class is not a publication of ASME, but the author has published in ASME conferences since 1983. -The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the blocks containing the author[s], title, and abstract. This class loads a number of other packages, all of which are contained in up-to-date versions of \href{https://www.tug.org/texlive/}{\TeX\ Live}, \href{http://www.tug.org/mactex/}{Mac\TeX}, and similar platforms. If you find that you are missing one of these packages, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}). +The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the blocks containing the author[s], title, and abstract. This class loads a number of other packages, all of which are contained in up-to-date versions of \href{https://www.tug.org/texlive/}{\TeX\ Live}, \href{http://www.tug.org/mactex/}{Mac\TeX}, and similar platforms. If you find that you are missing one of these packages, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}). \subsection{Essential Initial Commands} To begin, fill in the fields to be completed at top of the \texttt{asmeconf-template.tex} file. These fields include the headers for your conference and your paper number. Specified metadata will be placed into the pdf file itself. @@ -359,7 +366,7 @@ Elementary support for \texttt{eprint} numbers is also included, generating a ur %%%%%%%%%%%%%%%%% begin two column figure %%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{figure*} -\begin{subfigure}[t]{0.5\textwidth} %subfigure is basically the same as minipage +\begin{subfigure}[t]{0.5\textwidth} % subfigure is basically the same as minipage \vbox{ \vspace*{1.7em} \centering{ @@ -406,7 +413,7 @@ Math italics are used for roman and greek letters by default. If you want an up \begin{equation}\label{eqn:dw} \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} -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. +To get additional symbols in bold math, you can use \verb|\mathversion{bold}| or the \verb|\bm{..}| macro from the \texttt{bm} package, which is loaded by the class. 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}$), in case they are needed (but note that the \verb|newtxmath| options \verb|frenchmath| and \verb|slantedGreek| also affect how greek letters are presented). @@ -414,7 +421,7 @@ The class file also provides upright sans-serif greek letters with \verb|\sfalph \begin{quote} \verb|\documentclass[upint]{asmeconf}|. \end{quote} -These math options are discussed further in the \texttt{asmejour-template.tex} file. +The option \verb|subscriptcorrection| improves the spacing of math subscripts. These math options are discussed further in the \texttt{asmeconf-template.tex} file. In addition, many options for calligraphic, fraktur, and script fonts are available as options to the \texttt{mathalfa} package, which is also loaded. These may be invoked, for example, as \begin{center} @@ -422,9 +429,7 @@ In addition, many options for calligraphic, fraktur, and script fonts are availa \end{center} which selects the Euler font for \verb|\mathcal| (this is our default). To find all the font options, refer to the \texttt{mathalfa} package documentation \cite{sharpe2}. -The typewriter font loaded is \texttt{inconsolata} (which is sans serif), as suggested by the \texttt{newtx} package documentation. - -The \texttt{asmeconf} class is not set up for use with the \texttt{fontspec} or \texttt{unicode-math} packages. +The \texttt{asmeconf} class is designed to be used with \texttt{newtxmath} and does not support the \texttt{unicode-math} package. %%%%%%%%%%%%%%% ADDITIONAL PACKAGE OPTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -457,8 +462,7 @@ If levels 1b, 2b, 2u, or 3b are preferred, use the options \texttt{[pdfapart=1 o \subsection{Superiors Font} The \texttt{newtxtext} package includes a superiors font (both numbers and letters) for use in footnote markers and superscripts. To enable this font, use the option \texttt{[nodefaultsups]}. -\subsection{Hyphenation of Typewriter Font} The option \texttt{[hyphenate]} will allow hyphenation of the typewriter font. -Hyphenation is normally suppressed for typewriter mode because this font is often used for computer code. +\subsection{Typewriter Font Options} This font is the sans-serif \texttt{inconsolata}. By default, the word spacing is variable, but option \texttt{[mono]} ends this behavior. A slashed zero is default; option \texttt{[var0]} removes the slash. Option \texttt{[hyphenate]} enables hyphenation. (This option is not available if the \texttt{[fontspec]} option is used.) \subsection{Support for Other Languages} The package can be adapted to incorporate (or entirely use) languages other than English. See Appendix \ref{appendix:c} for details. @@ -495,7 +499,7 @@ Place any acknowledgments here. %% Note that appendices will be "numbered" A, B, C, ... etc. Use \section, not \section* %% Equations will be numbered sequentially following those in the paper. Do not reset the equation counter. -%% Here we use the optional argument for the pdf bookmark. +%% Here we use the optional argument to control the pdf bookmark and prevent errors. \section[The Vector Product A\times B]{The vector product $\vec{A}\times\vec{B}$}\label{appendix:a} This brief illustration of an appendix shows the numbering of the appendix and equations. Equations are numbered @@ -521,9 +525,9 @@ the option [\texttt{authorgrid}]. When using this form, the author names and ad \verb|\SetAuthorBlock{Name\JointFirstAuthor}{%| \hbox{}\hfil\verb|Institution \\ City, Country}| \verb|\SetAuthorBlock{Name, Name}{%|\hfil\hbox{} - \noindent\hbox{}\hfil\verb|Institution \\ City, Country}| -\verb|\SetAuthorBlock{\CorrespondingAuthor{John Lienhard%| - \hbox{}\hfil\verb|}{lienhard@mit.edu}}{Institution \\ City, State}| + \hbox{}\hfil\verb|Institution \\ City, Country}| +\verb|\SetAuthorBlock{John Lienhard\CorrespondingAuthor{%| + \hbox{\qquad}\hfil\verb|lienhard@mit.edu}}{Institution \\ City, State}| \smallskip Directly usable code is contained at the very end of the \texttt{asmeconf-template.tex} file. @@ -533,38 +537,90 @@ subsequent row. %% directly usable code follows the \end{document} command below. - +%\end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\section{Language Support}\label{appendix:c} +\section{Multilingual Support}\label{appendix:c} ASME publishes in English, but the \texttt{babel} package is loaded for -users who may wish to include other languages. Class options allow loading a primary language, \texttt{lang=}, -as well as secondary and tertiary languages, \texttt{lang-second} and \texttt{lang-third}. -The primary language must be specified explicitly if a secondary language is loaded. -If no language option is given, the package defaults to English. An example of including a passage in French is -shown in \selectlanguage{french}{\appendixname\ \ref{app:fourier}.\selectlanguage{english} +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. -The standard caption and section names will follow \texttt{babel}'s dictionary for primary languages other than English. Users may additionally change ``Keywords'', ``Nomenclature'', ``Corresponding author'', and ``Joint first authors'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, \verb|\CAwords|, and \verb|\JAwords|. Changes to the page footer were described earlier. The pdf bookmark for ``Appendices'' may be changed by renewing \verb|\appendicesname|. +When more than one language option is included in \verb|\documentclass[..]{asmeconf}|, 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 examples, a passage in French is +shown in \selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{english}, followed by +\ifpdftex abstracts in Spanish, Greek, Russian, and Vietnamese.\else abstracts in other languages.\fi Font encoding is set to T1 with utf-8 input supported: %% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue. \typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.} àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż. -The \texttt{substitutefont} package \cite{milde} may be loaded in the preamble to enable the selection of language-specific fonts. Examples for Greek and Cyrillic are included in that package's documentation. The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed at \hologo{BibTeX}. Multilingual bibliographies can be supported using \texttt{BibLaTeX}. +Fonts similar to Times/Helvetica are automatically used when the Greek, Vietnamese, or selected cyrillic-alphabet languages are called as options under {\upshape\hologo{pdfLaTeX}}. Using {\upshape\hologo{LuaLaTeX}} with the \texttt{[fontspec]} option, many additional scripts are available; see the supplemental notes for such usage~\cite{lienhard2021}. Possibilities include Arabic, Bengali, Chinese, Devanagari (e.g., for Hindi), Hangul (for Korean), Kana (for Japanese), and Tamil. -\selectlanguage{french} -\section{Discours Préliminaire de Fourier}\label{app:fourier} +The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed at \hologo{BibTeX}. Multilingual bibliographies +can be supported using \texttt{BibLaTeX}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{selectlanguage}{french} +\section{Discours Préliminaire de Fourier}\label{app:fourier} Les causes primordiales ne nous sont point con­nues; mais elles sont assujetties à des lois simples et constantes, que l'on peut découvrir par l'obser­vation, et dont l'étude est l'objet de la philosophie naturelle. La chale ur pénètre, comme la gravité, toutes les substances de l'univers, ses rayons occupent toutes les parties de l'espace. Le but de notre ouvrage est d'exposer les lois mathématiques que suit cet élé­ment. Cette théorie formera désormais une des branches les plus importantes de la physique gé­nérale~\cite{fourier1822}. +\end{selectlanguage} + +\begin{selectlanguage}{spanish} +\begin{abstract*} +Este es el resumen del artículo. Escribimos en español. Se describen el problema, los métodos y los resultados. También se incluyen referencias. +\end{abstract*} +\end{selectlanguage}% edited by Aarón Montoya-Moraga + +%% If you have trouble with the passages, your file may not be saved in utf-8 format. You can delete this stuff to resolve the issue. + +%% Examples of abstracts in other languages. The first three are intended for pdflatex, not lualatex. +\begin{selectlanguage}{greek}% +\begin{abstract*} +Αυτή είναι η περίληψη του άρθρου. Χρησιμοποιούμε την ελληνική γλώσσα. Περιγράφεται το πρόβλημα, οι μέθοδοι και τα αποτελέσματα. Περιλαμβάνονται επίσης αναφορές. +\end{abstract*} +\end{selectlanguage}% Edited by George Barbastathis + +\begin{selectlanguage}{russian} +\begin{abstract*} +Это резюме статьи. Пишем по русски. Описаны проблема, методы и результаты. Библиография также включена.% +\end{abstract*} +\end{selectlanguage}% edited by Steven Gerasimoff + +\begin{selectlanguage}{vietnamese} +\begin{abstract*} +Đây là phần tóm tắt của bài báo khoa học. Chúng tôi viết bằng tiếng Việt. Vấn đề, các phương pháp và các kết quả được mô tả trong phần này. Tài liệu tham khảo cũng được bao gồm. +\end{abstract*} +\end{selectlanguage}% Checked and edited by Nguyen Le and Thao Nguyen + +\iffontspecloaded +% + \begin{selectlanguage}{japanese} + \begin{abstract*} + %論文の要約です。日本語で記述します。問題、方法、および結果について説明します。また、参考文献も含めます。 + この論文の日本語での要約は以下のとおりです。問題、方法、および結果が説明されています。参考資料も添付してあります。 + \end{abstract*} + \end{selectlanguage}% Edited by Keiji Yano and Yoshiki Okamoto +% + \begin{selectlanguage}{korean} + \begin{abstract*} + 이것은 한국어로 쓰인 논문의 초록입니다. 문제, 방법 및 결과가 설명되어 있습니다. 참조도 포함됩니다. + \end{abstract*} + \end{selectlanguage}% Edited by Hyung Won Chung. +% + \begin{selectlanguage}{chinese-simplified} + \begin{abstract*} + 这是文章的摘要。我们用中文书写,描述了问题,方法和结果,还包括了参考文献。 + \end{abstract*} + \end{selectlanguage}% edited by Zi Hao Foo +% +\fi -\selectlanguage{english} - -\textsc{Translation:} \textit{Primary causes are unknown to us; but are subject to simple and constant laws, which may be discovered by observation, the study of them being the object of natural philosophy}. - -\textit{Heat, like gravity, penetrates every substance of the universe, its rays occupy all parts of space. The object of our work is to set forth the mathematical laws which this element obeys. The theory of heat will hereafter form one of the most important branches of general physics}. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \end{document} @@ -575,19 +631,21 @@ La chale ur pénètre, comme la gravité, toutes les substances de l'univers, se % Note usage below for joint first authors and for corresponding author. % First name, middle initial, last name % Use title case (upper and lower case letters) -% (Most of the example names below are not real people, just very common names.) +% (Most of the names below are not real people, just very common names.) \SetAuthorBlock{Luis Hern\'{a}ndez\JointFirstAuthor}{Institution or Company Name \\ City, State} \SetAuthorBlock{Maria Silva\JointFirstAuthor}{Institution or Company Name \\ City, Province, Canada} -\SetAuthorBlock{Henry Tudor, Catherine Parr}{Hampton Court Palace \\ Richmond, England} +\SetAuthorBlock{Henry Tudor, Catherine Parr\CorrespondingAuthor{}}{Hampton Court Palace \\ Richmond, England} \SetAuthorBlock{Jinsoo Kim}{Institution or Company Name \\ City, Country} \SetAuthorBlock{Yusuf Yilmaz}{Institution or Company Name \\ City, Country} -% Can omit second argument of \CorrespondingAuthor if putting email into address block -% i.e., can just use \CorrespondingAuthor{name}. -% Can also put multiple emails in this command and use it more than once for multiple corresponding authors. +% Give an empty argument for \CorrespondingAuthor{} if you are putting email into address block. +% Can also put multiple emails into the argument and use command more than once for multiple +% corresponding authors. Only the *last* set of emails issued will be printed. -\SetAuthorBlock{\CorrespondingAuthor{John H.\ Lienhard V}{lienhard@mit.edu}}{% +\SetAuthorBlock{John H.\ Lienhard V\CorrespondingAuthor{lienhard@mit.edu, kate@thepalace.com}\JointFirstAuthor}{% Massachusetts Institute of Technology \\ Cambridge, MA} +% be sure to issue [authorgrid] option when using this (otherwise your authorblock will not display!) + diff --git a/macros/latex/contrib/asmeconf/asmeconf.bst b/macros/latex/contrib/asmeconf/asmeconf.bst index 2882591d68..1dcbf48a66 100644 --- a/macros/latex/contrib/asmeconf/asmeconf.bst +++ b/macros/latex/contrib/asmeconf/asmeconf.bst @@ -1,10 +1,10 @@ %%%%% -%%%%% *** This .bst produces the reference format for ASME conference papers. *** -%%%%% *** Follows the examples given on ASME's conference web pages in early 2020. *** -%%%%% *** https://www.asme.org/shop/proceedings/conference-publications/references *** -%%%%% *** The examples given by ASME do *not* cover all possibilities *** +%%%%% *** This .bst produces the reference format for ASME conference papers. *** +%%%%% *** Follows the examples given on ASME's conference web pages in early 2021. *** +%%%%% *** https://www.asme.org/publications-submissions/proceedings/author-guidelines/elements-of-a-paper/references *** +%%%%% *** The examples given by ASME do *not* cover all possibilities *** %%%%% -%%%%% This file is version 1.11 dated 2020/04/14 +%%%%% This file is version 1.12 dated 2021/01/04 %%%%% %%%%% Author: John H. Lienhard V %%%%% Department of Mechanical Engineering @@ -26,6 +26,10 @@ %%%%% Added: urlprefix = {}, format.web.urldate, bbl.urldate; urltype field changes "accessed" to something else. %%%%% Added: venue and eventdate to @inproceedings %%%%% +%%%%% Edits in version 1.12, 2021/01/04: +%%%%% Added fields: version={}, format.version, to @book, @inbook, @online, @manual; +%%%%% versiontype = {}, with bbl.version, changes "Version" to other +%%%%% %%%%% Edits in version 1.11, 2020/04/14: %%%%% correct error in journal eid code. %%%%% remove comma between Vol. and No. in article, per ASME style @@ -136,7 +140,9 @@ ENTRY url urldate urltype - venue + venue + version + versiontype volume year } @@ -389,6 +395,8 @@ FUNCTION {bbl.th} FUNCTION {bbl.urldate} { "Accessed" } +FUNCTION {bbl.version} + { "Version" } MACRO {jan} {"Jan."} @@ -617,6 +625,23 @@ FUNCTION {format.eprint} if$ } +FUNCTION {format.version} +{ version empty$ + {""} +{version "version" bibinfo.check + versiontype duplicate$ empty$ + { pop$ bbl.version } + 'skip$ + if$ + "versiontype" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +if$ +} + FUNCTION {format.url} { url @@ -1303,6 +1328,7 @@ FUNCTION {book} new.block format.btitle "title" output.check format.edition output + format.version output new.block crossref missing$ { format.bvolume output @@ -1359,6 +1385,7 @@ FUNCTION {inbook} new.block format.btitle "title" output.check format.edition output + format.version output new.block crossref missing$ { @@ -1476,6 +1503,7 @@ FUNCTION {manual} new.block format.btitle "title" output.check format.edition output + format.version output new.block author empty$ { organization empty$ @@ -1557,6 +1585,8 @@ FUNCTION {online} format.title "title" output.check new.block + format.version output + new.block organization "organization" bibinfo.warn output address "address" bibinfo.check output format.date "year" output.check diff --git a/macros/latex/contrib/asmeconf/asmeconf.cls b/macros/latex/contrib/asmeconf/asmeconf.cls index 987fa06e91..e7de2c9dfb 100644 --- a/macros/latex/contrib/asmeconf/asmeconf.cls +++ b/macros/latex/contrib/asmeconf/asmeconf.cls @@ -1,56 +1,50 @@ +% !TEX encoding = UTF-8 Unicode %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% This file provides the asmeconf class for formatting conference papers according to %% ASME conference requirements as represented on ASME's conference web pages in 2020. %% -%% Please note that ASME's journals follow specifications different from ASME conference papers. -%% %% This file's version and date: - \def\versionno{1.21} - \def\versiondate{2020/12/10\space} + \def\versionno{1.22} + \def\versiondate{2021/01/14\space} %% -%% Author: John H. Lienhard V +%% Author: John H. Lienhard, V %% Department of Mechanical Engineering %% Massachusetts Institute of Technology %% Cambridge, MA 02139-4307 USA %% %% This class was designed to approach the following aims: %% -%% 1. Match ASME's font specifications and layout -%% 2. With the associated amseconf.bst, match ASME's reference formats -%% 3. Maintain hyperref compatibility for pdf bookmarks and hyperlinks -%% 4. Use the newtxtext and newtxmath font packages, including relevant features -%% 5. Provide automatic layout of author names and addresses -%% 6. Support bold face, sans serif math in headings -%% 7. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u -%% -%% This class is compatible with either pdfLaTeX or LuaLaTeX. The class uses a number of packages, -%% many of which are part of the standard LaTeX distribution, and all of which are in TeXLive and -%% CTAN (https://ctan.org/). -%% -%% The Times/Helvetica style fonts are from Michael Sharpe's excellent newtxtext and newtxmath packages; -%% version 1.60 or higher of newtxmath is recommended. -%% -%% This class is not designed for unicode-math or fontspec, given that the ASME conference style is -%% specific with respect to the font selections. +%% 1. Match ASME's current layout and font specifications +%% 2. With amseconf.bst, match ASME's reference formats and support DOI & URL fields +%% 3. Provide hyperref compatibility for hyperlinks, pdf bookmarks, and metadata +%% 4. Set author names in either the traditional grid or the more recent inline style +%% 5. Support citations, footnotes, and bold face, sans serif math in section headings +%% 6. Provide line numbers for editing and review +%% 7. Support balancing length of columns on last page +%% 8. Provide copyright footer for federal employees and contractors +%% 9. Support the archival PDF/A standards 1b, 2b, 2u, 3b, and 3u +%% 10. Enable various math and text features from the newtxmath and newtxtext packages +%% 11. Support inclusion of passages in languages other than English %% -%% Options for the class are configured on lines 79-216. -%% -%% The class defines two environments: abstract and nomenclature. The latter has an optional argument to -%% control the space between the entries and the definitions. -%% -%% New commands are described in the asmeconf-template.tex file. The \section[]{} command's optional -%% argument is changed to better support pdf bookmarks, and \section* is modified similarly. +%% This class is compatible with either pdfLaTeX or LuaLaTeX. FontSpec may be loaded as an option (to +%% access language-specific fonts), but the class does not support unicode-math. All packages required +%% by the class are in TeXLive and CTAN (https://ctan.org/). %% %% Commands for entering conference headers and author names are specific to this class. %% See asmeconf-template.tex for details. %% +%% The \section[]{} command's optional argument is changed to better support pdf bookmarks, +%% and \section* is modified similarly. +%% +%% The class defines abstract (with keywords), abstract* (no keywords), and nomenclature environments. +%% The latter has an optional argument to control the space between the entries and the definitions. %% % ========================================================= %% %% LICENSE: %% -%% Copyright (c) 2020 John H. Lienhard +%% Copyright (c) 2021 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, @@ -67,29 +61,21 @@ %% whether in an action of contract, tort or otherwise, arising from, out of or in connection with the %% software or the use or other dealings in the software. %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesClass{asmeconf}[\versiondate ASME Conference Paper Format (JHL)] \LoadClass[twoside,twocolumn,10pt]{article} -% Two-sided layout not used in ASME's specs, although that's how the papers are printed +% Even/odd page layout is not used in ASME's specs, although the papers are printed in two-sided format. +%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - +\RequirePackage{xparse} % access features not yet moved into the LaTeX kernel +\RequirePackage{etoolbox} \RequirePackage{ifthen} \RequirePackage{iftex} % check whether pdftex or another engine is used -\newboolean{Balance}\setboolean{Balance}{false} -\newboolean{DefaultSups}\setboolean{DefaultSups}{true} -\newboolean{contractor}\setboolean{contractor}{false} -\newboolean{govt}\setboolean{govt}{false} -\newboolean{lineno}\setboolean{lineno}{false} -\newboolean{Oldauthors}\setboolean{Oldauthors}{false} -\newboolean{pdfaone}\setboolean{pdfaone}{false} -\newboolean{setpdfa}\setboolean{setpdfa}{false} - \RequirePackage{kvoptions} \SetupKeyvalOptions{ family=asmeconf, @@ -99,121 +85,281 @@ setkeys=\kvsetkeys, } -%%% set key [balance] to balance column height on last page. -\define@key{asmeconf}{balance}[true]{% - \setboolean{Balance}{#1} - \ClassWarningNoLine{asmeconf}{Loading flushend package to balance column height on last page}% -} - -%%% set key [contractor] to obtain government contractor copyright notice. -\define@key{asmeconf}{contractor}[true]{% - \setboolean{contractor}{#1} -} - -%%% set key [govt] to obtain government employee copyright notice. -\define@key{asmeconf}{govt}[true]{% - \setboolean{govt}{#1} -} - -%%% set key [lineno] to obtain line numbers. -\define@key{asmeconf}{lineno}[true]{% - \setboolean{lineno}{#1} -} - %%% for mathalfa, we may now pass options in this format: mathalfa=cal=euler, mathalfa=frak=boondox \define@key{asmeconf}{mathalfa}{% - \PassOptionsToPackage{#1}{mathalfa}% + \PassOptionsToPackage{#1}{mathalfa}% } %%% set key [nodefaultsups] to obtain newtx superiors font for footnotes. +\newboolean{DefaultSups}\setboolean{DefaultSups}{true} \define@key{asmeconf}{nodefaultsups}[false]{% \setboolean{DefaultSups}{#1} } +%%% Use these switches to load other alphabets for Cyrillic, Greek, Japanese, and Vietnamese text +\newif\ifac@cyrillic\ac@cyrillicfalse +\newif\ifac@greek\ac@greekfalse +\newif\ifac@japanese\ac@japanesefalse +\newif\ifac@vietnamese\ac@vietnamesefalse +\newif\ifac@mainset\ac@mainsetfalse + +\providecommand\ac@TtwoA{} +\providecommand\ac@LGR{} +\providecommand\ac@Tfive{} + +%%% Test whether main language is from a group that use the Cyrillic alphabet +\NewDocumentCommand\@FindCyr{>{\SplitList{;}}m}{\ProcessList{#1}{\@FlagCyr}} +\providecommand{\ac@main}{\relax} +\NewDocumentCommand\@FlagCyr{m}{% + \ifthenelse{\equal{#1}{\ac@main}}{\ac@cyrillictrue\def\ac@TtwoA{T2A}}{\relax}% comparing strings +} -%%% set key [lang,lang-second,lang-third] to pass languages to babel. - -%% In case language options are dropped during editing, include this. Subsequent choice of lang= will override it. -\PassOptionsToPackage{english}{babel} +\define@key{asmeconf}{main}[english]{% + \PassOptionsToPackage{main=#1,#1}{babel}% added #1 resolves conflict of russianb.ldf & ukrainianb.ldf under "main=". + \ac@mainsettrue + \ifthenelse{\equal{#1}{english}}{% + \PassOptionsToPackage{pdflang=en}{hyperref}}{% + \ClassWarningNoLine{asmeconf}{Selecting #1 as the primary language}% + \ifthenelse{\equal{#1}{greek}}{% + \ac@greektrue + \def\ac@LGR{LGR}% + }{\relax}% + \ifthenelse{\equal{#1}{vietnamese}}{% + \ac@vietnamesetrue + \def\ac@Tfive{T5}% + \RequirePackage[vietnamese=nohyphenation]{hyphsubst}% Eliminates babel warning + }{\relax}% + \def\ac@main{#1}% + \@FindCyr{russian;belarusian;bulgarian;macedonian;serbianc;ukrainian} + }% +} +\define@key{asmeconf}{vietnamese}[]{% + \RequirePackage[vietnamese=nohyphenation]{hyphsubst}% using key, not option, to allow loading package w/o babel warning. + \PassOptionsToPackage{vietnamese}{babel}% + \ac@vietnamesetrue + \def\ac@Tfive{T5}% +} -\define@key{asmeconf}{lang}[english]{% - \PassOptionsToPackage{main=#1}{babel}% +%%% only main= is actually needed, but keeping these legacy commands for backward compatibility +\define@key{asmeconf}{lang}[english]{% deprecated option + \PassOptionsToPackage{main=#1,#1}{babel}% + \PassOptionsToPackage{pdflang=en}{hyperref} + \ac@mainsettrue% + \ifthenelse{\equal{#1}{english}}{% + \relax}{% + \ClassWarningNoLine{asmeconf}{Selecting #1 as the primary language}% + }% } -\define@key{asmeconf}{lang-second}[english]{% +\define@key{asmeconf}{lang-second}[english]{% deprecated option \PassOptionsToPackage{#1}{babel}% } -\define@key{asmeconf}{lang-third}[english]{% +\define@key{asmeconf}{lang-third}[english]{% deprecated option \PassOptionsToPackage{#1}{babel}% } \ProcessKeyvalOptions{asmeconf} +%% % if main language was not chosen explicitly, default to English +\ifac@mainset\relax\else + \PassOptionsToPackage{main=english}{babel}% + \PassOptionsToPackage{pdflang=en}{hyperref} + %\ClassWarningNoLine{asmeconf}{Selecting English as the primary language, since main= not set}% +\fi + +%% Turn off these keys now that we're done with them +\def\@KeyFamily{asmeconf} +\NewDocumentCommand\ac@DisableOption{m}{% + \DisableKeyvalOption[% + action=ignore,% + class=asmeconf% + ]{#1}{\@KeyFamily}% +} +\NewDocumentCommand\@DisableKeys{>{\SplitList{;}}m}{\ProcessList{#1}{\ac@DisableOption}} + +\@DisableKeys{main;lang;nodefaultsups;mathalfa;lang-second;lang-third} + +%%%%%%%%%%%%% More Language options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% option to use fontspec [fontspec] (e.g, if you need complex language-specific fonts) +\newif\ifac@fontspec\ac@fontspecfalse +\newif\iffontspecloaded\fontspecloadedfalse% so user can test in .tex file +\DeclareOption{fontspec}{% + \ifpdftex + \ClassWarningNoLine{asmeconf}{fontspec option requires LuaLaTeX, will be ignored under pdfLaTeX}% + \else + \ac@fontspectrue + \fontspecloadedtrue + \def\ssztwo{}% for Inconsolatazi4; default uses slashed zero, +ss02 uses regular zero + \def\MonoNotMono{WordSpace={1,1.33,1.67}}% for Inconsolatazi4; default allows word spacing (is not mono) + \fi +} + +\DeclareOption{greek}{% + \PassOptionsToPackage{greek}{babel}% + \ac@greektrue + \def\ac@LGR{LGR}% +} + +\DeclareOption{japanese}{% mainly to control loading of fontspec options + \ifac@fontspec + \PassOptionsToPackage{japanese}{babel}% + \ac@japanesetrue + \else + \ClassWarningNoLine{asmeconf}{japanese option is supported only with the [fontspec] option + LuaLaTeX. It will be ignored.}% + \fi +} + +%% Cyrillic languages +\NewDocumentCommand\@CyrOptions{>{\SplitList{;}}m}{\ProcessList{#1}{\@CyrOptSet}} +\NewDocumentCommand\@CyrOptSet{m}{% + \DeclareOption{#1}{% + \PassOptionsToPackage{#1}{babel}% + \ac@cyrillictrue + \def\ac@TtwoA{T2A}% + } +} +\@CyrOptions{russian;belarusian;bulgarian;macedonian;serbianc;ukrainian} + +% Several languages do not have .ldf files to load. Babel will call these on demand. +% +\DeclareOption{arabic}{\ClassError{asmeconf}{Do not specify "arabic" as a class option.}{Instead, give the option [bidi=basic] and specify "arabic" when you call the language within your document.}} +% +\DeclareOption{bengali}{\ClassError{asmeconf}{Do not specify "bengali" as a class option.}{Babel does not have an ldf file for Bengali. Instead, specify "bengali" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{chinese-simplified}{\ClassError{asmeconf}{Do not specify "chinese-simplified" as class option}{Babel does not have an ldf file for simplified Chinese. Instead, specify "chinese-simplified" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{chinese-traditional}{\ClassError{asmeconf}{Do not specify "chinese-traditional" as class option}{Babel does not have an ldf file for traditional Chinese. Instead, specify "chinese-traditional" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{chinese}{\ClassError{asmeconf}{Do not specify "chinese" as a class option.}{Instead, specify either "chinese-simplified" or "chinese-traditional" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{hindi}{\ClassError{asmeconf}{Do not specify "hindi" as a class option.}{Babel does not have an ldf file for Hindi. Instead, specify "hindi" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{marathi}{\ClassError{asmeconf}{Do not specify "marathi" as a class option.}{Babel does not have an ldf file for Marathi. Instead, specify "marathi" when you call the language within your document. No class option is needed.}} +% +\DeclareOption{korean}{\ClassError{asmeconf}{Do not specify "korean" as class option}{Babel does not have an ldf file for Korean. Instead, specify "korean"when you call the language within your document. No class option is needed.}} +% +\DeclareOption{tamil}{\ClassError{asmeconf}{Do not specify "tamil" as a class option.}{Babel does not have an ldf file for Tamil. Instead, specify "tamil" when you call the language within your document. No class option is needed.}} + + +%%%%%%% PDF/A Compliance Options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\ifac@setpdfa\ac@setpdfafalse +\newif\ifac@pdfaone\ac@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]{% - \setboolean{setpdfa}{#1}% + \ac@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}}{\setboolean{pdfaone}{true}}{\relax}% + \ifthenelse{\equal{#1}{1}}{\ac@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}% } - \ProcessKeyvalOptions{pdfaopt} + \ProcessKeyvalOptions{pdfaopt}% \else - \ClassWarningNoLine{asmejour}{PDF/A compliance option requires pdfLaTeX engine}% + \ifac@pdfaone\ClassWarningNoLine{asmeconf}{PDF/A compliance option requires pdfLaTeX engine}\fi \fi -%%%%%%%%%%%%%%%%%%% +%% Done with these keys, so we can now disable them +\def\@KeyFamily{pdfaopt} +\@DisableKeys{pdf-a;pdfapart;pdfaconformance} -%% option to have colored hyperlinks -\DeclareOption{colorlinks}{% - \PassOptionsToPackage{colorlinks=true}{hyperref}% + +%%%%%%%%% Miscellaneous options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% option to balance column height on last page [balance] +\newif\ifac@balance\ac@balancefalse +\DeclareOption{balance}{% + \ac@balancetrue + \ClassWarningNoLine{asmeconf}{Loading flushend package to balance column height on last page}% } -%% option to omit ASME footer +%%% option to obtain line numbers [lineno] +\newif\ifac@lineno\ac@linenofalse +\DeclareOption{lineno}{\ac@linenotrue} + +%% option to omit ASME footer [nofoot] \DeclareOption{nofoot}{% \AtBeginDocument{\pagestyle{plain}}% } -%% Access many options from newtxmath. See newtx documentation for details. -\DeclareOption{upint,smallerops,varvw,varg,uprightGreek,slantedGreek,frenchmath,varbb,cmbraces}{\PassOptionsToPackage{}{newtxmath}} - -%% Option for slightly larger small capitals font -\DeclareOption{largesc}{\PassOptionsToPackage{largesc}{newtxtext}} +%%% option [contractor] to obtain government contractor copyright notice. +\newif\ifac@contractor\ac@contractorfalse +\DeclareOption{contractor}{\ac@contractortrue} -%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups] -\ifthenelse{\boolean{DefaultSups}}{\PassOptionsToPackage{defaultsups}{newtxtext}}{\relax} +%%% option [govt] to obtain government employee copyright notice. +\newif\ifac@govt\ac@govtfalse +\DeclareOption{govt}{\ac@govttrue} %% option to use grid of authors +\newboolean{Oldauthors}\setboolean{Oldauthors}{false} \DeclareOption{authorgrid}{% \setboolean{Oldauthors}{true}% \ClassWarningNoLine{asmeconf}{Selected option for a grid of author blocks}% } -%% retained for backward compatibility -\DeclareOption{oldauthors}{% +\DeclareOption{oldauthors}{%% deprecated, but retained for backward compatibility \setboolean{Oldauthors}{true}% \ClassWarningNoLine{asmeconf}{Selected option for a grid of author blocks}% } -%% Option to hyphenate the typewriter font [hyphenate] +%% option for slightly larger small capitals font, via newtxtext +\DeclareOption{largesc}{% + \ifac@fontspec + \ClassWarningNoLine{asmeconf}{largesc option is not available under fontspec, will be ignored}% + \else + \PassOptionsToPackage{largesc=true}{newtxtext}% largesc is a boolean key in newtxtext + \fi +} + +%% Disable newtxtext osf option, which is not appropriate for documents in this class +\DeclareOption{osf}{% + \PassOptionsToPackage{lining}{newtxtext}% +} + +%% option to hyphenate the typewriter font [hyphenate] and to issue a warning when that's done. \DeclareOption{hyphenate}{% - \PassOptionsToPackage{hyphenate}{inconsolata}% - \ClassWarningNoLine{asmeconf}{Allowing hyphenation of typewriter font}% + \ifac@fontspec + \ClassWarningNoLine{asmeconf}{hyphenate option is not supported by fontspec, will be ignored}% + \else + \PassOptionsToPackage{hyphenate}{inconsolata}% hyphenate is a key via xkeyval in inconsolata + \ClassWarningNoLine{asmeconf}{Allowing hyphenation of typewriter font}% + \fi } +%% option for monospacing in typewriter font [mono]. +\DeclareOption{mono}{% + \ifac@fontspec + \def\MonoNotMono{}% + \else + \PassOptionsToPackage{mono}{inconsolata}% mono is a key via xkeyval in inconsolata + \fi +} +%% option for unslashed zero typewriter font [var0]. +\DeclareOption{var0}{% + \ifac@fontspec + \def\ssztwo{+ss02}% stylistic alternate for regular zero + \else + \PassOptionsToPackage{var0}{inconsolata}% var0 is a key via xkeyval in inconsolata + \fi +} + +\ifthenelse{\boolean{DefaultSups}}{% + \ifac@fontspec\relax\else + \PassOptionsToPackage{defaultsups=true}{newtxtext}% defaultsups is a boolean key in newtxtext + \fi}{\relax} -%% Suppress warnings about mathalfa keys as unused global options +%% Suppress warnings about unused global options \DeclareOption*{} \ProcessOptions \relax -%%%%%%%%%%%%% end options %%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%% Geometry, bibliography, graphics, colors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage[letterpaper, left=0.5in, right=0.5in, top=0.5in, bottom = 1.in, footskip=0.5in, columnsep=0.38in]{geometry} % conforms to ASME required margins @@ -223,65 +369,381 @@ \setlength\bibsep{1pt plus 1pt minus 1pt} \RequirePackage{graphicx} -\RequirePackage[hyperref,fixpdftex,dvipsnames,svgnames,x11names]{xcolor} -\RequirePackage{xparse} -\RequirePackage{metalogo,hologo} % Access various LaTeX logos if needed +\ifpdf\def\MyColorOption{fixpdftex}\else\ifluatex\def\MyColorOption{luatex}\else\def\MyColorOption{}\fi\fi +\RequirePackage[hyperref,\MyColorOption,dvipsnames,svgnames,x11names]{xcolor} -%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{booktabs} \RequirePackage{array} -\RequirePackage{dcolumn} %%% alignment on decimal places -\newcolumntype{d}[1]{D{.}{.}{#1}} %% conflicts with babel's spanish language option. +\RequirePackage{dcolumn}% alignment on decimal places +\newcolumntype{d}[1]{D{.}{.}{#1}}% NB: This conflicts with babel's spanish language option which makes "." an active character. + % To use "," separator, put this in preamble: \newcolumntype{d}[1]{D{,}{,}{#1}} -%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%% Font related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage[T1]{fontenc} +\RequirePackage[T1,\ac@TtwoA,\ac@LGR,\ac@Tfive]{fontenc}% T2A to support Cyrillic (w/o babel warning); LGR - Greek; T5 - Vietnamese \ifpdftex - \ifthenelse{\boolean{pdfaone}}{ - \pdfminorversion=4}{% for pdf/a-1 need version 4, not 7 - \pdfminorversion=7 % this selection is not really required. - } - \RequirePackage[utf8]{inputenc} % for backward compatibility with pre-2018 distributions + \ifac@pdfaone + \pdfminorversion=4 % for pdf/a-1 need version 4, not 7 + \else + \pdfminorversion=7 % this selection is not essential. + \fi + \RequirePackage[utf8]{inputenc} % for backward compatibility with pre-2018 LaTeX distributions \else - \relax + \ifluatex + \relax + \else + \ClassError{asmeconf}{Please use either pdfLaTeX or LuaLaTeX}{This class has NOT been configured to support other engines, and the results will be unpredictable. Your best course of action is to exit and rerun using either pdfLaTeX or LuaLaTeX.}% + \fi \fi -\RequirePackage{mathtools} % loads and extends amsmath - +\RequirePackage{mathtools}% loads and extends amsmath \RequirePackage[]{babel} -\RequirePackage[]{newtxtext} -\RequirePackage[varqu,varl]{inconsolata} % sans typewriter font -\RequirePackage[]{newtxmath} -% See package documentation -%% override \textsu if using default superiors -\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax} +\ifpdftex + \RequirePackage[]{newtxtext} + \RequirePackage[varqu,varl]{inconsolata}% sans typewriter font + \RequirePackage[]{newtxmath} +\else + \ifac@fontspec + \RequirePackage[varqu,varl]{inconsolata}% typewriter font for math + \renewcommand*{\sfdefault}{qhv} % sans font for math + \renewcommand{\rmdefault}{ntxtlf} % roman font for math + \RequirePackage[]{newtxmath} % newtxmath still handles mathematics + + \RequirePackage[no-math]{fontspec} + \defaultfontfeatures{Ligatures= TeX,} +% + \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. + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Italic, + BoldFont = *-Bold, + BoldItalicFont = *-BoldItalic, + Ligatures= TeX, + 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, + Ligatures = TeX, + Numbers = Lining, + Scale=0.9, + ] + \setmonofont{Inconsolatazi4}[% This otf font ships with the LaTeX Inconsolata package (it's in TeX Live) + \MonoNotMono,% match newtxtext if we enable wordspacing + Scale=1, + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + Ligatures = TeX, + RawFeature = {+ss01,\ssztwo,+ss03}, + ] +% + % For many languages, using babel commands helps font loading. + % Noto fonts are available at https://github.com/googlefonts + \def\Noto@scale{0.92} + \def\NotoAra@scale{0.91}% The serif font only + \def\NotoBan@scale{0.92}% 1.} should probably stay consistent within the Noto family. + \def\NotoDev@scale{0.92}% 1.} should probably stay consistent within the Noto family. + \def\NotoTam@scale{0.92} + \def\Noto@color{black} +% + \babelprovide[import, language=Default]{arabic} + \babelfont [arabic]{rm}[Scale=\NotoAra@scale, + Renderer=HarfBuzz, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% don't use italic face, I am told + BoldFont = *-Bold,% + BoldItalicFont = *-Bold,% don't use italic face, I am told + ]{Amiri}% NotoNaskhArabic}% Some readers prefer Amiri font + \babelfont [arabic]{sf}[Scale=\Noto@scale, + Renderer=HarfBuzz, + Extension =.ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% font has no italic face + BoldFont = *-SemiBold,% I'm told that legibility better than Bold + BoldItalicFont = *-SemiBold,% font has no italic face + ]{NotoSansArabic}%DejaVuSans}%NotoKufiArabic}% .otf,% + \babelfont [arabic]{tt}[% + Renderer=HarfBuzz, + Extension =.ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-SemiBold,% I'm told that legibility is better than Bold + BoldItalicFont = *-SemiBold,% has no italic face + ]{NotoSansArabic}%same as above! + \providecommand\arabicabstractname{ملخص}% NB: utf-8 +% + \babelprovide[import,language=Default,script=Bangla]{bengali} + \babelfont [bengali]{rm}[% + Renderer=HarfBuzz, + Scale=\NotoBan@scale,% same as Devanagari + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifBengali} + \babelfont [bengali]{sf}[% + Renderer=HarfBuzz, + Scale=\NotoBan@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansBengali} + \babelfont [bengali]{tt}[ + Renderer=HarfBuzz, + Scale=\NotoBan@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansBengali} +% + % Cyrillic languages + \NewDocumentCommand\@LoadBabelCyr{>{\SplitList{;}}m}{\ProcessList{#1}{\@CyrillicBabel}} + \NewDocumentCommand\@CyrillicBabel{m}{% + \babelprovide[import,language=Default,script=Cyrillic]{#1} + \babelfont [#1]{rm}[Scale=\Noto@scale,Color=\Noto@color]{NotoSerif} + \babelfont [#1]{sf}[Scale=\Noto@scale,Color=\Noto@color]{NotoSans} + \babelfont [#1]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMono} + } + \@LoadBabelCyr{russian;belarusian;bulgarian;macedonian;serbian-cyrillic;ukrainian}% serbianc has no .ini under fontspec + \setlocalecaption{serbian-cyrillic}{abstract}{Сажетак}% NB: utf-8 +% + % Devanagari languages + \newfontscript{Devanagari}{deva}% HarfBuzz has some problems in Hindi, see babel manual Sect. 1.13 (main issue is ra) + \NewDocumentCommand\@LoadBabelDev{>{\SplitList{;}}m}{\ProcessList{#1}{\@DevBabel}} + \NewDocumentCommand\@DevBabel{m}{% + \babelprovide[import,language=Default]{#1} + \babelfont [#1]{rm}[% +% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi... + Scale=\NotoDev@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifDevanagari} + \babelfont [#1]{sf}[% +% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi... + Scale=\NotoDev@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansDevanagari} + \babelfont [#1]{tt}[ +% Renderer=HarfBuzz,% works for Marathi, throws errors in Hindi... + Scale=\NotoDev@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansDevanagari} + } + \@LoadBabelDev{hindi;marathi;kashmiri;nepali;sanskrit}% no .ldf files for these languages, but they do have .ini. Nepali: no abstractname +% + % Greek + \babelprovide[import,language=Default]{greek} + \babelfont [greek]{rm}[Scale=\Noto@scale,WordSpace={1.1},Color=\Noto@color]{NotoSerif}% increase word spacing slightly + \babelfont [greek]{sf}[Scale=\Noto@scale,WordSpace={1.1},Color=\Noto@color]{NotoSans} + \babelfont [greek]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMono} +% + % Japanese + \ifac@japanese + \RequirePackage[match]{luatexja-fontspec}% japanese typesets *much* better with this loaded + \setmainjfont{NotoSerifCJKjp}[Scale=\Noto@scale,Color=\Noto@color] + \setsansjfont{NotoSansCJKjp}[Scale=\Noto@scale,Color=\Noto@color] + \setmonojfont{NotoSansMonoCJKjp}[Scale=\Noto@scale,Color=\Noto@color] + \ltjsetparameter{jacharrange={-1, -2, +3, -4, -5, +6, +7, +8}}% this prevents luatexja from breaking Russian and Greek. + % see: https://tex.stackexchange.com/questions/222320/russian-in-document-with-japanese-as-main-language-lualatex-ltjsarticle + % Need at least one of the following to load the Japanese dictionary. + \babelfont [japanese]{rm}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifCJKjp}% Scale estimated + \babelfont [japanese]{sf}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .ttc, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansCJK} + \babelfont [japanese]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKjp}% renders same as Sans! + \fi + % Note: \japaneseabstractname is not defined if japanese is not called as a package option. + + % Korean + \babelprovide[import,language=Default]{korean} + \babelfont [korean]{rm}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifCJKkr} + \babelfont [korean]{sf}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .ttc, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansCJK} + \babelfont [korean]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKkr} + \renewcommand\koreanabstractname{초록}% NB: utf-8 + + % Simplified Chinese + \babelprovide[import,language=Default]{chinese-simplified} + \babelfont [chinese-simplified]{rm}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifCJKsc} + \babelfont [chinese-simplified]{sf}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .ttc, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansCJK} + \babelfont [chinese-simplified]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKsc} +% + % Traditional Chinese (includes characters for Cantonese also) + \babelprovide[import,language=Default]{chinese-traditional} + \babelfont [chinese-tradiational]{rm}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifCJKtc} + \babelfont [chinese-traditional]{sf}[% + Scale=\Noto@scale, + Color=\Noto@color, + Extension = .ttc, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansCJK} + \babelfont [chinese-traditional]{tt}[Scale=\Noto@scale,Color=\Noto@color]{NotoSansMonoCJKtc} +% + \babelprovide[import,language=Default]{tamil} + \babelfont [tamil]{rm}[% + Renderer=HarfBuzz, + Scale=\NotoTam@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSerifTamil} + \babelfont [tamil]{sf}[% + Renderer=HarfBuzz, + Scale=\NotoTam@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansTamil} + \babelfont [tamil]{tt}[ + Renderer=HarfBuzz, + Scale=\NotoTam@scale, + Color=\Noto@color, + Extension = .ttf, + UprightFont = *-Regular, + ItalicFont = *-Regular,% has no italic face + BoldFont = *-Bold, + BoldItalicFont = *-Bold,% has no italic face + ]{NotoSansTamil} +% + \babelprovide[import, captions/abstract = Muhtasari, language = Default]{swahili} +% + \else % use lualatex without font support for other languages (easier set-up and still enables luacode for numerics) + \RequirePackage[]{newtxtext} + \RequirePackage[varqu,varl]{inconsolata}% sans typewriter font + \RequirePackage[]{newtxmath} + \fi +\fi + +\RequirePackage[]{mathalfa}% load optional fonts for Calligraphy, Script, Fraktur. Key format: mathalfa=cal=euler (etc.) +\RequirePackage{bm}% load after all math to give further access to bold math -\RequirePackage[]{mathalfa} % load optional fonts for Calligraphy, Script, Fraktur -% See mathalfa package documentation for capabilities of this package. -% Option format: mathalfa=cal=euler (etc.) +%% option not to use latex default superscripts; if fontspec loaded, use the superiors package. +\ifthenelse{\boolean{DefaultSups}}{\relax}{% + \ifac@fontspec + \RequirePackage{superiors}% must come after text font is loaded + \else + \relax + \fi +} -\RequirePackage{bm} % load after all math to give access to bold math +%% override \textsu if using default superiors +\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax} %% Ensure that the current font is used for equation tags, not \normalfont as set by amsmath \def\maketag@@@#1{\hbox{\m@th#1}} % The article class calls \sloppy in two-column mode (\tolerance 9999, \emergencystretch 3em) -% These adjustments affect line breaking; the values below are intended to produce +% The following adjustments affect line breaking; the values below are intended to produce % fewer lines with large spaces, without creating the problems of using \fussy in two-column mode. \tolerance 2500 \emergencystretch 3em +\RequirePackage{metalogo,hologo}% Access various LaTeX logos if needed -%%%% font size selection %%%%%%%% -%%%% ASME's specs differ slightly from latex standard article-10 class %%% +%% font size selection +%% ASME's specs differ slightly from latex standard article-10 class -\renewcommand\LARGE{\@setfontsize\LARGE{16}{19.2}} %{18}{21.6}} updated 7/7/19 to match new ASME spec. - % ...default is 17.28/22 ... used for paper# -\renewcommand\large{\@setfontsize\large{11}{13.6}} %... default is 12/14 ... used for headings +\renewcommand\LARGE{\@setfontsize\LARGE{16}{19.2}} %{18}{21.6}} updated 7/7/19 to match new ASME spec. + % ...default is 17.28/22 ... used for paper# +\renewcommand\large{\@setfontsize\large{11}{13.6}} % default is 12/14 ... used for headings %\renewcommand\Large{\@setfontsize\Large{14.4}{18}} % same as default %\renewcommand\normalsize{\@setfontsize\normalsize{10}{12}} % same as default @@ -290,7 +752,7 @@ %% This provides sans serif italic and sans serif bold italic math. -%% It's intended only for use in the figure captions and section headings (recommend \bm{..} elsewhere). +%% These fonts are for use in the figure captions and section headings. Use \mathbf{..}, \mathversion{bold}, or \bm{..} elsewhere. \DeclareMathVersion{sansbold} \SetSymbolFont{letters}{sansbold}{OML}{ntxsfmi}{b}{it} \SetSymbolFont{lettersA}{sansbold}{U}{ntxsfmia}{b}{it} @@ -298,32 +760,38 @@ \SetSymbolFont{operators}{sansbold}{\encodingdefault}{\sfdefault}{\bfdefault}{n} \SetMathAlphabet{\mathsf}{sansbold}{\encodingdefault}{\sfdefault}{b}{it} -%%%%%% footer %%%%%%% +% Nice solution from DPC to prevent aux file errors (due to active characters from babel) when switching from pdflatex to lualatex. +\ifx\directlua\undefined + \AtBeginDocument{\immediate\write\@auxout{\detokenize{% + \ifx\directlua\undefined\else\endinput\fi}}} +\fi + +%%%%%%%% Footers and Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{fancyhdr} \pagestyle{fancy} +\AtBeginDocument{\edef\@EncodingMain{\encodingdefault}} +\NewDocumentCommand\@SetFont{}{\fontencoding\@EncodingMain\selectfont} + \fancyfoot{} \fancyhead{} -\fancyfoot[CE,CO]{\thepage} -\fancyfoot[RO,RE]{Copyright~\textcopyright~\the\year\ by ASME} +\fancyfoot[CE,CO]{\@SetFont\thepage}% force encoding so that passages in some languages won't switch footer font from the main font. +\fancyfoot[RO,RE]{\@SetFont Copyright~\textcopyright~\the\year\ by ASME} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} -\ifthenelse{\boolean{govt}}{% +\ifac@govt \newgeometry{left=0.5in, right=0.5in, top=0.5in, bottom = 1.in, footskip = 0.3in, columnsep = 0.38in} \fancyfoot[RO,RE]{} - \fancyfoot[CE,CO]{\thepage\\[1ex]\small 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.} - }{\relax -} + \fancyfoot[CE,CO]{\@SetFont\thepage\\[1ex]\small 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 -\ifthenelse{\boolean{contractor}}{% +\ifac@contractor \newgeometry{left=0.5in, right=0.5in, top=0.5in, bottom = 1.in, footskip = 0.3in, columnsep = 0.38in} \fancyfoot[RO,RE]{} - \fancyfoot[CE,CO]{\thepage\\[1ex]\footnotesize 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.} - }{\relax -} - + \fancyfoot[CE,CO]{\@SetFont\thepage\\[1ex]\footnotesize 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 %%%%%% footnotes %%%%%%% @@ -331,7 +799,7 @@ \makeFNbottom \makeFNbelow -\setlength{\skip\footins}{\baselineskip} % <=== per ASME 1 extra line +\setlength{\skip\footins}{\baselineskip}% <=== per ASME, 1 extra line \renewcommand{\footnoterule}{% \kern -3pt @@ -340,11 +808,10 @@ } %% reduce indentation of footnotes -\renewcommand\@makefntext[1]{% - \noindent\makebox[2ex][r]{\@makefnmark}#1} - +\RenewDocumentCommand\@makefntext{m}{% + \noindent\makebox[2ex][r]{\@makefnmark}#1}% <== To discourage hyphenation, do \hyphenpenalty=300\exhyphenpenalty=300 before #1 -%%%%%%%%% CAPTION RELATED %%%%%%%%%%%%%%%% +%%%%%%%%% Caption related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage[labelfont={sf,bf},hypcap=false]{caption} \RequirePackage[hypcap=false,list=true]{subcaption} @@ -360,15 +827,9 @@ \let\scaption\caption \renewcommand*{\caption}[2][\shortcaption]{\def\shortcaption{#2}\scaption[#1]{\MakeTextUppercase{#2}}}% } - -%%%%%% introduce some caption or section names %%%%%%%%%%% - \providecommand{\nomname}{Nomenclature} - \providecommand{\keywordname}{Keywords} - \providecommand{\appendicesname}{APPENDICES} - \providecommand{\JAwords}{Joint first authors} - \providecommand{\CAwords}{Corresponding author} -%%%%%%%%%%%%%%%%%% Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% wish to accommodate hyperref \RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations @@ -385,7 +846,6 @@ \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, 7/7/19 - %% Special handling of the appendices %% Assumes that appendices are the last content in paper \RenewDocumentCommand{\appendix}{}{% @@ -395,20 +855,19 @@ \titleformat{\section}{\mathversion{sansbold}\bfseries\sffamily\raggedright}{\MakeTextUppercase{\appendixname}\ \thesection.}{0.5em}{\MakeTextUppercase} } -%%%%%%%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% Hyperref, bookmarks, and PDF/A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ifthenelse{\boolean{setpdfa}}{% -% - %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in newtx documentation. +\ifac@setpdfa + %%% to assist with unicode glyph mapping, following M. Sharpe's recommendation in the newtx documentation. \pdfgentounicode=1 %% enable CMaps \input glyphtounicode.tex %% lists of mappings \InputIfFileExists{glyphtounicode-cmr.tex}{}{} %% additional mappings \InputIfFileExists{glyphtounicode-ntx.tex}{}{} %% additional mappings % -%%% a fairly generic RGB color profile, aimed at on-screen rendering (not print production) + %%% 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 [ + /OutputIntents [ << /Type /OutputIntent /S /GTS_PDFA1 @@ -416,11 +875,11 @@ /OutputConditionIdentifier (sRGB) /Info (sRGB) >> - ] - }% -}{\relax} + ] + }% +\fi -\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf +\RequirePackage{hyperxmp}% improve transfer of metadata to pdf \RequirePackage[% unicode, % Unicode encoded PDF strings @@ -438,15 +897,14 @@ pdftitle={}, % <=== add in .tex file pdfkeywords={}, % <=== add in .tex file pdfnewwindow=true,% - pdfpagelayout=SinglePage, %TwoPageRight,% changed this 12/08/2020 + pdfpagelayout=SinglePage, %TwoPageRight,% changed this 08/12/20 pdfauthor={}, % <=== add in .tex file pdfdisplaydoctitle=true% ]{hyperref} -\urlstyle{same} % don't switch to typewriter font - +\urlstyle{same} % don't switch to typewriter font for urls \RequirePackage{doi} % supports the nasty characters in some doi's -\renewcommand{\doitext}{DOI } % change the default value, {doi:}, to this per ASME specification +\renewcommand{\doitext}{DOI } % change to this from default value, {doi:}, per ASME specification \RequirePackage{bookmark} % improves handling of pdf bookmarks %% Since \bm may be useful in headings, this fix will reduce frequency with which @@ -472,9 +930,8 @@ } %% Let's make sure footnotes in section headings don't break pdf bookmarks. -\RequirePackage{etoolbox} \robustify{\footnote} -% \patchcmd{\section}{\sectionmark}{\let\footnote\@gobble\sectionmark}{}{} <== not really needed in this context 28/2/20 +% \patchcmd{\section}{\sectionmark}{\let\footnote\@gobble\sectionmark}{}{}% <== not really needed in this context 28/2/20 \pdfstringdefDisableCommands{% \def\footnote#1{}% } @@ -505,79 +962,96 @@ }% } -%%%%%%%%%%%%% Line numbering and balancing columns on last page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%% Line numbering and balancing columns on last page %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Allow line numbering in AMS math environments. %%% postdisplaypenalty adjusted to avoid extra line number at end, see discussion here: https://tex.stackexchange.com/a/461192/ -%%% multline has some problem that puts an extra line number above it. -%%% Requires xparse and etoolbox -\NewDocumentCommand{\losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}} +%%% multline has some additional problem that puts an extra line number above it. + +\NewDocumentCommand{\@losepostpenalty}{}{\patchcmd{\linenomathWithnumbers}{\advance\postdisplaypenalty\linenopenalty}{}{}{}} -\NewDocumentCommand{\FixAMSMath}{m}{% - \AtBeginEnvironment{#1}{\losepostpenalty\linenomath}% +\NewDocumentCommand{\@FixAMSMath}{m}{% + \AtBeginEnvironment{#1}{\@losepostpenalty\linenomath}% \AtEndEnvironment{#1}{\endlinenomath}% - \AtBeginEnvironment{#1*}{\losepostpenalty\linenomath}% + \AtBeginEnvironment{#1*}{\@losepostpenalty\linenomath}% \AtEndEnvironment{#1*}{\endlinenomath}% } -\NewDocumentCommand{\FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\FixAMSMath}} +\NewDocumentCommand{\@FixAll}{>{\SplitList{;}}m}{\ProcessList{#1}{\@FixAMSMath}} %%% Adjustments when lineno option is used -\ifthenelse{\boolean{lineno}}{% +\ifac@lineno% \RequirePackage[switch,mathlines]{lineno} \renewcommand{\linenumberfont}{\normalfont\footnotesize\color{red}} \AtBeginDocument{\linenumbers} \ClassWarningNoLine{asmeconf}{Package lineno loaded, so final column balancing is disabled} - \FixAll{align;alignat;gather;flalign;multline} - }{% - \ifthenelse{\boolean{Balance}}{\RequirePackage{flushend}}{\relax} % flushend is NOT compatible with lineno -} + \@FixAll{align;alignat;gather;flalign;multline} + \else + \ifac@balance\RequirePackage{flushend}\fi % flushend is NOT compatible with lineno +\fi %%% Enable dropping lineno option without trashing .aux file \providecommand{\@LN@col}[1]{\relax} \providecommand{\@LN}[2]{\relax} -%%%%%%%%%%%%% Define special environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%% Define special environments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%% Introduce some special section and other names %%%%%%%%%%% -%% Abstract environment -%% \keywords command should be given someplace before the \end{abstract} command. +\providecommand{\nomname}{Nomenclature} +\providecommand{\keywordname}{Keywords} +\providecommand{\appendicesname}{APPENDICES} +\providecommand{\JAwords}{Joint first authors} +\providecommand{\CAwords}{Corresponding author} + +%% Abstract environment %%%%%%%%%%%%%%%%%% +%% \keywords command should be given someplace before the \end{abstract} command. \providecommand{\@keywords}{\relax} +% \ifblank is from etoolbox \NewDocumentCommand{\keywords}{m}{% - \IfNoValueTF{#1}{% - \relax}{% - \long\def\@keywords{\par\smallskip\noindent{\bfseries\sffamily \keywordname:} #1}% - } + \ifblank{#1}{\def\@keywords{\relax}}{ + \long\def\@keywords{\par\smallskip\noindent{\bfseries\sffamily \keywordname: #1}}% + } } \DeclareDocumentEnvironment{abstract}{}{% Overwrites existing abstract environment - \section*{\abstractname}\itshape% + \section*{\abstractname}\itshape + } + {\upshape\@keywords +} +\NewDocumentEnvironment{abstract*}{}{% Abstract with no keywords (same as using empty \keywords{} with first abstract) + \section*{\abstractname}\itshape } - {\upshape\@keywords%\medskip% + {\ignorespacesafterend } -%%%%%%%%%%%% Nomenclature environment %%%%%%%%%%%%%%%%%% -%% -%% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns. -%% Second argument can be used to rename, e.g., to List of Symbols. +%% Nomenclature environment %%%%%%%%%%%%%%%%%% %% +%% 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. \newlength\nomenwidth \newlength\savitemsep %% If second argument of \entry is omitted, will produce an italicized heading (e.g. "Greek letters") -%% -\NewDocumentCommand{\entry}{m g}{% +\NewDocumentCommand\entry{m g}{% \IfNoValueTF{#2}{% \itemsep3\p@ plus 1\p@ minus 1\p@% - \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%\nopagebreak% \smallskip + \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000% }{% \item[#1\hfill]#2% \@itempenalty=-\@lowpenalty% }% } +%% A separate command command for nomenclature subheadings (xparse "g" argument used in \entry is deprecated) +\NewDocumentCommand\EntryHeading{m}{% + \itemsep3\p@ plus 1\p@ minus 1\p@% + \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000% +} + \NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname}}{% \setlength\columnsep{2em} \setlength{\nomenwidth}{#1} @@ -592,24 +1066,24 @@ \addtolength{\leftmargin}{\labelsep}% \setlength\savitemsep\itemsep% }% -}{\end{list}} +}{\end{list}\ignorespacesafterend} -%%%%%%%%%%%%%%%%% Headers and Title %%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%% Headers and Title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\ConfName}[1]{\long\gdef\@ConfName{#1}} +\NewDocumentCommand\ConfName{m}{\long\gdef\@ConfName{#1}} \providecommand\@ConfName{\hbox{ }} -\newcommand{\ConfAcronym}[1]{\gdef\@ConfAcronym{#1}} +\NewDocumentCommand\ConfAcronym{m}{\gdef\@ConfAcronym{#1}} \providecommand\@ConfAcronym{\hbox{ }} -\newcommand{\ConfDate}[1]{\gdef\@ConfDate{#1,\space}} +\NewDocumentCommand\ConfDate{m}{\gdef\@ConfDate{#1,\space}} \providecommand\@ConfDate{\space} -\newcommand{\ConfCity}[1]{\gdef\@ConfCity{#1}} +\NewDocumentCommand\ConfCity{m}{\gdef\@ConfCity{#1}} \providecommand\@ConfCity{\hbox{ }} -\newcommand{\HeaderConfName}{% +\NewDocumentCommand\HeaderConfName{}{% \parbox{\linewidth}{% \raggedleft\bfseries\sffamily% \@ConfName\par% @@ -618,177 +1092,47 @@ }% } -\newcommand{\PaperNo}[1]{\gdef\@PaperNo{#1}} +\NewDocumentCommand\PaperNo{m}{\gdef\@PaperNo{#1}} \providecommand\@PaperNo{\protect\phantom{NO.}} -\newcommand{\paperno}{% +\NewDocumentCommand\paperno{}{% \vspace*{2\baselineskip} \parbox{\linewidth}{\raggedleft\bfseries\sffamily\LARGE% \MakeTextUppercase{\@PaperNo}% }% } -\newcommand{\PaperTitle}[1]{\gdef\@PaperTitle{#1}} +\NewDocumentCommand\PaperTitle{m}{\gdef\@PaperTitle{#1}} \providecommand\@PaperTitle{\hbox{ }} -\newcommand{\papertitle}{% +\NewDocumentCommand\papertitle{}{% \vspace*{3\baselineskip} \parbox{\linewidth}{\mathversion{sansbold}\centering{\bfseries\sffamily\large% -\MakeTextUppercase{\@PaperTitle}\par} %%% <=== extra \par to make leading stick. See adjustment in \MakeTitle +\MakeTextUppercase{\@PaperTitle}\par}%%% <=== extra \par to make leading stick. See adjustment in \MakeTitle }% } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%% Author and affiliation block %%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%% Author and affiliation block %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{xcoffins} -%% To maintain compatibility with newtxtext superiors option, if used, save the definition +%% To maintain compatibility with newtxtext superiors option, if used, save the definition (inline author style resets it) \let\savethefootnote\thefootnote \let\savemakefnmark\@makefnmark - -%%%% option to retain original grid layout of authors -\ifthenelse{\boolean{Oldauthors}}{% - -%%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%% - -\NewCoffin{\authorblock} - -%% Allows for up to nine author groups... if you need more authors, the edits should be obvious -%% You can put multiple authors above a single affiliation to reduce number of author blocks needed. -\NewCoffin{\firstrowauthorblock} -\SetHorizontalCoffin\firstrowauthorblock{} -\NewCoffin{\secondrowauthorblock} -\SetHorizontalCoffin\secondrowauthorblock{} -\NewCoffin{\thirdrowauthorblock} -\SetHorizontalCoffin\thirdrowauthorblock{} - -\newcounter{authorno} -\setcounter{authorno}{0} - -\newlength{\coffinsep} %% horizontal space between coffins -\setlength{\coffinsep}{0.03\textwidth} - -\NewDocumentCommand\SetAuthorBlock{m m}{% - \addtocounter{authorno}{1}% - \SetVerticalCoffin{\authorblock}{0.3\textwidth}{% - \centering\sffamily% - \textbf{\ignorespaces#1\ignorespaces}\\ - #2% -} - -\ifnum\value{authorno}=1 - \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t] - \else - \ifnum\value{authorno}=2 - \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \else - \ifnum\value{authorno}=3 - \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \fi - \fi -\fi -\ifnum\value{authorno}=4 - \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t] - \else - \ifnum\value{authorno}=5 - \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \else - \ifnum\value{authorno}=6 - \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \fi - \fi -\fi -\ifnum\value{authorno}=7 - \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t] - \else - \ifnum\value{authorno}=8 - \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \else - \ifnum\value{authorno}=9 - \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) - \fi - \fi -\fi -} - -\NewDocumentCommand{\ConstructAuthorBlock}{}{% -\ifnum\value{authorno}>3 - \JoinCoffins\firstrowauthorblock[hc,b]\secondrowauthorblock[hc,t](0pt, -1.5\baselineskip) -\fi -\ifnum\value{authorno}>6 - \JoinCoffins\firstrowauthorblock[hc,b]\thirdrowauthorblock[hc,t](0pt, -1.5\baselineskip) -\fi -\centerline{\TypesetCoffin\firstrowauthorblock} %% in this instance, \centerline is better than \centering -} - -%% Flag for corresponding author (expecting just one, but if two enter both email addresses and flag both authors) -\newif\ifCA\CAfalse - -% allow for NO email address to be given by omitting second argument -\NewDocumentCommand{\CorrespondingAuthor}{m g}{% - \global\CAtrue% - \IfNoValueTF{#2}{% - \gdef\@CAsep{\relax}% - \gdef\@CAemail{\relax}% - }{% - \gdef\@CAsep{:\space}% - \gdef\@CAemail{#2}% - }% - \renewcommand*{\thefootnote}{\fnsymbol{footnote}}% - \ignorespaces#1\ignorespaces\footnotemark[1]% -} - %% Flag for joint first authors (two or more) -\newif\ifJA\JAfalse +\newif\ifac@JA\ac@JAfalse \NewDocumentCommand{\JointFirstAuthor}{}{% - \global\JAtrue% - \renewcommand*{\thefootnote}{\fnsymbol{footnote}}% - \ignorespaces\footnotemark[2]% -} - -%%% otherwise use new compact layout of authors -}{% i.e., this begins "else" - -%%%%%%%%%%%%%%%%%%%%%% New author layout (inline) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\NewCoffin{\AuthorBlock} -\NewCoffin{\AffiliationBlock} -\NewCoffin{\AffiliationsBlock} - -%% NB: \parbox width to \textwidth (full page) not \linewidth (single column) -\SetHorizontalCoffin\AffiliationsBlock{} -\NewDocumentCommand{\SetAuthors}{m}{% - \SetHorizontalCoffin\AuthorBlock{% - \parbox{\textwidth}{\centering\sffamily\bfseries\ignorespaces#1\ignorespaces}% - } + \global\ac@JAtrue% + $\bm{^\dagger}$% } - - -\def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}% - -\NewDocumentCommand{\SetAffiliation}{m m}{% - \SetVerticalCoffin\AffiliationBlock{\textwidth}{% - \centering\sffamily\footnotemark[#1]#2\ignorespaces% - } - \JoinCoffins\AffiliationsBlock[hc,b]\AffiliationBlock[hc,t](0pt,-1pt) -} - - -%%% flag for corresponding author (usually just one, although you can have two by putting both email addresses -%%% into field and attaching to both authors -- footnote will only print only the email in the last occurrence) - %% Flag for corresponding author (expecting just one, but if two enter both email addresses and flag both authors) -\newif\ifCA\CAfalse +\newif\ifac@CA\ac@CAfalse -% allow for NO email address to be given by omitting the argument (g argument is deprecated, seems to have trouble with \IfNoValueTF) %% corrected spacing error 24 Jan 2020 -\NewDocumentCommand{\CorrespondingAuthor}{g}{% +\NewDocumentCommand\CorrespondingAuthor{m}{% Revised this command 29/12/20, to make the CA email mandatory but possibly empty \ignorespaces$\bm{^\ast}$% - \global\CAtrue% - % \IfNoValueTF{#1}{% + \global\ac@CAtrue% \ifblank{#1}{% \gdef\@CAsep{\relax}% \gdef\@CAemail{\relax}% @@ -798,122 +1142,285 @@ }% } -%%% Flag for joint first authors (two or more) -\newif\ifJA\JAfalse - -\NewDocumentCommand{\JointFirstAuthor}{}{% -\global\JAtrue% - $\bm{^\dagger}$% -} - -%%% Affiliation mark -\NewDocumentCommand{\affil}{m}{% - {\bfseries\footnotemark[#1]}% -} +%%%% option to use the traditional grid layout of authors or the inline style -%%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%% -\let\oldaffil\affil -\newcommand\nextToken\relax +\ifthenelse{\boolean{Oldauthors}}{% This command works better than \if... in this context. -\renewcommand\affil[1]{% - \oldaffil{#1}\futurelet\nextToken\isOthernote} + %%%%%%%%%%%%%%%%%%%% Gridded author layout %%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand\isOthernote{% - \ifx\CorrespondingAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% - \else% - \ifx\JointFirstAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% + \NewCoffin{\authorblock} + + %% Allows for up to fifteen author groups... if you need more authors, the edits should be obvious + %% You can put multiple authors above a single affiliation to reduce number of author blocks needed. + \NewCoffin{\firstrowauthorblock} + \SetHorizontalCoffin\firstrowauthorblock{} + \NewCoffin{\secondrowauthorblock} + \SetHorizontalCoffin\secondrowauthorblock{} + \NewCoffin{\thirdrowauthorblock} + \SetHorizontalCoffin\thirdrowauthorblock{} + \NewCoffin{\fourthrowauthorblock} + \SetHorizontalCoffin\fourthrowauthorblock{} + \NewCoffin{\fifthrowauthorblock} + \SetHorizontalCoffin\fifthrowauthorblock{} + + \newcounter{authorno} + \setcounter{authorno}{0} + + \newlength{\coffinsep}% horizontal space between coffins + \setlength{\coffinsep}{0.03\textwidth} + + \NewDocumentCommand\SetAuthorBlock{mm}{% + \addtocounter{authorno}{1}% + \SetVerticalCoffin{\authorblock}{0.3\textwidth}{% + \centering\sffamily% + \textbf{\ignorespaces#1\ignorespaces}\\ + #2% + } + \ifnum\value{authorno}=1 + \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t] + \else + \ifnum\value{authorno}=2 + \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \else + \ifnum\value{authorno}=3 + \JoinCoffins\firstrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \fi + \fi + \fi + \ifnum\value{authorno}=4 + \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t] + \else + \ifnum\value{authorno}=5 + \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \else + \ifnum\value{authorno}=6 + \JoinCoffins\secondrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \fi + \fi + \fi + \ifnum\value{authorno}=7 + \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t] \else - \ifx\affil\nextToken\textsuperscript{\sffamily\bfseries,}% + \ifnum\value{authorno}=8 + \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \else + \ifnum\value{authorno}=9 + \JoinCoffins\thirdrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \fi + \fi + \fi + \ifnum\value{authorno}=10 + \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t] + \else + \ifnum\value{authorno}=11 + \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \else + \ifnum\value{authorno}=12 + \JoinCoffins\fourthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \fi + \fi + \fi + \ifnum\value{authorno}=13 + \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t] + \else + \ifnum\value{authorno}=14 + \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \else + \ifnum\value{authorno}=15 + \JoinCoffins\fifthrowauthorblock[r,t]\authorblock[l,t](\coffinsep,0pt) + \fi + \fi + \fi + \ifnum\value{authorno}>15 + \ClassWarningNoLine{asmeconf}{The class is programmed for up to 15 author blocks. If some of your authors are at the same institution, % + you may put more than one name above a single address. If you need more than 15 author blocks, try using the in-line author style % + instead of the [authorgrid] option} + \fi + } + + \NewDocumentCommand\ConstructAuthorBlock{}{% + \ifnum\value{authorno}>3 + \JoinCoffins\firstrowauthorblock[hc,b]\secondrowauthorblock[hc,t](0pt, -1.5\baselineskip) + \fi + \ifnum\value{authorno}>6 + \JoinCoffins\firstrowauthorblock[hc,b]\thirdrowauthorblock[hc,t](0pt, -1.5\baselineskip) + \fi + \ifnum\value{authorno}>9 + \JoinCoffins\firstrowauthorblock[hc,b]\fourthrowauthorblock[hc,t](0pt, -1.5\baselineskip) + \fi + \ifnum\value{authorno}>12 + \JoinCoffins\firstrowauthorblock[hc,b]\fifthrowauthorblock[hc,t](0pt, -1.5\baselineskip) + \fi + \centerline{\TypesetCoffin\firstrowauthorblock}%% in this instance, \centerline is better than \centering + } + + % Changed to follow syntax of the inline style, which is much easier to use! 29/12/2020 + % % allow for NO email address to be given by omitting second argument + % \NewDocumentCommand{\CorrespondingAuthor}{m g}{% + % \global\ac@CAtrue% + % \IfNoValueTF{#2}{% + % \gdef\@CAsep{\relax}% + % \gdef\@CAemail{\relax}% + % }{% + % \gdef\@CAsep{:\space}% + % \gdef\@CAemail{#2}% + % }% + % \ignorespaces#1\ignorespaces$\bm{^\ast}$%\footnotemark[1]% + % } + + %%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%% + % bug fixed 29/12/2020 + \newcommand\nextToken\relax + + \newcommand\isOthernote{% + \ifx\CorrespondingAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% + \else% + \ifx\JointFirstAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% \fi% \fi% - \fi% - \ignorespaces% -} - -\let\oldCorrespondingAuthor\CorrespondingAuthor -\renewcommand\CorrespondingAuthor[1]{% - \oldCorrespondingAuthor{#1}\futurelet\nextToken\isOthernote} + \ignorespaces% + } -\let\oldJointFirstAuthor\JointFirstAuthor -\renewcommand\JointFirstAuthor{% - \oldJointFirstAuthor\futurelet\nextToken\isOthernote} - -\let\oldfootnote\footnote -\renewcommand\footnote[1]{% - \oldfootnote{#1}\futurelet\nextToken\isOtherfnote} + \let\oldCorrespondingAuthor\CorrespondingAuthor + \renewcommand\CorrespondingAuthor[1]{% + \oldCorrespondingAuthor{#1}\futurelet\nextToken\isOthernote} + + \let\oldJointFirstAuthor\JointFirstAuthor + \renewcommand\JointFirstAuthor{% + \oldJointFirstAuthor\futurelet\nextToken\isOthernote} -\newcommand\isOtherfnote{% - \ifx\footnote\nextToken\textsu{\mdseries,}% - \fi% -} - -%%% - -\NewDocumentCommand{\SetAuthorBlock}{}{% - \let\savethefootnote\thefootnote - \JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip) - \centerline{\TypesetCoffin\AuthorBlock} - \renewcommand*{\thefootnote}{\fnsymbol{footnote}} - \ifJA - \footnotetext[2]{\JAwords} - \fi - \ifCA - \footnotetext[1]{\CAwords\@CAsep\@CAemail} - \fi - \let\thefootnote\savethefootnote -} + \let\oldfootnote\footnote + \renewcommand\footnote[1]{% + \oldfootnote{#1}\futurelet\nextToken\isOtherfnote} + + \newcommand\isOtherfnote{% + \ifx\footnote\nextToken\textsu{\mdseries,}% + \fi% + } + +%%% otherwise use the new compact layout of authors +}{% i.e., this begins "else" + %%%%%%%%%%%%%%%%%%%%%% New author layout (inline) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \NewCoffin{\AuthorBlock} + \NewCoffin{\AffiliationBlock} + \NewCoffin{\AffiliationsBlock} + + %% NB: \parbox width to \textwidth (full page) not \linewidth (single column) + \SetHorizontalCoffin\AffiliationsBlock{} + \NewDocumentCommand\SetAuthors{m}{% + \SetHorizontalCoffin\AuthorBlock{% + \parbox{\textwidth}{\centering\sffamily\bfseries\ignorespaces#1\ignorespaces}% + } + } + + \def\@makefnmark{\hbox{\@textsuperscript{\sffamily\@thefnmark}}}% + + \NewDocumentCommand\SetAffiliation{mm}{% + \SetVerticalCoffin\AffiliationBlock{\textwidth}{% + \centering\sffamily\footnotemark[#1]#2\ignorespaces% + } + \JoinCoffins\AffiliationsBlock[hc,b]\AffiliationBlock[hc,t](0pt,-1pt) + } + + %%% Affiliation mark + \NewDocumentCommand{\affil}{m}{% + {\bfseries\footnotemark[#1]}% + } + + %%% to deal with sequential notes as, e.g., "1,*", or "1,2,*" %%%%%%%%%% + \let\oldaffil\affil + \newcommand\nextToken\relax + + \renewcommand\affil[1]{% + \oldaffil{#1}\futurelet\nextToken\isOthernote} + + \newcommand\isOthernote{% + \ifx\CorrespondingAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% + \else% + \ifx\JointFirstAuthor\nextToken\textsuperscript{\sffamily\bfseries,}% + \else + \ifx\affil\nextToken\textsuperscript{\sffamily\bfseries,}% + \fi% + \fi% + \fi% + \ignorespaces% + } + + \let\oldCorrespondingAuthor\CorrespondingAuthor + \renewcommand\CorrespondingAuthor[1]{% + \oldCorrespondingAuthor{#1}\futurelet\nextToken\isOthernote} + + \let\oldJointFirstAuthor\JointFirstAuthor + \renewcommand\JointFirstAuthor{% + \oldJointFirstAuthor\futurelet\nextToken\isOthernote} + + \let\oldfootnote\footnote + \renewcommand\footnote[1]{% + \oldfootnote{#1}\futurelet\nextToken\isOtherfnote} + + \newcommand\isOtherfnote{% + \ifx\footnote\nextToken\textsu{\mdseries,}% + \fi% + } +%%% + \NewDocumentCommand\SetAuthorBlock{}{% + \let\savethefootnote\thefootnote + \JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip) + \centerline{\TypesetCoffin\AuthorBlock} + } } %% end ifthenelse for Oldauthors -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Make the title and author section -\NewDocumentCommand{\MakeTitlePage}{}{% -\twocolumn[ - \begin{@twocolumnfalse} - \HeaderConfName - \paperno - \papertitle - \vspace*{2\baselineskip} - \ifthenelse{\boolean{Oldauthors}}{% - \ConstructAuthorBlock}{% - \SetAuthorBlock} - \vspace*{3\baselineskip} - \end{@twocolumnfalse} -] -\let\@makefnmark\savemakefnmark -\renewcommand*{\thefootnote}{\fnsymbol{footnote}} -\ifJA - \footnotetext[2]{\JAwords} -\fi -\ifCA - \footnotetext[1]{\CAwords\@CAsep\@CAemail} -\fi -\let\thefootnote\savethefootnote +\NewDocumentCommand\MakeTitlePage{}{% + \twocolumn[ + \begin{@twocolumnfalse} + \HeaderConfName + \paperno + \papertitle + \vspace*{2\baselineskip} + \ifthenelse{\boolean{Oldauthors}}{% + \ConstructAuthorBlock}{% + \SetAuthorBlock} + \vspace*{3\baselineskip} + \end{@twocolumnfalse} + ] + \let\@makefnmark\savemakefnmark + \renewcommand*{\thefootnote}{\fnsymbol{footnote}} + \ifac@JA + \ifDefaultSups\relax\else\ifac@fontspec\def\f@@tn@te{blub}\fi\fi% https://tex.stackexchange.com/a/565263/46356 + \footnotetext[2]{\JAwords} + \fi + \ifac@CA + \footnotetext[1]{\CAwords\@CAsep\@CAemail} + \fi + \ifDefaultSups\relax\else + \ifac@fontspec\def\f@@tn@te{footnote}\fi + \fi + \let\thefootnote\savethefootnote } %%%%%%%%%% %% Provide compatibility with titling commands from standard LaTeX article class - \RenewDocumentCommand{\maketitle}{}{\MakeTitlePage} \RenewDocumentCommand{\title}{}{\PaperTitle} -\RenewDocumentCommand{\thanks}{m}{\relax} %% disabling this standard command, as it is inconsistent with the format +\RenewDocumentCommand{\thanks}{m}{\relax}% disabling this standard command (inconsistent with this format) %% Produces an unmarked footnote about the version date, to replace "date" -%% This is for editing and should not be used in the final draft -\NewDocumentCommand{\versionfootnote}{m}{\begin{NoHyper}\gdef\@thefnmark{}\@footnotetext{#1}\end{NoHyper}} +%% This tool is for editing and should not be used in the final draft +\NewDocumentCommand\versionfootnote{m}{\begin{NoHyper}\gdef\@thefnmark{}\@footnotetext{#1}\end{NoHyper}} -\RenewDocumentCommand{\date}{m}{\versionfootnote} %% in case someone wants to use \date this way. +\RenewDocumentCommand{\date}{m}{\versionfootnote{#1}}% if one wants to use \date this same way; fixed bug 14/01/2021 -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%% Special font definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Provide sans serif upright Greek letters, following a suggestion -%% to the class author by Michael Sharpe (March 2019). -%% Access sans serif Greek from newtxsf implementation of STIX fonts. -%% +%% 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. \DeclareSymbolFont{lettersAB}{U}{ntxsfmia}{m}{it} \SetSymbolFont{lettersAB}{bold}{U}{ntxsfmia}{b}{it} @@ -1002,7 +1509,156 @@ \DeclareMathSymbol{\varomegaup}{\mathalpha}{lettersAB}{36} \newcommand*{\sfvaromega}{\text{\ensuremath\varomegaup}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%% Times-like fonts for specific languages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifpdftex % Under lualatex, babel has problems with the following approach. Use [fontspec] option instead. + \ifac@vietnamese + \RequirePackage{substitutefont}% + \substitutefont{T5}{\rmdefault}{qtm}% Vietnamese is in T5 encoding, can use Tex Gyre Termes font (qtm); + %\substitutefont{T5}{\sfdefault}{qhv}% qhv = Heros (helvetica). We get the right font w/o loading this. + + % qcr = Cursor (monospaced) is poor match to inconsolata; qhv (the sf font) matches better, but isn't monospaced. + % From TeX Gyre Cursor .fd file by B. Jackowski and J. M. Nowacki, released under the GUST license + \begingroup + \nfss@catcodes + + \def\qcr@scale{s*[0.95]} + \DeclareFontFamily{T5}{\ttdefault}{}% not adjusting wordspacing + \DeclareFontShape{T5}{\ttdefault}{b}{sc}{<-> \qcr@scale t5-qcrb-sc}{} + \DeclareFontShape{T5}{\ttdefault}{b}{n}{<-> \qcr@scale t5-qcrb}{} + \DeclareFontShape{T5}{\ttdefault}{b}{scit}{<-> \qcr@scale t5-qcrbi-sc}{} + \DeclareFontShape{T5}{\ttdefault}{b}{it}{<-> \qcr@scale t5-qcrbi}{} + \DeclareFontShape{T5}{\ttdefault}{m}{sc}{<-> \qcr@scale t5-qcrr-sc}{} + \DeclareFontShape{T5}{\ttdefault}{m}{n}{<-> \qcr@scale t5-qcrr}{} + \DeclareFontShape{T5}{\ttdefault}{m}{scit}{<-> \qcr@scale t5-qcrri-sc}{} + \DeclareFontShape{T5}{\ttdefault}{m}{it}{<-> \qcr@scale t5-qcrri}{} + \DeclareFontShape{T5}{\ttdefault}{bx}{sc}{<->ssub * qcr/b/sc}{} + \DeclareFontShape{T5}{\ttdefault}{bx}{n}{<->ssub * qcr/b/n}{} + \DeclareFontShape{T5}{\ttdefault}{bx}{scit}{<->ssub * qcr/b/scit}{} + \DeclareFontShape{T5}{\ttdefault}{bx}{it}{<->ssub * qcr/b/it}{} + \DeclareFontShape{T5}{\ttdefault}{b}{sl}{<->sub * qcr/b/it}{} + \DeclareFontShape{T5}{\ttdefault}{m}{sl}{<->sub * qcr/m/it}{} + \DeclareFontShape{T5}{\ttdefault}{b}{scsl}{<->sub * qcr/b/scit}{} + \DeclareFontShape{T5}{\ttdefault}{m}{scsl}{<->sub * qcr/m/scit}{} + \endgroup + \fi + + \ifac@greek + %% Based on Artemisia fd files by A. Tsolomitis and ideas from substitutefont package by G. Milde, both LaTeX Public License. + \begingroup + \nfss@catcodes + + \def\artemisiasc@scaled{s*[0.95]} + \def\artemisia@scaled{s*[0.93]} + \DeclareFontFamily{LGR}{\rmdefault}{% + \fontdimen2\font=.25em + \fontdimen3\font=.2em + \fontdimen4\font=.1em + }% adjusted word spacing to match newtxtext... this is tighter. + \DeclareFontShape{LGR}{\rmdefault}{m}{n}{<-> \artemisia@scaled gartemisiarg6a}{} + \DeclareFontShape{LGR}{\rmdefault}{m}{it}{<-> \artemisia@scaled gartemisiai6a}{} + \DeclareFontShape{LGR}{\rmdefault}{b}{n}{<-> \artemisia@scaled gartemisiab6a}{} + \DeclareFontShape{LGR}{\rmdefault}{b}{it}{<-> \artemisia@scaled gartemisiabi6a}{} + \DeclareFontShape{LGR}{\rmdefault}{m}{sl}{<-> \artemisia@scaled gartemisiao6a}{} + \DeclareFontShape{LGR}{\rmdefault}{b}{sl}{<-> \artemisia@scaled gartemisiabo6a}{} + \DeclareFontShape{LGR}{\rmdefault}{m}{sc}{<-> \artemisiasc@scaled gartemisiasc6a}{} + \DeclareFontShape{LGR}{\rmdefault}{m}{sco}{<->\artemisiasc@scaled gartemisiasco6a}{} + + %% nextx names oblique sc as both scit and scsl. ("largesc" option of newtx is different font, not a scaling.) + \DeclareFontShape{LGR}{\rmdefault}{m}{scsl}{<->\artemisiasc@scaled gartemisiasco6a}{}% sco + \DeclareFontShape{LGR}{\rmdefault}{m}{scit}{<->\artemisiasc@scaled gartemisiasco6a}{}% sco + + \DeclareFontShape{LGR}{\rmdefault}{bx}{n}{<-> \artemisia@scaled gartemisiab6a}{} + \DeclareFontShape{LGR}{\rmdefault}{bx}{it}{<->\artemisia@scaled gartemisiabi6a}{} + \DeclareFontShape{LGR}{\rmdefault}{bx}{sl}{<->\artemisia@scaled gartemisiabo6a}{} + + % Sans Serif Greek font Kerkis + % Based on Kerkis fd file, by Antonis Tsolomitis, under the LaTeX Project Public License + \def\kerkissf@scaled{s*[0.95]} + \DeclareFontFamily{LGR}{\sfdefault}{}% not adjusting wordspacing + \DeclareFontShape{LGR}{\sfdefault}{m}{n}{<-> \kerkissf@scaled gksf7t}{} + \DeclareFontShape{LGR}{\sfdefault}{m}{it}{<->\kerkissf@scaled gksfi7t}{} + \DeclareFontShape{LGR}{\sfdefault}{m}{sl}{<->\kerkissf@scaled gksfi7t}{} + \DeclareFontShape{LGR}{\sfdefault}{m}{sc}{<->\kerkissf@scaled gksfsc7t}{} + \DeclareFontShape{LGR}{\sfdefault}{b}{n}{ <->\kerkissf@scaled gksfb7t}{} + \DeclareFontShape{LGR}{\sfdefault}{b}{it}{<->\kerkissf@scaled gksfbi7t}{} + \DeclareFontShape{LGR}{\sfdefault}{b}{sl}{<->\kerkissf@scaled gksfbi7t}{} + + \DeclareFontShape{LGR}{\sfdefault}{bx}{n}{ <-> \kerkissf@scaled gksfb7t}{} + \DeclareFontShape{LGR}{\sfdefault}{bx}{it}{ <-> \kerkissf@scaled gksfbi7t}{} + \DeclareFontShape{LGR}{\sfdefault}{bx}{sl}{ <-> \kerkissf@scaled gksfbi7t}{} + + %% Greek monospaced font, DejaVuSansMono + %% Based on DejaVu fd files by Pavel Farar, under the LaTeX Project Public License + \def\DejaVuSansMono@@scale{s*[0.85]}% + \DeclareFontFamily{LGR}{\ttdefault}{}% not adjusting wordspacing + \DeclareFontShape{LGR}{\ttdefault}{b}{it}{<-> \DejaVuSansMono@@scale DejaVuSansMono-BoldOblique-tlf-lgr}{} + \DeclareFontShape{LGR}{\ttdefault}{b}{n}{ <-> \DejaVuSansMono@@scale DejaVuSansMono-Bold-tlf-lgr}{} + \DeclareFontShape{LGR}{\ttdefault}{m}{it}{<-> \DejaVuSansMono@@scale DejaVuSansMono-Oblique-tlf-lgr}{} + \DeclareFontShape{LGR}{\ttdefault}{m}{n}{ <-> \DejaVuSansMono@@scale DejaVuSansMono-tlf-lgr}{} + + \DeclareFontShape{LGR}{\ttdefault}{m}{sl}{<-> \DejaVuSansMono@@scale DejaVuSansMono-TLF/m/it}{} + \DeclareFontShape{LGR}{\ttdefault}{b}{sl}{<-> \DejaVuSansMono@@scale DejaVuSansMono-TLF/b/it}{} + + \DeclareFontShape{LGR}{\ttdefault}{bx}{sl}{<->\DejaVuSansMono@@scale DejaVuSansMono-TLF/b/it}{} + \DeclareFontShape{LGR}{\ttdefault}{bx}{it}{<->\DejaVuSansMono@@scale DejaVuSansMono-TLF/b/it}{} + \DeclareFontShape{LGR}{\ttdefault}{bx}{n}{ <->\DejaVuSansMono@@scale DejaVuSansMono-TLF/b/n}{} + + \endgroup + \fi + + \ifac@cyrillic + %% Paratype fonts for cyrillic, maintained by Pavel Farar, under Latex Project Public License + \begingroup + \nfss@catcodes + + \def\PTSerif@@scale{s*[0.95]}% had had 0.94... + \DeclareFontFamily{T2A}{\rmdefault}{}% not adjusting wordspacing, since it matches newtxtext as is + \DeclareFontShape{T2A}{\rmdefault}{m}{n}{ <->\PTSerif@@scale PTSerif-Regular-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{m}{it}{<->\PTSerif@@scale PTSerif-Italic-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{b}{n}{ <->\PTSerif@@scale PTSerif-Bold-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{b}{it}{<->\PTSerif@@scale PTSerif-BoldItalic-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{m}{ui}{<->\PTSerif@@scale PTSerif-UprightItalic-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{m}{sl}{<->\PTSerif@@scale PTSerif-Slanted-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{b}{ui}{<->\PTSerif@@scale PTSerif-BoldUprightItalic-tlf-t2a}{} + \DeclareFontShape{T2A}{\rmdefault}{b}{sl}{<->\PTSerif@@scale PTSerif-BoldSlanted-tlf-t2a}{} + + \DeclareFontShape{T2A}{\rmdefault}{bx}{n}{<->ssub * PTSerif-TLF/b/n}{} + \DeclareFontShape{T2A}{\rmdefault}{bx}{it}{<->ssub * PTSerif-TLF/b/it}{} + \DeclareFontShape{T2A}{\rmdefault}{bx}{ui}{<->ssub * PTSerif-TLF/b/ui}{} + \DeclareFontShape{T2A}{\rmdefault}{bx}{sl}{<->ssub * PTSerif-TLF/b/sl}{} + + \def\PTSans@@scale{s*[0.94]}% + \DeclareFontFamily{T2A}{\sfdefault}{}% not adjusting wordspacing + \DeclareFontShape{T2A}{\sfdefault}{b}{it}{<->\PTSans@@scale PTSans-BoldItalic-tlf-t2a}{} + \DeclareFontShape{T2A}{\sfdefault}{b}{n}{<-> \PTSans@@scale PTSans-Bold-tlf-t2a}{} + \DeclareFontShape{T2A}{\sfdefault}{m}{it}{<->\PTSans@@scale PTSans-Italic-tlf-t2a}{} + \DeclareFontShape{T2A}{\sfdefault}{m}{n}{<-> \PTSans@@scale PTSans-Regular-tlf-t2a}{} + \DeclareFontShape{T2A}{\sfdefault}{c}{n}{<-> \PTSans@@scale PTSans-Narrow-tlf-t2a}{} + \DeclareFontShape{T2A}{\sfdefault}{bc}{n}{<->\PTSans@@scale PTSans-NarrowBold-tlf-t2a}{} + + \DeclareFontShape{T2A}{\sfdefault}{m}{sl}{<->ssub * PTSans-TLF/m/it}{} + \DeclareFontShape{T2A}{\sfdefault}{b}{sl}{<->ssub * PTSans-TLF/b/it}{} + \DeclareFontShape{T2A}{\sfdefault}{bx}{sl}{<->ssub * PTSans-TLF/b/it}{} + \DeclareFontShape{T2A}{\sfdefault}{bx}{it}{<->ssub * PTSans-TLF/b/it}{} + \DeclareFontShape{T2A}{\sfdefault}{bx}{n}{<->ssub * PTSans-TLF/b/n}{} + + %% the tt cyrillic is slightly larger than the latin characters. + \def\PTMono@@scale{s*[0.92]}% + \DeclareFontFamily{T2A}{\ttdefault}{}% not adjusting wordspacing + \DeclareFontShape{T2A}{\ttdefault}{m}{n}{<-> \PTMono@@scale PTMono-Regular-tlf-t2a}{} + \DeclareFontShape{T2A}{\ttdefault}{b}{n}{<-> \PTMono@@scale PTMono-Bold-tlf-t2a}{} + \DeclareFontShape{T2A}{\ttdefault}{m}{sl}{<->\PTMono@@scale PTMono-Slanted-tlf-t2a}{} + \DeclareFontShape{T2A}{\ttdefault}{b}{sl}{<->\PTMono@@scale PTMono-BoldSlanted-tlf-t2a}{} + + \DeclareFontShape{T2A}{\ttdefault}{bx}{n}{<->ssub * PTMono-TLF/b/n}{} + \DeclareFontShape{T2A}{\ttdefault}{bx}{sl}{<->ssub * PTMono-TLF/b/sl}{} + + \endgroup + \fi +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput %% diff --git a/macros/latex/contrib/asmeconf/author-grid-style.pdf b/macros/latex/contrib/asmeconf/author-grid-style.pdf deleted file mode 100644 index a6f3ca6d12..0000000000 Binary files a/macros/latex/contrib/asmeconf/author-grid-style.pdf and /dev/null differ diff --git a/macros/latex/contrib/asmeconf/examples/CONTRACTOR-copyright-asmeconf-template.pdf b/macros/latex/contrib/asmeconf/examples/CONTRACTOR-copyright-asmeconf-template.pdf new file mode 100644 index 0000000000..27a247a589 Binary files /dev/null and b/macros/latex/contrib/asmeconf/examples/CONTRACTOR-copyright-asmeconf-template.pdf differ diff --git a/macros/latex/contrib/asmeconf/examples/GOVT-copyright-asmeconf-template.pdf b/macros/latex/contrib/asmeconf/examples/GOVT-copyright-asmeconf-template.pdf new file mode 100644 index 0000000000..e52d70accb Binary files /dev/null and b/macros/latex/contrib/asmeconf/examples/GOVT-copyright-asmeconf-template.pdf differ diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.pdf new file mode 100644 index 0000000000..3827579635 Binary files /dev/null and b/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.pdf differ diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.tex b/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.tex new file mode 100644 index 0000000000..4377134c69 --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-authorgrid-example.tex @@ -0,0 +1,650 @@ +% !TEX encoding = UTF-8 Unicode +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This file is asmeconf-template.tex, a 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.22 dated 2021/1/14 +%% +%% As of version 1.11, this template follows ASME's newer conference guidelines first posted July 2019. +%% The new guidelines have changed the requested author block formatting to be inline. +%% (This template continues to support the traditional grid format as a package option.) +%% Nomenclature now follows the abstract. Abstract text is set in italics. +%% +%% Author: John H. Lienhard V +%% Department of Mechanical Engineering +%% Massachusetts Institute of Technology +%% Cambridge, MA 02139-4307 USA +%% +%% Class options include: +%% +%% * 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 also +%% * [subscriptcorrection, smallerops, varg, frenchmath, varbb, cmbraces, slantedGreek,...] +%% * See newtx documentation for descriptions (at CTAN: http://ctan.org, v1.6 or higher best). +%% +%% * Many options for calligraphic, script, and fraktur fonts from the mathalfa package; the +%% * example shown here is: [mathalfa=cal=euler] to use Euler font for \mathcal. +%% * Some other options for cal are: dutchcal, zapfc, cm (default), boondox,... +%% * frak (fraktur), bb (blackboard bold), scr (script) may also be chosen this way. +%% * For details, refer to mathalfa documentation (at CTAN: http://ctan.org). +%% +%% * Options to: omit the ASME copyright footer [nofoot]; +%% use government employee copyright notice [govt]; +%% use government contractor copyright notice [contractor] +%% +%% * An option to balance the heights of columns on the last page [balance]. +%% * This option is NOT compatible with the [lineno] option. +%% +%% * An option to include line numbers [lineno]. You must *run twice* for proper placement of the line numbers. +%% * The lineno package does not number titles, footnotes, captions, or tables. +%% * This option will disable balancing column height on final page if that option has been invoked. +%% * The lineno package won't always number the lines preceding displayed math in a paragraph because +%% * paragraph has not ended. See that package's documentation for macros to address this problem, or +%% * just leave a blank line above the displayed equation while you are editing and then remove the +%% * blank line and [lineno] option when you move to your final version. +%% +%% * An option to use the traditional grid arrangement of author names [authorgrid]. See Appendix B for usage, +%% * because the authors and affiliations must be entered differently in this case. (Same as former option [oldauthors]) +%% +%% * Options for PDF/A compliance. [pdf-a] will produce PDF/A-3u compliance with sRGB OutputIntent. +%% * [pdfapart= 1 or 2 or 3] and [pdfaconformance= b or u] can enable levels 1b, 2b, 2u, and 3b. +%% +%% * Option to use superiors font from newtxtext for footnotes [nodefaultsups] and +%% * for slightly larger small capitals, [largesc], also from newtxtext. +%% +%% * An option to allow hyphenation of the typewriter font [hyphenate], from inconsolata package. +%% * Hyphenation is normally suppressed for typewriter mode because it is often used for code. +%% * To replace the default variable word spacing by monospacing, use the option [mono]. +%% * To get a zero without a slash, use [var0] +%% +%% * Options (used by the babel package) to include passages in languages other than English (e.g., a translation +%% * of the abstract). Languages are called as options, e.g. [french], [spanish], [greek], [russian], etc. +%% * See Appendix C for details. +%% +%% The use of commands defined or modified by the asmeconf class is illustrated throughout this file. In particular, +%% ASME requires capitalized, sans-serif section headings, and as a result some care is needed when using macros +%% in section headings, as also illustrated below. +%% + %========================================================= +%% +%% LICENSE: +%% +%% Copyright (c) 2021 John H. Lienhard +%% +%% Offered under the MIT license: https://ctan.org/license/mit +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Class options are described above. If you are not using the languages options, remove them. + +\documentclass[authorgrid,upint,subscriptcorrection,varvw,mathalfa=cal=euler,pdf-a,balance,spanish,french,greek,russian,colorlinks]{asmeconf} % <=== remove colorlinks before your *final* submission to ASME! But keep it for other purposes. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%% Fields to be completed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%% pdf metadata %%%%%%%%%%%% +%%%%% The user should edit %%%%%%%%%%%% + +\hypersetup{% + pdftitle={ASME Conference Paper Template}, % <=== change to YOUR pdf file title + pdfkeywords={ASME, Paper, Template, \LaTeX, Research}, % <=== change to YOUR pdf keywords + pdfauthor={John H. Lienhard}, % <=== change to YOUR name[s]! +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{document} +% Change these fields to the right content for your conference. +% You can comment these out if for some reason you don't want a header. +% Use title case (first letters capitalized), not all capitals + +\ConfName{Proceedings of the \texttt{asmeconf}\linebreak International Examples Congress and Exposition} +\ConfAcronym{AIECE21} +\ConfDate{November 1-4, 2021} +\ConfCity{Virtual Conference, Online} +\PaperNo{AIECE2021-0003} + + +% Units of measure and other specialty lowercase terms in the title should be +% enclosed in \NoCaseChange{...} to maintain lower case type +% LaTeX will automatically set the rest of the title in all capital letters. + +\title{Place Title Here: Place Subtitle After Colon} % <=== change to YOUR title + +%%% This is the set-up for the traditional author block style (a grid of blocks) using option [authorgrid] + +% Change to your name[s] and addresses, in the desired order of authors. Up to nine author blocks. +% Note usage below for joint first authors and for corresponding author. +% First name, middle initial, last name +% Use title case (upper and lower case letters) +% (Most of the names below are not real people, just very common names.) + +\SetAuthorBlock{Luis Hern\'{a}ndez\JointFirstAuthor}{Institution or Company Name \\ City, State} +\SetAuthorBlock{Maria Silva\JointFirstAuthor}{Institution or Company Name \\ City, Province, Canada} + +\SetAuthorBlock{Henry Tudor, Catherine Parr\CorrespondingAuthor{}}{Hampton Court Palace \\ Richmond, England} +\SetAuthorBlock{Jinsoo Kim}{Institution or Company Name \\ City, Country} +\SetAuthorBlock{Yusuf Yilmaz}{Institution or Company Name \\ City, Country} + +\SetAuthorBlock{Amelia Smith}{Institution or Company Name \\ City, Country} +\SetAuthorBlock{Aadhya Acharya}{Institution or Company Name \\ City, Country} +\SetAuthorBlock{Omar Abu Bakr}{Institution or Company Name \\ City, Country} + +% Give an empty argument for \CorrespondingAuthor{} if you are putting email address into the address block. +% Can also put multiple emails into the argument and use command more than once for multiple +% corresponding authors. Only the *last* set of emails issued will be printed. + +\SetAuthorBlock{John H.\ Lienhard V\CorrespondingAuthor{lienhard@mit.edu, kate@thepalace.com}\JointFirstAuthor}{% +Massachusetts Institute of Technology \\ Cambridge, MA} + +% be sure to issue [authorgrid] option when using this (otherwise your authorblock will not display!) + + +\maketitle + +%%% Use this footnote for tracking various versions of your draft. Change text to suit your own needs. +%%% REMOVE from final version of your paper. +%%% \date{..} calls the same command. + +\versionfootnote{Documentation for \texttt{asmeconf.cls}. Version \versionno; \today.}% <=== Delete before final submission. + + +%%% 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, leave the argument of \keywords{} empty (or use the abstract* environment) + +\keywords{ASME, Paper, Template, \LaTeX, Research} + +%%%%%%%%%%%%%%%%%%%%% End of fields to be completed. Now write! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%% Abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Abstract should be no more than 200 words +\begin{abstract} +This paper is an example of and a template for typesetting ASME Conference Papers in {\upshape\LaTeX} using the {\upshape\texttt{asmeconf}} class. This class follows ASME guidelines for margins, fonts, headings, captions, and reference formats as of 2020. The class is intended to be used with the {\upshape\texttt{asmeconf.bst} \hologo{BibTeX}} style, which is part of this distribution. The class incorporates the {\upshape\texttt{hyperref}} package, so that pdfs will contain hyperlinks, bookmarks, and metadata, and references can include the DOI and URL fields. Links may be colored, for online use, or black, for publication. The class enables inline author names, following ASME's current style, but can also produce the traditional grid style. Options include line numbering, final column balancing, various math options, government copyright, and archivability (PDF/A). In addition, section headers may contain mathematics, references, citations, and footnotes. The class is compatible with {\upshape\hologo{pdfLaTeX}} or {\upshape\hologo{LuaLaTeX}}. +\end{abstract} + +%%%%%%%%% NOMENCLATURE (OPTIONAL) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% To change space between the symbols and definitions, use \begin{nomenclature}[Xcm] where X is a number +%% The unit cm can be replaced by any LaTeX unit of dimension: pt, in, ex, em, pc, etc. +%% Default is 2em. + +%% \EntryHeading{Greek letters} produces an italicized subheading, e.g., \EntryHeading{Greek letters} +%% (Leaving off the second argument of \entry, e.g. \entry{Greek letters}, has the same effect) + +\begin{nomenclature} +\EntryHeading{Roman letters} +\entry{$k$}{Thermal conductivity [W m$^{-1}$ K$^{-1}$]} +\entry{$\vec{q}$}{Heat flux vector [W m$^{-2}$]} + +\EntryHeading{Greek letters} +\entry{$\alpha$}{Thermal diffusivity [m$^2$ s$^{-1}$]} +\entry{$\nu$}{Kinematic viscosity [m$^2$ s$^{-1}$]} + +\EntryHeading{Dimensionless groups} +\entry{Pr}{Prandtl number, $\nu/\alpha$} +\entry{Sc}{Schmidt number, $\nu/\mathcal{D}_{1,2}$} + +\EntryHeading{Superscripts and subscripts} +\entry{b}{bulk value} +\entry{$\infty$}{free stream value} +\end{nomenclature} + + +%%%%%%%%% BODY OF PAPER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} +The \texttt{asmeconf} class typesets papers with margins, fonts, headings, captions, and reference formats that follow the specifications for conference papers of the American Society of Mechanical Engineers (ASME). In contrast to older ASME \LaTeX\ templates, \texttt{asmeconf} will set internal and external hyperlinks, and the pdf file will contain bookmarks and metadata. Many other useful features have been incorporated. This class is not a publication of ASME, but the author has published in ASME conferences since 1983. + +The \texttt{.tex} file may be written using standard \LaTeX\ commands, although some specific initial commands are needed to format the blocks containing the author[s], title, and abstract. This class loads a number of other packages, all of which are contained in up-to-date versions of \href{https://www.tug.org/texlive/}{\TeX\ Live}, \href{http://www.tug.org/mactex/}{Mac\TeX}, and similar platforms. If you find that you are missing one of these packages, you may obtain it at no cost from CTAN (\href{http://ctan.org}{ctan.org}). + +\subsection{Essential Initial Commands} +To begin, fill in the fields to be completed at top of the \texttt{asmeconf-template.tex} file. These fields include the headers for your conference and your paper number. Specified metadata will be placed into the pdf file itself. +The title should be placed into \verb|\title{..}|. + +Put author names into the \verb|\SetAuthors{name, name,...}| command in the desired order; follow the syntax illustrated \texttt{asmeconf-template.tex} file. Put each distinct address sequentially into a separate \verb|\SetAffiliation{n}{address}|, where $n = 1,2,\ldots$ Tag each author with an affiliation by putting \verb|\affil{n}| after that author's name inside the \verb|\SetAuthors{..| command. + +Keep author addresses short. List the author institution, and the City, State (US authors), City, Province, Canada (Canadian authors), or City, Country (other international authors). + +One author (or more) may be designated as the corresponding author by placing \verb|\CorrespondingAuthor{email}| after \verb|\affil{n}|. Two or more authors may be joint first authors by putting \verb|\JointFirstAuthor| after \verb|\affil{n}|. + +After setting up the headers, authors, and title, issue the \verb|\maketitle| command. + +The abstract text must be placed into \verb|\begin{abstract}| \ldots \verb|\end{abstract}|. The abstract will automatically be italicized. Keywords may be included using the \verb|\keywords{..}| command. The \texttt{keyword} command \textit{must} be issued before the abstract environment. + + +%%%%%%%%%%%%% begin figure %%%%%%%%%%%%%%%%% + +%% captions go below figures + +\begin{figure}[t] +\centering\includegraphics[width=0.7\linewidth]{sample-figure-1.pdf} +\caption{Figure caption with math, eqn.~\eqref{eqn:fourier}: $z = (r,\phi)$ \cite{Lienhard2019b}\label{fig:1}} +\end{figure} + +%%%%%%%%%%%%% end figure %%%%%%%%%%%%%%%%%%% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Referring to Citations, Figures, and Equations} +Citations are automatically numbered \cite{ning2002}. They should be inserted at the appropriate point using a \verb|\cite{ref}| command~\cite{gibson2008,stevens1999}. The citations will be automatically sorted and compressed if they are given in a set \cite{stevens1999,ning2002,gibson2008,wions2005,smith2002,watson1982}. +A specific reference may be named with an abbreviation, as in Ref.~\cite{watson1982}. +See the \texttt{asmeconf-sample.bib} file and Sect.~\ref{sec:references} for examples of how to enter your references. + +For ASME conference papers, the labels Equation and Figure should be abbreviated when they do not start a sentence, as in Eq.~\eqref{eqn:dw} and Fig.~\ref{fig:1}. Figure~\ref{fig:1} is spelled out when it starts a sentence. Equation~\eqref{eqn:dw} is spelled out when it starts a sentence. + +Equations are typeset in the usual way and will be automatically numbered. 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 (see Sect.~\ref{sec:moremath}). +\begin{equation}\label{eqn:fourier} +\vec{q} = -k\nabla T +\end{equation} + +ASME prefers SI units. (U.S.\ style units may follow in parentheses.) Be sure to put all symbols into the nomenclature list, including their units. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Use title case for subsections and subsubsections + +\section{Section Headings and Captions} +ASME requires that section headings and captions be set in an uppercase, sans serif font. The class will do this automatically. You can place \verb|\cite{..}|, \verb|\ref{..}|, \verb|\label{..}|, and mathematics into headings and captions directly, as you would in the main text. Do not enclose them braces, e.g.\ \verb|{\cite{..}}|, which will cause errors. 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.}\footnote{Sequential footnotes are automatically separated by a comma.} + +Text in section headings and captions will not be capitalized if enclosed in a \verb|\NoCaseChange{..}| command. + +Sections may either be numbered or left unnumbered. + +Simple mathematical expressions can be used in either captions or section headings. For a section heading that includes more 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{asmeconf-template.tex} source file for examples of this procedure. These bookmarks should usually be text expressions, although some math is supported. + +If you wish to override the default math format in captions, put \verb|\mathversion{normal}| in the caption. + +\subsection{Subsection and Sub-subsection Headings} +Subsections and sub-subsection headings should be entered in title case, with the first letter of primary words capitalized. Sub-subsections (i.e., paragraphs) are never numbered. + + +%%%%%%%%%%%%%%% begin simple table %%%%%%%%%%%%%%%%%%%%%%%%%% + +%% captions go above tables + +\begin{table}[t] +\caption[Table]{A simple table\label{tab:1}} +\centering{% +\begin{tabular}{l l r} +\toprule +Experiment & $u$ [m/s] & $T$ [\textdegree C] \\ +\midrule +Run 11 & 12.5 & 103.4 \\ +Run 12 & 24 & 68.3 \\ +\bottomrule +\end{tabular} +} +\end{table} + +%%%%%%%%%%%%%%%% end table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%% begin more complicated table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{table}[t] +\caption{Table with more complicated columns}\label{tab:2}% +\centering{% +\begin{tabular}{!{\hspace*{0.5cm}} >{\raggedright\hangindent=1em} p{3cm} d{3.3} @{\hspace*{1cm}} d{3.3} !{\hspace*{0.5cm}}} +\toprule +Experiment & \multicolumn{1}{c@{\hspace*{1cm}}}{$u$ [m/s]} & \multicolumn{1}{c!{\hspace*{0.5cm}}}{$T$ [\textdegree C]} \\ +\midrule +The first test we ran this morning & 124.3 & 68.3 \\ +The second test we ran this morning & 82.50 & 103.46 \\ +Our competitor's test & 72.321 & 141.384 \\ +\bottomrule +\end{tabular} +} +\end{table} + +%%%%%%%%%%%%%%%% end table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%% begin two column table %%%%%%%%%%%%%%%%%% +\begin{table*} +\caption{A table spanning two columns\label{tab:3}}% +\centering{% +\begin{tabular*}{0.8\textwidth}{@{\hspace*{1.5em}}@{\extracolsep{\fill}}ccc!{\hspace*{3.em}}ccc@{\hspace*{1.5em}}} +\toprule +\multicolumn{1}{@{\hspace*{1.5em}}c}{$x$\rule{0pt}{11pt}} & +\multicolumn{1}{c}{$\textrm{erf}(x)$} & +\multicolumn{1}{c!{\hspace*{3.em}}}{$\textrm{erfc}(x)$} & +\multicolumn{1}{c}{$x$} & +\multicolumn{1}{c}{$\textrm{erf}(x)$} & +\multicolumn{1}{c@{\hspace*{1.5em}}}{$\textrm{erfc}(x)$} \\ \midrule +0.00 & 0.00000 & 1.00000 & 1.10 & 0.88021 & 0.11980\rule{0pt}{11pt} \\ +0.05 & 0.05637 & 0.94363 & 1.20 & 0.91031 & 0.08969 \\ +0.10 & 0.11246 & 0.88754 & 1.30 & 0.93401 & 0.06599 \\ +0.15 & 0.16800 & 0.83200 & 1.40 & 0.95229 & 0.04771 \\ +0.20 & 0.22270 & 0.77730 & 1.50 & 0.96611 & 0.03389 \\ +0.30 & 0.32863 & 0.67137 & 1.60 & 0.97635 & 0.02365 \\ +0.40 & 0.42839 & 0.57161 & 1.70 & 0.98379 & 0.01621 \\ +0.50 & 0.52050 & 0.47950 & 1.80 & 0.98909 & 0.01091 \\ +0.60 & 0.60386 & 0.39614 & 1.82\makebox[0pt][l]{14} & 0.99000 & 0.01000 \\ +0.70 & 0.67780 & 0.32220 & 1.90 & 0.99279 & 0.00721 \\ +0.80 & 0.74210 & 0.25790 & 2.00 & 0.99532 & 0.00468 \\ +0.90 & 0.79691 & 0.20309 & 2.50 & 0.99959 & 0.00041 \\ +1.00 & 0.84270 & 0.15730 & 3.00 & 0.99998 & 0.00002 \\[2pt] +\bottomrule\end{tabular*} +} +\end{table*} + +%%%%%%%%%%%%%%%%% end two column table %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Tables and Figures} + +Table \ref{tab:1} is an example of a simple table. Table captions should be placed above tables. +The class loads the \texttt{booktabs} package (used for horizontal rules in both Table \ref{tab:1} and \ref{tab:2}), and the \texttt{array} and \texttt{dcolumn} packages which provide extended capabilities for columns in the \texttt{tabular} environment (used in Table \ref{tab:2}). Table \ref{tab:3} is an example of a table that spans two columns. Two column tables (and figures) will always float to the top of a later page. + +Figure captions go below figures. Figure~\ref{fig:2} is an example of a figure that spans two columns and includes subfigures. The text in figures (and tables) should be no smaller than 6~point type. Images in figures are handled by the standard \texttt{graphicx} package. + +Landscape figures and tables may be produced at full-page size by putting \verb|\usepackage[figuresright]{rotating}| in your \texttt{.tex} file's preamble and using the \texttt{sidewaystable*} and \texttt{sidewaysfigure*} environments~\cite{fairbairns}. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Reference Formatting with \NoCaseChange{\texttt{asmeconf.bst}}\footnote{If you have text in a section heading or caption that you do not want to be capitalized, such as an SI unit, enclose it in a \texttt{\textbackslash NoCaseChange} command.}}\label{sec:references} + +The {\upshape\texttt{asmeconf.bst}} \hologo{BibTeX} style follows the reference styles shown on ASME's conference web site in 2020.\footnote{\texttt{asmeconf.bst} is intended as a replacement for the old \texttt{asmems4.bst}, which does not follow ASME's current reference formats or support DOI and URL.} +Examples for these and many other cases are given in the \texttt{asmeconf-sample.bib} file, which is part of this distribution. Citations and references are managed by the standard \texttt{natbib} package. Nevertheless, a few comments are necessary. + +%% sub-subsections should *not* be numbered + +\subsubsection*{DOI, URL, and eprint} Include DOI numbers when they are available. URL's may alternatively be given. ASME requests that URLs point to a document's abstract. + +Elementary support for \texttt{eprint} numbers is also included, generating a url at the end of the citation. The \texttt{archive} type may be specified using the macros \texttt{arxiv, googlebooks, hdl, jstore, oclc}, or \texttt{pubmed} (e.g., \texttt{archive=hdl}, \textit{without} braces). Both \texttt{eprint} and \texttt{archive} fields \textit{must} be given. Other root urls may be invoked using \verb|archive = {http://another.url.org/}|. + +\subsubsection*{Online Sources} A bibliography entry \verb|@online{..| is included for citation of online sources, such as web pages. A \texttt{url} or \texttt{eprint} with \texttt{archive} must be included. See the examples of use in the \texttt{asmeconf-sample.bib} file. + +\subsubsection*{Date Accessed} The \verb|urldate={..}| field may be used to provide the date on which a given url was accessed. By default, the text printed will be \texttt{Accessed `date',}. The word ``Accessed'' may be changed using the \verb|urltype={..}| field. + +\subsubsection*{Conference Location and Date} For 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. + +\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. + + + +%%%%%%%%%%%%%%%%% begin two column figure %%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{figure*} +\begin{subfigure}[t]{0.5\textwidth} % subfigure is basically the same as minipage +\vbox{ +\vspace*{1.7em} +\centering{ + \includegraphics{sample-figure-2a.pdf} +} +\vspace*{1.7em} +} +\subcaption{Interior region\label{fig:interior-region}} +\end{subfigure}% +%%%%%%%%%%%%% no spaces or line breaks between these two subfigures +\begin{subfigure}[t]{0.5\textwidth} +\centering{% +\includegraphics{sample-figure-2b.pdf} +\subcaption{Exterior region\label{fig:exterior-region}} +}\end{subfigure} +\caption{A figure with two subfigures \cite{Lienhard2019b}}\label{fig:2} +\end{figure*} + +%%%%%%%%%%%%%%%%%%% end two column figure %%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%% MORE ON MATH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Dealing with complicated math in a section or subsection heading: +%% the optional argument to \section will provide the pdf bookmark +%% without losing characters or producing warnings/errors. +%% +%% In this heading, letter u is forced to be upright with \mathrm{u} +%% +\section[More on math: u\cdot\omega=0]{More on math: $\vec{\mathrm{u}}\cdot\vec{\omega}=0$}\label{sec:moremath} + +In most cases, the need for a wide equation can be eliminated by using one of the multiline equation environments defined by +\texttt{amsmath}, such as \texttt{align}, \texttt{split}, or \texttt{multline}~\cite{amsmath}. The following equation is set with the +\texttt{multline} environment: +\begin{multline}\label{eqn:energy} +\frac{\partial}{\partial t}\left[\rho\bigl(e + \lvert\vec{u}\rvert^2\big/2\bigr)\right] + \nabla\cdot\left[\rho\bigl(h + \lvert\vec{u}\rvert^2\big/2 \bigr)\vec{u}\right] \\ + ={}-\nabla \cdot \vec{q} + \rho \vec{u}\cdot\vec{g}+ \frac{\partial}{\partial x_j}\bigl(d_{ji}u_i\bigr) + \dot{Q}_v +\end{multline} +An example using \texttt{align} appears in Appendix~\ref{appendix:a}. + +An alternative solution may be to set large equations into two-column-wide tables or figures. While a package exists for setting equations that span two columns (\texttt{widetext.sty}), that code is erratic in relation to floats and page breaks. + +Math italics are used for roman and greek letters by default. If you want an upright letter in math, you can use the relevant math alphabet, e.g., \verb|\mathrm, \mathbf, \mathsf|: +\begin{equation}\label{eqn:dw} +\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} +To get additional symbols in bold math, you can use \verb|\mathversion{bold}| or the \verb|\bm{..}| macro from the \texttt{bm} package, which is loaded by the class. + +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}$), in case they are needed (but note that the \verb|newtxmath| options \verb|frenchmath| and \verb|slantedGreek| also affect how greek letters are presented). + +\subsection{The \texttt{newtxmath} and \texttt{mathalpha} Packages~\cite{sharpe1,sharpe2}} 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): +\begin{quote} +\verb|\documentclass[upint]{asmeconf}|. +\end{quote} +The option \verb|subscriptcorrection| improves the spacing of math subscripts. These math options are discussed further in the \texttt{asmeconf-template.tex} file. + +In addition, many options for calligraphic, fraktur, and script fonts are available as options to the \texttt{mathalfa} package, which is also loaded. These may be invoked, for example, as +\begin{center} +\verb|\documentclass[mathalfa=cal=euler]{asmeconf}| +\end{center} +which selects the Euler font for \verb|\mathcal| (this is our default). To find all the font options, refer to the \texttt{mathalfa} package documentation \cite{sharpe2}. + +The \texttt{asmeconf} class is designed to be used with \texttt{newtxmath} and does not support the \texttt{unicode-math} package. + + +%%%%%%%%%%%%%%% ADDITIONAL PACKAGE OPTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Additional Options for \NoCaseChange{\texttt{asmeconf.cls}}} +The class accepts a number of options in addition to those already described. These options are discussed next. + +\subsection{Colored Hyperlinks} +ASME requires that all text be \textbf{in black} when the paper is submitted for publication. For other uses, authors may +obtain colored hyperlinks with the [\texttt{colorlinks}] option. + +\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 option will produce line numbers in the margins. You must run \LaTeX\ \textit{twice} for proper placement of the numbers. Tables, captions, and footnotes will not be numbered. Line numbers can be helpful for review and editing, but should not be used in your final manuscript. See the documentation of the \texttt{lineno} package for further commands to control line numbering. + +The \texttt{lineno} package is not compatible with the \texttt{flushend} package that makes final short columns the same height. Balancing is automatically disabled when this option is called. + +\subsection{Grid-Style Author Block} The option \texttt{[authorgrid]} invokes ASME's grid-style arrangement of author names. The authors and affiliations must be entered differently in this case. See Appendix \ref{appendix:b} for usage. + +\subsection{Changing the Copyright Footer} The option \texttt{[nofoot]} will omit the ASME copyright from the page footer. The option \texttt{[govt]} will produce a copyright notice for authors who are employees of the U.\ S.\ Government. The option \texttt{[contractor]} will produce a copyright +notice for authors who are employed by a U.\ S.\ Government contractor. + +The footers are generated with the \texttt{fancyhdr} package~\cite{oostrum}, so you can change them in any way you like using the commands of that package. Only the default arrangement of footers matches ASME's style, however. + +\subsection{Archivability:~PDF/A} Compliance with PDF/A standards can be enabled using the option \texttt{[pdf-a]} +when running with \hologo{pdfLaTeX}. The default setting is for PDF/A-3u with sRGB OutputIntent (\texttt{sRGB.icc}). +If levels 1b, 2b, 2u, or 3b are preferred, use the options \texttt{[pdfapart=1 or 2 or 3]} and +\texttt{[pdfaconformance=b or u]}. Note that accessible conformance~(\texttt{a}) is not currently possible with \LaTeX. + +\subsection{Superiors Font} The \texttt{newtxtext} package includes a superiors font (both numbers and letters) for use in footnote markers and superscripts. To enable this font, use the option \texttt{[nodefaultsups]}. + +\subsection{Typewriter Font Options} This font is the sans-serif \texttt{inconsolata}. By default, the word spacing is variable, but option \texttt{[mono]} ends this behavior. A slashed zero is default; option \texttt{[var0]} removes the slash. Option \texttt{[hyphenate]} enables hyphenation. (This option is not available if the \texttt{[fontspec]} option is used.) + +\subsection{Support for Other Languages} The package can be adapted to incorporate (or entirely use) languages other than English. See Appendix \ref{appendix:c} for details. + + +%%%%% Conclusions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Conclusion} +Provide a brief conclusion (3-4 lines). + + +%%%%% Acknowledgments %%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section*{Acknowledgments} +Place any acknowledgments here. + + + +%%% REFERENCES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Put your references into your .bib file in the usual way. Run latex once, bibtex once, then latex twice. +%% The asmeconf.bst style allows: venue = {Location of Conference}, and eventdate = {Month, days} +%% for @inproceedings and @proceedings +%% + +\nocite{*} %% <=== Delete this line unless you want to typeset the entire contents of your .bib file! + +\bibliographystyle{asmeconf} %% .bst file following ASME conference format. Do not change. +\bibliography{asmeconf-sample} %% <=== change this to name of your bib file + + +%%% APPENDICES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\appendix + +%% Note that appendices will be "numbered" A, B, C, ... etc. Use \section, not \section* +%% Equations will be numbered sequentially following those in the paper. Do not reset the equation counter. + +%% Here we use the optional argument to control the pdf bookmark and prevent errors. +\section[The Vector Product A\times B]{The vector product $\vec{A}\times\vec{B}$}\label{appendix:a} + +This brief illustration of an appendix shows the numbering of the appendix and equations. Equations are numbered +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] + &{}= \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} + +\section{Option to Use an Author Grid}\label{appendix:b} + +ASME's most recent templates place author names inline, with affiliations for all authors in rows below. +This style is the default for this template. + +The traditional style of putting authors with affiliation into a grid of blocks may be invoked with +the option [\texttt{authorgrid}]. When using this form, the author names and addresses should be entered as below: + +\smallskip +\noindent\verb|\SetAuthorBlock{Name\JointFirstAuthor}{%| + \hbox{}\hfil\verb|Institution \\ City, State}| +\verb|\SetAuthorBlock{Name\JointFirstAuthor}{%| + \hbox{}\hfil\verb|Institution \\ City, Country}| +\verb|\SetAuthorBlock{Name, Name}{%|\hfil\hbox{} + \hbox{}\hfil\verb|Institution \\ City, Country}| +\verb|\SetAuthorBlock{John Lienhard\CorrespondingAuthor{%| + \hbox{\qquad}\hfil\verb|lienhard@mit.edu}}{Institution \\ City, State}| +\smallskip + +Code for the inline-author style is contained at the very end of this \texttt{.tex} file. + +Note that ASME interprets the author order in the grid style by reading names from left-to-right in the top row, then left-to-right in each +subsequent row. + +%% directly usable code follows the \end{document} command below. + +%\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Multilingual Support}\label{appendix:c} + +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. + +When more than one language option is included in \verb|\documentclass[..]{asmeconf}|, 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 examples, a passage in French is +shown in \selectlanguage{french}\appendixname~\ref{app:fourier}\selectlanguage{english}, followed by +\ifpdftex abstracts in Spanish, Greek, and Russian.\else abstracts in other languages.\fi + +Font encoding is set to T1 with utf-8 input supported: +%% If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue. +\typeout{If you have trouble with the next line, your file may not be saved in utf-8 format. You can delete that line to resolve the issue.} +àáâäæãåā èéęëêēė îïíīįì ôöòóœøōõ ûüùúū çćč ł ñń ßśš ÿ žźż. + +Fonts similar to Times/Helvetica are automatically used when the Greek, Vietnamese, or selected cyrillic-alphabet languages are called as options under {\upshape\hologo{pdfLaTeX}}. Using {\upshape\hologo{LuaLaTeX}} with the \texttt{[fontspec]} option, many additional scripts are available; see the supplemental notes for such usage~\cite{lienhard2021}. Possibilities include Arabic, Bengali, Chinese, Devanagari (e.g., for Hindi), Hangul (for Korean), Kana (for Japanese), and Tamil. + +The bibliography style, \texttt{asmeconf.bst}, is designed in English and aimed at \hologo{BibTeX}. Multilingual bibliographies +can be supported using \texttt{BibLaTeX}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{selectlanguage}{french} +\section{Discours Préliminaire de Fourier}\label{app:fourier} +Les causes primordiales ne nous sont point con­nues; mais elles sont assujetties à des lois simples et constantes, que l'on peut découvrir par l'obser­vation, et dont l'étude est l'objet de la philosophie naturelle. + +La chale ur pénètre, comme la gravité, toutes les substances de l'univers, ses rayons occupent toutes les parties de l'espace. Le but de notre ouvrage est d'exposer les lois mathématiques que suit cet élé­ment. Cette théorie formera désormais une des branches les plus importantes de la physique gé­nérale~\cite{fourier1822}. +\end{selectlanguage} + +\begin{selectlanguage}{spanish} +\begin{abstract*} +Este es el resumen del artículo. Escribimos en español. Se describen el problema, los métodos y los resultados. También se incluyen referencias. +\end{abstract*} +\end{selectlanguage}% edited by Aarón Montoya-Moraga + +%% If you have trouble with the passages, your file may not be saved in utf-8 format. You can delete this stuff to resolve the issue. + +%% Examples of abstracts in other languages. The first three are intended for pdflatex, not lualatex. +\begin{selectlanguage}{greek}% +\begin{abstract*} +Αυτή είναι η περίληψη του άρθρου. Χρησιμοποιούμε την ελληνική γλώσσα. Περιγράφεται το πρόβλημα, οι μέθοδοι και τα αποτελέσματα. Περιλαμβάνονται επίσης αναφορές. +\end{abstract*} +\end{selectlanguage}% Edited by George Barbastathis + +\begin{selectlanguage}{russian} +\begin{abstract*} +Это резюме статьи. Пишем по русски. Описаны проблема, методы и результаты. Библиография также включена.% +\end{abstract*} +\end{selectlanguage}% edited by Steven Gerasimoff + +\iffontspecloaded +% + \begin{selectlanguage}{japanese} + \begin{abstract*} + %論文の要約です。日本語で記述します。問題、方法、および結果について説明します。また、参考文献も含めます。 + この論文の日本語での要約は以下のとおりです。問題、方法、および結果が説明されています。参考資料も添付してあります。 + \end{abstract*} + \end{selectlanguage}% Edited by Keiji Yano and Yoshiki Okamoto +% + \begin{selectlanguage}{korean} + \begin{abstract*} + 이것은 한국어로 쓰인 논문의 초록입니다. 문제, 방법 및 결과가 설명되어 있습니다. 참조도 포함됩니다. + \end{abstract*} + \end{selectlanguage}% Edited by Hyung Won Chung. +% + \begin{selectlanguage}{chinese-simplified} + \begin{abstract*} + 这是文章的摘要。我们用中文书写,描述了问题,方法和结果,还包括了参考文献。 + \end{abstract*} + \end{selectlanguage}% edited by Zi Hao Foo +% +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} + + +%%% This is the set-up for the inline author block style; don't use option [authorgrid] + +% Put author names into the order you want. Use the same order for affiliations. +% \affil{#} tags the author's affiliation to the address in \SetAffiliation{#}. +% No space between last name and \affil{#}, separate names with commas. +% +% \CorrespondingAuthor{email} follows that author's affiliation, no spaces. +% 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{Luis Hern\'andez\affil{1}\JointFirstAuthor , Maria Silva\affil{2}\JointFirstAuthor, Henry Tudor\affil{3}, Catherine~Parr\affil{3}\CorrespondingAuthor{}, John H.\ Lienhard V\affil{4}\CorrespondingAuthor{lienhard@mit.edu, kate@thepalace.gov}} + +\SetAffiliation{1}{Institution or Company Name, City, State} +\SetAffiliation{2}{Institution or Company Name, City, Province, Canada} +\SetAffiliation{3}{Hampton Court Palace, Richmond, England} +\SetAffiliation{4}{Massachusetts Institute of Technology, Cambridge, MA } +% Note: Luis and Maria are not real people. Henry and Catherine have been dead for >450 years. + + +% To instead use the [authorgrid] option, follow the syntax in Appendix B. + diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf new file mode 100644 index 0000000000..aa48eec92c Binary files /dev/null and b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.pdf differ diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex new file mode 100644 index 0000000000..e77fb2d346 --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-fontspec.tex @@ -0,0 +1,444 @@ +% !TEX TS-program = LuaLaTeX +% !TEX encoding = UTF-8 Unicode +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This file is an example of using asmeconf with fontspec and lualatex to support non-Latin alphabets. +%% +%% Author: John H. Lienhard V +%% Department of Mechanical Engineering +%% Massachusetts Institute of Technology +%% Cambridge, MA 02139-4307 USA +%% + %========================================================= +%% +%% LICENSE: +%% +%% Copyright (c) 2021 John H. Lienhard +%% Offered under the MIT license: https://ctan.org/license/mit +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[colorlinks,nofoot,fontspec,spanish,japanese,russian,greek,ukrainian,vietnamese,french,portuguese,turkish,polish,indonesian,italian,german,latin,serbianc,bidi=basic]{asmeconf} +% note that not all languages given as examples in this file can be called as options. + +\hypersetup{% + pdftitle={Language Support in ASMECONF: Non-Latin Alphabets, Lualatex, and fontspec}, + pdfkeywords={asmeconf, non-Latin alphabets, fontspec, LuaLaTeX, PDFLaTeX}, + pdfauthor={John H. Lienhard, V}, +} + +% To avoid typing these over and over, define: +\newcommand*\FS{{\upshape\texttt{fontspec}}} +\newcommand*\LLT{{\upshape\LuaLaTeX}} +\newcommand*\AC{{\upshape\texttt{asmeconf}}} +\newcommand*\PLT{{\upshape\texttt{\hologo{pdfLaTeX}}}} + +\makeatletter +\def\NotoBan@scale{0.98}% vary this if the Bengali is too small/large; the default value 0.92 matches scaling of the other Noto fonts used. +\def\NotoDev@scale{0.98}% vary this if the Devanagari is too small/large; the default value 0.92 matches scaling of the other Noto fonts used. +%\def\NotoTam@scale{0.92}% vary this if the Tamil is too small/large; the default value 0.92 matches scaling of the other Noto fonts used. +\def\NotoAra@scale{0.93}% The serif font only; the default value is 0.91 + +% Noto family is not as close to Tex Gyre Termes as I'd like, so for abstract examples in Latin script [only], use Noto Serif Italic for visual consistency +\newfontfamily{\NotoSerifItal}{NotoSerif-Italic.ttf}[ItalicFont=*,Scale=\Noto@scale,WordSpace={1,1.4,1}] +\newfontfamily{\NotoSerifItalns}{NotoSerif-Italic.ttf}[ItalicFont=*,Scale=\Noto@scale]% Turkish has trouble with WordSpace +\makeatother + +% babel [serbianc] module redefines some math commands that are also redefined by babel [russian]. Let's avoid error messages +% by erasing the [serbianc] definitions before \begin{document}, which is where [russian] will define them. +\usepackage{etoolbox} +\AtEndPreamble{% +\let\sh\relax \let\ch\relax \let\tg\relax \let\ctg\relax \let\arctg\relax \let\arcctg\relax \let\cth\relax \let\cosec\relax } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This environment will generate the .bib file the first time you run the code +% NB: if the .bib file already exists, it will not be overwritten +\begin{filecontents}{asmeconf-fontspec.bib} +@online{lienhard2021, + author = {John H. Lienhard, V}, + title = {{\texttt{asmeconf}}: A template for {ASME} conference papers}, + organization = {Comprehensive \TeX\ Archive Network}, + version = {1.22}, + year = {2021}, + url = {https://ctan.org/pkg/asmeconf}, + urldate = {pre-release}, +} +@online{bezos2020, + author = {Johannes L. Braams and Javier Bezos}, + title = {{\texttt{babel}}: Localization and internationalization}, + organization = {Comprehensive \TeX\ Archive Network}, + version = {3.52}, + year = {2020}, + url = {https://ctan.org/pkg/babel}, + urldate = {January 3, 2021}, +} +@online{robertson2020, + title = {The fontspec package: Font selection for {\LuaLaTeX} and {\XeLaTeX}}, + version = {2.7i}, + organization = {Comprehensive \TeX\ Archive Network}, + author = {Will Robertson}, + year = 2020, + url = {https://ctan.org/pkg/fontspec}, + urldate = {January 5, 2021}, +} +@online{lua-jp, + author = {{\LuaTeX-ja} project team}, + title = {The {\LuaLaTeX}-ja package}, + version = {20210103.0}, + organization = {Comprehensive \TeX\ Archive Network}, + year = 2021, + url = {https://ctan.org/pkg/luatexja}, + urldate = {January 5, 2021}, +} +@online{dpc, + author = {David Carlisle}, + title = {The {\texttt{dcolumn}} package}, + version = {1.06}, + organization = {Comprehensive \TeX\ Archive Network}, + year = 2014, + url = {https://ctan.org/pkg/dcolumn}, + urldate = {January 8, 2021}, +} +\end{filecontents} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\ConfName{Proceedings of the \texttt{asmeconf} \linebreak International Examples Congress and Exposition} +\ConfAcronym{AIECE21} +\ConfDate{January 20, 2021} +\ConfCity{Cambridge, MA} +\PaperNo{AIECE2021-0002} + +\title{Language Support in ASMECONF: Non-Latin Alphabets, Lualatex, and fontspec} + +\SetAuthors{John H.\ Lienhard V\affil{1}\CorrespondingAuthor{lienhard@mit.edu}} +\SetAffiliation{1}{Department of Mechanical Engineering \\ Massachusetts Institute of Technology, Cambridge, MA} + +\maketitle + +\versionfootnote{Version~1.0, \today} + +\keywords{asmeconf, language support, non-Latin alphabets, fontspec, \LLT} + +%%%%%%%%% ABSTRACT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{abstract} +This note describes the use of \AC\ to format multilingual documents in Latin or non-Latin alphabets. Font support encompasses the Arabic, Chinese, Greek, Hindi, Japanese, Korean, Marathi, Russian, and Tamil languages, among others. For asian alphabets, \LLT\ and \FS\ are employed. The system fonts that must be installed for \FS\ are listed, and examples of simple abstracts are shown in twenty-five languages. +\end{abstract} + +%%%%%%%%% BODY OF PAPER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Introduction: why have this?} +The \AC\ class~\cite{lienhard2021} provides a template for formatting conference papers submitted to the American Society of Mechanical Engineers. +The goal of adding language support to \AC\ is to enable authors to include translations of a paper's abstract or brief quotations in languages other than English. Although the entire \AC\ template may, in principle, be switched to another language without modifying the class file, I have not explored this option in much detail. These language capabilities are experimental, and their future development will be guided by the feedback that I receive from authors. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{The babel package} +The typesetting of languages is handled by the \texttt{babel} package~\cite{bezos2020}, which is called by the \AC\ class. For many languages, \texttt{babel} includes language definition files (\texttt{.ldf}) that provide information about section or caption titles, hyphenation rules, and so on. When an \texttt{.ldf} exists, \texttt{babel} will recognize the language as a global option that can be passed as an option to \AC, assuming that an appropriate font is available. A list of the many languages with \texttt{.ldf} files is given in the \texttt{babel} documentation. + +For languages in Latin scripts, it's usually safe to assume that the font is present, and many such languages have \texttt{.ldf} files. For other scripts, additional steps are needed. The \AC\ class handles this differently under \PLT\ and \LLT. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Non-Latin Scripts under PDFLATEX} +When using \PLT, \AC will load appropriate fonts for Greek, Vietnamese, and certain cyrillic-script languages (see Table~\ref{tab:1}). The user can give the corresponding class option and then call for a change of language as described in Section~\ref{sec:6}. No additional work is required. + +To access a broader range of fonts, \AC\ can be used under \LLT, with \FS. In that case, \AC\ will employ fonts that are installed in the user's operating system, rather than \LaTeX\ fonts. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\NOT{---} +\begin{table}[t] +\caption{Languages in non-Latin scripts for which \NoCaseChange{\AC} is known to provide font support. +Class options that must be called are shown.\label{tab:1}}% +\centering{% +\begin{tabular*}{\columnwidth}{@{\hspace*{1.5em}}@{\extracolsep{\fill}}llcc@{\hspace*{1.5em}}} +\toprule +\textbf{Language} & \textbf{Option} & \textbf{\hologo{pdfLaTeX}} & \textbf{\LLT}\\ \midrule +Arabic & bidi=basic & & \checkmark\\ +Belarusian & belarusian & \checkmark & \checkmark\\ +Bengali & \NOT & & \checkmark\\ +Bulgarian & bulgarian & \checkmark & \checkmark\\ +Chinese & \NOT & & \checkmark\\ +Greek & greek & \checkmark & \checkmark\\ +Hindi & \NOT & & \checkmark\\ +Japanese & japanese & & \checkmark\\ +Korean & \NOT & & \checkmark\\ +Macedonian & macedonian & \checkmark & \checkmark\\ +Marathi & \NOT & & \checkmark\\ +Russian & russian & \checkmark & \checkmark\\ +Serbian &serbianc$^\ast$& \checkmark & \checkmark\\ +Tamil & \NOT & & \checkmark\\ +Ukrainian & ukrainian & \checkmark & \checkmark\\ +Vietnamese & vietnamese & \checkmark & \checkmark\\ +\bottomrule +\multicolumn{4}{@{\hspace*{1.5em}}p{23em}@{\hspace*{1.5em}}}{\footnotesize$^\ast$\ Serbian option \texttt{[serbianc]}, for both engines, uses cyrillic. In \PLT, use \texttt{\textbackslash selectlanguage\{serbianc\}}. In \LLT, instead select ``\texttt{serbian-cyrillic}''.} +\end{tabular*} +} +\end{table} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{System fonts} +The \FS\ package~\cite{robertson2020} allows \LLT\ to access fonts that are installed on the user's system. Today, these fonts are normally in unicode, a 16-bit format that allows a font to contain a vast number of glyphs---up to $2^{16}$. Multiple languages can be contained within a single font. Specialized unicode fonts are dedicated to particular languages, especially those such as Japanese that have many thousands of characters. + +When processed in \PLT, \AC\ uses the \texttt{newtxtext} and \texttt{inconsolata} fonts, a collection of eight-bit fonts, for Latin script. To use \FS, we must replace those fonts with corresponding unicode fonts (the math fonts, from \texttt{newtxmath}, are unchanged). Specialized fonts are needed for some additional scripts. Thus, the user will need to install several unicode fonts onto their own system in order to use \AC\ with \FS. +Fortunately, all these fonts are all free and easily downloaded. + +The needed fonts are listed in Table~\ref{tab:2}. + +%%%%%%%%%%%%%%% two column table %%%%%%%%%%%%%%%%%% +\NewDocumentCommand\R{O{11pt}}{\rule{0pt}{#1}} +\begin{table*}[t!] +\caption{System fonts used by \AC\ with \FS. For all fonts, load regular and bold face. For Latin, Cyrillic, and Greek, also load italic and bold italic. For Noto Sans Arabic, install semibold instead of bold.\label{tab:2}}% +\centering{% +\begin{tabular*}{\textwidth}{@{\hspace*{0.5em}}@{\extracolsep{\fill}}>{\raggedright}p{6em}>{\raggedright}p{12em}>{\raggedright}p{10em}p{23em}@{\hspace*{0.5em}}} +\toprule +\textbf{Script}\rule{0pt}{11pt} & +\multicolumn{1}{c}{\textbf{Language}} & +\multicolumn{1}{c}{\textbf{Fonts}} & +\multicolumn{1}{c}{\textbf{Where to get the font}}\\ \midrule +Latin$^*$ & most European languages & Tex Gyre Termes, Tex~Gyre~Heros & \url{http://www.gust.org.pl/projects/e-foundry/tex-gyre}\rule{0pt}{11pt}\\ +Arabic\R & Arabic, Punjabi, Urdu, others & Amiri,\\ Noto~Sans~Arabic & \url{https://github.com/alif-type/amiri}\hfill\hbox{} \url{https://github.com/googlefonts/noto-fonts} \\ +Bengali\R & Assamese, Bengali, others & Noto Serif Bengali,\\ Noto~Sans Bengali& \url{https://github.com/googlefonts/noto-fonts} \\ +Cyrillic\R & Belarusian, Bulgarian, Macedonian, Russian, Serbian, Ukrainian, others & Noto Serif,\\ Noto~Sans, Noto~Sans~Mono & \url{https://github.com/googlefonts/noto-fonts} \\ +Devanagari\R& Hindi, Kashmiri, Marathi, Nepali, Sanskrit, others & Noto Serif Devanagari,\\ Noto~Sans Devanagari& \url{https://github.com/googlefonts/noto-fonts} \\ +Greek\R & Greek & Noto Serif, Noto~Sans, Noto~Sans~Mono & \url{https://github.com/googlefonts/noto-fonts} \\ +Hangul\R & Korean & Noto~Serif~CJK~KR, Noto~Sans~CJK~KR, Noto~Sans~Mono~CJK~KR & \url{https://github.com/googlefonts/noto-fonts} \\ +Japanese\R & Japanese & Noto~Serif~CJK~JP, Noto~Sans~CJK~JP, Noto~Sans~Mono~CJK~JP & \url{https://github.com/googlefonts/noto-fonts} \\ +Simplified\R\ Chinese & Mandarin & Noto~Serif~CJK~SC, Noto~Sans~CJK~SC, Noto~Sans~Mono~CJK~SC & \url{https://github.com/googlefonts/noto-fonts} \\ +Tamil\R & Tamil, others & Noto~Serif~Tamil, Noto~Sans~Tamil & \url{https://github.com/googlefonts/noto-fonts} \\ +Traditional\R\ Chinese & Traditional Mandarin, Cantonese & Noto~Serif~CJK~TC, Noto~Sans~CJK~TC, Noto~Sans~Mono~CJK~TC & \url{https://github.com/googlefonts/noto-fonts} \\ +\bottomrule +\multicolumn{4}{l}{\R $^*$\ The Latin fonts are \textit{required} with \AC+\FS, even if English is the only language called. Install others as needed.} +\end{tabular*} +} +\end{table*} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Using fontspec with asmeconf} +When running \LLT, the \texttt{[fontspec]} option should be called, to load the appropriate fonts. With \FS, \texttt{babel} will use \texttt{.ldf} files (if available) and separate initialization files (\texttt{.ini}). If a language option is called for which there is no \texttt{.ldf} file, an error will result. However, such languages may still have an \texttt{.ini} that provides necessary information. For example, Chinese and Korean do not have \texttt{.ldf} files, but they do have \texttt{.ini} files. These languages can be accessed as described in Section~\ref{sec:6}. + +Japanese typesetting is a little more complicated. When \texttt{[japanese]} is given as an option to the class, \AC\ calls the \texttt{luatexja-fontspec} package~\cite{lua-jp}, which is a specialized module for typesetting Japanese. + +When captions and the like are not needed (as for short passages), \texttt{babel} can load many languages ``on the fly'', with only a basic call in the \text{.tex} file (see Section \ref{sec:6}), if an appropriate font is available. + +What about support for scripts not shown in Table~\ref{tab:2}? Macros from \texttt{babel} for adding fonts can be placed into the preamble of your document. The \texttt{babel} package supports roughly 250 languages, and \AC\ has been tried with only about thirty. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{How to call a language\label{sec:6}} +A language is called by \verb|\begin{selectlanguage}{}|, where \texttt{} is the lower-case name of the language. +For example, suppose that a Spanish language abstract is desired. The user puts \texttt{[spanish]} as a global option (this language has an \texttt{.ldf} file), and then writes: +\begin{quotation} +\noindent\hbox{}\verb|\begin{selectlanguage}{spanish}|\\ +\verb|\begin{abstract*}|\\ +\verb|Este es el resumen del artículo|\ldots\\ +\verb|\end{abstract*}|\\ +\verb|\end{selectlanguage}| +\end{quotation} + +\textsc{\textbf{Nota Bene:}} \textbf{1)} Your \texttt{.tex} file \textit{must} be saved in \texttt{utf-8} encoding. Some operating systems default to a different encoding that will garble unicode characters. \textbf{2)} The features used to provide language support under \FS\ require an up-to-date \LaTeX\ distribution (2020 or~later). \textbf{3)} The features described here require \AC\ version~1.22 or later (2021). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Abstracts} +Examples of abstracts in various languages now follow. Reading the source \texttt{.tex} file for this document may clarify the syntax. + +\begin{selectlanguage}{chinese-simplified} +\begin{abstract*} +这是文章的摘要。我们用中文书写,描述了问题,方法和结果,还包括了参考文献。 +\end{abstract*} +\end{selectlanguage}% edited by Zi Hao Foo + +\begin{selectlanguage}{chinese-traditional}% this is Mandarin +\begin{abstract*} +這是文章的摘要。我們用中文書寫,描述了問題,方法和結果,還包括了參考文獻。 +\end{abstract*} +\end{selectlanguage}% edited by Zi Hao Foo + +\begin{selectlanguage}{chinese-traditional}% this is Cantonese +\begin{abstract*} +係文嘅摘要。 我哋用中文書寫,描述了問題,方法同結果,仲包括埋參考文獻。 +\end{abstract*} +\end{selectlanguage}% edited by Zi Hao Foo + +{\NotoSerifItal +\begin{selectlanguage}{spanish} +\begin{abstract*} +Este es el resumen del artículo. Escribimos en español. Se describen el problema, los métodos y los resultados. También se incluyen referencias. +\end{abstract*} +\end{selectlanguage}% edited by Aarón Montoya-Moraga + +\begin{selectlanguage}{english} +\begin{abstract*} +This is the summary of the article. We write in English. The problem, methods, and results are described. References are also included. +\end{abstract*} +\end{selectlanguage}% checked by JHL :-) +}% + +\begin{selectlanguage}{hindi} +\begin{abstract*} +यह हिंदी में लिखे गए एक लेख का सारांश है। समस्या, विधियों और परिणामों का वर्णन किया गया है। संदर्भ भी शामिल हैं। +\end{abstract*} +\end{selectlanguage}% Checked by Debanjan Banerjee + +\begin{selectlanguage}{bengali} +\begin{abstract*} +এটি নিবন্ধের সংক্ষিপ্তসার। আমরা বাংলা ভাষায় লিখি। সমস্যা, পদ্ধতি এবং ফলাফল বর্ণনা করা হয়। উল্লেখগুলিও অন্তর্ভুক্ত রয়েছে। +\end{abstract*} +\end{selectlanguage}% Checked by Yagnaseni Roy + +\begin{selectlanguage}{arabic}% NB: provide package option [bidi=basic] to get RL type. +\begin{abstract*}\upshape +هذا هو ملخص المقال. نكتب بالعربية. يتم وصف المشكلة والطرق والنتائج. يتم تضمين المراجع أيضاً. +\end{abstract*} +\end{selectlanguage}% Edited by Omar Labban + +{\NotoSerifItal +\begin{selectlanguage}{portuguese} +\begin{abstract*} +Este é o resumo do artigo. Escrevemos em português. O problema, métodos e resultados são descritos. Referências também estão incluídas. +\end{abstract*} +\end{selectlanguage}% Checked by Igo Krebs +}% + +\begin{selectlanguage}{russian} +\begin{abstract*} +Это резюме статьи. Пишем по русски. Описаны проблема, методы и результаты. Библиография также включена. +\end{abstract*} +\end{selectlanguage}% edited by Steven Gerasimoff + +\begin{selectlanguage}{japanese} +\begin{abstract*} +%論文の要約です。日本語で記述します。問題、方法、および結果について説明します。また、参考文献も含めます。 +この論文の日本語での要約は以下のとおりです。問題、方法、および結果が説明されています。参考資料も添付してあります。 +\end{abstract*} +\end{selectlanguage}% Edited by Keiji Yano and Yoshiki Okamoto + +\begin{selectlanguage}{marathi} +\begin{abstract*} +हा लेखाचा सारांश आहे. आपण मराठीत लिहित आहो. ह्यात समस्या , पद्धती आणि परिणामाचे वर्णन केले आहेत. संदर्भ देखील समविष्ट आहेत. +\end{abstract*} +\end{selectlanguage}% Edited by Vibhawari Deshmukh. (Note that proper fontspec renderer is needed for the combining characters.) + +{\NotoSerifItal +\begin{selectlanguage}{turkish} +\begin{abstract*}{\NotoSerifItalns +Bu, makalenin özetidir. Türkçe yazıyoruz. Sorun, yöntemler ve sonuçlar açıklanmaktadır. Referanslar da dahildir.}% +\end{abstract*}% +\end{selectlanguage}% Edited by Aslı Demir +}% + +\begin{selectlanguage}{korean} +\begin{abstract*} +이것은 한국어로 쓰인 논문의 초록입니다. 문제, 방법 및 결과가 설명되어 있습니다. 참조도 포함됩니다. +\end{abstract*} +\end{selectlanguage}% Edited by Hyung Won Chung. + +{\NotoSerifItal +\begin{selectlanguage}{french} +\begin{abstract*} +Ceci est le résumé de l'article. Il est écrit en français. Le problème, les méthodes et les résultats sont décrits. Des références sont également incluses. +\end{abstract*} +\end{selectlanguage}% Edited by Christine Gervais. + +\begin{selectlanguage}{german} +\begin{abstract*} +Hier ist die Zusammenfassung des Beitrags. Wir schreiben auf Deutsch. Die Fragestellung, die Methoden und die Ergebnisse werden beschrieben. Der Beitrag enthält auch ein Literaturverzeichnis. +\end{abstract*} +\end{selectlanguage}% Edited by Greg Thiel. +}% + +\begin{selectlanguage}{tamil} +\begin{abstract*} + இது கட்டுரையின் சுருக்கம். நாங்கள் தமிழில் எழுதுகிறோம். சிக்கல், முறைகள் மற்றும் முடிவுகள் விவரிக்கப்பட்டுள்ளன. குறிப்புகளும் சேர்க்கப்பட்டுள்ளன. +\end{abstract*} +\end{selectlanguage}% Edited by Jaichander Swaminathan. (Note that HarfBuzz is needed for combining characters to render correctly.) + +{\NotoSerifItal +\begin{selectlanguage}{vietnamese} +\begin{abstract*} +Đây là phần tóm tắt của bài báo khoa học. Chúng tôi viết bằng tiếng Việt. Vấn đề, các phương pháp và các kết quả được mô tả trong phần này. Tài liệu tham khảo cũng được bao gồm.% +\end{abstract*} +\end{selectlanguage}% Checked and edited by Nguyen Le and Thao Nguyen + +\begin{selectlanguage}{italian} +\begin{abstract*} +Questo è il riassunto dell'articolo. Scriviamo in italiano. Vengono descritti il ​​problema, i metodi e i risultati. Sono inclusi anche i riferimenti. +\end{abstract*} +\end{selectlanguage}% Checked by Jacopo Buongiorno. + +\begin{selectlanguage}{indonesian} +\begin{abstract*} +Ini adalah ringkasan dari artikel tersebut. Kami menulis dalam bahasa Indonesia. Masalah, metode, dan hasil dijelaskan. Referensi juga disertakan. +\end{abstract*} +\end{selectlanguage}% checked by Danyal Rehman and Turga Ganapathy + +\begin{selectlanguage}{polish} +\begin{abstract*} +To jest podsumowanie artykułu. Piszemy po polsku. Opisano problem, metody i wyniki. Literatura źródłowa zostanie udostępniona. +\end{abstract*} +\end{selectlanguage}% Edited by Leon Awerbuch + +\begin{selectlanguage}{swahili} +\begin{abstract*} +Huu ni Muhtasari wa makala. Tunaandika kwa Kiswahili. +Matatizo, Mbinu na matokeo yameelezewa. Marejeleo pia yamejumuishwa. +\end{abstract*} +\end{selectlanguage}% Edited by Judith Mmari +}% + +\begin{selectlanguage}{ukrainian} +\begin{abstract*} +Це короткий зміст статті. Пишемо українською мовою. Описана проблема, методи та результати. Стаття включає список використаної літератури. +\end{abstract*} +\end{selectlanguage}% Edited by Svetlana Boriskina + +\begin{selectlanguage}{greek}% +\begin{abstract*} +Αυτή είναι η περίληψη του άρθρου. Χρησιμοποιούμε την ελληνική γλώσσα. Περιγράφεται το πρόβλημα, οι μέθοδοι και τα αποτελέσματα. Περιλαμβάνονται επίσης αναφορές. +\end{abstract*} +\end{selectlanguage}% Edited by George Barbastathis + +% Use global option [serbianc] +% Note -- the Slavic language .ldf files redefine math operators. Russian and Ukrainian avoid conflicts, but Serbian does not. See local fix in preamble. +\begin{selectlanguage}{serbian-cyrillic} +\begin{abstract*} +Ово је резиме чланка. Пишемо на српском. Описани су проблем, методе и резултати. Укључене су и референце. +\end{abstract*} +\end{selectlanguage}% confirmed by Bora Mikić + +{\NotoSerifItal +\begin{selectlanguage}{latin} +\begin{abstract*} +Hoc argumentum in articulum. Latine scribere nobis. Quaestio est, modi, et describit eventus qui. Alia sunt opera citatis. +\end{abstract*} +\end{selectlanguage} +}% + +%%% ENTIRE DOCUMENT %%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Changing the language of the entire document} +The main language of the document is English by default. This means that section headings, captions, and other words chosen by macros will be in English. + +To chose a different main language, give the option \texttt{[main=..]}, e.g., \texttt{[main=french]}. The standard caption and section names will follow \texttt{babel}'s dictionary for the language chosen. Users may additionally change ``Keywords'', ``Nomenclature'', ``Corresponding author'', and ``Joint first authors'' by renewing the commands \verb|\keywordname|, \verb|\nomname|, \verb|\CAwords|, and \verb|\JAwords|. Changes to the page footer are described in the \AC\ documentation~\cite{lienhard2021}. The pdf bookmark for ``Appendices'' may be changed by renewing \verb|\appendicesname|. (See the \texttt{babel} documentation \cite[\S 1.15]{bezos2020} if the dictionary for the main language lacks the correct word for, say, \verb|abstractname|). + +Note that some languages make characters active, which can have unexpected effects. For example, Spanish makes ``.'' an active character, which clashes with the default \texttt{dcolumn} decimal separator, \texttt{d\{n.m\}}~\cite{dpc}. \texttt{\textbackslash spanishdeactivate\{.\}} stops this behavior. Alternatively, the decimal separator can be changed to a comma by putting \texttt{\textbackslash newcolumntype\{d\}[1]\{D\{,\}\{,\}\{\#1}\}\} in the preamble. + +I have not explored this usage in detail, and I would welcome comments from authors who attempt such conversions. + +%%% CONCLUSIONS %%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Conclusion} +\AC\ has multilingual capabilities under both \PLT\ and \LLT. In particular, with \FS, \AC\ can support a wide range of scripts and languages within a \LaTeX\ environment. These capabilities are largely experimental, and their future development will be guided by feedback that I receive from those using these features. + +%%% AKNOWLEDGMENTS %%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{AKNOWLEDGMENTS} +Thanks to everyone who helped me sort out the translated abstracts: Leon Awerbuch, Debanjan Banerjee, George Barbastathis, Svetlana Boriskina, Jacopo Buongiorno, Hyung Won Chung, Aslı Demir, Vibhawari Deshmukh, Zi Hao Foo, Turga Ganapathy, Steven Gerasimoff, Christine Gervais, Igo Krebs, Omar Labban, Nguyen Le, Bora Mikić, Judith Mmari, Aarón Montoya-Moraga, Thao Nguyen, Yoshiki Okamoto, Danyal Rehman, Yagnaseni Roy, Jaichander Swaminathan, Gregory Thiel, and Keiji Yano. All were generous with their time. + +%%% REFERENCES %%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibliographystyle{asmeconf}%% .bst file following ASME conference format. Do not change. +\bibliography{asmeconf-fontspec}%% this bib file will be generated from the filecontents environment upon first run of this .tex file. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} + diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.pdf b/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.pdf new file mode 100644 index 0000000000..ebef2df8cb Binary files /dev/null and b/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.pdf differ diff --git a/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.tex b/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.tex new file mode 100644 index 0000000000..6db7d9c08a --- /dev/null +++ b/macros/latex/contrib/asmeconf/examples/asmeconf-lualatex-ode-example.tex @@ -0,0 +1,254 @@ +% !TEX TS-program = LuaLaTeX +% !TEX encoding = UTF-8 Unicode +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This file is an example of using asmeconf with lualatex to solve and plot an ode in a landscape figure. +%% +%% Author: John H. Lienhard V +%% Department of Mechanical Engineering +%% Massachusetts Institute of Technology +%% Cambridge, MA 02139-4307 USA +%% + %========================================================= +%% +%% LICENSE: +%% +%% Copyright (c) 2021 John H. Lienhard +%% Offered under the MIT license: https://ctan.org/license/mit +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[varvw,colorlinks,nofoot]{asmeconf} + +\hypersetup{% + pdftitle={Example of asmconf with LuaLaTeX to solve an ODE}, + pdfkeywords={asmeconf, LuaLaTeX, ODE, pgfplots, landscape figure}, + pdfauthor={John H. Lienhard}, +} + +\usepackage[figuresright]{rotating}% to use a landscape figure + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Now use lua code + +%% Runge-Kutta for simple first-order ODE +\begin{luacode*} +-- Differential equation y’(t) = f(t,y) +-- with f(t,y) = A * y * cos(t+sqrt(1+y)). +-- Initial condition: y(0) = 1 +function f(t,y,A) + return A * y * math.cos(t+math.sqrt(1+y)) +end +-- Code to write PGFplots data as coordinates +function print_RKfour(tMax,npoints,A,option) + local t0 = 0.0 + local y0 = 1.0 + local A = A + local h = (tMax-t0)/(npoints-1) + local t = t0 + local y = y0 + if option~=[[]] then + tex.sprint("\\addplot["..option.."] coordinates{") + else + tex.sprint("\\addplot coordinates{") + end + tex.sprint("("..t0..","..y0..")") + for i=1, npoints do + k1 = h * f(t,y,A) + k2 = h * f(t+h/2,y+k1/2,A) + k3 = h * f(t+h/2,y+k2/2,A) + k4 = h * f(t+h,y+k3,A) + y = y + (k1+2*k2+2*k3+k4)/6 + t = t + h + tex.sprint("("..t..","..y..")") + end + tex.sprint("}") +end +\end{luacode*} + +%% Define a latex macro to call the case to be plotted +\newcommand\addLUADEDplot[4][]{% + \directlua{print_RKfour(#2,#3,#4,[[#1]])}% +} +% SYNTAX: Solution of the initial value problem +% Code assumed t = 0 at start and y(0) = 1 +% #2 is the final time +% #3 is the number of points +% #4 is an amplitude parameter +% #1 are options passed to the pgfplots \addplot function. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% For plotting the results, call pgfplots package + +\usepackage{pgfplots}% load AFTER xcolor, which was already called by asmeconf.cls +\pgfplotsset{compat=newest}% to activate latest features + +\pgfplotsset{% + width=\textwidth,% + height=0.6\textwidth,% + /tikz/font={\sffamily},% + % every axis plot/.style={line width=2pt}, + every axis/.append style={very thick},% see manual page 189 + every minor tick/.append style={very thin,black},% modifies the style `every tick' + every minor grid/.append style={very thin, color=Snow4}, + every major tick/.append style={thin, black},% modifies the style `every minor tick' + every major grid/.append style={thin, color=Snow4}, + major tick length={1.2em}, + minor tick length={0.5em}, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% This environment will generate the .bib file the first time you run the code +% if the .bib file already exists, it will not be overwritten +\begin{filecontents}{asmeconf-lualatex-ode-example.bib} +@online{fairbairns, + author = {Robin Fairbairns and Sebastian Rahtz and Leonor Barroca}, + title = {A Package for Rotated Objects in \LaTeX}, + version = {2.16d}, + organization = {Comprehensive \TeX\ Archive Network}, + year = {2016}, + url = {https://www.ctan.org/pkg/rotating}, + urldate = {October 2, 2019}, +} +@article{montijano2014, + title = {Numerical methods with {\LuaLaTeX}}, + author = {Juan I. Montijano and Mario P{\'{e}}rez and Luis R{\'{a}}ndez and Juan Luis Varona}, + year = 2014, + volume = 35, + month = {January}, + number = 1, + pages = {51--56}, + journal = {TUGboat}, + url = {https://tug.org/TUGboat/tb35-1/tb109montijano.pdf}, + note = {Open access.} +} +@manual{pgfplots, + title = {Manual for Package \textsc{PGFPLOTS}}, + url = {https://ctan.org/pkg/pgfplots}, + author = {Christian Feuers{\"{a}}nger}, + version = {1.17}, + year = {2020}, + organization = {Comprehensive \TeX\ Archive Network}, + month = feb, + urldate = {January 4, 2021}, +} +@manual{lua, + author = {Roberto {l}erusalimschy and Luiz Henrique {de Figueiredo} and Waldemar Celes}, + title = {{L}ua 5.3 Reference Manual}, + url = {https://www.lua.org/manual/5.3/}, + organization = {Pontifical Catholic University}, + address = {Rio de Janeiro, Brazil}, + year = {2017}, +} +\end{filecontents} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{document} + +\ConfName{Proceedings of the \texttt{asmeconf} \linebreak International Examples Congress and Exposition} +\ConfAcronym{AIECE21} +\ConfDate{January 20, 2021} +\ConfCity{Cambridge, MA} +\PaperNo{AIECE2021-0001} + +\title{Example of \NoCaseChange{{\upshape\hologo{LuaLaTeX}}} with asmeconf.cls for ODE Integration} + +\SetAuthors{John H.\ Lienhard V\affil{1}\CorrespondingAuthor{lienhard@mit.edu}} +\SetAffiliation{1}{Massachusetts Institute of Technology, Cambridge, MA} + +\maketitle + +\versionfootnote{Version~1.0, \today} + +\keywords{asmeconf, \hologo{LuaLaTeX}, ODE, pgfplots, landscape} + +%%%%%%%%% ABSTRACT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{abstract} +This paper is an example of using \texttt{asmeconf} with {\upshape\hologo{LuaLaTeX}} to solve an ODE initial value problem using a fourth-order Runge-Kutta method and to plot the result using \texttt{PGFPLOTS}. The use of a landscape figure is also illustrated. References are given for further reading. +\end{abstract} + +%%%%%%%%% NOMENCLATURE (OPTIONAL) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\begin{nomenclature} +\entry{$A$}{Constant parameter [--]} +\entry{$t$}{Time [s]} +\entry{$y(t)$}{Position [m]} +\end{nomenclature} + +%%%%%%%%% BODY OF PAPER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Introduction} +\hologo{LuaLaTeX} is built upon the Lua programming language~\cite{lua}. By directly using Lua code in a \LaTeX\ file, we can accomplish a wide range of tasks, as illustrated in the open-access paper by Montijano et al.~\cite{montijano2014}. In the present example, we follow Montijano et al.\ in solving a nonlinear first-order ordinary differential equation and plotting the result---all within a single \LaTeX\ file! + +\section{Solution to an initial value problem} +We consider an initial value problem like that of Montijano et al.: +\begin{equation}\label{eqn:1} +y'(t) = A\cdot y(t) \cos\Big(t + \sqrt{1 + y(t)}\,\Big) \text{ with }y(0)=1 +\end{equation} +Here, $A$ is a constant. We may adopt a fourth-order Runge-Kutta algorithm for the integration, which we shall perform to $t = 30$~s using a 400 point discretization. The details of the Runge-Kutta algorithm and a listing of the code are given in Montijano et al. (You can also read the code in the present \texttt{.tex} file.) + +The algorithm is implemented directly in the preamble of this file, and the results are plotted in Fig.~\ref{fig:1} for $A = \{0.25, 0.5, 0.75, 1.0\}$. Plotting is done using the \texttt{PGFPLOTS} package~\cite{pgfplots}. + +Landscape figures, such as Fig.~\ref{fig:1}, may be produced at full-page size by putting \verb|\usepackage[figuresright]{rotating}| in your \texttt{.tex} file's preamble and using the \texttt{sidewaysfigure*} environment~\cite{fairbairns}. + +\begin{sidewaysfigure*} +\begin{tikzpicture} +\begin{axis}[% + xmin=0., + xmax=30., + ymin=0.0, + ymax=1.1, + xtick={0,5,...,30}, + ytick={0,0.2,...,1.0}, + minor x tick num=4, + minor y tick num=3, + xlabel={Time, $\mathsf{t}$ [s]}, + ylabel={Position, $\mathsf{y}$ [m]}, + xticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$}, + yticklabel={$\mathsf{\pgfmathprintnumber{\tick}}$}, + legend style={ + at={(0.7,0.85)}, + anchor=west, + fill=none, + cells={anchor=west}, + }, + ] +% tMax = 30, npoints = 400, A is the last argument +\addLUADEDplot[color=Purple4,densely dashed,,very thick]{30}{400}{0.25};% color names are from xcolor package + \addlegendentry[fill=white]{$\mathsf{A = 0.25}$}; +\addLUADEDplot[color=Chartreuse4,dashdotted,very thick]{30}{400}{0.5}; + \addlegendentry[fill=white]{$\mathsf{A = 0.5}$}; +\addLUADEDplot[color=Red3,densely dotted,very thick]{30}{400}{0.75}; + \addlegendentry[fill=white]{$\mathsf{A = 0.75}$}; +\addLUADEDplot[color=Blue3,smooth,very thick]{30}{400}{1}; + \addlegendentry[fill=white]{$\mathsf{A = 1}$}; +\end{axis} +\end{tikzpicture} +\caption{A trial of pgfplot with Luacode Runge-Kutta integration\label{fig:1}} +\end{sidewaysfigure*} + + +%%% CONCLUSIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section{Conclusion} +\hologo{LuaLaTeX} enables numerical computations within a \LaTeX\ environment. By combining this capability with +\texttt{PGFPlots}, the need for separate numerical and/or graphics packages can be reduced. + +%%% ACKNOWLEDGMENTS %%%%%%%%%%%%%%%%%%%%%%%%%%% + +\section*{Acknowledgments} +The example shown in this paper is directly based on an example given by Montijano et al.~\cite{montijano2014}. Additional examples, such as the +Lorenz attractor, are contained in that paper. + + +%%% REFERENCES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibliographystyle{asmeconf}%% .bst file following ASME conference format. Do not change. +\bibliography{asmeconf-lualatex-ode-example}%% this bib file will be generated from the filecontents environment upon first run of this .tex file. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{document} + -- cgit v1.2.3