From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/prtec/prtec.cls | 527 +++++++++++++++++++++++++++++++++++
 1 file changed, 527 insertions(+)
 create mode 100644 macros/latex/contrib/prtec/prtec.cls

(limited to 'macros/latex/contrib/prtec/prtec.cls')

diff --git a/macros/latex/contrib/prtec/prtec.cls b/macros/latex/contrib/prtec/prtec.cls
new file mode 100644
index 0000000000..9bd3af2237
--- /dev/null
+++ b/macros/latex/contrib/prtec/prtec.cls
@@ -0,0 +1,527 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%  This file provides the prtec class for formatting conference papers according to 
+%%  the Pacific Rim Thermal Engineering Conference (PRTEC) requirements as of April 2019.
+%%
+%%  The prtec.cls file should be used with the files prtec.bst (for citations) and prtec-template.tex.
+%%
+%%
+%%  This file is version 1.06 dated 2019/08/20.
+%%
+%%  Author: John H. Lienhard V
+%%          Department of Mechanical Engineering
+%%          Massachusetts Institute of Technology
+%%          Cambridge, MA 02139-4307 USA
+%%
+%%  This class is compatible with either pdfLaTeX or LuaLaTeX. The class calls 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.
+%%  This class is not designed for unicode-math or fontspec, given that the PRTEC style is specific 
+%%  with respect to the font selections.
+%%
+%%  Options for the class are described on lines 67-98. 
+%%
+%%  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 PRTEC-template.tex file. The \section[]{} command's optional
+%%  argument is changed to provide pdf bookmarks as needed.
+%%
+%%
+ %=========================================================
+%%
+%% LICENSE:
+%%
+%% Copyright (c) 2019 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, 
+%% including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+%% and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 
+%% subject to the following conditions:
+%%
+%% The above copyright notice and this permission notice shall be included in all copies or 
+%% substantial portions of the Software.
+%%
+%% The software is provided "as is", without warranty of any kind, express or implied, including but 
+%% not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. 
+%% in no event shall the authors or copyright holders be liable for any claim, damages or other liability, 
+%% 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{prtec}[2019/08/20 PRTEC paper format]
+
+\LoadClass[twoside,11pt]{article}
+% Two-sided layout not used in PRTEC's specs, but is included anyway.
+
+
+%%%%%%%%%%%%%% Options for the class %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{ifthen}
+\newboolean{DefaultSups}
+\setboolean{DefaultSups}{true}
+
+\RequirePackage{kvoptions}
+\RequirePackage{kvsetkeys}
+\SetupKeyvalOptions{
+  family=prtec,
+  prefix=prtec@,
+  setkeys=\kvsetkeys,
+}
+
+%%% set key nodefaultsups to obtain newtx superiors font for footnotes.
+\define@key{prtec}{nodefaultsups}[false]{%
+      \setboolean{DefaultSups}{#1}
+}
+
+\ProcessKeyvalOptions*
+
+
+%% option to omit PRTEC footer and header
+\DeclareOption{nofoot}{%
+   \AtBeginDocument{%
+     \fancypagestyle{title}{%
+     \fancyhf{} % clear all header and footer fields
+     \fancyfoot[CE,CO]{\thepage}
+     \renewcommand{\headrulewidth}{0pt}
+     \renewcommand{\footrulewidth}{0pt}
+     }
+   }
+}
+
+%% Access many options from newtxmath
+%% See newtxmath documentation for details
+\DeclareOption{upint,smallerops,varvw,varg,slantedGreek,frenchmath,varbb,cmbraces}{\PassOptionsToPackage{}{newtxmath}}
+
+%% Option for slightly larger small capitals font
+\DeclareOption{largesc}{\PassOptionsToPackage{}{newtxtext}}
+
+%% Option not to use latex default superscripts, instead using the newtxtext superiors font [nodefaultsups]
+\ifthenelse{\boolean{DefaultSups}}{\PassOptionsToPackage{defaultsups}{newtxtext}}{\relax}
+
+%% Suppress warnings about any omitted keys as unused global options
+\DeclareOption*{}
+
+\ProcessOptions \relax
+
+%%%%%%%%%%%%% end options %%%%%%%%%%%%%%%%%%%
+
+
+\RequirePackage[a4paper, left=20mm, right=20mm, top=20mm, bottom = 20mm, footskip=10mm, includefoot, headsep=2mm]{geometry}
+% conforms to PRTEC 19 required margins
+
+\RequirePackage{parskip}
+
+\RequirePackage[sort&compress,numbers]{natbib} 
+\setlength\bibsep{1.5pt plus 1pt minus 1pt}
+\renewcommand*{\bibfont}{\footnotesize}
+
+\RequirePackage{graphicx} 
+\RequirePackage[hyperref,fixpdftex,dvipsnames,svgnames,x11names]{xcolor}
+\RequirePackage{xparse} 
+
+%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{booktabs}
+\RequirePackage{array} 
+
+\RequirePackage{dcolumn} %%% alignment on decimal places
+\newcolumntype{d}[1]{D{.}{.}{#1}}
+
+%%%% FONT related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{mathtools} % extends amsmath
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[]{newtxtext}
+\RequirePackage[]{newtxmath}
+% See package documentation
+
+%% override \textsu if using default superiors
+\ifthenelse{\boolean{DefaultSups}}{\let\textsu\textsuperscript}{\relax}
+
+\RequirePackage{bm} % load after all other math packages, to give greater access to bold math
+
+
+%%%% font size selection  %%%%%%%%
+
+%%%% need to be sure to hit the end of paragraph in font size change to stick in title.
+
+\renewcommand\Large{\@setfontsize\Large{14}{16.8}}  
+\renewcommand\large{\@setfontsize\large{12}{14.5}} 
+\renewcommand\normalsize{\@setfontsize\normalsize{11}{13.6}}
+\renewcommand\small{\@setfontsize\small{10}{12}}
+\renewcommand\footnotesize{\@setfontsize\footnotesize{9}{10.8}}
+
+
+%%%%%% footer %%%%%%%
+
+\RequirePackage{fancyhdr}
+\pagestyle{fancy}
+
+\setlength{\headheight}{22.53pt}
+\fancyfoot{}
+\fancyfoot[CE,CO]{\thepage}
+\fancyfoot[RO,LE]{}
+\fancyhead{}
+\renewcommand{\headrulewidth}{0pt} 
+\renewcommand{\footrulewidth}{0pt}
+
+\fancypagestyle{title}{%
+\fancyhf{} % clear all header and footer fields
+\fancyfoot[LO,RE]{Copyright~\textcopyright~\the\year\ The Author(s). Distributed by JSME, KSME, and ASTFE with permission.} 
+\fancyfoot[LE,RO]{\thepage}
+\fancyhead[LE,RO]{\bfseries\sffamily \HeaderConfName}
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}}
+
+%%%%%% foonotes %%%%%%%
+
+\RequirePackage{fnpos}
+\makeFNbottom
+\makeFNbelow
+
+\renewcommand{\footnoterule}{%
+  \kern -3pt
+  \hrule width 0.5in height 0.4pt
+  \kern 2pt
+}
+
+%% reduce indentation of footnotes
+\renewcommand\@makefntext[1]{%
+  \noindent\makebox[2ex][r]{\@makefnmark}#1}
+
+
+
+%%%%%%%%%  CAPTION RELATED  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage[labelfont={sf,bf},hypcap=false]{caption}
+\RequirePackage[hypcap=false,list=true]{subcaption}
+
+\captionsetup[figure]{name=Fig.,labelfont={bf},textfont={}, labelsep=quad} %textformat=period, 
+\captionsetup[table]{name=Table,labelfont={bf},textfont={}, labelsep=quad} %textformat=period, 
+
+
+%%%%%%%%%%%%%%%%%% Section headings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% wish to accommodate hyperref
+
+\RequirePackage{textcase} %% Allows uppercase titles and captions without errors from math and citations
+
+\RequirePackage[raggedright,indentafter]{titlesec}
+
+% PRTEC specifies 12 pt headings
+\titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{\thesection.}{0.5em}{\MakeTextUppercase}
+\titleformat{name=\section,numberless}{\bfseries\mathversion{bold}\large\centering}{}{0em}{\MakeTextUppercase}
+
+\titleformat{\subsection}[runin]{\bfseries}{\thesubsection}{0.5em}{\mathversion{bold}\noindent}[\hspace*{0.5em}]
+\titleformat{\subsubsection}[runin]{\itshape}{}{0em}{\noindent\underline}[.\hspace*{0.5em}]
+
+\titlespacing\section{0pt}{25pt plus 4pt minus 2pt}{12pt plus 2pt minus 1pt}
+\titlespacing\subsection{0pt}{13.6pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
+\titlespacing\subsubsection{0pt}{12pt plus 4pt minus 2pt}{0pt plus 2pt minus 2pt}
+
+%%  Special handling of the appendices            
+%%  Assumes that appendices are the last content in the paper 
+\RenewDocumentCommand{\appendix}{}{%
+    \setcounter{section}{0}
+    \pdfbookmark[0]{Appendices}{appendices}
+    \renewcommand\thesection{\Alph{section}}
+    \titleformat{\section}{\bfseries\mathversion{bold}\large\centering}{APPENDIX \thesection:}{0.5em}{\MakeTextUppercase}
+}
+
+%%%%%%%%%%%%%  hyperref  %%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{hyperxmp} %% to fix transfer of metadata to Acrobat pdf 
+
+\RequirePackage[%
+    unicode,        % Unicode encoded PDF strings
+    psdextra,       % additional support for math in pdf bookmarks
+	pdfborder={0 0 0},% 
+	bookmarks=true, %
+	bookmarksnumbered=true,%
+	bookmarksopen=true,%
+	bookmarksopenlevel=1,%
+	colorlinks=true,%%% <=== set false to get black type, but do so in .tex file
+	linkcolor=blue, %
+	citecolor=blue, % SeaGreen4,%
+	urlcolor=blue,  % Red3,%
+	breaklinks=true,%
+	pdftitle={},    % <=== add in .tex file
+	pdfkeywords={}, % <=== add in .tex file
+	pdfnewwindow=true,%
+	pdfpagelayout=TwoPageRight,%
+	pdfauthor={},   % <=== add in .tex file
+	pdfdisplaydoctitle=true%
+	]{hyperref}
+	
+\urlstyle{same}     % don't switch to typewriter font
+
+\RequirePackage{doi}           % provides hyperlinks for doi in bibliography
+\renewcommand{\doitext}{doi:~} % change the default, {doi:}, to this for PRTEC specification
+
+
+%% Since \bm is useful in headings, this fix will reduce frequency with which
+%% alternate pdfstrings must be given in section command as \section[pdfstring]{texstring}
+\pdfstringdefDisableCommands{%
+    \def\bm#1#{\relax}%
+}
+
+%% Let's also make sure \NoCaseChange in section headings won't break pdf bookmarks
+\pdfstringdefDisableCommands{%
+      \let\NoCaseChange\relax%
+}
+
+%% Let's just remove citations from pdf bookmarks
+\pdfstringdefDisableCommands{%
+    \def\cite{\@gobble}%
+}
+
+%% Let's make sure footnotes in section headings don't break pdf bookmarks.
+\RequirePackage{etoolbox}
+\robustify{\footnote}
+\pdfstringdefDisableCommands{%
+  \def\footnote#1{}%
+}
+
+
+%% Let's also add \footnote to the \TextUppercase exception list, so that footnote text won't be capitalized
+%% if given in section headings
+\RequirePackage{xpatch}
+\xpatchcmd{\@uclcnotmath}{\@nonchangecase\ref}{\@nonchangecase\ref\@nonchangecase\footnote}{}{}
+
+
+%%% Create an optional argument for unnumbered sections and set pdf bookmark (thru \addcontentsline).
+%%% The optional argument will manually set the pdf bookmark for that section; can be used to avoid hyperref 
+%%%     errors when macros are in section titles.
+%%% There should not be errors for $$, \cite, \ref, \label, \footnote, or \bm with current construction.
+\let\svsection\section
+\RenewDocumentCommand{\section}{s o m}{%
+	    \IfBooleanTF {#1}
+		{\svsection*{#3}\phantomsection
+					{\IfNoValueTF {#2}
+					{\addcontentsline{toc}{section}{#3} }
+					{\addcontentsline{toc}{section}{#2} }
+					}
+		}
+		{\IfNoValueTF {#2}
+			{\svsection{#3}}
+			{\svsection[#2]{#3}}
+		}
+}
+
+
+%%%%%%%%%%%%%  Define special environments  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Abstract environment
+%% \keywords command should be given someplace before the \end{abstract} command.
+
+\providecommand{\@keywords}{\relax}
+
+\DeclareDocumentCommand{\keywords}{m}{%
+ \IfNoValueTF{#1}{%
+             \relax}{%
+             \long\def\@keywords{\par\medskip\noindent{\bfseries\small KEYWORDS: }{\small #1}}%
+             }
+}
+
+\DeclareDocumentEnvironment{abstract}{}{%
+	\section*{Abstract}%
+	}
+	{\@keywords\bigskip%
+}
+
+
+%%%%%%%%%%%%   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.
+%% If second argument of \entry is omitted, will produce an italicized heading (e.g. "Greek letters")
+%%
+
+\RequirePackage{multicol}
+\newlength\nomenwidth
+
+
+%% If the second argument of \entry is omitted, a bold section heading is produced, e.g. \entry{Greek Letters}
+\DeclareDocumentCommand{\entry}{m g}{%
+ \IfNoValueTF{#2}{%
+             \item[\itshape#1\hfill]\smallskip
+             }{%
+             \item[#1\hfill]#2%
+             }
+}
+
+
+\DeclareDocumentEnvironment{nomenclature}{O{2em} O{Nomenclature}}{%
+        \setlength\columnsep{2em} 
+        \setlength{\nomenwidth}{#1}
+        \section*{#2}
+        \begin{multicols}{2}
+        \raggedright
+        \begin{list}{}{%
+             \setlength{\itemsep}{0pt}
+             \setlength{\parsep}{\itemsep}
+             \setlength{\labelsep}{1em}%
+             \setlength{\labelwidth}{\nomenwidth}%
+             \setlength{\leftmargin}{\labelwidth}%
+             \addtolength{\leftmargin}{\labelsep}%
+        }%
+}{\end{list}\end{multicols}} 
+       
+
+%%%%%%%%%%%%%%%%% Headers and Title %%%%%%%%%%%%%%%%%%%%%
+
+\gdef\@CDsep{\relax}
+\newif\ifCD\CDfalse
+
+\newcommand{\confname}[1]{\long\gdef\@ConfName{#1}}
+\providecommand\@ConfName{\hbox{ }}
+
+\newcommand{\confdate}[1]{\gdef\@ConfDate{#1}\CDtrue}
+\providecommand\@ConfDate{\hbox{ }}
+
+\newcommand{\confcity}[1]{\ifCD\gdef\@CDsep{,\space}\fi \gdef\@ConfCity{#1}}
+\providecommand\@ConfCity{\hbox{ }}
+
+\newcommand{\HeaderConfName}{%
+\parbox{\linewidth}{\raggedleft\bfseries\sffamily%
+\@ConfName\linebreak[4]%\par%
+\@ConfDate\@CDsep\@ConfCity%
+    }%
+}
+
+\newcommand{\paperno}[1]{\gdef\@paperno{#1}}
+\providecommand\@paperno{\hbox{ }}
+
+\newcommand{\PaperNo}{%
+\vspace*{-4.7mm}%
+\parbox{\linewidth}{\raggedleft\bfseries\sffamily\Large%
+\MakeTextUppercase{\@paperno}%
+    }%
+}
+
+\newcommand{\papertitle}[1]{\gdef\@papertitle{#1}}
+\providecommand\@papertitle{\hbox{ }}
+
+\newcommand{\PaperTitle}{%
+\par\vspace*{6mm}%
+\parbox{\linewidth}{\centering{\bfseries\Large%
+\MakeTextUppercase{\@papertitle}%
+\thispagestyle{title}\par}  %% <=== \par gets the font leading to stick so that lines space properly
+     }%
+}
+
+
+%%%%%%%%%%%   Author block  %%%%%%%%%%%%%%%%
+
+\RequirePackage{xcoffins}
+
+\newcounter{authorno}
+\setcounter{authorno}{0}
+
+\NewCoffin{\AffiliationBlock}
+\NewCoffin{\AuthorBlock}
+
+\NewCoffin{\AffiliationsBlock}
+\SetHorizontalCoffin\AffiliationsBlock{}
+
+\DeclareDocumentCommand{\SetAuthors}{m}{%
+     \SetHorizontalCoffin\AuthorBlock{%
+     \parbox{\linewidth}{\centering\bfseries\ignorespaces#1\ignorespaces}%
+     }
+}
+
+\DeclareDocumentCommand{\SetAffiliation}{m m}{%
+   \SetVerticalCoffin\AffiliationBlock{\textwidth}{%
+      \centering\footnotemark[#1]#2\ignorespaces%
+   }
+   \JoinCoffins\AffiliationsBlock[hc,b]\AffiliationBlock[hc,t](0pt,-3pt)
+}
+
+%%% 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)
+
+\newif\ifCA\CAfalse
+\newcommand{\CAemail}[1]{\gdef\@CAemail{#1}}
+
+\DeclareDocumentCommand{\CorrespondingAuthor}{m}{%
+  \global\CAtrue%
+  \CAemail{#1}%
+  $^\ast$%
+}
+
+%%% flag for joint first authors (two or more)
+\newif\ifJA\JAfalse
+
+\DeclareDocumentCommand{\JointFirstAuthor}{}{%
+  \global\JAtrue%
+  $^\dagger$%
+}
+
+%%% Affiliation mark
+\DeclareDocumentCommand{\affil}{m}{%
+   {\mdseries\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\textsu{\mdseries,}%
+    \else%
+        \ifx\JointFirstAuthor\nextToken\textsu{\mdseries,}%
+        \else
+            \ifx\affil\nextToken\textsu{\mdseries,}%
+            \fi%
+        \fi%
+    \fi%
+    \ignorespaces% 
+}
+
+\let\oldCorrespondingAuthor\CorrespondingAuthor
+\renewcommand\CorrespondingAuthor[1]{%
+    \oldCorrespondingAuthor{#1}\futurelet\nextToken\isOthernote}
+    
+\let\oldJointFirstAuthor\JointFirstAuthor
+\renewcommand\JointFirstAuthor{%
+    \oldJointFirstAuthor\futurelet\nextToken\isOthernote}
+
+\DeclareDocumentCommand{\SetAuthorBlock}{}{%
+   \let\savethefootnote\thefootnote
+   \JoinCoffins\AuthorBlock[hc,b]\AffiliationsBlock[hc,t](0pt,-\baselineskip)
+   \centerline{\TypesetCoffin\AuthorBlock}
+   \renewcommand*{\thefootnote}{\fnsymbol{footnote}}
+   \ifJA
+      \footnotetext[2]{Joint first authors}
+   \fi
+   \ifCA
+      \footnotetext[1]{Corresponding author:\space\@CAemail}
+   \fi
+   \let\thefootnote\savethefootnote
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%   Make the title section
+
+\DeclareDocumentCommand{\MakeTitlePage}{}{%
+  \PaperNo 
+  \PaperTitle
+  \vspace*{2\baselineskip}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\RequirePackage{metalogo,hologo} %% to access various TeX logos for the documentation.
+
+\endinput
+%%
+%% End of file `prtec.cls'.
+
-- 
cgit v1.2.3

