From 191b3e8d3780e596eeccd450cefa620fb5e73c08 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 Oct 2021 20:24:07 +0000 Subject: phfextendedabstract (11oct21) git-svn-id: svn://tug.org/texlive/trunk@60732 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/phfextendedabstract/README.md | 19 + .../phfextendedabstract/phfextendedabstract.pdf | Bin 0 -> 283010 bytes .../source/latex/phfextendedabstract/Makefile | 11 + .../phfextendedabstract/phfextendedabstract.dtx | 1138 ++++++++++++++++++++ .../phfextendedabstract/phfextendedabstract.ins | 55 + .../source/latex/phfextendedabstract/pkg.mk | 188 ++++ .../phfextendedabstract/phfextendedabstract.cls | 293 +++++ 7 files changed, 1704 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/phfextendedabstract/README.md create mode 100644 Master/texmf-dist/doc/latex/phfextendedabstract/phfextendedabstract.pdf create mode 100644 Master/texmf-dist/source/latex/phfextendedabstract/Makefile create mode 100644 Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.dtx create mode 100644 Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.ins create mode 100644 Master/texmf-dist/source/latex/phfextendedabstract/pkg.mk create mode 100644 Master/texmf-dist/tex/latex/phfextendedabstract/phfextendedabstract.cls (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/phfextendedabstract/README.md b/Master/texmf-dist/doc/latex/phfextendedabstract/README.md new file mode 100644 index 00000000000..264116c77f9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/phfextendedabstract/README.md @@ -0,0 +1,19 @@ +# The phfextendedabstract package + +Typeset extended abstracts for conferences, such as often encountered in quantum +information theory. + + +# Documentation + +Run `make sty` to generate the style file, `make pdf` to generate the package +documentation, and `make install` to install the package in your local texmf +tree. Run 'make' or 'make help' for more info. + + +# Author and License + +(C) 2021 Philippe Faist, philippe.faist@bluewin.ch + +License: [LaTeX project public license](http://www.ctan.org/license/lppl1.3), +version 1.3 or above diff --git a/Master/texmf-dist/doc/latex/phfextendedabstract/phfextendedabstract.pdf b/Master/texmf-dist/doc/latex/phfextendedabstract/phfextendedabstract.pdf new file mode 100644 index 00000000000..d4404c7f783 Binary files /dev/null and b/Master/texmf-dist/doc/latex/phfextendedabstract/phfextendedabstract.pdf differ diff --git a/Master/texmf-dist/source/latex/phfextendedabstract/Makefile b/Master/texmf-dist/source/latex/phfextendedabstract/Makefile new file mode 100644 index 00000000000..e06e4eeeb1e --- /dev/null +++ b/Master/texmf-dist/source/latex/phfextendedabstract/Makefile @@ -0,0 +1,11 @@ + +PKG = phfextendedabstract +PKGSTYEXT = cls + +-include pkg.mk + +pkg.mk: + ln -sf ../mkcommon/pkg.mk pkg.mk + +install: install_cls install_doc + diff --git a/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.dtx b/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.dtx new file mode 100644 index 00000000000..87cddfcee18 --- /dev/null +++ b/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.dtx @@ -0,0 +1,1138 @@ +% \iffalse meta-comment +% +% Copyright (C) 2021 by Philippe Faist +% ------------------------------------------------------- +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{phfextendedabstract.dtx} +% +%\NeedsTeXFormat{LaTeX2e}[2005/12/01] +%\ProvidesClass{phfextendedabstract} +%<*package> + [2021/09/08 v1.0 phfextendedabstract class] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{xcolor} +\usepackage[preset=xpkgdoc]{phfnote} +\usepackage{needspace} + +\makeatletter +\newsavebox\phfeaDocVirtualPage@contents +\newenvironment{phfeaDocVirtualPage}{% + \par% + \begingroup% + \makeatletter% + \begin{lrbox}{\phfeaDocVirtualPage@contents}% + \begin{minipage}{12cm}\relax% + \def\rmdefault{cmr}\def\sfdefault{cmbr}\normalfont% + \def\shortlipsum{Lorem ipsum dolor sit amet, consectetuer + adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, + adipiscing vitae, felis. Curabitur dictum gravida + mauris. Nam arcu libero, nonummy eget, consectetuer id, + vulputate a, magna.}% + \let\RequirePackage\@gobble% + \def\morepagecontents{\par\vspace{1em}\centering\ldots}% + \ignorespaces% + }% + {% + \end{minipage}% + \end{lrbox}% + %%\centering% + \begin{tcolorbox}[text width=6cm,sharp corners,% + before={\par\vspace{5pt}\centering\nopagebreak\parindent=0pt},after={\par\vspace{5pt}},% + leftrule=0.4pt,toprule=0.4pt,rightrule=0.6pt,bottomrule=0.6pt,% + colframe=black,colback=white]% + \scalebox{0.5}{\usebox{\phfeaDocVirtualPage@contents}}% + \end{tcolorbox}% + %%\par% + \endgroup% +} +\def\phfeaSectionDecoration{% only for doc purposes + \raisebox{0.2ex}{{% + \notesmaller[0.4]\phfeaSectionDecorationSymbol}}% + \hspace*{1.5ex}% +} +\def\phfeaSectionDecorationSymbol{\ensuremath{\blacksquare}}% only for doc purposes +\def\phfeaParagraphDecoration{% only for doc purposes + \raisebox{0.2ex}{{% + \notesmaller[0.6]\phfeaParagraphDecorationSymbol}}% + \hspace*{1ex}% +} +\def\phfeaParagraphDecorationSymbol{\ensuremath{\triangleright}}% only for doc purposes + +\def\eqsign@{=} +\def\eqsign{\protect\eqsign@} +\robustify\eqsign +\makeatother + +\def\RevTeX{{\small R\raise-0.2ex\hbox{\textsc{ev}}}\TeX} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{phfextendedabstract.dtx} +\end{document} +% +% \fi +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% +% \changes{v1.0}{2021/07/29}{Initial version} +% +% \GetFileInfo{phfextendedabstract.dtx} +% +% \DoNotIndex{\newcommand,\newenvironment,\def,\gdef,\edef,\xdef,\if,\else,\fi,\ifx} +% +% \title{\phfqitltxPkgTitle{phfextendedabstract}} +% \author{Philippe Faist\quad\email{philippe.faist@bluewin.ch}} +% \date{\pkgfmtdate\filedate} +% +% \maketitle +% +% \begin{abstract} +% \pkgname{phfextendedabstract}---Typeset extended abstracts for conferences, +% such as often encountered in quantum information theory. +% \end{abstract} +% +% \inlinetoc +% +% \section{Introduction} +% +% Several conferences in Quantum Information Theory (and presumably in other +% fields, too) require the submission of \emph{extended abstracts}. An extended +% abstract is a summary of a scientific result, presented at a high level, and +% consisting of at most a small handful of pages. +% +% I found myself repeatedly copying my \LaTeX\ preamble from one submission to +% another with definitions for a format that I elaborated and liked. So at some +% point I collected the main definitions into this class file. +% +% The \pkgname{phfextendedabstract} class sets up the document for an extended +% abstract submission as a single-column document, typeset by default at 11 +% point size, with at most two sectioning levels (|\section|\,s and +% |\paragraph|\,s). It is based on the \RevTeX\ class. +% +% The extended abstract style looks approximately like this: +% \nopagebreak +% \iffalse COMMENT: Spacings are copied/emulated ! They might appear wrong!! \fi +% \begin{phfeaDocVirtualPage} +% {\parskip=8pt\relax +% {\sffamily\Large\centering Title of my extended abstract\par} +% {\centering Author One,\ \ Author Two,\ \ and\ \ Author Three\par} +% }\vspace{0.2cm} +% \parskip=3pt\relax +% +% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont +% \makebox[0pt][r]{\phfeaSectionDecoration}Introduction.} +% \shortlipsum +% +% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont +% \makebox[0pt][r]{\phfeaSectionDecoration}Results.} +% \shortlipsum +% +% \noindent{\normalfont\normalsize\sffamily\small +% \makebox[0pt][r]{\phfeaParagraphDecoration}First result.} +% \ldots +% +% \noindent{\normalfont\normalsize\sffamily\small +% \makebox[0pt][r]{\phfeaParagraphDecoration}Second result.} +% \ldots +% +% \noindent{\normalfont\normalsize\sffamily\fontseries{sb}\selectfont +% \makebox[0pt][r]{\phfeaSectionDecoration}Discussion.} +% \shortlipsum +% \hspace*{1.5ex}% +% +% \end{phfeaDocVirtualPage} +% +% +% \section{Main features} +% +% Here are the main features of the \pkgname{phfextendedabstract} class: +% \begin{itemize} +% \item The class \pkgname{phfextendedabstract} loads the \pkgname{revtex4-2} +% class, so you can directly use \RevTeX's features such as author +% affiliations, etc. +% +% \item Only two sectioning commands are enabled: |\section| and |\paragraph|. +% Both have run-in headings. If you find yourself needing additional +% sectioning levels, it might be that your extended abstract is too detailed +% and you might want to think about how to keep it at a higher level. It +% might also be that \pkgname{phfextendedabstract} is too limited for your +% needs. +% +% By default, section and paragraphs have ``decorations'' (by default a symbol +% in the margin) to guide the reader through the overall high-level structure +% of the document. (Disable them with the |noheadingdecorations| class +% option.) +% +% \item You can easily scale all vertical spacing dimensions (section and +% paragraph spacing, vertical space around theorems and list environments, +% etc.) by a common factor with a class option. Do you have those extra two +% lines that make you exceed your 3-page limit? Try squeezing everything +% together with a class option like |compressverticalspacing=0.7|. +% +% \item The \pkgname{phfnote} package is loaded in order to provide a set of +% default \LaTeX\ packages and set up hyperlinks. A generous default set of +% standard LaTeX packages are loaded, including \pkgname{caption} and +% \pkgname{enumitem}; see \pkgname{phfnote}'s documentation for the option +% |pkgset=extended|. +% +% \textbf{You are expected to include +% \phfverb{\usepackage}\phfverb{{hyperref}} somewhere in your preamble.} We +% deliberately don't include \pkgname{hyperref} when loading the class in +% order to give you greater control of package loading order (most packages +% you might want to use must be loaded before \pkgname{hyperref}). +% +% \item The page margins are tweaked with the \pkgname{geometry} package. +% (Simply call |\geometry{...}| if you'd like to further change them. Refer +% to the \pkgname{geometry} package's documentation.) +% +% \item Lists, i.e.\@ the |itemize| and |enumerate| environments, are customized +% using the \pkgname{enumitem} package so that they take up less space. You +% also get a |enumerate*| environment that typesets its items in-line, in a +% single paragraph. +% +% (Note that this customization won't work if you choose to load a package set +% via a |pkgset=| option that doesn't include \pkgname{enumitem}.) +% +% \item By default we load the \pkgname{phfthm} package and set a customized +% theorem style so that it stands out but also so that it contrasts well with +% the section and paragraph headings. +% +% \end{itemize} +% +% Check out the class option documentation in \autoref{sec:class-options} to get +% a better idea of how to customize \pkgname{phfextendedabstract}'s behavior! +% +% +% \section{Example Usage} +% +% Here's a simple template: +% \begin{verbatim} +% \documentclass[papertype=a4paper]{phfextendedabstract} +% +% \usepackage{hyperref} +% +% \begin{document} +% \title{Title goes here} +% \author{Author 1} +% \author{Author 2} +% \maketitle +% +% \section{Introduction.} +% Lorem ipsum ... +% +% \section{Results.} +% We had some cool results about +% \begin{enumerate*} % inline enumeration +% \item a first result, +% \item a second result, % and +% \item a final result. +% \end{enumerate*} +% +% \paragraph{First result.} +% Here's a first result ... +% +% \paragraph{Second result.} +% Here's another result ... +% +% ... +% +% \end{document} +% \end{verbatim} +% +% (Try it out!) +% +% +% \section{Class options} +% \label{sec:class-options} +% +% Here is a summary of class options: +% \begin{pkgoptions} +% \item[papertype=a4paper,letterpaper,\meta{paper type},\meta{empty}] Specify +% the paper type to use (A4 or letter). The argument given to this option is +% directly specified as an option to the underlying \RevTeX\ class. +% \item[ptsize=10pt,11pt,12pt] Default font size to use. Again the argument +% given to this option is directly specified as an option to the underlying +% \RevTeX\ class. +% \item[sectiondecorations=\meta{true or false}] Whether or not to ``decorate'' +% section headings, by default with a small black square typeset in the margin +% of the section heading. +% \item[paragraphdecorations=\meta{true or false}] Whether or not to +% ``decorate'' paragraph headings, by default with a small right-pointing +% outlined triangle typeset in the margin of the paragraph heading. +% \item[noheadingdecorations] Shorthand for +% |sectiondecorations=false,paragraphdecorations=false|. +% \item[compressverticalspacing=\meta{factor}] Real factor by which to multiply +% the vertical spacing between sections, paragraphs, theorems, paragraphs, +% list environments such as |itemize| and |enumerate|, etc. If you need to +% compress the sections a bit to fit more content on a fixed number of pages +% (e.g.\@ because of page number constraints), you can set this option to a +% factor that's less than one. A \meta{factor} that's less than one +% compresses sections together, a \meta{factor} equal to |1| does nothing, and +% a \meta{factor} greater than one expands the sections further apart. +% \item[loadtheorems=\meta{true or false}] If |loadtheorems=true| (the default), +% then the \pkgname{phfthm} package is loaded with some suitable default +% options and a custom theorem style. (The theorem style +% |phfextendedabstractthm| is defined regardless of this package option.) +% \item[sansstyle=\meta{true or false}] Use sans serif style by default for the +% main title as well as for section and paragraph headings. For greater +% degree of control, see \autoref{sec:customize-title-and-headings-style}. +% \item[usehyperref=\meta{true or false}] Should we set up the document for use +% with the \pkgname{hyperref} package or not? This option influences how we +% load the \pkgname{phfnote} package. If this option is set to |true| (the +% default), then the \pkgname{phfnote} package is loaded with +% |hyperrefdefs={defer,noemail}|. This means that the document is set up for +% use with \pkgname{hyperref}, although you will still need to say +% |\usepackage{hyperref}| somewhere in your preamble. If |usehyperref=false|, +% then the \pkgname{phfnote} package is loaded with hyperref options disabled. +% +% (The |noemail| option is specified to \pkgname{phfnote} to avoid +% interference with \RevTeX's own |\email| command used to specify email +% addresses for individual authors.) +% \item[pkgset=\meta{\pkgname{phfnote} package set name}] The \pkgname{phfnote} +% package (which we load internally) loads a bunch of standard packages for +% your convenience, such as \pkgname{enumitem} or \pkgname{microtype}. You +% can influence this behavior by specifying a ``package set'' to load. By +% default, the |pkgset=extended| package set is loaded. If you don't want to +% load any additional packages beyond those that are strictly necessary, use +% |pkgset=none| or |pkgset=minimal|. See \pkgname{phfnote}'s documentation +% for the package option |pkgset=...| for more information and a list of +% possible package set names. +% \end{pkgoptions} +% +% +% \section{Macros and environments} +% +% \subsection{Sections and paragraphs} +% +% \DescribeMacro{\section} \DescribeMacro{\paragraph} This class only provides +% two sectioning levels: |\section| and |\paragraph|. Both produce run-in +% headings. +% +% By default, sections and paragraphs produce a small ``decoration'' in the left +% margin, to guide the reader's eye through the document's high-level structure. +% +% You can disable/enable section and paragraph decorations with the +% |sectiondecorations|, |paragraphdecorations| and |noheadingdecorations| class +% options. +% +% The |\section| and |\paragraph| macros also accept a special syntax: If they +% are immediately followed by an exclamation mark (|!|), then they do not +% produce the corresponding decoration. E.g.: +% \begin{verbatim} +% \section!{A section heading without its decoration} +% \end{verbatim} +% +% Also, section and paragraphs will not produce any horizontal space if the +% title is empty. You can use this feature to produce the spacing and +% decoration of a section, but not the heading: +% \begin{verbatim} +% \section{} This line has the vertical spacing and decoration +% associated with a section, but with no run-in heading. +% +% \section!{} This line has the vertical spacing associated +% with a section, but with no decoration or run-in heading. +% \end{verbatim} +% +% You can also use the additional syntax |<|\emph{\ldots}|>| to specify a custom +% decoration instead of the default one. (But you should only use this +% sparingly! Redefine |\phfeaSectionDecorationSymbol| if you want to change the +% symbol for all sections!) For instance: +% +% \begin{verbatim} +% \section<\guilsinglright>{} \emph{Manuscript in preparation.} +% \end{verbatim} +% +% Here's a summary of the argument structure for |\section| and |\paragraph|: +% +% |\section|{\large\textbar}|\paragraph| +% \emph{[} |*| \emph{]} \emph{[} |!| \emph{]} +% \emph{[} |<|\meta{decoration}|>| \emph{]} +% \emph{[} \oarg{alt title} \emph{]} +% \marg{title} +% +% The optional star and optional alternative title are passed on to the standard +% \LaTeX\ sectioning commands. The alternative title is typically used for the +% table of contents and for PDF bookmarks. +% +% \DescribeMacro{\phfeaSectionDecoration} +% \DescribeMacro{\phfeaParagraphDecoration} You can use the +% |\phfeaSectionDecoration{}| and |\phfeaParagraphDecoration{}| +% to manually place a section or paragraph decoration at any place: +% \begin{verbatim} +% \phfeaSectionDecoration{$\to$} Check out our website at +% \href{https://github.com/phfaist/phfqitltx}{github.com/phfaist/phfqitltx} +% \end{verbatim} +% +% If the |sectiondecorations=false| class option was specified, the macro +% |\phfeaSectionDecoration{...}| produces no output. Similarly, +% |\phfeaParagraphDecoration{...}| does nothing if |paragraphdecoration=false| +% was specified. +% +% \DescribeMacro{\phfeaSectionDecorationSymbol} +% \DescribeMacro{\phfeaParagraphDecorationSymbol} +% The default section and paragraph symbols (including size and vertical +% adjustments) are stored in the |\phfeaSectionDecorationSymbol| and +% |\phfeaParagraphDecorationSymbol| macros. You can redefine these macros to +% set custom decoration symbols: +% \begin{verbatim} +% \renewcommand{\phfeaSectionDecorationSymbol}{\Large$\Rightarrow$} +% \renewcommand{\phfeaParagraphDecorationSymbol}{\raisebox{1pt}{\tiny $>$}} +% \end{verbatim} +% +% You can customize section and paragraph headings, including spacing and style, +% by redefining the following macros. +% +% \DescribeMacro{\phfeaSectionBeforeSkip} +% \DescribeMacro{\phfeaSectionAfterHSkip} The macro |\phfeaSectionBeforeSkip| +% (it's a macro, not a length) is used to specify the vertical spacing before a +% new section heading. The macro (not length) |\phfeaSectionAfterHSkip| is the +% horizontal space between the end of the section heading and the beginning of +% the section text contents. You can redefine these macros to set your custom +% spacings. (If you're looking to compress the vertical spacings to save on the +% number of pages, look at the |compressverticalspacings=| class option and the +% |\phfeaVerticalSpacingCompressionFactor| macro.) +% +% \DescribeMacro{\phfeaParagraphBeforeSkip} +% \DescribeMacro{\phfeaParagraphAfterHSkip} The macros +% |\phfeaParagraphBeforeSkip| and |\phfeaParagraphAfterHSkip| behave similarly +% for paragraphs. +% +% \DescribeMacro{\phfeaSectionStyle} \DescribeMacro{\phfeaParagraphStyle} The +% macros |\phfeaSectionStyle| and |\phfeaParagraphStyle| are used to set the +% style of the section and paragraph headings. By default, the default +% sans/heading style is used at the normal size and in bold face series for +% sections, and the normal sans style is used at a smaller size for paragraph +% headings. +% +% \DescribeMacro{\phfeaSectionFormatHeading} +% \DescribeMacro{\phfeaParagraphFormatHeading} The macros +% |\phfeaSectionFormatHeading{...}| and |\phfeaParagraphFormatHeading{...}| can +% be redefined to format the section and paragraph headings, respectively. You +% can redefine these macros to add punctuation, to capitalize the title, etc. +% For instance: +% \begin{verbatim} +% \renewcommand\phfeaSectionFormatHeading[1]{\MakeUppercase{#1}\ ---} +% \end{verbatim} +% +% The macros |\phfeaSectionFormatHeading{...}| and +% |\phfeaParagraphFormatHeading{...}| are not called if the section/paragraph +% title argument is empty. +% +% +% \subsection{Vertical spacing} +% +% \DescribeMacro{\phfeaVerticalSpacingCompressionFactor} To +% conveniently globally adjust the vertical spacings in the document (including +% the section and paragraph vertical spacings, as well as the spacing above and +% below theorems, itemize, and enumerate environments), you can also use the +% |compressverticalspacing=X| class option. Alternatively, you can redefine the +% macro |\phfeaVerticalSpacingCompressionFactor| to the desired compression +% factor: +% \begin{verbatim} +% \renewcommand\phfeaVerticalSpacingCompressionFactor{0.7} +% \end{verbatim} +% +% \DescribeMacro{\phfeaDefineTheoremStyle} Because the theorem style +% |phfextendedabstracthm| is defined at the time that the class is loaded, any +% customization of |\phfeaVerticalSpacingCompressionFactor| and +% |\phfeaListsVerticalSkip| that happen later in the preamble aren't taken into +% account. If you change these values in your preamble, you should call +% |\phfeaDefineTheoremStyle| to redefine the theorem style after your +% customization. +% +% \DescribeMacro{\phfeaDisplayVerticalSpacingFactorWeight} The +% vertical spacing factor also affects the vertical spacing around equations, +% but to a lesser extent. (Compressing the space around the equations by too +% much would not look nice.) For the spacing between equations, we take the +% weighted average of $1$ and the vertical spacing compression factor, where the +% weight is given in the macro |\phfeaDisplayVerticalSpacingFactorWeight|. A +% weight of |0| means the vertical compression factor doesn't affect the +% vertical spacing around equations at all; a weight of |1| means the spacing +% around the equations is scaled exactly by the vertical compression factor. +% +% \DescribeMacro{\phfeaParskipVerticalSpacingFactorWeight} A similar mechanism +% happens for how we adjust |\parskip|, the spacing between paragraphs. +% +% +% \subsection{List environments} +% +% \DescribeEnv{enumerate*} This class provides an |enumerate|-like +% environment which typesets its items inline, as a list. For example, here is +% an inline paragraph with (a) one, (b) two, and (c) three points. +% \iffalse yeah, I cheated for this doc code, whatever \fi +% +% The |enumerate*| can be used exactly like you'd use the |enumerate| +% environment from the \pkgname{enumitem} package, for instance: +% \begin{verbatim} +% here is an inline paragraph with \begin{enumerate*}[label=(\alph*)] +% \item one, +% \item two, +% \item three +% \end{enumerate*} +% points. +% \end{verbatim} +% +% Check \pkgname{enumitem}'s documentation for inline lists. You can specify +% for instance the keys |before={{}}|, |itemjoin={{ }}|, and \relax\relax\relax +% |itemjoin*={{ and }}| either as an optional argument to +% |\begin{enumerate*}| \iffalse\end{enumerate*}\fi or using +% |\setlist|: +% \begin{verbatim} +% \setlist[enumerate*]{% +% itemjoin*={{ et }}% +% } +% \end{verbatim} +% +% \DescribeMacro{\phfeaListsVerticalSkip} \DescribeMacro{\phfeaListsItemSep} +% \DescribeMacro{\phfeaListsParSep} For (non-inline) list environments such as +% |itemize| and |enumerate|, you can redefine |\phfeaListsVerticalSkip|, +% |\phfeaListsItemSep|, and |\phfeaListsParSep| to set the |topsep|, |itemsep| +% and |parsep| properties of all of \pkgname{enumitem}'s list environments. +% These correspond to the vertical space above and below lists, the space +% between items, and the space between paragraphs within an item. All these +% spacings automatically get compressed according to the +% |\phfeaVerticalSpacingCompressionFactor|. +% +% Note that |\phfeaListsVerticalSkip| is also used for the spacing above and +% below theorem environments. +% +% +% \subsection{Customization of the main title and general headings style} +% \label{sec:customize-title-and-headings-style} +% +% \DescribeMacro{\phfeaHeadingStyle} The macro |\phfeaHeadingStyle| is defined to be +% |\sffamily|, unless the |sansstyle=false| class option is provided +% in which case the macro expands to nothing. You can redefine it to give a +% different general style to your main title and your section and paragraph +% headings. +% +% \DescribeMacro{\phfeaTitleStyle} The macro |\phfeaTitleStyle| sets the font +% style for the main document title. By default the macro is defined to +% |\phfeaHeadingStyle\Large|. Redefine this macro to change the title style. +% +% For instance, if you prefer \RevTeX's own simple boldface title, you can use: +% \begin{verbatim} +% \renewcommand\phfeaTitleStyle{\bfseries} +% \end{verbatim} +% +% +% +% +% +% \StopEventually{\vskip 3cm plus 2cm minus 2cm\relax\PrintChanges +% \vskip 3cm plus 2cm minus 2cm\relax\PrintIndex} +% +% +% +% \section{Implementation} +% +% Here come the gory details. +% +% +% \paragraph{Class options} +% We process these first, to see which options we should pass on to +% \RevTeX. +% \begin{macrocode} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{% + family=phfea,% + prefix=phfeaopt@% +} +\DeclareStringOption[]{papertype} +\DeclareStringOption[11pt]{ptsize} +\DeclareBoolOption[true]{sectiondecorations} +\DeclareBoolOption[true]{paragraphdecorations} +\DeclareVoidOption{noheadingdecorations}{% + \phfeaopt@sectiondecorationsfalse + \phfeaopt@paragraphdecorationsfalse +} +\DeclareBoolOption[true]{loadtheorems} +\DeclareBoolOption[true]{sansstyle} +\DeclareStringOption[1]{compressverticalspacing} +\DeclareBoolOption[true]{usehyperref} +\DeclareStringOption[extended]{pkgset} +\ProcessKeyvalOptions* +% \end{macrocode} +% +% +% \paragraph{Load \RevTeX, the base class} +% +% \begin{macrocode} +\providecommand\phfea@revtexopts{% + aps,pra,% + notitlepage,reprint,% + onecolumn,tightenlines,% + superscriptaddress,% + nofootinbib% +} +\PassOptionsToClass{% + \phfea@revtexopts,% + \phfeaopt@ptsize,% + \phfeaopt@papertype,% +}{revtex4-2} +\LoadClass{revtex4-2} +% \end{macrocode} +% +% We will also need the \pkgname{xparse} command for defining some of our +% commands. +% \begin{macrocode} +\RequirePackage{xparse} +% \end{macrocode} +% +% \paragraph{Load \pkgname{phfnote} for the basic document setup} +% +% \begin{macrocode} +\PassOptionsToPackage{% + preset=reset,% + pkgset=\phfeaopt@pkgset,% + \ifphfeaopt@usehyperref + hyperrefdefs={defer,noemail},% + \fi +}{phfnote} +\RequirePackage{phfnote} +% \end{macrocode} +% +% +% \paragraph{Page geometry} +% +% Set a default page geometry. Works both for A4 paper and for letter paper. +% It's optimized for 11pt size, though. +% \begin{macrocode} +\RequirePackage{geometry} +\geometry{hmargin=0.75in,vmargin=0.75in,marginparwidth=0.5in,marginparsep=0.125in} +% \end{macrocode} +% +% +% \paragraph{Default sans serif font} +% +% \begin{macro}{\phfeaHeadingStyle} +% Unless instructed not to do so, \iffalse load the ``Source Sans Pro'' font +% as default sans serif font, using the semibold glyphs in place of bold. By +% default, this font will \else set the sans serif font family to \fi be used +% for section headings and the main title. +% \begin{macrocode} +\ifphfeaopt@sansstyle + \def\phfeaHeadingStyle{\sffamily} +\else + \def\phfeaHeadingStyle{} +\fi +% \end{macrocode} +% \end{macro} +% +% +% \paragraph{Default title format} +% +% \begin{macro}{\phfeaTitleStyle} +% Change \RevTeX\ title format. Title style can be customized by redefining +% |\phfeaTitleStyle|. +% \begin{macrocode} +\def\phfeaTitleStyle{\phfeaHeadingStyle\Large} +\def\frontmatter@title@format{\phfeaTitleStyle\centering\parskip\z@skip} +% \end{macrocode} +% \end{macro} +% +% +% \paragraph{Vertical spacing compression factor} +% +% Define a general factor by which the section and paragraph spacings will be +% compressed. This macro is set by the |compressverticalspacing=X| package +% option. +% \begin{macrocode} +\edef\phfeaVerticalSpacingCompressionFactor{\phfeaopt@compressverticalspacing} +% \end{macrocode} +% +% Tool for scaling glue expressions (for use with our vertical compression +% factor):\footnote{Thanks \url{https://tex.stackexchange.com/a/198966/32188}\,!} +% \begin{macrocode} +\def\phfea@scaleglue#1#2{% {factor}{glueexpr} + \glueexpr#2*\numexpr\dimexpr#1pt\relax\relax/65536\relax +} +\def\phfea@scalegluedpt#1#2{% {factor given as dimexpr in pt}{glueexpr} + \glueexpr#2*\numexpr#1\relax/65536\relax +} +% \end{macrocode} +% +% Adjust spacing around display equations according to the vertical compression +% factor. Do this only at the beginning of the document, since the user might +% still want to adjust |\phfeaVerticalSpacingCompressionFactor| in their +% preamble. +% +% \begin{macro}{\phfeaDisplayVerticalSpacingFactorWeight} +% We only apply a fraction of the scaling, because it's ugly if we compress +% equations too much. Define |\phfeaDisplayVerticalSpacingFactorWeight| as $w$ and +% $\alpha$ as the vertical scaling factor. The new skips are computed as +% \begin{equation*} +% \phfverb{oldskip}\quad\rightarrow\quad +% (1-w)\,\phfverb{oldskip} + w\,\alpha\,\phfverb{oldskip}\ . +% \end{equation*} +% (For $w=0$ we have $\phfverb{oldskip}\rightarrow\phfverb{oldskip}$. For $w=1$ +% the full scaling factor is applied, +% $\phfverb{oldskip}\rightarrow \alpha\,\phfverb{oldskip}$.) By default, +% $w=1/2$: +% \begin{macrocode} +\def\phfeaDisplayVerticalSpacingFactorWeight{.5} +% \end{macrocode} +% \end{macro} +% Tool to compute the new spacing for each of the relevant display-related +% skips: +% \begin{macrocode} +\def\phfea@adjustskipweighted#1#2{% + #1=\glueexpr + \phfea@scalegluedpt{% + \dimexpr 1\p@ - #2\p@\relax + }{#1}% + + + \phfea@scaleglue{% + #2% + }{% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor + }{% + #1 + }% + }% + \relax +} +% \end{macrocode} +% And schedule this adjustment to be carried out at the beginning of the +% document. +% \begin{macrocode} +\AtBeginDocument{% + \phfea@adjustskipweighted\abovedisplayskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\belowdisplayskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\abovedisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\belowdisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight +} +% \end{macrocode} +% +% \begin{macro}{\phfeaParskipVerticalSpacingFactorWeight} +% A similar mechanism affects how we adjust the paragraph skip length +% |\parskip|. +% \begin{macrocode} +\def\phfeaParskipVerticalSpacingFactorWeight{1} +\AtBeginDocument{% + \phfea@adjustskipweighted\parskip\phfeaParskipVerticalSpacingFactorWeight +} +% \end{macrocode} +% \end{macro} +% +% \paragraph{Setup specific for sectioning} +% +% By design, there are only two sectioning levels in a +% \pkgname{phfextendedabstract} document: sections (|\section|) and paragraphs +% (|\paragraph|). Any other sectioning command (e.g., |\subsection|) will +% produce an error. +% +% Neither of these two section levels is numbered. +% \begin{macrocode} +\setcounter{secnumdepth}{0} +\setcounter{tocdepth}{1} +% \end{macrocode} +% +% \begin{macro}{\phfeaSectionBeforeSkip} +% \begin{macro}{\phfeaSectionAfterHSkip} +% \begin{macro}{\phfeaSectionStyle} +% \begin{macro}{\phfeaSectionDecoration} +% \begin{macro}{\phfeaSectionDecorationSymbol} +% Some helper and customization macros for |\section|. +% \begin{macrocode} +\def\phfeaSectionBeforeSkip{1.5ex plus 0.8ex minus 0.25ex} +\def\phfeaSectionAfterHSkip{1em plus 0.2em} +\def\phfeaSectionStyle{\normalfont\normalsize\phfeaHeadingStyle\bfseries} +\def\phfeaSectionFormatHeading#1{#1} +\def\phfeaSectionDecorationSymbol{% + \raisebox{0.2ex}{{\notesmaller[0.4]{\ensuremath{\blacksquare}}}}} +\ifphfeaopt@sectiondecorations + \def\phfeaSectionDecoration#1{% + \makebox[\z@][r]{{#1}\hspace*{1.5ex}}% + } +\else + \def\phfeaSectionDecoration#1{} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \needspace{5\baselineskip} +% \begin{macro}{\phfeaParagraphBeforeSkip} +% \begin{macro}{\phfeaParagraphAfterHSkip} +% \begin{macro}{\phfeaParagraphStyle} +% \begin{macro}{\phfeaParagraphDecoration} +% \begin{macro}{\phfeaParagraphDecorationSymbol} +% Same helper and customization macros, now for |\paragraph|. +% \begin{macrocode} +\def\phfeaParagraphBeforeSkip{0.6ex plus 0.4ex minus 0.1ex} +\def\phfeaParagraphAfterHSkip{0.75em plus 0.15em} +\def\phfeaParagraphStyle{\normalfont\normalsize\phfeaHeadingStyle\small} +\def\phfeaParagraphFormatHeading#1{#1} +\def\phfeaParagraphDecorationSymbol{% + \raisebox{0.2ex}{{\notesmaller[0.6]{\ensuremath{\triangleright}}}}} +\ifphfeaopt@paragraphdecorations + \def\phfeaParagraphDecoration#1{% + \makebox[\z@][r]{{#1}\hspace*{1ex}}% + } +\else + \def\phfeaParagraphDecoration#1{} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Now we redefine |\section| and |\paragraph| for formatting. Also allow +% |\section!| and |\paragraph!| that remove the decoration and |\section<...>| +% and |\paragraph<...>| that replace the decoration. In all cases, the indent +% is removed if the main argument (section/paragraph title) is an empty +% argument. We also accept a starred version and an optional argument, and pass +% those on to |\@startsection|; these options are sometimes useful in order to +% work around fragile tokens in the title, etc. +% +% We start with the generic code that will call |\@startsection| for both +% sections and paragraphs. The generic code will be given the level number (|1| +% or |2|) and will produce the correct |\@startsection| code for that level, +% fetching its information from the correctly named macros. We first define +% some simple definitions that specify where to look for those level-specific +% macros. +% \begin{macrocode} +\def\phfea@ss@levelname#1{\ifcase#1\or section\or paragraph\fi} +\def\phfea@ss@levelName#1{\ifcase#1\or Section\or Paragraph\fi} +\def\phfea@ss@get#1#2{% + \csname phfea\phfea@ss@levelName{#1}#2\endcsname} +\def\phfea@ss@getnoexpand#1#2{% + \expandafter\noexpand\csname phfea\phfea@ss@levelName{#1}#2\endcsname} +% \end{macrocode} +% +% \begin{macro}{\phfea@startsection} +% We now define the main internal |\phfea@startsection| macro which will +% produce the correct |\@startsection| command for the given section level. +% The arguments to |\phfea@startsection| are: +% \begin{itemize}[itemsep=0pt,topsep=0pt] +% \item[\#1:] level number, |1| or |2|; +% \item[\#2:] an optional star; +% \item[\#3:] an optional |!| character (meaning, don't display the decoration); +% \item[\#4:] an optional |<|\meta{decoration tokens}|>| argument to +% replace the decoration; +% \item[\#5:] an optional argument, the alternative title to write in the AUX +% file (e.g.\@ for use in the table of contents); +% \item[\#6:] a mandatory argument, the title of the section/paragraph. +% \end{itemize} +% \begin{macrocode} +\newtoks\phfea@ss@decorationtoks +\newtoks\phfea@ss@alttitle +\newtoks\phfea@ss@title +\NewDocumentCommand{\phfea@startsection}{m s t! d<> o m}{% +% \end{macrocode} +% Store the alternative title and title in token registers. +% \begin{macrocode} + \phfea@ss@decorationtoks={#4}% + \phfea@ss@alttitle={#5}% + \phfea@ss@title={#6}% +% \end{macrocode} +% Inform the user in case of option inconsistencies or redundancies. +% \begin{macrocode} + \IfNoValueF{#4}{% + \IfBooleanT{#3}{% + \PackageWarning{phfextendedabstract}{section/paragraph: `!' + modifier ignored when custom decoration `<...>' is specified}% + }% + }% +% \end{macrocode} +% Now define a temporary macro |\x| that will contain the correct code for a +% call to \LaTeX' low-level |\@startsection| command. Remember to prefix all +% macros by |\noexpand| unless they should be expanded in the preparation of +% that code for |\@startsection|. \LaTeX' |\@startsection| takes a lot of +% arguments, let's be careful not to miss any. Also, we can use the convenient +% construct |\phfea@ss@getnoexpand{#1}{XyzProperty}| which in this |\edef| will +% expand to +% |\noexpand\phfea|\emph{$\langle$}|Section|\emph{\textbar}\relax +% |Paragraph|\emph{$\rangle$}|XyzProperty|. +% \begin{macrocode} + \edef\x{% + \noexpand\@startsection{\phfea@ss@levelname{#1}}% +% \end{macrocode} +% First come the \meta{level number} and \meta{indent} arguments: +% \begin{macrocode} + {#1}% + {\z@}% +% \end{macrocode} +% Then comes the \meta{before skip} argument. Use |\phfea@scaleglue| to account for +% the vertical compression factor. +% \begin{macrocode} + {% + \noexpand\phfea@scaleglue{\noexpand\phfeaVerticalSpacingCompressionFactor}{% + \noexpand\glueexpr\phfea@ss@getnoexpand{#1}{BeforeSkip}\noexpand\relax + }% + }% +% \end{macrocode} +% Then comes the \meta{after skip} argument. Set the after skip to zero if the +% title is empty, otherwise specify the given +% |\phfeaSection/ParagraphAfterHSkip| as a negative value to indicate we want a +% run-in heading. Note that while the syntax `|1.5\glueexpr...|' doesn't +% preserve plus/minus stretchability components as it coerces the glue to a +% dimen, the syntax `|-\glueexpr...|' does preserve these components (presumably +% because $-1$ is integer?). +% \begin{macrocode} + {\if\relax\detokenize{#6}\relax + \noexpand\z@ + \else + -\noexpand\glueexpr\phfea@ss@getnoexpand{#1}{AfterHSkip}\noexpand\relax + \fi}% +% \end{macrocode} +% The \meta{style} argument to specify the section heading's font style. We +% provide a decoration, possibly a custom decoration if provided with the +% |<...>| syntax; we remove the default decoration if the no-decoration argument +% (a |!| character) was specified. +% \begin{macrocode} + {% + \IfNoValueTF{#4}{% + \IfBooleanTF{#3}{% with "!", no custom decoration --> nothing + }{% no "!", no custom decoration + \phfea@ss@getnoexpand{#1}{Decoration}% + \phfea@ss@getnoexpand{#1}{DecorationSymbol}% + }% + }{% with custom decoration (ignores "!" argument) + \phfea@ss@getnoexpand{#1}{Decoration}% + {\the\phfea@ss@decorationtoks}% + }% + \phfea@ss@getnoexpand{#1}{Style}% + }% +% \end{macrocode} +% An optional |*| indicates the starred version of the sectioning commands. If +% the user increased the |secnumcounter| to have numbered sections, then the +% starred variant gives a section heading without any section number or TOC +% entry. +% \begin{macrocode} + \IfBooleanT{#2}{*}% +% \end{macrocode} +% Now comes the optional \meta{alternative title} argument that will be written +% to the AUX file. We always provide this argument to |\@startsection|, +% specifying by default the main title argument |#6| (non-starred variant) or an +% empty argument (for a starred variant). We do this because otherwise, +% |\@startsection| will copy all the other commands we add in its argument +% (e.g., title formatting, etc.) and will write them to the AUX file. +% \begin{macrocode} + \IfValueTF{#4}{[\the\phfea@ss@alttitle]}{% + \IfBooleanTF{#2}{[]}{[\the\phfea@ss@title]}% + }% +% \end{macrocode} +% Finally, this is the main \meta{section title} argument. +% If the title is not empty, we also provide the title wrapped in a +% corresponding |\phfeaSection/ParagraphFormatHeading| macro call. Everything +% should be protected in |\texorpdfstring| calls to avoid \emph{pdflatex} from +% complaining about invalid junk in PDF bookmark strings. +% \begin{macrocode} + {% + \if\relax\detokenize{#6}\relax\else + \noexpand\texorpdfstring{% + \phfea@ss@getnoexpand{#1}{FormatHeading}{\the\phfea@ss@title}% + }{% + \the\phfea@ss@title + }% + \fi + }% + }% + %\message{**** EMITTING @startsection: |\detokenize\expandafter{\x}| ***}% + \x +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\section} +% \begin{macro}{\paragraph} +% Define |\section| and |\paragraph| as sectioning levels 1 and 2. +% \begin{macrocode} +\def\section{\phfea@startsection{1}} +\def\paragraph{\phfea@startsection{2}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Provide an explanative error message if the user attempts to use +% |\subsection|, |\subsubsection| or |\subparagraph|. +% \begin{macrocode} +\def\phfea@nosectioncmd#1{% + \ClassError{phfextendedabstract}{% + % + There is no `\string#1' command in `phfextendedabstract' + documents. You can only use `\string\section' and + `\string\paragraph'. If you find yourself needing additional + sectioning levels, it might be that your extended abstract is too + detailed and you should stick to a higher level description of + your results. If you do need additional section levels, it is + likely that you will be better off with a different document + class. If you'd like to stick with `phfextendedabstract' and you + really know what you're doing, then you could redefine the + sectioning commands as necessary based on `\string\@startsection' + as is done in standard LaTeX classes. Good luck! + % + }{}% +} +\def\phfea@nosectioncmd@def#1{% + \def#1{\phfea@nosectioncmd#1}% +} +\phfea@nosectioncmd@def\part +\phfea@nosectioncmd@def\chapter +\phfea@nosectioncmd@def\subsection +\phfea@nosectioncmd@def\subsubsection +\phfea@nosectioncmd@def\subparagraph +% \end{macrocode} +% +% +% \paragraph{Set up itemization and enumeration environments} +% +% Provide customizable lengths for lists via macros (item sep, +% paragraph sep and vertical skip above and below list environments). +% \begin{macro}{\phfeaListsVerticalSkip} +% \begin{macro}{\phfeaListsItemSep} +% \begin{macro}{\phfeaListsParSep} +% \begin{macrocode} +\def\phfeaListsVerticalSkip{0.6ex plus 0.4ex minus 0.1ex} +\def\phfeaListsItemSep{0.3ex plus 0.15ex minus 0.1ex} +\def\phfeaListsParSep{0.7\parskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Prepare the commands to run to configure \pkgname{enumitem} correctly in an +% internal macro which we will call if \pkgname{enumitem} is indeed loaded. +% \begin{macrocode} +\def\phfea@setup@enumitem{% +% \end{macrocode} +% Apply the spacings. +% \begin{macrocode} + \setlist{% + itemsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsItemSep}}, + parsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsParSep}}, + topsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}, + }% +% \end{macrocode} +% \begin{environment}{enumerate*} +% Create the |enumerate*| list enumeration environment. +% \begin{macrocode} + \newlist{enumerate*}{enumerate*}{1} + \setlist[enumerate*]{ + label={(\roman*)}, + before={}, + itemjoin={{ }}, + itemjoin*={{ and }} + }% +} +% \end{macrocode} +% \end{environment} +% And now, check if \pkgname{enumitem} is loaded and apply the definitions. +% \begin{macrocode} +\@ifpackageloaded{enumitem}{\phfea@setup@enumitem}{} +% \end{macrocode} +% +% +% \paragraph{Setup specific for theorems} +% +% Create a new theorem style called |extendedabstracthm|. Note that if +% \pkgname{amsthm} (or similar) wasn't loaded, then |\newtheoremstyle| isn't +% defined. In that case, we simply won't define the new theorem style right +% now. +% \begin{macrocode} +\def\phfeaDefineTheoremStyle{% + \newtheoremstyle{phfextendedabstractthm}% + {\phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}% + {\phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}% + {\itshape}% + {\z@}% + {\bfseries\itshape}% + {:}% + {0.8em}% + {\thmname{##1\thmnumber{ ##2}\thmnote{ (##3)}}}% +} +% \end{macrocode} +% Ensure we create our new theorem style (only if |\newtheoremstyle| is +% available) and load our \pkgname{phfthm} package. Make sure we don't load +% \pkgname{phfthm} if we were asked not to load theorems in the class options. +% \begin{macrocode} +\ifdefined\newtheoremstyle + \phfeaDefineTheoremStyle +\fi +\ifphfeaopt@loadtheorems + \ifdefined\newtheoremstyle\else + \ClassError{phfextendedabstract}{% + % + Impossible to load theorems (`loadtheorems=true') because there + is no \string\newtheoremstyle\space command that was defined. + Consider setting `pkgset=...' so that a theroems-related package + (e.g., amsthm) is loaded! (e.g. `pkgset=minimal', `pkgset=rich' + or `pkgset=extended'). Alternatively, set the class option + `loadtheorems=false' and you can then manually define any + theorem environments you'd like using your favorite pacakges. + % + }{} + \fi + \PassOptionsToPackage{proofref=false,theoremstyle=phfextendedabstractthm}{phfthm} + \RequirePackage{phfthm} +\fi +% \end{macrocode} +% +% \iffalse +% \paragraph{References section} +% +% Have a simple section for references. If you'd like to restore \RevTeX' +% ornament you can simply do |\let\bibsection\rtxapsbibsection|. +% \begin{XXXmacrocode} +%% \let\rtxapsbibsection\bibsection +%% \def\bibsection{% +%% \par\section{\refname}\leavevmode\par\addvspace{4pt}\relax +%% %% \par\noindent\rule{6em}{.4pt}\par\addvspace{6pt}\relax +%% } +% \end{XXXmacrocode} +% \fi +% +% +%\Finale +\endinput diff --git a/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.ins b/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.ins new file mode 100644 index 00000000000..820fc906871 --- /dev/null +++ b/Master/texmf-dist/source/latex/phfextendedabstract/phfextendedabstract.ins @@ -0,0 +1,55 @@ +%% +%% Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/phfqitltx} + +\preamble + +This is a generated file. + +Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch + +This file may be distributed and/or modified under the conditions of +the LaTeX Project Public License, either version 1.3 of this license +or (at your option) any later version. The latest version of this +license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.3 or later is part of all distributions of LaTeX version +2005/12/01 or later. + +\endpreamble + +\generate{\file{phfextendedabstract.cls}{\from{phfextendedabstract.dtx}{package}}} + +\obeyspaces +\Msg{*************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* phfextendedabstract.cls *} +\Msg{* *} +\Msg{* To produce the documentation run the .dtx file through *} +\Msg{* (PdF-)LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{*************************************************************} + +\endbatchfile diff --git a/Master/texmf-dist/source/latex/phfextendedabstract/pkg.mk b/Master/texmf-dist/source/latex/phfextendedabstract/pkg.mk new file mode 100644 index 00000000000..328b5fc36d3 --- /dev/null +++ b/Master/texmf-dist/source/latex/phfextendedabstract/pkg.mk @@ -0,0 +1,188 @@ + +# +# Common useful definitions +# +LATEX = latex + +PDFLATEXNAME = pdflatex + +PDFLATEX = TEXINPUTS="$$TEXINPUTS:../phfnote" $(PDFLATEXNAME) +PDFLATEXOPTS = -interaction=batchmode +PDFLATEXOPTSLAST = -interaction=batchmode --synctex=1 + +MAKEINDEX = makeindex + + +# +# Set default PREFIX. This can be overridden with 'make install PREFIX=/installation/directory' +# +DEFAULT_PREFIX := $(shell kpsewhich -var-value TEXMFHOME) +PREFIX ?= $(DEFAULT_PREFIX) + + +# +# package should be set in variable PKG +# +PKGREADME = README.md + +# +# packages may specify additional files in the distribution with this variable +# (by default empty) +# +DIST_ADDITIONAL_FILES ?= + +# +# Additional files automatically generated by the .ins file, such as .def files +# (by default empty) +# +ADDITIONAL_GENERATED_FILES ?= + + +# By default, the generated style file is a '.sty' latex package. If it's a +# '.cls' class file instead, the local Makefile will redefine this to 'cls'. +PKGSTYEXT ?= sty + +PKGDTX = $(PKG).dtx +PKGSTY = $(PKG).$(PKGSTYEXT) +PKGINS = $(PKG).ins +PKGPDF = $(PKG).pdf +PKGTDSZIP = $(PKG).tds.zip +PKGZIP = $(PKG).zip + + +.PHONY: help sty cls pdf install install_sty install_cls install_doc tdszip dist clean cleanall cleansty cleancls cleanaux cleanpdf cleantdszip cleandist + + +help: + @echo "Targets for $(PKG):" + @echo "make $(PKGSTYEXT) -- generate LaTeX package file $(PKG).$(PKGSTYEXT)" + @echo "make pdf -- generate pdf documentation" + @echo "make install -- install style and documentation files to $(DEFAULT_PREFIX)" + @echo "make install PREFIX=[specify texmf directory destination]" + @echo "make $(PKG).tds.zip -- create TDS.ZIP package for distribution" + @echo "make dist -- create distribution ZIP, ready for upload to CTAN" + @echo "make clean -- remove LaTeX auxiliary files" + @echo "make clean$(PKGSTYEXT) -- remove generated style file" + @echo "make cleanpdf -- remove generated pdf documentation" + @echo "make cleanall -- remove all generated files, incl. distribution zip" + + +clean: cleanaux + +cleanall: cleansty cleanaux cleanpdf cleantdszip cleandist + +# ------------------------------------------------ +# make sty +# ------------------------------------------------ + +sty: $(PKGSTY) + +# synonym of `sty` in case of LaTeX classes, we use same commands etc. +cls: $(PKGSTY) + +$(PKGSTY): $(PKGINS) $(PKGDTX) + $(LATEX) $< + +cleansty: + @rm -f $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) + +cleancls: cleansty + + +# ------------------------------------------------ +# make pdf +# ------------------------------------------------ + +pdf: $(PKG).pdf + +# +# fake index & glossary so they get a TOC entry from the beginning, and so the page +# numbers in the index are correct. +# +$(PKG).aux $(PKG).idx $(PKG).glo: $(PKGDTX) $(PKGSTY) + DTX=$< ; echo '\\begin{theindex}\\item index here \\end{theindex}' >$${DTX%.dtx}.ind + DTX=$< ; echo '\\begin{theglossary}\\item changes here\\end{theglossary}' >$${DTX%.dtx}.gls + $(PDFLATEX) $(PDFLATEXOPTS) $< + $(PDFLATEX) $(PDFLATEXOPTS) $< + $(PDFLATEX) $(PDFLATEXOPTS) $< + +$(PKG).ind: $(PKG).idx + $(MAKEINDEX) -s gind.ist -o $@ $< + +$(PKG).gls: $(PKG).glo + $(MAKEINDEX) -s gglo.ist -o $@ $< + +# final steps of making the PKG.pdf doc file. At the end, touch the ind and gls files so +# that they don't look out-of-date (because the idx and glo files were overwritten again) +$(PKGPDF): $(PKGDTX) $(PKG).aux $(PKG).ind $(PKG).gls + $(PDFLATEX) $(PDFLATEXOPTS) $< + $(PDFLATEX) $(PDFLATEXOPTS) $< + $(PDFLATEX) $(PDFLATEXOPTSLAST) $< + touch $(PKG).ind $(PKG).gls $(PKG).pdf + + +cleanaux: + @rm -f *.aux *.log *.toc *.glo *.gls *.ind *.idx *.ilg *.out *.bbl *.blg *.synctex.gz *.hd + +cleanpdf: + @rm -f $(PKGPDF) + +# ------------------------------------------------ +# 'make install' partial installation targets +# ------------------------------------------------ + +# +# The install target itself is defined per-package, in case packages want to install more +# files (such as bibtex styles) +# + +install_sty: $(PKGSTY) + mkdir -p $(DESTDIR)$(PREFIX)/tex/latex/$(PKG) + cp $(PKGSTY) $(ADDITIONAL_GENERATED_FILES) $(DESTDIR)$(PREFIX)/tex/latex/$(PKG) + +install_cls: install_sty + +install_doc: $(PKGPDF) + mkdir -p $(DESTDIR)$(PREFIX)/doc/latex/$(PKG) + cp $(PKGPDF) $(PKGREADME) $(DESTDIR)$(PREFIX)/doc/latex/$(PKG) + + + +# ------------------------------------------------ +# make tdszip +# ------------------------------------------------ + +TDSTMPDIR = $(CURDIR)/_install_tds_zip.make.tmp + +tdszip: $(PKGTDSZIP) + +$(PKGTDSZIP): $(PKGSTY) $(PKGPDF) + mkdir $(TDSTMPDIR) + $(MAKE) install PREFIX=$(TDSTMPDIR) + cd $(TDSTMPDIR) && zip -r $(CURDIR)/$(PKGTDSZIP) * + rm -rf $(TDSTMPDIR) + +cleantdszip: + @rm -f $(PKGTDSZIP) + + +# ------------------------------------------------ +# make dist +# ------------------------------------------------ + +DISTTMPDIR = $(CURDIR)/_install_dist_zip.make.tmp + +dist: $(PKGZIP) + +# feedback from CTAN upload manager: prefer not to provide tds.zip in CTAN upload +$(PKGZIP): #$(PKGTDSZIP) + rm -rf $(DISTTMPDIR) + mkdir -p $(DISTTMPDIR)/$(PKG) +# cp $(PKGTDSZIP) $(DISTTMPDIR) + cp $(PKGDTX) $(PKGINS) $(PKGPDF) $(PKGREADME) Makefile pkg.mk $(DIST_ADDITIONAL_FILES) $(DISTTMPDIR)/$(PKG) +# cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) $(PKGTDSZIP) + cd $(DISTTMPDIR) && zip -r $(CURDIR)/$(PKGZIP) $(PKG) + rm -rf $(DISTTMPDIR) + +cleandist: + @rm -f $(PKGZIP) diff --git a/Master/texmf-dist/tex/latex/phfextendedabstract/phfextendedabstract.cls b/Master/texmf-dist/tex/latex/phfextendedabstract/phfextendedabstract.cls new file mode 100644 index 00000000000..99a359b4c21 --- /dev/null +++ b/Master/texmf-dist/tex/latex/phfextendedabstract/phfextendedabstract.cls @@ -0,0 +1,293 @@ +%% +%% This is file `phfextendedabstract.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% phfextendedabstract.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright (C) 2021 by Philippe Faist, philippe.faist@bluewin.ch +%% +%% This file may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License, either version 1.3 of this license +%% or (at your option) any later version. The latest version of this +%% license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of LaTeX version +%% 2005/12/01 or later. +%% +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesClass{phfextendedabstract} + [2021/09/08 v1.0 phfextendedabstract class] +\RequirePackage{kvoptions} +\SetupKeyvalOptions{% + family=phfea,% + prefix=phfeaopt@% +} +\DeclareStringOption[]{papertype} +\DeclareStringOption[11pt]{ptsize} +\DeclareBoolOption[true]{sectiondecorations} +\DeclareBoolOption[true]{paragraphdecorations} +\DeclareVoidOption{noheadingdecorations}{% + \phfeaopt@sectiondecorationsfalse + \phfeaopt@paragraphdecorationsfalse +} +\DeclareBoolOption[true]{loadtheorems} +\DeclareBoolOption[true]{sansstyle} +\DeclareStringOption[1]{compressverticalspacing} +\DeclareBoolOption[true]{usehyperref} +\DeclareStringOption[extended]{pkgset} +\ProcessKeyvalOptions* +\providecommand\phfea@revtexopts{% + aps,pra,% + notitlepage,reprint,% + onecolumn,tightenlines,% + superscriptaddress,% + nofootinbib% +} +\PassOptionsToClass{% + \phfea@revtexopts,% + \phfeaopt@ptsize,% + \phfeaopt@papertype,% +}{revtex4-2} +\LoadClass{revtex4-2} +\RequirePackage{xparse} +\PassOptionsToPackage{% + preset=reset,% + pkgset=\phfeaopt@pkgset,% + \ifphfeaopt@usehyperref + hyperrefdefs={defer,noemail},% + \fi +}{phfnote} +\RequirePackage{phfnote} +\RequirePackage{geometry} +\geometry{hmargin=0.75in,vmargin=0.75in,marginparwidth=0.5in,marginparsep=0.125in} +\ifphfeaopt@sansstyle + \def\phfeaHeadingStyle{\sffamily} +\else + \def\phfeaHeadingStyle{} +\fi +\def\phfeaTitleStyle{\phfeaHeadingStyle\Large} +\def\frontmatter@title@format{\phfeaTitleStyle\centering\parskip\z@skip} +\edef\phfeaVerticalSpacingCompressionFactor{\phfeaopt@compressverticalspacing} +\def\phfea@scaleglue#1#2{% {factor}{glueexpr} + \glueexpr#2*\numexpr\dimexpr#1pt\relax\relax/65536\relax +} +\def\phfea@scalegluedpt#1#2{% {factor given as dimexpr in pt}{glueexpr} + \glueexpr#2*\numexpr#1\relax/65536\relax +} +\def\phfeaDisplayVerticalSpacingFactorWeight{.5} +\def\phfea@adjustskipweighted#1#2{% + #1=\glueexpr + \phfea@scalegluedpt{% + \dimexpr 1\p@ - #2\p@\relax + }{#1}% + + + \phfea@scaleglue{% + #2% + }{% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor + }{% + #1 + }% + }% + \relax +} +\AtBeginDocument{% + \phfea@adjustskipweighted\abovedisplayskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\belowdisplayskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\abovedisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight + \phfea@adjustskipweighted\belowdisplayshortskip\phfeaDisplayVerticalSpacingFactorWeight +} +\def\phfeaParskipVerticalSpacingFactorWeight{1} +\AtBeginDocument{% + \phfea@adjustskipweighted\parskip\phfeaParskipVerticalSpacingFactorWeight +} +\setcounter{secnumdepth}{0} +\setcounter{tocdepth}{1} +\def\phfeaSectionBeforeSkip{1.5ex plus 0.8ex minus 0.25ex} +\def\phfeaSectionAfterHSkip{1em plus 0.2em} +\def\phfeaSectionStyle{\normalfont\normalsize\phfeaHeadingStyle\bfseries} +\def\phfeaSectionFormatHeading#1{#1} +\def\phfeaSectionDecorationSymbol{% + \raisebox{0.2ex}{{\notesmaller[0.4]{\ensuremath{\blacksquare}}}}} +\ifphfeaopt@sectiondecorations + \def\phfeaSectionDecoration#1{% + \makebox[\z@][r]{{#1}\hspace*{1.5ex}}% + } +\else + \def\phfeaSectionDecoration#1{} +\fi +\def\phfeaParagraphBeforeSkip{0.6ex plus 0.4ex minus 0.1ex} +\def\phfeaParagraphAfterHSkip{0.75em plus 0.15em} +\def\phfeaParagraphStyle{\normalfont\normalsize\phfeaHeadingStyle\small} +\def\phfeaParagraphFormatHeading#1{#1} +\def\phfeaParagraphDecorationSymbol{% + \raisebox{0.2ex}{{\notesmaller[0.6]{\ensuremath{\triangleright}}}}} +\ifphfeaopt@paragraphdecorations + \def\phfeaParagraphDecoration#1{% + \makebox[\z@][r]{{#1}\hspace*{1ex}}% + } +\else + \def\phfeaParagraphDecoration#1{} +\fi +\def\phfea@ss@levelname#1{\ifcase#1\or section\or paragraph\fi} +\def\phfea@ss@levelName#1{\ifcase#1\or Section\or Paragraph\fi} +\def\phfea@ss@get#1#2{% + \csname phfea\phfea@ss@levelName{#1}#2\endcsname} +\def\phfea@ss@getnoexpand#1#2{% + \expandafter\noexpand\csname phfea\phfea@ss@levelName{#1}#2\endcsname} +\newtoks\phfea@ss@decorationtoks +\newtoks\phfea@ss@alttitle +\newtoks\phfea@ss@title +\NewDocumentCommand{\phfea@startsection}{m s t! d<> o m}{% + \phfea@ss@decorationtoks={#4}% + \phfea@ss@alttitle={#5}% + \phfea@ss@title={#6}% + \IfNoValueF{#4}{% + \IfBooleanT{#3}{% + \PackageWarning{phfextendedabstract}{section/paragraph: `!' + modifier ignored when custom decoration `<...>' is specified}% + }% + }% + \edef\x{% + \noexpand\@startsection{\phfea@ss@levelname{#1}}% + {#1}% + {\z@}% + {% + \noexpand\phfea@scaleglue{\noexpand\phfeaVerticalSpacingCompressionFactor}{% + \noexpand\glueexpr\phfea@ss@getnoexpand{#1}{BeforeSkip}\noexpand\relax + }% + }% + {\if\relax\detokenize{#6}\relax + \noexpand\z@ + \else + -\noexpand\glueexpr\phfea@ss@getnoexpand{#1}{AfterHSkip}\noexpand\relax + \fi}% + {% + \IfNoValueTF{#4}{% + \IfBooleanTF{#3}{% with "!", no custom decoration --> nothing + }{% no "!", no custom decoration + \phfea@ss@getnoexpand{#1}{Decoration}% + \phfea@ss@getnoexpand{#1}{DecorationSymbol}% + }% + }{% with custom decoration (ignores "!" argument) + \phfea@ss@getnoexpand{#1}{Decoration}% + {\the\phfea@ss@decorationtoks}% + }% + \phfea@ss@getnoexpand{#1}{Style}% + }% + \IfBooleanT{#2}{*}% + \IfValueTF{#4}{[\the\phfea@ss@alttitle]}{% + \IfBooleanTF{#2}{[]}{[\the\phfea@ss@title]}% + }% + {% + \if\relax\detokenize{#6}\relax\else + \noexpand\texorpdfstring{% + \phfea@ss@getnoexpand{#1}{FormatHeading}{\the\phfea@ss@title}% + }{% + \the\phfea@ss@title + }% + \fi + }% + }% + %\message{**** EMITTING @startsection: |\detokenize\expandafter{\x}| ***}% + \x +} +\def\section{\phfea@startsection{1}} +\def\paragraph{\phfea@startsection{2}} +\def\phfea@nosectioncmd#1{% + \ClassError{phfextendedabstract}{% + % + There is no `\string#1' command in `phfextendedabstract' + documents. You can only use `\string\section' and + `\string\paragraph'. If you find yourself needing additional + sectioning levels, it might be that your extended abstract is too + detailed and you should stick to a higher level description of + your results. If you do need additional section levels, it is + likely that you will be better off with a different document + class. If you'd like to stick with `phfextendedabstract' and you + really know what you're doing, then you could redefine the + sectioning commands as necessary based on `\string\@startsection' + as is done in standard LaTeX classes. Good luck! + % + }{}% +} +\def\phfea@nosectioncmd@def#1{% + \def#1{\phfea@nosectioncmd#1}% +} +\phfea@nosectioncmd@def\part +\phfea@nosectioncmd@def\chapter +\phfea@nosectioncmd@def\subsection +\phfea@nosectioncmd@def\subsubsection +\phfea@nosectioncmd@def\subparagraph +\def\phfeaListsVerticalSkip{0.6ex plus 0.4ex minus 0.1ex} +\def\phfeaListsItemSep{0.3ex plus 0.15ex minus 0.1ex} +\def\phfeaListsParSep{0.7\parskip} +\def\phfea@setup@enumitem{% + \setlist{% + itemsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsItemSep}}, + parsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsParSep}}, + topsep={% + \phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}, + }% + \newlist{enumerate*}{enumerate*}{1} + \setlist[enumerate*]{ + label={(\roman*)}, + before={}, + itemjoin={{ }}, + itemjoin*={{ and }} + }% +} +\@ifpackageloaded{enumitem}{\phfea@setup@enumitem}{} +\def\phfeaDefineTheoremStyle{% + \newtheoremstyle{phfextendedabstractthm}% + {\phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}% + {\phfea@scaleglue{% + \phfeaVerticalSpacingCompressionFactor}{\phfeaListsVerticalSkip}}% + {\itshape}% + {\z@}% + {\bfseries\itshape}% + {:}% + {0.8em}% + {\thmname{##1\thmnumber{ ##2}\thmnote{ (##3)}}}% +} +\ifdefined\newtheoremstyle + \phfeaDefineTheoremStyle +\fi +\ifphfeaopt@loadtheorems + \ifdefined\newtheoremstyle\else + \ClassError{phfextendedabstract}{% + % + Impossible to load theorems (`loadtheorems=true') because there + is no \string\newtheoremstyle\space command that was defined. + Consider setting `pkgset=...' so that a theroems-related package + (e.g., amsthm) is loaded! (e.g. `pkgset=minimal', `pkgset=rich' + or `pkgset=extended'). Alternatively, set the class option + `loadtheorems=false' and you can then manually define any + theorem environments you'd like using your favorite pacakges. + % + }{} + \fi + \PassOptionsToPackage{proofref=false,theoremstyle=phfextendedabstractthm}{phfthm} + \RequirePackage{phfthm} +\fi +%% \let\rtxapsbibsection\bibsection +%% \def\bibsection{% +%% \par\section{\refname}\leavevmode\par\addvspace{4pt}\relax +%% %% \par\noindent\rule{6em}{.4pt}\par\addvspace{6pt}\relax +%% } +\endinput +%% +%% End of file `phfextendedabstract.cls'. -- cgit v1.2.3