diff options
Diffstat (limited to 'macros/latex/contrib')
28 files changed, 1739 insertions, 914 deletions
diff --git a/macros/latex/contrib/count1to/README.md b/macros/latex/contrib/count1to/README.md new file mode 100644 index 0000000000..ac3bfc11de --- /dev/null +++ b/macros/latex/contrib/count1to/README.md @@ -0,0 +1,28 @@ +# The LaTeX package `count1to` + +Copyright (C) 1995–2009 Martin Schröder + +count1to 2024-06-13 v2.11 Count1to LaTeX Package + +This is the original release of Count1to. The new upload has only been done to split the ms-bundle. + +The current maintainer of this package is Marei Peischl <marei@peitex.de> + +*************************************************************************** + + This material is subject to the LaTeX Project Public License version 1.3c + or later. See http://www.latex-project.org/lppl.txt for details. + +*************************************************************************** + +## Provided files + +* README.md +* count1to.dtx +* count1to.ins + +The files +* count1to.sty +* count1to.drv +can be generated from the count1to.dtx by processing the count1to.ins-file. + diff --git a/macros/latex/contrib/ms/count1to.dtx b/macros/latex/contrib/count1to/count1to.dtx index 35918bce60..8dba871174 100644 --- a/macros/latex/contrib/ms/count1to.dtx +++ b/macros/latex/contrib/count1to/count1to.dtx @@ -1,11 +1,41 @@ +%% \iffalse meta-comment +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Copyright (C) Martin Schröder, 1994–2009 +% Marei Peischl (peiTeX) <marei@peitex.de>, 2024 +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% 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.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% This package is maintained but will not receive any additional features. +% +% The Current Maintainer of this work is +% Marei Peischl <marei@peitex.de>. +% +% This work consists of the files +% README.md +% count1to.dtx +% count1to.ins +% and the derived file +% count1to.sty. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi % \iffalse \NeedsTeXFormat{LaTeX2e} %<package>\ProvidesPackage{count1to} -%<package> [2009/05/24 v2.1 Count1to9 Package (MS)] +%<package> [2024-06-13 v2.11 Count1to9 Package (MS)] % %<*driver> \ProvidesFile{count1to.drv} - [2009/05/24 v2.1 Driver for Count1to9 Package (MS)] + [2024-06-13 v2.111 Driver for Count1to9 Package] \documentclass[a4paper]{ltxdoc} \usepackage[T1]{fontenc} \usepackage{lmodern} @@ -14,7 +44,12 @@ \usepackage{url} \usepackage{count1to} \usepackage[toc]{multitoc} -\usepackage{svn} +\makeatletter +\IfFileExists{gitHeadInfo.gin}{ + \newcommand*{\GI@githeadinfo@file}{gitHeadInfo.gin} +}{} +\makeatother +\usepackage{gitinfo2} \usepackage{hypdoc} \usepackage{geometry} \GetFileInfo{count1to.sty} @@ -41,74 +76,8 @@ \DocInput{count1to.dtx} \end{document} %</driver> -%^^A $Id: count1to.dtx 1368 2009-05-24 16:02:57Z oneiros $ -% -% Copyright (c) 1994..2009 by Martin Schr\"oder. All rights reserved. -% -% This work 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. -% -% This work has the LPPL maintenance status `maintained'. -% -% The Current Maintainer of this work is Martin Schr\"oder. -% -% This work consists of the files count1to.dtx and count1to.ins -% and the derived file count1to.sty. -% % \fi % -% \CheckSum{112} -% -%% \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 \~} -%% -%% \iffalse meta-comment -%% =================================================================== -%% @LaTeX-style-file{ -%% author = {Martin Schr\"oder}, -%% version = "2.1", -%% date = "24 May 2009", -%% filename = "count1to.sty", -%% address = {Martin Schr\"oder -%% Barmer Stra\"se 14 -%% 44137 Dortmund -%% Germany} -%% telephone = "+49-231-1206574", -%% email = "martin@oneiros.de", -% codetable = "ISO/ASCII", -% keywords = "LaTeX, pages", -% supported = "yes", -%% docstring = "LaTeX package which sets count1 to count9, -%% which can be used to select certain pages -%% with a driver. -%% Also provides access to the number of pages -%% of the document. -%% Uses the everyshi package." -%% } -%% =================================================================== -%% \fi -% -% \SVN $Rev: 1368 $ -% \SVN $Date: 2009-05-24 18:02:57 +0200 (So, 24. Mai 2009) $ -% % \changes{v1.00}{1994/12/07}{New} % \changes{v1.01}{1994/12/09}{Documentation improved} % \changes{v1.02}{1996/12/29}{Documentation improved} @@ -116,6 +85,7 @@ % \changes{v1.22}{1999/06/08}{Moved to LPPL} % \changes{v2.00}{2002/08/31}{Removed \texttt{TotalPages}} % \changes{v2.1}{2009/05/24}{New address} +% \changes{v2.11}{2024-06-13}{Maintainer changed + removed from ms bundle + move to git} % % \newcommand*{\Count}[1]{\texttt{\symbol{92}count#1}} % \newcommand*{\package}[1]{\textnormal{\sffamily#1}} @@ -129,19 +99,15 @@ % \title{\unskip % The \package{count1to} package^^A % \thanks{^^A -% The version number of this file is \fileversion, subversion -% revision~\#\SVNRev, last revised -% \protect\SVNDate.\protect\newline +% The version number of this file is \fileversion, +% revision~\#\gitAbbrevHash, last revised \protect\gitAuthorIsoDate.\protect\newline % The name \textsf{count1to} is a tribute to the $8+3$ file-naming % convention of certain ancient ``operating systems''; strictly % speaking it should be \textsf{count1to9}.} % } % \changes{v2.00}{2002/08/31}{Changed e-mail} -% \author{Martin Schr\"oder\\[0.5ex] -% \normalsize Barmer Stra\ss{}e 14\\ -% \normalsize 44137 Dortmund\\ -% \normalsize Germany\\ -% \normalsize martin@oneiros.de} +% \author{Martin Schröder\\ +% \url{https://gitlab.com/TeXhackse/count1to}\thanks{maintained by Marei Peischl}} % \date{\filedate} % \maketitle % @@ -169,7 +135,7 @@ % \section{Introduction to version 2} % ^^A % The main change of this new version is the removal of the code for -% the \texttt{TotalPages} label. +% the \texttt{TotalPages} label. % This code didn't work with the \package{hyperref} % package\cite{package:hyperref} and better code to achieve the % effect of it is contained in the \package{totpages} @@ -184,15 +150,15 @@ % % \section{Introduction} % ^^A -% Most of the time users want to print only certain parts of a +% Most of the time users want to print only certain parts of a % document; but these can only be selected by using the page numbers % of these parts with most device drivers. -% This can be dif\/ficult or impossible if pages in dif\/ferent -% parts of the document have the same number---e.\,g. in the +% This can be dif\/ficult or impossible if pages in dif\/ferent +% parts of the document have the same number---e.\,g. in the % frontmatter and the first text pages (iii vs. 3). % % \TeX{} provides an easy solution to this problem: whenever a page -% is completed by the output routine and shipped out via +% is completed by the output routine and shipped out via % \cs{shipout}, it displayes the values of \Count{0} to \Count{9} % on the display (e.\,g. \texttt{[1]}) \emph{and writes them to the % \textsf{.dvi} file}. @@ -201,10 +167,10 @@ % \begin{quote} % ``The first ten \Count{} registers, \Count{0} to \Count{9}, % are reserved for a special purpose: \TeX{} displays these ten -% counts on your terminal whenever ouputting a page, and it +% counts on your terminal whenever ouputting a page, and it % transmits them to the output file as an identification of that % page. -% The counts are separated by decimal points on your terminal, +% The counts are separated by decimal points on your terminal, % with trailing `\texttt{.0}' patterns suppressed. % Thus, for example, if \Count{0=5} and \Count{2=7} when a % page is shipped out to the \texttt{dvi} file, and if the other @@ -218,14 +184,14 @@ % \end{quote} % % \noindent -% Surprinsingly, until recently there existed no package for -% \LaTeX{} that used these \Count{}ers although some drivers allow -% the selection of pages based on other \Count{}s then \Count{0} +% Surprinsingly, until recently there existed no package for +% \LaTeX{} that used these \Count{}ers although some drivers allow +% the selection of pages based on other \Count{}s then \Count{0} % (e.\,g. em\TeX). % -% This package is the solution: It uses the \package{everyshi} -% package\cite{package:everyshi} to set \Count{1} to \Count{9} before -% each \cs{shipout} with these values: +% This package is the solution: It used the \package{everyshi} +% package\cite{package:everyshi} to set \Count{1} to \Count{9} before +% each \cs{shipout} with these values. Today it is using the kernel's shipout hooks \cite{texdoc:ltshipout}. % % \begin{center} % \begin{tabular}{cl}\toprule @@ -239,7 +205,7 @@ % 6 & number of current \cs{subsubsection} \\ % 7 & number of current \cs{paragraph} \\ % 8 & number of current \cs{subparagraph} \\ -% 9 & 1 on odd pages, 0 on even pages\footnotemark\\ +% 9 & 1 on odd pages, 0 on even pages\footnotemark\\ % \bottomrule % \end{tabular} % \end{center} @@ -248,25 +214,25 @@ % % \noindent % \textsf{count1to} also works with classes that do not define some -% or all of the sectioning commands and their counters, like +% or all of the sectioning commands and their counters, like % \textsf{letter}. % Although it is of somewhat little use then \texttt{:-)}. % % A note for users of this package: When you select the pages of -% some part of your document with a lower structure than +% some part of your document with a lower structure than % \cs{chapter}, remember that only \cs{part}s and \cs{chapter}s % start on a new page; if you want to print a complete % \cs{section}, you should also select the first page of the next % \cs{section}. % Also note that \TeX{} ships out the values of the counters instead -% of their visual representation (produced with +% of their visual representation (produced with % \cs{the}\emph{counter}), so appendix A sets \Count{4} to 1 in the % article class. % % A note for developers of device drivers: Please add support for % \Count{1} to~\texttt{9} to your programs. -% It would also be nice if users could easily select the next -% page(s) after a certain count (something like +% It would also be nice if users could easily select the next +% page(s) after a certain count (something like % ``\texttt{*.*.*.*.2+1.*}'' should be possible for selecting all % pages with $\Count{4}\mapsto\mathrm{section}=2$ plus the first % page of section~3). @@ -282,8 +248,7 @@ % % \section{Required packages} % ^^A -% The package requires the \package{everyshi} -% package\cite{package:everyshi}. +% With \LaTeX2e{} releases newer than 2020/10/01 this package does not require any other package. % % % ^^A ----------------------------- @@ -322,10 +287,14 @@ % \newblock Hypertext marks in \LaTeX. % \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/hyperref/}. % \bibitem{package:everyshi} -% Martin Schr\"oder. +% Martin Schröder. % \newblock The \package{everyshi} package. % \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/ms/everyshi.dtx}. % \newblock \LaTeXe{} package. +% \bibitem{texdoc:ltshipout} +% \newblock Frank Mittelbach, \LaTeX{} Project Team. +% \newblock The ltshipout documentation. +% \newblock \url{https://mirrors.ctan.org/macros/latex/base/ltshipout-doc.pdf} % \end{thebibliography} % % } @@ -340,12 +309,9 @@ %<*package> % \end{macrocode} % -% We need the \package{everyshi} package. % \changes{v1.20}{1998/04/10}{don't require \textsf{ifthen}} % \changes{v1.10}{1997/11/01}{require \textsf{ifthen}} -% \begin{macrocode} -\RequirePackage{everyshi}[1994/12/09] -% \end{macrocode} +% \changes{v2.11}{2024-06-13}{\package{everyshi} is obsolete} % % We need various \cs{if}s to check if the used counters % are defined. @@ -391,9 +357,9 @@ % not reset. % This is normally no problem, but with this package, it is: If this % bug is not fixed or worked-around, then whenever you use -% \cs{subparagraph} or some other lower sectioning command, and -% after that a sectioning command that is at least two levels higher -% (e.\,g. \cs{subsubsection}), the value of \texttt{subparagraph} +% \cs{subparagraph} or some other lower sectioning command, and +% after that a sectioning command that is at least two levels higher +% (e.\,g. \cs{subsubsection}), the value of \texttt{subparagraph} % would not be reset and would still be displayed and shipped out. % So we have to associate \emph{all} lower-level sectioning commands % with the higher levels. @@ -446,13 +412,13 @@ \@countItoIX@ifs\let\@countItoIX@ifs\undefined \@countItoIX@bugfix\let\@countItoIX@bugfix\undefined } -\AtBeginDocument{\@countItoIX@init} +\AddToHook{begindocument}[count1to-init]{\@countItoIX@init} % \end{macrocode} % \end{macro} % % % \begin{macro}{\@countItoIX@shipout} -% \cs{@countItoIX@shipout} is used for setting \Count{1} to +% \cs{@countItoIX@shipout} is used for setting \Count{1} to % \Count{9} at each \cs{shipout}. % \begin{macrocode} \newcommand*{\@countItoIX@shipout}{ @@ -464,7 +430,7 @@ % \end{macrocode} % \Count{2} to \Count{8} are set with the values of % \cs{part} to \cs{subparagraph}, if these commands are defined.^^A -% \footnote{We should probably also check the value of +% \footnote{We should probably also check the value of % \texttt{secnumdepth}, but I don't think this is necessary.} % \changes{v1.20}{1998/04/10}{don't use \textsf{ifthen}} % \changes{v1.10}{1997/11/01}{\cs{ifthenelse}} @@ -481,7 +447,16 @@ % \begin{macrocode} \ifodd\count1\count9=1 \else\count9=0 \fi } -\EveryShipout{\@countItoIX@shipout} +% \end{macrocode} +% \changes{v2.11}{2024-06-13}{Remove everyshi but add compatibility mode} +% \begin{macrocode} +\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} +\IfFormatAtLeastTF{2020/10/01}{ + \AddToHook{shipout/before}[count1to-shipout]{\@countItoIX@shipout} +}{ + \RequirePackage{everyshi} + \EveryShipount{\@countItoIX@shipout} +} % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/count1to/count1to.ins b/macros/latex/contrib/count1to/count1to.ins new file mode 100644 index 0000000000..8dccfd0487 --- /dev/null +++ b/macros/latex/contrib/count1to/count1to.ins @@ -0,0 +1,47 @@ +\input docstrip.tex +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{count1to.ins} + [2024-06-13 v2.11 Installation script for Count1to9 Package] + +\preamble + +Copyright (c) 1994–2009 Martin Schröder, 2024 Marei Peischl (peiTeX) <marei@peitex.de> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +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.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is + Marei Peischl <marei@peitex.de>. + +This work consists of the files count1to.dtx and count1to.ins +and the derived file count1to.sty. + +\endpreamble +\keepsilent +\askforoverwritefalse +\generate{% + \file{count1to.sty}{\from{count1to.dtx}{package}} +} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* style files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space count1to.sty} +\Msg{*} +\Msg{* To produce the documentation run the file count1to.dtx} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +\endbatchfile +%% +%% End of file `count1to.ins'. diff --git a/macros/latex/contrib/count1to/count1to.pdf b/macros/latex/contrib/count1to/count1to.pdf Binary files differnew file mode 100644 index 0000000000..73f4923e9b --- /dev/null +++ b/macros/latex/contrib/count1to/count1to.pdf diff --git a/macros/latex/contrib/easybook/README.md b/macros/latex/contrib/easybook/README.md index 69649bccb3..8fdda59027 100644 --- a/macros/latex/contrib/easybook/README.md +++ b/macros/latex/contrib/easybook/README.md @@ -1,5 +1,5 @@ # `easybook` document class -Easily typesetting Chinese theses or books (v2024cb) +Easily typesetting Chinese theses or books (v2024cd) ## Abstract `easybook` is a pure academic template created based on the `ctexbook` book document class. It also has the functions of `book` and `article` document class. Combined with the general framework design of the theses of many universities in China, providing multiple commands and interfaces allows users to easily customize the theses templates. Its basic macro package `easybase` can also be used with `ctex` and standard document classes. diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index fcc00b9655..03d076c901 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -14,7 +14,7 @@ % This work has the LPPL maintenance status `maintained'. %<class|package>\NeedsTeXFormat{LaTeX2e}[2021/11/15] %<*class> -\ProvidesExplClass{easybook}{2024/06/13}{2024cc} +\ProvidesExplClass{easybook}{2024/06/14}{2024cd} {Easily typesetting Chinese theses or books} \bool_new:N \l__eb_compile_draft_bool @@ -300,7 +300,7 @@ %</class> %<*package> \RequirePackage{etoolbox} -\ProvidesExplPackage{easybase}{2024/06/13}{2024cc} +\ProvidesExplPackage{easybase}{2024/06/14}{2024cd} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -387,6 +387,8 @@ \bool_set_true:N \l__eb_class_mode_book_bool \bool_set_false:N \l__eb_compile_draft_bool \clist_new:N \g__eb_ctex_options_clist +\cs_new_protected:Npn \eb_put_geometry:n #1 + { \PassOptionsToPackage{#1}{geometry} } \keys_define:nn { easybase } { @@ -401,19 +403,19 @@ theorem .bool_set:N = \l__eb_theorem_support_bool, theorem .default:n = true, theorem .initial:n = true, - paper .code:n = \PassOptionsToPackage{#1}{geometry}, + paper .code:n = \eb_put_geometry:n {#1}, paper .initial:n = a4paper, class .choice:, class .value_required:n = true, class/book .code:n = { \bool_set_true:N \l__eb_class_mode_book_bool - \PassOptionsToPackage{twoside}{geometry} + \eb_put_geometry:n { twoside } }, class/article .code:n = { \bool_set_false:N \l__eb_class_mode_book_bool - \PassOptionsToPackage{twoside = false}{geometry} + \eb_put_geometry:n { twoside = false } }, class .initial:n = book, book .meta:n = { class = book }, @@ -591,8 +593,7 @@ \cs_new_protected:Npn \blankpagestyle #1 { \tl_set:Nn \l__eb_blank_pagestyle_tl {#1} } \blankpagestyle{empty} -\RenewDocumentCommand{\cleardoublepage} - {O{\l__eb_blank_pagestyle_tl}} +\RenewDocumentCommand{\cleardoublepage}{O{\l__eb_blank_pagestyle_tl}} { \clearpage \ifbool{@twoside} @@ -613,19 +614,6 @@ \booltrue{@mainmatter} \pagenumbering{arabic} } -\clist_map_inline:nn - { chapter,section,subsection } - { - \exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout } - {O{\use:c { CTEXthe#1 }}m} - {\tl_set:cn { eb@mark@#1@label } {##1##2}} - \cs_new_protected:cpn { eb_mark_#1_name_parse:n } ##1 - { - \regex_match:nnTF { \[.*\] } {##1} - { \use:c { eb@mark@#1@label@layout }##1 } - { \use:c { eb@mark@#1@label@layout }{##1} } - } - } \NewDocumentCommand{\markrule} {O{\textwidth}D(){ctex@frame}m>{\SplitArgument{1}{|}}O{}} {\eb_draw_markrule:nnnnn {#1} {#2} {#3} #4} @@ -646,32 +634,49 @@ { none* } { \text_lowercase:n } } } -\ctex_define:nn { hdr } +\cs_new_protected:Npn \eb@register@hdr@mark #1 { - chap-mark .cs_set:Np = \eb@mark@chapter@whole #1, - chap-mark .initial:n = - { - \CTEXifname{\eb@mark@chapter@label}{} - \eb_mark_uppercase_case_init:n {#1} - }, - sec-mark .cs_set:Np = \eb@mark@section@whole #1, - sec-mark .initial:n = + \exp_args:Nc \NewDocumentCommand { eb@mark@#1@label@layout } + {O{\use:c { CTEXthe#1 }}m} + {\tl_set:cn { eb@mark@#1@label } {##1##2}} + \cs_new_protected:cpn { eb_mark_#1_name_parse:n } ##1 { - \CTEXifname{\eb@mark@section@label}{} - \eb_mark_uppercase_case_init:n {#1} - }, - subsec-mark .cs_set:Np = \eb@mark@subsection@whole #1, - subsec-mark .initial:n = + \regex_match:nnTF { ^\[.*\] } {##1} + { \use:c { eb@mark@#1@label@layout }##1 } + { \use:c { eb@mark@#1@label@layout }{##1} } + } + \ctex_define:nn { hdr } { - \CTEXifname{\eb@mark@subsection@label}{} - \eb_mark_uppercase_case_init:n {#1} - }, - chap-label .code:n = \eb_mark_chapter_name_parse:n {#1}, - chap-label .initial:n = \hspace{1em}, - sec-label .code:n = \eb_mark_section_name_parse:n {#1}, - sec-label .initial:n = \hspace{0.5em}, - subsec-label .code:n = \eb_mark_subsection_name_parse:n {#1}, - subsec-label .initial:n = \hspace{0.5em}, + #1-mark .cs_set:cp = { eb@mark@#1@whole } ##1, + #1-mark .initial:n = + { + \CTEXifname{\use:c { eb@mark@#1@label }}{} + \eb_mark_uppercase_case_init:n {##1} + }, + #1-label .code:n = \use:c { eb_mark_#1_name_parse:n } {##1}, + } + } +\cs_new_protected:Npn \RegisterHdrMark #1 + { + \clist_map_function:nN {#1} + \eb@register@hdr@mark + } +\RegisterHdrMark{chapter,section,subsection} + +\ctex_set:nn { hdr } + { + chapter-label = \hspace{1em}, + section-label = \hspace{0.5em}, + subsection-label = \hspace{0.5em} + } +\ctex_define:nn { hdr } + { + chap-mark .meta:n = { chapter-mark = {#1} }, + sec-mark .meta:n = { section-mark = {#1} }, + subsec-mark .meta:n = { subsection-mark = {#1} }, + chap-label .meta:n = { chapter-label = {#1} }, + sec-label .meta:n = { section-label = {#1} }, + subsec-label .meta:n = { subsection-label = {#1} }, headrulewd .dim_set:N = \eb@head@rule@wd, headrulewd .initial:n = 0.5pt, footnoterulewd .dim_set:N = \eb@footnote@rule@wd, @@ -2611,7 +2616,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2024/06/13}{2024cc} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/06/14}{2024cd} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex 3e37b76787..ec5a34b05e 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 75c213ecaa..3fcd9cf291 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024cc, - date = 2024/06/13, + version = v2024cd, + date = 2024/06/14, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -393,7 +393,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \newcommand{\bracketsf}[1]{[\textsf{#1}} \ebtoolsset{tagform = {\bracketsf,]}} \end{ctexexam} - \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}}\newtagv[Changed]{2024cc}% + \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}}\newtagv[Changed]{2024cd}% 设置插入图片的文件夹路径名。每个路径需包含在花括号内,只有一个路径时括号可以省略。 \begin{ctexexam} \ctexset{tools/figurepath = path1} @@ -487,7 +487,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \label{subsec:reference} \begin{cnltxlist} \keychoice{backend}{\fbox{bibtex},biblatex} - 参考文献处理后端。默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。 + 参考文献处理后端。选择 \code{bibtex} 时使用传统的 \hologo{BibTeX} 引擎处理参考文献,加载 \pkg*{natbib} 宏包。选择 \code{biblatex} 时使用 \hologo{biber} 引擎,加载 \pkg*{biblatex} 宏包。 \keychoice{bibstyle}{\fbox{numerical},authoryear,\optpath*{other sty}} 参考文献格式使用中国参考文献推荐标准GB/T 7714-2015,对应顺序编码制和著者—出版年制两种风格。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。 \keyval{citestyle}{标注风格} @@ -608,7 +608,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \subsection[页面尺寸]{页面尺寸\smodule{geo}} \label{subsec:page margins} -模块 \module*{geo} 会将选项(除了前两个为附加)交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种代表性选项,其它选项可查阅宏包帮助文档。当在此设置纸张规格时,会覆盖文类选项 \option{paper} 的设置。 +模块 \module*{geo} 会将选项(除了前两个为附加)交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种代表性选项,其它选项可查阅宏包帮助文档。当用此模块设置纸张规格时,会覆盖全局选项 \option{paper} 的设置。 \begin{cnltxlist}[itemsep = 0ex] \keyval{headruleskip}{页眉线间距}\Default*{0pt} \keyval{footruleskip}{页脚线间距}\Default*{3.5pt} @@ -617,7 +617,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \keyval{textheight}{版心文本高度}\default{} \keychoice{nofoot}{true,\fbox{false}}\default{} \begin{ctexexam} - \ebgeoset + \ctexset[geo] { headruleskip = 3pt, vscale = 0.9, @@ -629,27 +629,27 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \subsection[页眉页脚]{页眉页脚\smodule{hdr}} \label{subsec:header and footer} -模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。 +模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chapter-mark} 和 \option{section-mark},在 \cls*{article} 模式时使用 \option{section-mark} 和 \option{subsection-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。 \begin{cnltxlist} - \keyval{chap-mark}{标题标记} - \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chap-label} 和章标题 \code{\#1}。 - \keyval{sec-mark}{标题标记} - \code{section} 级别标题标记的内容,包含了标签选项 \option{sec-label} 和节标题 \code{\#1}。 - \keyval{subsec-mark}{标题标记} - \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsec-label} 和小节标题 \code{\#1}。 - \kvsplit-{chap-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}} + \keyval{chapter-mark}{标题标记} + \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chapter-label} 和章标题 \code{\#1}。 + \keyval{section-mark}{标题标记} + \code{section} 级别标题标记的内容,包含了标签选项 \option{section-label} 和节标题 \code{\#1}。 + \keyval{subsection-mark}{标题标记} + \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsection-label} 和小节标题 \code{\#1}。 + \kvsplit-{chapter-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}} \code{chapter} 级别标题标记的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是编号与标题之间的距离命令: \begin{ctexexam} \ebhdrset { - chap-label = [\thechapter]{\hspace{1em}}, - sec-mark = \CTEXifname{\CTEXthesection——}{}#1 + chapter-label = [\thechapter]{\hspace{1em}}, + section-mark = \CTEXifname{\CTEXthesection——}{}#1 } \end{ctexexam} - \kvsplit-{sec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} - \code{section} 级别标题标记的标签,用法与 \option{chap-label} 类似。 - \kvsplit-{subsec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} - \code{subsection} 级别标题标记的标签,用法与 \option{chap-label} 类似。 + \kvsplit-{section-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} + \code{section} 级别标题标记的标签,用法与 \option{chapter-label} 类似。 + \kvsplit-{subsection-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} + \code{subsection} 级别标题标记的标签,用法与 \option{chapter-label} 类似。 \keyval{headrule}{横线命令} 绘制页眉横线的选项,可以使用 \cs*{hrule} 或\ref{exam:markrule} 所述 \cs{markrule} 等画线命令来绘制横线。 \keyval{footrule}{横线命令} @@ -677,7 +677,12 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \command{markboth}[\marg{左页标题标记}\marg{右页标题标记}]\default{} \command{markright}[\marg{右页标题标记}]\default{} \command{markdouble}[\marg{双页标题标记}] - 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。上述标记命令内容的选项便是基于这三个命令。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。 + 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。标题标记选项 \meta{级别}\option*{-mark} 定义的是它们的参数,左右页标记规则已经进行了优化调整,若需更改可以重定义 \code{\textbackslash}\meta{级别}\code{\textcolor{cs}{mark}} 命令。 + \begin{ctexexam} + \makeatletter + \renewcommand{\sectionmark}[1]{\markright{\eb@mark@section@whole{#1}}} + \makeatother + \end{ctexexam} \end{cnltxlist} \command{markrule}[\oarg{长度}\darg{颜色名}\marg{线宽}\baroarg{上间距,下间距}] 实线命令 \cs{markrule} 既可在 \meta{横线命令} 中用于绘制页眉页脚横线,也可以在正文中使用。\meta{长度} 默认为版心的宽度,上下间距为横线与上下方部件的间距,带有长度单位,上下间距之间用符号 \code{|} 分开,若只有一部分则表示 \meta{上间距}。下面举一个设置页眉内容的例子: @@ -705,7 +710,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \keyval{fnparskip}{弹性长度}\Default{0ex plus .1ex} 不同脚注自身的段落间距,脚注内容文本分段时生效,等于长度 \cs{fnparskip} 的值。 \keyval{footnotesep}{刚性长度} - 不同脚注之间的距离,默认情况下它自适应 \module*{space} 模块脚注行距选项 \option{footnote} 的值。 + 不同脚注之间的距离,默认情况下它自适应 \module*{space} 模块脚注行距选项 \option{fntspread} 的值。 \keychoice{fntext-pos}{normal,\fbox{super}} 设置脚注内容标记的位置,正常文本或是上标形式。 \keychoice{fnmark-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,\optpath*{short num}} @@ -1148,7 +1153,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \subsection{代码} \begin{cnltxlist} \command{lstdefinestyle}[\marg{代码风格}\marg{键值列表}] - 代码抄录宏包 \pkg*{listings} 的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言和样式定义多种风格,默认使用的 \meta{代码风格} 为 \code{lst-latex}。 + 代码抄录宏包 \pkg*{listings} 提供了完善的排版功能,不需要前端处理器。这是它的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言定义多种风格,默认使用的 \meta{代码风格} 为适用于\TeX 语言的 \code{lst-latex}。 \command{lstinline}[\oarg{键值列表}\marg{行内代码}] 行内代码抄录命令。较原生的 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。 \environment{lstlisting}[\oarg{键值列表}] @@ -1407,7 +1412,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \item 新增行间公式与正文上下间距选项 \option{abovedisplayskip} 和 \option{belowdisplayskip}。 \item 新增目录文件扩展名分配命令 \cs{AllotCaptionExt}。 \end{version} - \shortversion{v = 2024aq,date = 2022/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} + \shortversion{v = 2024aq,date = 2024/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} \begin{version}[v = 2024as,date = 2024/04/19] \changed \item 目录条目样式注册命令 \cs{RegisterTocName} 增加星号参数,支持设置段落型目录。 @@ -1415,16 +1420,16 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \item 新增目录条目标题标签定义的选项 \option{toclabel}。 \item 新增段落型目录条目附加代码的选项 \option{tocbegin}、\option{tocsep} 和 \option{tocend}。 \end{version} - \shortversion{v = 2024aw,date = 2022/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。} - \shortversion{v = 2024bb,date = 2022/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。} - \shortversion{v = 2024bk,date = 2022/05/07,changes = 新增局部题注目录分配命令 \cs{AllotPartialExt}。} - \begin{version}[v = 2024bn,date = 2022/05/10] + \shortversion{v = 2024aw,date = 2024/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。} + \shortversion{v = 2024bb,date = 2024/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。} + \shortversion{v = 2024bk,date = 2024/05/07,changes = 新增局部题注目录分配命令 \cs{AllotPartialExt}。} + \begin{version}[v = 2024bn,date = 2024/05/10] \fixed \item 修复 \module*{toc} 模块中带有 \option*{every} 后缀的选项不对所有已注册条目有效的问题。 \added \item 新增统一设置所有目录格式时的条目类型排除命令 \cs{ExcludeEveryTocName}。 \end{version} - \shortversion{v = 2024cc,date = 2022/06/13,changes = 修复全局选项 \option{class} 无法正确切换单双面排版的问题。} + \shortversion{v = 2024cd,date = 2024/06/14,changes = 修复全局选项 \option{class} 无法正确切换单双面排版的问题。} \end{changelog} \nocite{*} diff --git a/macros/latex/contrib/ms/README.md b/macros/latex/contrib/ms/README.md deleted file mode 100644 index 65a355a9fc..0000000000 --- a/macros/latex/contrib/ms/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# ms – Various LaTeX packages by Martin Schröder - -Copyright (C) 1994–2011 Martin Schröder - -multitoc 1999/06/08 v2.01 MultiToc Package -count1to 2009/05/25 v2.1 Count1to LaTeX Package - -The new upload has only been done to split the ms-bundle. -The packages everyshi, everysel and prelim2e are no longer part of this bundle - -The current maintainer of this package is Marei Peischl <marei@peitex.de> diff --git a/macros/latex/contrib/ms/count1to.ins b/macros/latex/contrib/ms/count1to.ins deleted file mode 100644 index 1bd534ef1d..0000000000 --- a/macros/latex/contrib/ms/count1to.ins +++ /dev/null @@ -1,112 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesFile{count1to.ins} - [2009/05/24 v2.1 Installation script for Count1to9 Package (MS)] -%% -%% Copyright (c) 1994..2009 by Martin Schr\"oder. All rights reserved. -%% -%% This work 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. -%% -%% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainer of this work is Martin Schr\"oder. -%% -%% This work consists of the files count1to.dtx and count1to.ins -%% and the derived file count1to.sty. -%% -%% This file will be used by the docstrip.tex program to generate -%% fast loadable files from the doc files. -%% -%% $Id: count1to.ins 1368 2009-05-24 16:02:57Z oneiros $ -%% -%% --------------- start of docstrip commands ------------------ -\input docstrip.tex -{\ifx\endbatchfile\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.4d or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old docstrip.tex.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* The count1to distribution contains these files:} -\Msg{*} -\Msg{* \space\space count1to.dtx} -\Msg{* \space\space count1to.ins} -\Msg{* \space\space count1to.bug} -\Msg{*} -\Msg{* If you receive only some of these files from someone, complain!} -\Msg{*} -\Msg{***********************************************************} - -\preamble - -Copyright (c) 1994..2009 by Martin Schroeder. All rights reserved. - -This file is part of the Count1to package - -This work 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. - -This work has the LPPL maintenance status `maintained'. - -The Current Maintainer of this work is Martin Schroeder. - -This work consists of the files count1to.dtx and count1to.ins -and the derived file count1to.sty. - -\endpreamble -\declarepreamble\driverpreamble - -This file is part of the Count1to package ------------------------------------------ - -Copyright (c) 1994..2009 by Martin Schroeder. All rights reserved. - -To produce the documentation in the way you like you are allowed -to change this driver file. - -\endpreamble - -\keepsilent -\askforoverwritefalse -\generate{% - \file{count1to.sty}{\from{count1to.dtx}{package}} - \usepreamble\driverpreamble - \file{count1to.drv}{\from{count1to.dtx}{driver}} - } - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* style files into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space count1to.sty} -\Msg{*} -\Msg{* To produce the documentation run the file count1to.drv} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} -\endbatchfile -%% -%% End of file `count1to.ins'. diff --git a/macros/latex/contrib/ms/count1to.pdf b/macros/latex/contrib/ms/count1to.pdf Binary files differdeleted file mode 100644 index 9e339af9c9..0000000000 --- a/macros/latex/contrib/ms/count1to.pdf +++ /dev/null diff --git a/macros/latex/contrib/ms/multitoc.asc b/macros/latex/contrib/ms/multitoc.asc deleted file mode 100644 index 3fcaa10673..0000000000 --- a/macros/latex/contrib/ms/multitoc.asc +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN PGP MESSAGE----- -Version: 2.6.3ia -Comment: PGP sig of multitoc.dvi - -iQEVAwUAN11/jOHJal4pKBTlAQEoKAf8CqoIr8kQR2fuygRaYeeOKwV0sn2hZ8nE -0jRurHZvMG+oeqNWQmmhUWf5QbmhoeySV4k0oZptAJH7trA4VUOyQPekqW/lRlUs -yoqxArqL9qhSK9+L6NDPKjZ9K3xejC8ivPkzoWSdHM7T4pOPwjmYNqrIo11I4DsQ -eP/v4MlI83QPfDwWWQPq6AVPNa2yPoztsCKe5A6t4nkesgBPwBEorg/8LDwbGAzB -psrpO/a/0V6FBKQ9MkeZ3pXSzZm6o91M4wZXf864pw67lj7BWnOsecbidJAuzd// -+4VD1/BYIuGV7Mt8K5r2DNx9IRWCEQWiIXXO31lD4MBP6Jz382PTIw== -=8lva ------END PGP MESSAGE----- diff --git a/macros/latex/contrib/ms/multitoc.bug b/macros/latex/contrib/ms/multitoc.bug deleted file mode 100644 index 400db9b6b5..0000000000 --- a/macros/latex/contrib/ms/multitoc.bug +++ /dev/null @@ -1,11 +0,0 @@ -This file is part of the multitoc package. ------------------------------------------ - -\ProvidesFile{multitoc.bug}[1999/06/08 v2.01 MultiToc Package Bugs (MS)] - -This file contains problem-records and bug-reports. Unsolved problems -and uncorrected but known bugs (so called features) start out with two -exclamation marks before the number. Fixed problems will start with two -asterisks. - -No bugs so far.
\ No newline at end of file diff --git a/macros/latex/contrib/ms/multitoc.ins b/macros/latex/contrib/ms/multitoc.ins deleted file mode 100644 index 154b6ec1d5..0000000000 --- a/macros/latex/contrib/ms/multitoc.ins +++ /dev/null @@ -1,116 +0,0 @@ -%% \ProvidesFile{multitoc.ins} -%% [1999/06/08 v2.01 Installation script for MultiToc Package (MS)] -%% -%% Copyright (c) [1998..1999] by Martin Schr\"oder. All rights reserved. -%% -%% This program may be redistributed and/or modified under the terms -%% of the LaTeX Project Public License, either version 1.0 of this -%% license, or (at your option) any later version. -%% The latest version of this license is in -%% CTAN:macros/latex/base/lppl.txt. -%% -%% Happy users are requested to send me a postcard. :-) -%% -%% checksum = "55078 128 458 3787" -%% -%% The checksum field above contains a CRC-16 checksum as the first -%% value, followed by the equivalent of the standard UNIX wc (word -%% count) utility output of lines, words, and characters. -%% This is produced by Robert Solovay's checksum utility. -%% -%% --------------- start of docstrip commands ------------------ -\input docstrip -{\ifx\endbatchfile\undefined -\Msg{**********************************************} -\Msg{*} -\Msg{* This installation requires docstrip} -\Msg{* version 2.4d or later.} -\Msg{*} -\Msg{* An older version of docstrip has been input} -\Msg{*} -\Msg{**********************************************} -\errhelp{Move or rename old docstrip.tex.} -\errmessage{Old docstrip in input path} -\batchmode -\csname @@end\endcsname -\fi} - -\Msg{***********************************************************} -\Msg{*} -\Msg{* The multitoc distribution contains these files:} -\Msg{*} -\Msg{* \space\space multitoc.asc} -\Msg{* \space\space multitoc.dtx} -\Msg{* \space\space multitoc.dvi} -\Msg{* \space\space multitoc.ins} -\Msg{* \space\space multitoc.bug} -\Msg{*} -\Msg{* If you receive only some of these files from someone, complain!} -\Msg{*} -\Msg{***********************************************************} - -\preamble - -Copyright (c) [1998..1999] by Martin Schr"oder. All rights reserved. - -This file is part of the MultiToc package - -This program may be redistributed and/or modified under the terms -of the LaTeX Project Public License, either version 1.0 of this -license, or (at your option) any later version. -The latest version of this license is in - CTAN:macros/latex/base/lppl.txt. - -Happy users are requested to send me a postcard. :-) - -The MultiToc package contains these files: - - multitoc.asc - multitoc.dtx - multitoc.dvi - multitoc.ins - multitoc.bug - -Error Reports in case of UNCHANGED versions to - - Martin Schr"oder - Cr"usemannallee 3 - D-28213 Bremen - Martin.Schroeder@ACM.org - -\endpreamble -\declarepreamble\driverpreamble - -This file is part of the MultiToc package ------------------------------------------ - -Copyright (c) [1998..1999] by Martin Schr"oder. All rights reserved. - -To produce the documentation in the way you like you are allowed -to change this driver file. - -\endpreamble - -\keepsilent -\askforoverwritefalse -\generate{% - \file{multitoc.sty}{\from{multitoc.dtx}{package}} - \usepreamble\driverpreamble - \file{multitoc.drv}{\from{multitoc.dtx}{driver}} - } - -\Msg{***********************************************************} -\Msg{*} -\Msg{* To finish the installation you have to move the following} -\Msg{* style files into a directory searched by TeX:} -\Msg{*} -\Msg{* \space\space multitoc.sty} -\Msg{*} -\Msg{* To produce the documentation run the file multitoc.drv} -\Msg{* through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} -\endbatchfile -%% -%% End of file `multitoc.ins'. diff --git a/macros/latex/contrib/ms/multitoc.pdf b/macros/latex/contrib/ms/multitoc.pdf Binary files differdeleted file mode 100644 index b72c2a0c4c..0000000000 --- a/macros/latex/contrib/ms/multitoc.pdf +++ /dev/null diff --git a/macros/latex/contrib/multitoc/README.md b/macros/latex/contrib/multitoc/README.md new file mode 100644 index 0000000000..69078f454e --- /dev/null +++ b/macros/latex/contrib/multitoc/README.md @@ -0,0 +1,44 @@ +# The `multitoc` package + +Copyright (C) Martin Schröder, 1998–1999, Marei Peischl (peiTeX) <marei@peitex.de>, 2024 + + multitoc 2024/06/13 v2.02 + +*************************************************************************** + + This material is subject to the LaTeX Project Public License version 1.3c + or later. See http://www.latex-project.org/lppl.txt for details. + +*************************************************************************** + +This work has the LPPL maintenance status `maintained'. +This package is maintained but will not receive any additional features anymore. + +The Current Maintainer of this work is + Marei Peischl <marei@peitex.de>. + +[Link to the GitLab Repository](https://gitlab.com/TeXhackse/ragged2e) + +## Abstract +This package only exists and is maintained for compatibility reasons! + +The package automatically sets the table of contents, list of figures and list of tables in two or more columns (the number of columns may be configured). + +The package uses the multicol package. + +## Provided files + +* README.md +* multitoc.dtx +* multitoc.ins + +The file +* multitoc.sty + +## Issue Tracker +If you think you may have found a bug in this package, please visit + https://gitlab.com/TeXhackse/multitoc/issues + +## Version History + * 2.02 Bugfix to no longer break other lists but toc/lot and lof +t.
\ No newline at end of file diff --git a/macros/latex/contrib/ms/multitoc.dtx b/macros/latex/contrib/multitoc/multitoc.dtx index a88e69fbe6..2e6c5bd9c9 100644 --- a/macros/latex/contrib/ms/multitoc.dtx +++ b/macros/latex/contrib/multitoc/multitoc.dtx @@ -1,16 +1,53 @@ +%% \iffalse meta-comment +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Copyright (C) Martin Schröder, 1998–1999 +% Marei Peischl (peiTeX) <marei@peitex.de>, 2024 +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% 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.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% This package is maintained but will not receive any additional features. +% +% The Current Maintainer of this work is +% Marei Peischl <marei@peitex.de>. +% +% +% This work consists of the files +% README.md +% multitoc.dtx +% multitoc.ins +% and the derived file +% multitoc.sty. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \fi % \iffalse -\NeedsTeXFormat{LaTeX2e} +\NeedsTeXFormat{LaTeX2e}[2015-09-18] %<package>\ProvidesPackage{multitoc} -%<package> [1999/06/08 v2.01 MultiToc Package (MS)] +%<package> [2024/06/13 v2.02 MultiToc Package] % %<*driver> \ProvidesFile{multitoc.drv} - [1999/06/08 v2.01 Driver for MultiToc Package (MS)] + [1999/06/08 v2.02 Driver for MultiToc Package] \documentclass{ltxdoc} \usepackage{url} \usepackage{ragged2e} \usepackage[toc]{multitoc} \GetFileInfo{multitoc.sty} +\makeatletter +\IfFileExists{gitHeadInfo.gin}{ + \newcommand*{\GI@githeadinfo@file}{gitHeadInfo.gin} +}{} +\makeatother +\usepackage{gitinfo2} \setcounter{IndexColumns}{2} \EnableCrossrefs %%\DisableCrossrefs% Say \DisableCrossrefs if index is ready @@ -25,74 +62,8 @@ \DocInput{multitoc.dtx} \end{document} %</driver> -% -% Copyright (c) [1998..1999] by Martin Schr\"oder. All rights reserved. -% -% This program may be redistributed and/or modified under the terms -% of the LaTeX Project Public License, either version 1.0 of this -% license, or (at your option) any later version. -% The latest version of this license is in -% CTAN:macros/latex/base/lppl.txt. -% -% Happy users are requested to send me a postcard. :-) -% -% For error reports in case of UNCHANGED versions see multitoc.ins -% % \fi % -% \CheckSum{83} -% -%% \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 \~} -%% -%% \iffalse meta-comment -%% =================================================================== -%% @LaTeX-style-file{ -%% author = {Martin Schr\"oder}, -%% version = "2.01", -%% date = "8 June 1999", -%% filename = "multitoc.sty", -%% address = {Martin Schr\"oder -%% Cr\"usemannallee 3 -%% D-28213 Bremen -%% telephone = "+49-421-2239425", -%% email = "Martin.Schroeder@ACM.org", -%% pgp-Key = "2048 bit / KeyID 292814E5", -%% pgp-fingerprint = "7E86 6EC8 97FA 2995 82C3 FEA5 2719 090E", -% checksum = "62732 556 2216 19056", -% codetable = "ISO/ASCII", -% keywords = "LaTeX, multicol, toc, lof, lot", -% dependences = "multicol", -% supported = "yes", -%% docstring = "LaTeX package which automatically sets only -%% the table of contents, list of figures and list -%% of tables in two or more columns. -%% The number of columns can be configured. -%% Uses the multicol package. -% -% The checksum field above contains a CRC-16 -% checksum as the first value, followed by -% the equivalent of the standard UNIX wc -% (word count) utility output of lines, -% words, and characters. This is produced -% by Robert Solovay's checksum utility." -%% } -%% =================================================================== -%% \fi -% % \changes{v0.90}{1998/05/23}{New} % \changes{v1.00}{1998/08/09}{Documentation improved} % \changes{v2.00}{1998/08/23}{Redesign} @@ -109,24 +80,28 @@ % \title{\unskip % The \textsf{multitoc} package^^A % \thanks{^^A -% The version number of this file is \fileversion, -% last revised \filedate.\protect\newline +% The version number of this file is \fileversion, +% revision~\#\gitAbbrevHash, last revised \protect\gitAuthorIsoDate.\protect\newline % The name \textsf{multitoc} is a tribute to the $8+3$ % file-naming convention of certain ``operating % systems''; strictly speaking it should be % \textsf{MulticolumnToc}.} % } -% \author{Martin Schr\"oder\\[0.5ex] -% \normalsize Cr\"usemannallee 3\\ -% \normalsize D-28213 Bremen\\ -% \normalsize Martin.Schroeder@ACM.org\\ -% \scriptsize \texttt{PGP-Key: 2048 bit / KeyID 292814E5}\\[-0.5em] -% \scriptsize \texttt{7E86 6EC8 97FA 2995~~82C3 FEA5 2719 090E}} +% \author{Martin Schröder\\ +% \url{https://gitlab.com/TeXhackse/multitoc}\thanks{maintained by Marei Peischl}} % \date{\filedate} % \maketitle % % ^^A ----------------------------- % +% \begingroup\renewcommand*{\abstractname}{Disclaimer/Warning} +% \begin{abstract} +% \changes{v2.02}{2024/06/13}{Add note, that there will not be any additional features.} +% This package is maintained to keep compatibility but will not receive any further feature extensions as there are a lot of packages providing by far more functionality. +% +% In case you are looking for methods to modify lists have a look at Markus Kohm's tocbasic Package \cite{package:tocbasic} or the corresponding CTAN Topic \url{https://ctan.org/topic/toc-etc}. +% \end{abstract} +% \endgroup % % \begin{abstract} % This package allows setting only the table of contents, list of @@ -318,6 +293,11 @@ % \newblock The \package{count1to} package. % \newblock \url{CTAN: tex-archive/macros/latex/contrib/supported/ms/count1to.dtx}. % \newblock \LaTeXe{} package. +% \bibitem{package:tocbasic} +% Markus Kohm +% \newblock KOMA-Script +% \newblock \url{CTAN: tex-archive/macros/latex/contrib/koma-script/tocbasic.dtx}. +% \newblock \LaTeXe{} package. % \end{thebibliography} % % } @@ -448,25 +428,24 @@ % We also have to determine the number of columns to use.\footnote{^^A % This could probably be coded more effeciently, but this code % works\ldots} +% \changes{v2.02}{2024/06/13}{Fix bug breaking other lists but toc/lof/lot. Thanks to Markus Kohm for reporting.} % \begin{macrocode} \let\@multitoc@starttoc\@starttoc +\ExplSyntaxOn \renewcommand*{\@starttoc}[1]{% - \ifthenelse{\boolean{@multitoc@toc}\and\equal{#1}{toc}}{% - \begin{multicols}{\multicolumntoc}% - \@multitoc@starttoc{#1}% - \end{multicols}% - }{}% - \ifthenelse{\boolean{@multitoc@lot}\and\equal{#1}{lot}}{% - \begin{multicols}{\multicolumnlot}% - \@multitoc@starttoc{#1}% - \end{multicols}% - }{}% - \ifthenelse{\boolean{@multitoc@lof}\and\equal{#1}{lof}}{% - \begin{multicols}{\multicolumnlof}% - \@multitoc@starttoc{#1}% - \end{multicols}% - }{}% - } + \clist_if_in:nnTF {toc,lof,lot} {#1} { + \ifthenelse{\boolean{@multitoc@#1}}{ + \begin{multicols}{\use:c{multicolumn#1}}% + \@multitoc@starttoc{#1}% + \end{multicols} + }{ + \@multitoc@starttoc{#1} + } + }{ + \@multitoc@starttoc{#1} + } +} +\ExplSyntaxOff % \end{macrocode} % \end{macro} % diff --git a/macros/latex/contrib/multitoc/multitoc.ins b/macros/latex/contrib/multitoc/multitoc.ins new file mode 100644 index 0000000000..e42692f99a --- /dev/null +++ b/macros/latex/contrib/multitoc/multitoc.ins @@ -0,0 +1,47 @@ +\input docstrip.tex + +\NeedsTeXFormat{LaTeX2e} +\ProvidesFile{ragged2e.ins} + [2024/06/13 v2.02 Installation script for MultiToc Package] + +\preamble +Copyright (C) 1998–1999 Martin Schröder, 2024 Marei Peischl (peiTeX) <marei@peitex.de> + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3c +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.3c or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is + Marei Peischl <marei@peitex.de>. + +This work consists of the files multitoc.dtx and multitoc.ins +and the derived file multitoc.sty. + +\endpreamble +\keepsilent +\askforoverwritefalse +\generate{% + \file{multitoc.sty}{\from{multitoc.dtx}{package}} +} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* style files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space multitoc.sty} +\Msg{*} +\Msg{* To produce the documentation run the file multitoc.dtx} +\Msg{* through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +\endbatchfile +%% +%% End of file `multitoc.ins'. diff --git a/macros/latex/contrib/multitoc/multitoc.pdf b/macros/latex/contrib/multitoc/multitoc.pdf Binary files differnew file mode 100644 index 0000000000..7401b2f53e --- /dev/null +++ b/macros/latex/contrib/multitoc/multitoc.pdf diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md index 4dad256c37..cf5f2e2560 100644 --- a/macros/latex/contrib/siunitx/CHANGELOG.md +++ b/macros/latex/contrib/siunitx/CHANGELOG.md @@ -7,10 +7,15 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ## [Unreleased] +## [v3.3.18] - 2024-06-14 + +### Fixed +- Use `fill` glue for aligning comparators (see issue [\#733](https://github.com/josephwright/siunitx/issues/733)) + ## [v3.3.17] - 2024-05-06 ### Fixed -- Correct treatment of end-iof-line spaces when allowing breaks (see issue +- Correct treatment of end-of-line spaces when allowing breaks (see issue [\#730](https://github.com/josephwright/siunitx/issues/730)) ## [v3.3.16] - 2024-04-24 @@ -1784,7 +1789,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to - Allow `\highlight` in units - Option `table-column-width` (issue [\#105](https://github.com/josephwright/siunitx/issues/105)) - Option `bracket-negative-numbers` (issue [\#5](https://github.com/josephwright/siunitx/issues/5)) -- Option `table-align-comparators` (issue [\#86](https://github.com/josephwright/siunitx/issues/86)) +- Option `table-align-comparator` (issue [\#86](https://github.com/josephwright/siunitx/issues/86)) - Option `minimum-integer-digits` (issue [\#112](https://github.com/josephwright/siunitx/issues/112)) - Option to print exponent marker literally (issue [\#113](https://github.com/josephwright/siunitx/issues/113)) - Support for engineering-style number output (issue [\#114](https://github.com/josephwright/siunitx/issues/114)) @@ -2110,7 +2115,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to ### Added - First public testing release (as `si`) -[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.17...HEAD +[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.18...HEAD +[v3.3.18]: https://github.com/josephwright/siunitx/compare/v3.3.17...v3.3.18 [v3.3.17]: https://github.com/josephwright/siunitx/compare/v3.3.16...v3.3.17 [v3.3.16]: https://github.com/josephwright/siunitx/compare/v3.3.15...v3.3.16 [v3.3.15]: https://github.com/josephwright/siunitx/compare/v3.3.14...v3.3.15 diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf Binary files differindex 0e89bc3e22..d6649d3073 100644 --- a/macros/latex/contrib/siunitx/siunitx-code.pdf +++ b/macros/latex/contrib/siunitx/siunitx-code.pdf diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx index 5de8f0b603..b4791ce47b 100644 --- a/macros/latex/contrib/siunitx/siunitx-table.dtx +++ b/macros/latex/contrib/siunitx/siunitx-table.dtx @@ -1423,7 +1423,7 @@ } { \hbox_unpack:N \l_@@_integer_box - \@@_fil: + \@@_fill: \hbox_unpack:N \l_@@_tmp_box } } diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx index 00af01ae8a..ca2b7822aa 100644 --- a/macros/latex/contrib/siunitx/siunitx.dtx +++ b/macros/latex/contrib/siunitx/siunitx.dtx @@ -121,7 +121,7 @@ % % Identify the package and give the over all version information. % \begin{macrocode} -\ProvidesExplPackage {siunitx} {2024-05-06} {3.3.17} +\ProvidesExplPackage {siunitx} {2024-06-14} {3.3.18} {A comprehensive (SI) units package} % \end{macrocode} % diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf Binary files differindex 5dea63dd66..1c2e5657cc 100644 --- a/macros/latex/contrib/siunitx/siunitx.pdf +++ b/macros/latex/contrib/siunitx/siunitx.pdf diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex index d004e8f9d7..7c6e147f00 100644 --- a/macros/latex/contrib/siunitx/siunitx.tex +++ b/macros/latex/contrib/siunitx/siunitx.tex @@ -2941,6 +2941,7 @@ provide the necessary gap while maintaining alignment (Table~\ref{tab:S:ends}). \DescribeOption{table-align-exponent} \DescribeOption{table-align-uncertainty} +\DescribeOption{table-align-comparator} When printing exponents in tables, there is a choice of aligning the exponent parts or having these close up to the mantissa. This is controlled by the \opt{table-align-exponent} option (Table~\ref{tab:align:exp}). Similarly, diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.dtx b/macros/latex/contrib/thermodynamics/thermodynamics.dtx index 972a2b6b0c..98fdb4c3de 100644 --- a/macros/latex/contrib/thermodynamics/thermodynamics.dtx +++ b/macros/latex/contrib/thermodynamics/thermodynamics.dtx @@ -1,5 +1,5 @@ % \iffalse meta-comment -% File: thermodynamics.dtx Copyright (C) 2022-2023 Karl D. Hammond +% File: thermodynamics.dtx Copyright (C) 2022-2024 Karl D. Hammond % % Karl D. Hammond % Chemical Engineering Program @@ -24,11 +24,7 @@ % \fi % % \iffalse -%^^A FIXME: need correct date of release once you update this -%^^X\GetIdInfo $Id: thermodynamics.dtx 2.00 2023/11/16 Karl D. Hammond <hammondkd@missouri.edu> $ -%^^X {thermodynamics notation} %<*driver> -%^^X\ProvidesFile{\ExplFileName} \ProvidesFile{thermodynamics.dtx} %</driver> % @@ -36,9 +32,8 @@ %<package>\RequirePackage{expl3} %<package>\ProvidesPackage{thermodynamics} %<*package> - [2023/12/05 v2.01 thermodynamics notation] + [2024/06/14 v2.02 thermodynamics notation] %</package> -%^^X {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} %<*driver> \documentclass[11pt,letterpaper]{ltxdoc} %^^X\bool_set_false:N \l__codedoc_allow_indexing_bool @@ -46,18 +41,26 @@ \usepackage[T1]{fontenc} \usepackage{textcomp} \usepackage{amsmath} +\usepackage{mathrsfs} \usepackage{pxfonts} \usepackage{array} \usepackage{booktabs} \usepackage{footmisc} +\usepackage{pdflscape} +\usepackage{supertabular} +\usepackage{graphicx} %^^A for \reflectbox +\usepackage{xcolor} \usepackage[labelfont=bf,labelsep=period,font=small]{caption} +\usepackage{emf} \GetFileInfo{thermodynamics.dtx} \usepackage{thermodynamics}[\filedate\space\fileversion] +\DeclareMathAlphabet{\mathdutchcal}{U}{dutchcal}{m}{n} \DisableCrossrefs \CodelineIndex \PageIndex \CodelineNumbered \RecordChanges +%^^X\OnlyDescription %^^X Preparing to use l3doc.cls, but it's not quite mature yet.... %^^A\DisableDocumentation %^^A\DisableImplementation @@ -65,13 +68,30 @@ \let\tn\cs \let\env\texttt \let\pkg\textsf +\IndexPrologue{\section*{Index}% + \markboth{Index}{Index}% + Numbers written in italics refer to the page + where the corresponding entry is described; + numbers underlined refer to the + %^^A\ifcodeline@index + code line of the + %^^A\fi + definition.%^^A; numbers in Roman refer to the + %^^A\ifcodeline@index + %^^A code lines + %^^A\else + %^^A pages + %^^A\fi + %^^Awhere the entry is used. + } +\makeatother \begin{document} \DocInput{thermodynamics.dtx} \end{document} %</driver> % \fi % -% \CheckSum{2387} +% \CheckSum{3537} % % \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 @@ -91,7 +111,7 @@ % % \changes{v1.00}{2022/04/29}{Initial public release} % \changes{v2.00}{2023/11/16}{Revision to use \LaTeX3 -% (\pkg{expl3}/\pkg{xparse}) syntax layer} +% (\pkg{expl3}/\pkg{xparse}) syntax layer.} % % \newcommand*{\setmarginparsize}[1] % {\bgroup @@ -248,7 +268,10 @@ % Using the default package options, the above renders as % \[ \Ht \quad \Hm \quad \hat H \quad \Hpm{i}. \] % In addition, the properties in -% Table~\ref{table:conveniences} are defined for convenience. +% Table~\ref{table:conveniences} are defined for convenience. A more +% comprehensive list, including how those properties are represented in the +% various textbook-related options supported by this package, are shown in +% Appendix~\ref{sec:symbols}. % % \DescribeMacro{\Ut} % \DescribeMacro{\Um} @@ -455,8 +478,8 @@ % \texttt{\textbackslash cP\_i\^{}\textbackslash std} renders as % $C_{P,i}^\circ$, also as expected. You can also reverse it: % \texttt{\textbackslash cP\^{}\textbackslash std\_i} becomes -% $C^\circ_{P,i}$.} -% \label{table:conveniences} +% $C^\circ_{P,i}$.}\relax +% \label{table:conveniences}\relax %^^A TODO The \leavevmode macro here is to prevent whitespace from building %^^A up due to a bug in old versions of hypdoc. It should be harmless to %^^A leave it in there, but consider removing it at some point. @@ -471,16 +494,21 @@ % \SpecialMacroIndex{\heatcapacitysymbol}\relax % \SpecialMacroIndex{\compressibilitysymbol}\relax % \SpecialMacroIndex{\expansivitysymbol}\relax -% \SpecialMacroIndex{\amix}\relax % \SpecialMacroIndex{\fpure}\relax % \SpecialMacroIndex{\fmix}\relax % \SpecialMacroIndex{\fsat}\relax % \SpecialMacroIndex{\phipure}\relax % \SpecialMacroIndex{\phimix}\relax % \SpecialMacroIndex{\phisat}\relax +% \SpecialMacroIndex{\actrel}\relax % \SpecialMacroIndex{\Psat}\relax % \SpecialMacroIndex{\Pvap}\relax % \SpecialMacroIndex{\sat}\relax +% \SpecialMacroIndex{\std}\relax +% \SpecialMacroIndex{\Pstd}\relax +% \SpecialMacroIndex{\Cstd}\relax +% \SpecialMacroIndex{\fstd}\relax +% \SpecialMacroIndex{\mustd}\relax % \SpecialMacroIndex{\Henryrat}\relax % \SpecialMacroIndex{\Henrymol}\relax % \SpecialMacroIndex{\gammarat}\relax @@ -495,10 +523,12 @@ % \SpecialMacroIndex{\fusion}\relax % \SpecialMacroIndex{\vaporization}\relax % \SpecialMacroIndex{\sublimation}\relax -% \begin{minipage}{\linewidth} -% \small +% \SpecialMacroIndex{\Epot}\relax +% \SpecialMacroIndex{\xrxn}\relax +% \begin{minipage}{\linewidth}\relax +% \footnotesize % \addtolength{\tabcolsep}{-2.75pt}\relax -% \addtolength{\extrarowheight}{0.75ex}\relax +% \addtolength{\extrarowheight}{0.50ex}\relax % \renewcommand*{\footnoterule}{\vskip-1.5ex}\relax % \begin{tabular}{l l l l l} % \toprule @@ -509,59 +539,65 @@ % Extensive and specific (per-unit-mass) versions are available % as \cs{cPt} and \cmd\cPs, respectively, with similar macros for the % isochoric heat capacity.\label{fn:cP}} -% & \(cP\) & \(\displaystyle T\Partial{\Sm}{T}{P}\) -% & \cmd\heatcapacitysymbol \\[2.0ex] +% & \(\cP\) & \(\displaystyle T\Partial{\Sm}{T}{P}\) +% & \cmd\heatcapacitysymbol \\[1.75ex] % Isochoric heat capacity & \verb"\cV"\footref{fn:cP} & \(\cV\) % & \(\displaystyle T\Partial{\Sm}{T}{\Vm}\) -% & \cmd\heatcapacitysymbol \\[2.0ex] +% & \cmd\heatcapacitysymbol \\[1.75ex] % Isothermal compressibility & \cmd\kappaT & $\kappaT$ % & \(\displaystyle -\frac{1}{\Vm} \Partial{\Vm}{P}{T} \) -% & \cmd\compressibilitysymbol \\[2.0ex] +% & {\footnotesize\cmd\compressibilitysymbol} \\[1.75ex] % Isentropic compressibility & \cmd\kappaS & $\kappaS$ % & \(\displaystyle -\frac{1}{\Vm} \Partial{\Vm}{P}{\Sm}\) -% & \cmd\compressibilitysymbol \\[2.0ex] +% & {\footnotesize\cmd\compressibilitysymbol} \\[1.75ex] % Isobaric expansivity & \cmd\alphaP & $\alphaP$ % & \(\displaystyle \frac{1}{\Vm} \Partial{\Vm}{T}{P}\) -% & \cmd\expansivitysymbol \\[2.0ex] +% & \cmd\expansivitysymbol \\[1.75ex] % Isentropic expansivity & \cmd\alphaS & $\alphaS$ % & \(\displaystyle \frac{1}{\Vm} \Partial{\Vm}{T}{\Sm}\) -% & \cmd\expansivitysymbol \\[2.0ex] +% & \cmd\expansivitysymbol \\[1.75ex] % Joule--Thomson coeff. & \cmd\muJT & $\muJT$ % & \(\displaystyle \Partial{T}{P}{\Hm}\) & \cmd\JTsymbol \\ % Pure fugacity & \cmd\fpure & $f$ & $\phi P$ \\ -% Mixture fugacity & \cmd\fmix & $\fmix$ -% & $\fmix_i = x_i\phimix_i P$ \\[0.5ex] % Saturation fugacity & \cmd\fsat & $\fsat$ % & $\phisat \Psat$ & \cmd\sat \\ +% Mixture fugacity & \cmd\fmix & $\fmix$ +% & $\fmix_i = x_i\phimix_i P$ \\ % Pure fugacity coefficient & \cmd\phipure & $\phipure$ & % \multicolumn{2}{l}{\( \phipure_i % = \exp\left(\frac{1}{RT}\int_0^P \Vm_i(T,p) % - \frac{RT}{p}\,dp\right) \)} \\ +% Saturation fugacity coeff.\ & \cmd\phisat & $\phisat$ +% & $\phipure(T,\Psat)$ & \cmd\sat \\ % Mixture fugacity coeff.\ & \cmd\phimix & $\phimix$ % & \multicolumn{2}{l}{\( \phimix_i % = \exp\left(\frac{1}{RT}\int_0^P \Vpm{i}(T,p,\allXs) -% - \frac{RT}{p}\,dp\right) \)} \\ +% - \frac{RT}{p}\,dp\right) \)} \\[1.25ex] +% Absolute activity & \cmd\actabs & $\actabs$ +% & \multicolumn{2}{l}{\(\actabs_i = \exp(\mu_i/{RT})\)} \\ +% Relative activity & \cmd\actrel & $\actrel$ +% & \multicolumn{2}{l}{\(\actrel_i = \exp\left(\frac{\mu_i - \mu_i^\std}{RT}\right) = \frac{\fmix_i(T,P,\allXs)}{\fstd_i(T)}\)} \\ % Henry's constant (rational) & \cmd\Henryrat & $\Henryrat$ % & $\gamma_i^\infty f_i$ \\ -% Henry's constant (molal) & \cmd\Henrymol & $\Henrymol$ +% Henry's constant (molal) & \cmd\Henrymol & $\Henrymol$ % & $M_s \gamma_i^\infty f_i$ \\ % Rational activity coeff.\ & \cmd\gammarat & $\gammarat$ % & $\gamma/\gamma^\infty$ \\ % Molal activity coeff.\ & \cmd\gammamol & $\gammamol$ % & $x_s \gamma/\gamma^\infty$ \\ -% Saturation fugacity coeff.\ & \cmd\phisat & $\phisat$ -% & $\phipure(T,\Psat)$ & \cmd\sat \\ -% Saturation pressure & \cmd\Psat & $\Psat$ && \cmd\sat \\ -% Vapor pressure & \cmd\Pvap & \multicolumn{3}{l}{Currently a synonym -% for \cs{Psat}\footnote{If you want \cs{Pvap} to produce $P^\text{vap}$ -% instead of $\Psat$, you should redefine the \cs{sat} macro.}} \\ +% Saturation pressure & \cmd\Psat\footnote{\cs{Pvap} is a synonym for +% \cs{Psat}; if you want it to produce $P^\text{vap}$, you should +% redefine the \cs{sat} macro} & $\Psat$ && \cmd\sat \\ % Standard state & \cmd\std\footnote{Typical usage would be % \texttt{\$\cs{mu}\_i = \cs{mu}\textasciicircum\cs{std}\_i % + RT \cs{log} a\_i\$}, % yielding $\mu_i = \mu_i^\std + RT \log a_i$.} & $\std$ \\ % Standard pressure & \cmd\Pstd & $\Pstd$ & & \cs{std} \\ -% Standard fugacity & \cmd\fstd & $\fstd$ & $\fpure(T,\Pstd)$ & \cs{std} -% \\ +% Standard molality & \cmd\Cstd & $\Cstd$ & & \cs{std} \\ +% Standard fugacity & \cmd\fstd & $\fstd$ +% & $\fstd_i = \fpure_i(T,\Pstd,x^\std)$ & \cs{std} \\ +% Standard chemical potential & \cmd\mustd & $\mustd$ +% & $\mustd_i = \mu(T,\Pstd,x^\std)$ & \cs{std} \\ % Change on mixing & \cmd\Deltamix\footnote{The usual usage would be % something like % \texttt{\$\cs{Deltamix}\cs{Vm}\textasciicircum\cs{IGM} = 0\$}.\relax @@ -577,6 +613,9 @@ % & $\Deltavap M$ & $M^V - M^L$ & \cmd\vaporization \\ % Change on subliming & \cmd\Deltasub\footref{fn:Deltausage} % & $\Deltasub M$ & $M^V - M^S$ & \cmd\sublimation \\ +% Electric potential & \cmd\Epot & $\Epot$ +% & $-n_e\mathscr{F}\Deltarxn\Gm$ \\ +% Extent of reaction & \cmd\xrxn & $\xrxn$ & & \\ % \bottomrule % \end{tabular} % \end{minipage} @@ -687,14 +726,21 @@ % \cs{expansivitysymbol}, which is done automatically by some of the % package options that create notation specific to a particular textbook. % -% \subsubsection{Joule--Thomson Coefficients} +% \subsubsection{Joule--Thomson Coefficient} % \changes{v2.00}{2023/11/16}{Added \cs{muJT} to represent Joule--Thomson % coefficients (which have different notation across textbooks).} % \DescribeMacro{\muJT} -% The Joule--Thomson coefficient is produced with \cs{muJT}, which be default +% The Joule--Thomson coefficient is produced with \cs{muJT}, which by default % is rendered $\muJT$. Some books call this coefficient $\alpha_H$; this is % handled automatically for books of which the package author is aware. % +% \subsubsection{Chemical Potentials} +% \DescribeMacro{\mu} +% \DescribeMacro{\muit} +% The chemical potential is always produced by the macro \cs{mu}. Some +% textbook-related options use \(\muup\) instead of \(\mu\) for chemical +% potential; if so, the macro \cs{muit} will always produce \(\muit\). +% % \subsubsection{Fugacities and Fugacity Coefficients} % \DescribeMacro{\fpure} % \DescribeMacro{\fmix} @@ -704,13 +750,13 @@ % fugacity, so it is recommended to use the macro \cs{fpure} to denote the % pure-component fugacity and \cs{fmix} to denote the mixture fugacity. % Similarly, the pure-component fugacity coefficient should be generated with -% \cs{phipure}, and that in the mixture should be \cs{phimix}. +% \cs{phipure}, and that in a mixture should be \cs{phimix}. % % For example, the following markup is an example of a common equation in % mixture thermodynamics: % \begin{verbatim} % \[ \fmix_j = x_j \phimix_j P = x_j \gamma_j \fpure_j -% = x_j \gamma_j \phipure_j P. \] +% = x_j \gamma_j \phipure_j P. \] %\end{verbatim} % With the default package options, this produces % \[ \fmix_j = x_j \phimix_j P = x_j \gamma_j \fpure_j @@ -726,15 +772,19 @@ % = x_j \gamma_j \phi_j P. \] % % \subsubsection{Activity Coefficients and Henry's Constants} +% \DescribeMacro{\gamma} +% \DescribeMacro{\gammait} % \DescribeMacro{\gammarat} % \DescribeMacro{\gammamol} % \DescribeMacro{\Henryrat} % \DescribeMacro{\Henrymol} % The activity coefficient based on the Lewis--Randall rule can be generated -% with \cs{gamma}, as usual. The Henry's Law activity coefficients should be -% produced with \cs{gammarat} (rational basis) and \cs{gammamol} (molal basis). -% There are also macros to generate the Henry's law constants for both the -% rational basis (\cs{Henryrat}) and the molal basis (\cs{Henrymol}). +% with \cs{gamma}, as usual. The symbol \cs{gammait} is provided just in case +% \cs{gamma} has been redefined by a package option and you want to use the +% original symbol for some reason. The Henry's Law activity coefficients should +% be produced with \cs{gammarat} (rational basis) and \cs{gammamol} (molal +% basis). There are also macros to generate the Henry's law constants for both +% the rational basis (\cs{Henryrat}) and the molal basis (\cs{Henrymol}). % These are interrelated: % \begin{verbatim} % \[ \fmix_i = x_i \gamma_i \fpure_i = x_i \gammarat_i \Henryrat_i @@ -754,7 +804,6 @@ % Note that some books (e.g., |ElliottLira|) prefer the atmospheric chemistry % convention for the molal basis, namely % \[ \fmix_i = x_i \gamma_i \fpure_i = x_i \gammarat_i \Henryrat_i -%%^^A = C_i \gammamol_i \Henrymol_i % = C_i \gammamol_i / K_{H,i} \] % (that is, using $1/K_{H,i}$ in place of $\Henrymol_i$). % Unfortunately, this makes it impossible to change symbols without any edits @@ -780,29 +829,36 @@ % \verb"\RenewDocumentCommand{\sat}{}{{\text{vap}}}". % This is done automatically using package option |Sandler|. % -% \subsubsection{Standard States} +% \subsubsection{Standard States and Chemical Reactions} % \DescribeMacro{\std} % \DescribeMacro{\Pstd} +% \DescribeMacro{\Cstd} % \DescribeMacro{\fstd} +% \DescribeMacro{\mustd} % The symbol $\circ$ (\cs{circ}) is used by default for standard states. % This is intended to be easy to change should the user want to replace % $P^\circ$ with $P^\ominus$, say. This is accessed via the \cs{std} macro. % The macro \cs{Pstd} is defined as |P^\std| for convenience to denote -% standard pressures, and \cs{fstd} is defined for standard fugacities so as -% to ease implementation across textbooks. +% standard pressure, \cs{Cstd} is defined as |C^\std| to denote standard +% molality, \cs{fstd} is defined for standard fugacities, and \cs{mustd} is +% defined for standard chemical potentials so as to ease implementation across +% textbooks. % % The usual usage would be something like this: % \begin{verbatim} -% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mu^\std_i +% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mustd_i % + \nu_i RT \log\left(\frac{\fmix_i}{\fstd_i}\right) \right] % = \Deltarxn\Gm^\std + RT \log\left[\prodall_i a_i^{\nu_i} \right] \], %\end{verbatim} % which produces -% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mu^\std_i +% \[ \Deltarxn\Gm = \sumall_i \nu_i \mu_i = \sumall_i \left[ \nu_i \mustd_i % + \nu_i RT \log\left(\frac{\fmix_i}{\fstd_i}\right) \right] % = \Deltarxn\Gm^\std + RT \log\left[\prodall_i a_i^{\nu_i} \right] \] % with the default settings. % +% The extent of reaction is generated by the macro \cs{xrxn}, which by default +% is printed as \(\xrxn\). +% % \subsubsection{Changes on Mixing, Reaction, Fusion, Vaporization, and % Sublimation} % \DescribeMacro{\Deltamix} @@ -989,9 +1045,10 @@ % \Vpm_i = \Partialinline{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \PartialMixSecondinline{\Gt}{\Nt_i}{P}{T,\allNsbut{i}} % = \PartialMixSecondinline{\Gt}{P}{\Nt_i}{T,\allNsbut{i}} -% = \Partialinline{\Gpm_i}{P}{T,\allNs}. +% = \Partialinline{\Gpm_i}{P}{T,\allNs} % \label{eq:Vpm-inline} % \end{equation} +% with the default options. % \pagebreak[0]% % % \subsubsection{Delimiter Sizing} @@ -1014,16 +1071,16 @@ % = \Partial*{\Gpm_i}{P}{T,\allNs} % = \PartialBigg*{\Gpm_i}{P}{T,\allNs} % = RT\Partial*{\log\fmix_i}{P}{T,\allNs} -% = RT\,\PartialBigg*{\log\fmix_i}{P}{T,\allNs} -% = RT\,\Partialbigg{\log\fmix_i}{P}{T,\allNs} \], +% = RT\PartialBigg*{\log\fmix_i}{P}{T,\allNs} +% = RT\Partialbigg{\log\fmix_i}{P}{T,\allNs} \], %\end{verbatim} % which typesets as % \[ \Vpm{i} = \Partial*{\Vt}{\Nt_i}{T,P,\allNsbut{i}} % = \Partial*{\Gpm{i}}{P}{T,\allNs} % = \PartialBigg*{\Gpm{i}}{P}{T,\allNs} % = RT\Partial*{\log\fmix_i}{P}{T,\allNs} -% = RT\,\PartialBigg*{\log\fmix_i}{P}{T,\allNs} -% = RT\,\Partialbigg{\log\fmix_i}{P}{T,\allNs}. \] +% = RT\PartialBigg*{\log\fmix_i}{P}{T,\allNs} +% = RT\Partialbigg{\log\fmix_i}{P}{T,\allNs}. \] % Note that a similar effect---possibly with other side effects---can be % achieved with \pkg{amsmath}'s \tn{smash} command, which has the effect of % removing all vertical space associated with a particular character. @@ -1097,7 +1154,7 @@ % \[ \Vpm{k} = \Partial{\Vt}{\Nt_k}{T,P,\allNsbut{k}} \] % \end{thermomolesrange} % or -% \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_j[k]} \] +% \[ \Vpm{k} = \left(\frac{\partial\Vt}{\partial\Nt_k}\right)_{T,P,\Nt_j[k]}, \] % to mean partial derivatives that hold the number of moles of each species % constant \emph{except} the one being changed. % Similarly, a property determined with all mole fractions held @@ -1301,8 +1358,7 @@ % represented, as shown in Table~\ref{table:extensive}. % The default is \verb"intensive-plain", which (using the volume as an % example) represents the total, molar, specific, and partial molar volumes, -% respectively, as $\Vt,$ $\Vm,$ $\Vs,$ and $\Vpm{j},$ -% respectively. +% respectively, as $\Vt,$ $\Vm,$ $\Vs,$ and $\Vpm{j}$. % % For example, the definition of the partial molar enthalpy would be different % depending on which set of notation is used. The markup @@ -1391,6 +1447,37 @@ % \cs{Sm} will be $S$; and inside \env{thermointensivesubscript}, % \cs{St} will be $S$ and \cs{Sm} will be $s$. % +% \subsubsection{Options Affecting Partial Molar Properties} +% There are two options that change how partial molar properties are typeset. +% For option |longpm| (the default), the subscript and superscript are +% considered part of the symbol, producing something like $\HEpm_i$. +% The option |shortpm| makes it display as +% \begin{thermoshortpm} +% $\HEpm_i$. +% \end{thermoshortpm} +% The |shortpm| option is the default for several textbook-related options. +% +% \DescribeEnv{thermolongpm} +% \DescribeEnv{thermoshortpm} +% It is possible to change partial molar notation locally---this could be +% useful if you have a very, very long superscript or subscript and the +% default option looks silly, say. The environment \env{thermolongpm} sets +% the style equivalent to the |longpm| option, while the \env{thermoshortpm} +% environment sets the local style equivalent to the |shortpm| option. +% For example, +% \begin{verbatim} +% \[ \Spm_i = \Spm_i^\IGM + \SRpm_i +% \begin{thermoshortpm} +% = \Spm_i^\IGM + \SRpm_i +% \end{thermoshortpm} \] +%\end{verbatim} +% produces +% \[ \Spm_i = \Spm_i^\IGM + \SRpm_i +% \begin{thermoshortpm} +% = \Spm_i^\IGM + \SRpm_i, +% \end{thermoshortpm} \] +% assuming the default options are loaded. +% % \subsubsection{Options Affecting Partial Derivatives} % There are several options that change how partial derivatives are rendered. % First are the options that affect the delimiters. We will use the following @@ -1431,7 +1518,7 @@ % \end{thermosubscripts}\relax \] % and instead renders them % \[ \begin{thermoNOsubscripts} -% \Partial{\Vm}{P}{T} \qquad \text{(\texttt{nosubscripts} option)}, +% \Partial{\Vm}{P}{T} \qquad \text{(\texttt{nosubscripts} option)}. % \end{thermoNOsubscripts} \] % Combined with \verb"plain-derivatives", this would give % \[ \begin{thermoplain} @@ -1457,6 +1544,7 @@ % % \DescribeEnv{thermoparentheses} % \DescribeEnv{thermobrackets} +% \DescribeEnv{thermobraces} % \DescribeEnv{thermobar} % \DescribeEnv{thermoplain} % If you want to use parentheses \emph{locally}, even though your overall @@ -1577,96 +1665,229 @@ % Times, Palatino, Bitstream Charter, Garamond, and Utopia, but other typefaces % may require a manual redefinition. % -% \subsubsection{Options for Particular Textbooks} +% \subsubsection{Options for Particular Textbooks} \label{sec:textbooks} % There are several options that load package options and/or redefine -% particular commands to match the notation in a particular textbook. So far -% the following textbooks are supported: +% particular commands to match the notation in a particular textbook. +% A table showing how various properties are typeset using each of these +% packages is included in Appendix~\ref{sec:symbols}. +% So far, the following textbooks are supported: % \begin{description} % \item[Bejan] Notation used by Bejan, \emph{Advanced Engineering -% Thermodynamics}, Third Edition. Wiley: Hoboken, 2006. Loads non-default -% package options \verb"EUFGHAN", \verb"intensive-lowercase", and -% \verb"delta". Also swaps the notation for specific and -% intensive properties and redefines \cs{cV}, \cs{cVs}, \cs{cVt}, -% \cs{expansivitysymbol}, and \cs{ncomponents} to match his notation. +% Thermodynamics}, Third Edition. Wiley: Hoboken, 2006. % \item[CBK] Notation used by \c Cengel, Boles, and Kano\u glu, % \emph{Thermodynamics: An Engineering Approach}, Ninth Edition. -% McGraw Hill: Singapore, 2020. Loads the non-default package options -% \verb"EUAGHAN" and \verb"intensive-lowercase"; also redefines -% partial molar, specific, and molar properties' notation to fit theirs, -% and redefines the internal symbol for pressure, \cs{Deltarxn}, -% \cs{compressibilitysymbol}, and \cs{expansivitysymbol} to fit their -% usage. Their prodigal symbols for specific and total volume, which appear -% to be from the font ITC Benguiat Gothic Standard Book Oblique, are not -% supported. +% McGraw Hill: Singapore, 2020. Their symbols for specific and +% total volume, which appear to be from the font ITC Benguiat Gothic (and +% reasonably approximated by Krub Italic), are not directly +% supported.\footnote{% +% \providecommand*{\XeTeX}{X\kern-0.125em \lower 0.5ex +% \hbox{\reflectbox{\hbox{E}}}\kern-0.125em \TeX} +% If you have ITC Benguiat Gothic installed and want to use it for the +% volume symbol, you can use it through \XeTeX; try this:\\ +% \texttt{\textbackslash usepackage\{fontspec\}} \\ +% \texttt{\textbackslash setsansfont\{ITC Benguiat Gothic\}} \\ +% \texttt{\textbackslash ExplSyntaxOn} \\ +% \texttt{\mbox{}~~\textbackslash tl\_gset:Nn +% \textbackslash g\_\_thermodynamics\_volume\_symbol +% \{\{\textbackslash text\{\textbackslash +% sffamily V\}\}\}} \\ +% \texttt{\textbackslash ExplSyntaxOff} +% \label{fn:XeTeX}} % \item[ElliottLira] Notation used by Elliott and Lira, \emph{Introductory % Chemical Engineering Thermodynamics}, Second Edition. Prentice Hall: -% Upper Saddle River, 2012. Loads the default package options and -% redefines \cs{IG}, \cs{IGM}, \cs{allcomponents}, and \cs{Deltarxn} to fit -% their notation. +% Upper Saddle River, 2012. \emph{Note: these authors use +% Henry's Law (molal basis) in the form \(y_i P = m_i/K_{H,i}\), which is +% inconsistent with their notation for the rational basis, so that macro +% is left set to its default.} +% \item[KlotzRosenberg] Notation used by Klotz and Rosenberg, \emph{Chemical +% Thermodynamics: Basic Concepts and Methods}, Seventh Edition. +% Wiley: Hoboken, 2008. % \item[Koretsky] Notation used by Koretsky, \emph{Engineering and Chemical -% Thermodynamics}, Second Edition, Wiley: New Caledonia, 2013. -% Loads the non-default package options \verb"EUAGHAn", \verb"brackets", -% \verb"intensive-lowercase", and \verb"delta"; modifies the -% \verb"intensive-lowercase" defaults to make uppercase partial molar -% properties to match Koretsky's notation and redefines -% \cs{expansivitysymbol}, \cs{IS}, \cs{residual}, \cs{IG}, \cs{IGM}, -% \cs{Deltafus}, \cs{Deltasub}, \cs{Deltavap}, \cs{Henryrat}, -% \cs{gammarat}, \cs{Deltafus}, \cs{Deltavap}, and \cs{Deltasub} to match -% his use. Also redefines the fugacity coefficients to use $\varphi$ -% instead of $\phi$. +% Thermodynamics}, Second Edition. Wiley: New Caledonia, 2013. +% \item[ModellReid] Alias for \verb"TesterModell" (the first and second +% editions were by Modell and Reid; Reid died prior to the third edition). % \item[MSBB] Notation used by Moran, Shapiro, Boettner, and Bailey, % \emph{Fundamentals of Engineering Thermodynamics}, Eighth Edition. -% Wiley: Kendallville, 2014. Loads the non-default package options -% \verb"EUFGHAn", \verb"intensive-lowercase", and \verb"delta"; removes the -% left parenthesis in partial derivatives and redefines \cs{IGM}, \cs{IG}, -% \cs{expansitivitysymbol}, \cs{allcomponents}, \cs{allbut}, \cs{Ft}, -% \cs{fmix}, and \cs{phimix}, as well as symbols for the Helmholtz free -% energy and pressure, intensive and specific property notation, and -% partial molar notation to fit their somewhat ill-advised notation. +% Wiley: Kendallville, 2014. % \item[Prausnitz] Notation used by Prausnitz, Lichtenthaler, and de Azevedo, % \emph{Molecular Thermodynamics of Fluid-Phase Equilibria}, Third Edition, -% Pearson, 1998. Loads the non-default package option -% \verb"intensive-lowercase" and redefines \cs{fmix}, \cs{phimix}, -% \cs{fpure}, \cs{phipure}, \cs{Henryrat}, \cs{residual}, -% \cs{allcomponents}, and \cs{allbut} to fit their notation. +% Pearson, 1998. % \item[Sandler] Notation used by Sandler, \emph{Chemical, Biochemical, and % Engineering Thermodynamics}, Fifth Edition. Wiley: Hoboken, 2017. -% Loads non-default package options \verb"EUAGHaN" and -% \verb"extensive-plain"; also redefines \cs{sat}, \cs{excess}, -% \cs{residual}, \cs{ncomponents}, \cs{fmix}, \cs{fstd}, \cs{phimix}, -% \cs{allcomponents}, \cs{IS}, \cs{Deltamix}, \cs{Deltarxn}, \cs{Deltasub}, -% \cs{Deltafus}, \cs{Deltavap}, and \cs{Henryrat}. Also redefines \cs{cV}, -% \cs{cP}, \cs{cVt}, and \cs{cPt}. % \item[SVNAS] Notation used by Smith, Van Ness, Abbott, and Swihart, % \emph{Introduction to Chemical Engineering Thermodynamics}, Ninth -% Edition. McGraw-Hill: Boston, 2021. Loads the non-default package option -% \verb"extensive-superscript" and redefines \cs{allcomponents}, -% \cs{allbut}, \cs{IG}, \cs{IGM}, \cs{IS}, \cs{expansivitysymbol}, and -% \cs{Deltarxn} to fit their notation. The extensive heat capacities are -% also redefined, as they do not use such an entity. +% Edition. McGraw-Hill: Boston, 2021. % \item[TesterModell] Notation used by Tester and Modell, % \emph{Thermodynamics and Its Applications}, Third Edition, Prentice Hall: -% Upper Saddle River, 1997. Loads the non-default package options -% \verb"EUAGHaN" and \verb"delta"; also redefines \cs{ncomponents} to be -% $n$ and redefines \cs{allcomponents}, \cs{allbut}, and \cs{allbutlastand} -% to fit their (somewhat inconsistent) notation. Also redefines \cs{IG}, -% \cs{IGM}, \cs{IS}, \cs{excess}, \cs{reaction}, \cs{Henryrat}, -% \cs{Henrymol}, \cs{gammarat}, and \cs{gammamol} to fit their style. +% Upper Saddle River, 1997. % \item[Thompson] Notation used by Thompson, \emph{A Unified Introduction to % Chemical Engineering Thermodynamics}, Stillwater Press: Orono, 2000. -% Loads the non-default package options |EUAGHAn| and |delta|; -% also redefines \cs{excess}, \cs{residual}, \cs{Henryrat}, \cs{Henrymol}, -% \cs{allcomponents}, \cs{ncomponents}, \cs{IS}, \cs{IG}, \cs{IGM}, -% \cs{fpure}, \cs{phipure}, \cs{mix}, \cs{Deltamix}, \cs{Deltarxn}, and -% \cs{allbut} to match his notation, plus adjustments to intensive (molar) -% properties. Note that he uses $c$, $\mathrm{c}$, $n_C$, and -% $\mathrm{n}$ for the number of components in various places in the book; -% I chose $c$ for the definition of \cs{ncomponents}, but it is impossible -% to be completely consistent with his notation. +% Note that he uses $c$, $\mathrm{c}$, $n_C$, and $\mathrm{n}$ for the +% number of components in various places in the book; I chose $c$ for the +% definition of \cs{ncomponents}, but it is impossible to be completely +% consistent with his notation. % \end{description} % There may well be some inconsistencies between the notation in these books % and the symbols used here. I will fix such inconsistencies as I become aware % of them. +% +% \textbf{Important}: Some textbooks use symbols other than \(\mu\) for +% chemical potential and \(\gamma\) for activity coefficients. For example, +% |KlotzRosenberg| uses $\muup$ for the chemical potential and $\gammaup$ +% for the activity coefficient. In such cases, +% the macro \verb"\mu" will produce whatever symbol \emph{is} used for the +% chemical potential, and \verb"\gamma" will produce the activity coefficient. +% The original symbols will still be available as \cs{gammait} and \cs{muit}, +% respectively. +% +% \appendix +% \section{Notation Across Textbooks} \label{sec:symbols} +% \changes{v2.02}{2024/06/14}{Improved consistency of package options for +% textbooks and added a table of symbols organized by textbook option.} +% Some of the textbooks supported by this package use multiple symbols for the +% same quantity---for example, Sandler's textbook uses both \(P^\text{sat}\) +% and \(P^\text{vap}\) for vapor (saturation) pressure, and Elliott and Lira +% use both \(\Delta H^\circ\) and \(\Delta H_R^o\) for the standard enthalpy +% of reaction. This package may only support one of the two in such cases. +% +% Table~\ref{table:textbooks} gives a description of each symbol supported +% by the package, the corresponding command, and the way that command is +% rendered using each of the textbook-related options in +% Section~\ref{sec:textbooks}. Packages consisting of two names are shortened +% to one name in the headers for space considerations. +% +% \NewDocumentCommand{\inherit}{m}{\textcolor{gray}{#1}} +% \begin{landscape}\scriptsize +% \tablehead{% +% \toprule +% Quantity & Macro & Default & Bejan & CBK & Elliott & Klotz +% & Koretsky & MSBB & Prausnitz & Sandler & SVNAS & Modell & Thompson \\ +% \midrule +% } +% \tabletail{% +% \midrule\multicolumn{13}{l}{\emph{continued on next page\dots}} \\ +% } +% \tablelasttail{\bottomrule} +% \tablecaption{How symbols are typeset for various textbooks. +% Entries in \inherit{gray} indicate quantities that are not directly or +% indirectly defined in a particular textbook and are therefore inherited +% fromthe defaults. +% \emph{Note: Options with two authors, such as \texttt{ElliottLira}, +% only include one name so as to fit on one page.} +% \label{table:textbooks}} +% \setlength{\extrarowheight}{3.5pt}% +% \begin{mpsupertabular}{l l l l l l l l l l l l l l} +% \# components & \verb"\ncomponents" & $\ncomponents$ & $n$ & $\inherit{\ncomponents}$ & $\inherit{\ncomponents}$ & $\inherit{\ncomponents}$ & $m$ & $\inherit{\ncomponents}$ & $m$ & $\mathcal{C}$ & $\inherit{\ncomponents}$ & $n$ & $c$ \\ +% activity (absolute) & \verb"\actabs_i" & $\actabs_i$ & $\inherit{\lambda_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\lambda_i}$ & $\inherit{\lambda_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ & $\inherit{\actabs_i}$ \\ +% activity (relative) & \verb"\actrel_i" & $\actrel_i$ & $\inherit{\actrel_i}$ & $\inherit{\actrel_i}$ & $a_i$ & $a_i$ & $\inherit{a_i}$ & $\inherit{\actrel_i}$ & $\mathdutchcal{a}_i$\relax +% \footnote{The symbol $\mathdutchcal{a}$ requires the |dutchcal| fonts to be installed, +% though the package itself is not loaded. This symbol is an approximation to the one +% the book actually uses.} & $a_i$ & $a_i$ & $a_i$ & $\widehat a_i$ \\ +% activity coefficient (ordinary) & \verb"\gamma_i" & $\gamma_i$ & $\inherit{\gamma_i}$ & $\inherit{\gamma_i}$ & $\gamma_i$ & $\gammaup_i$ & $\gamma_i$ & $\inherit{\gamma_i}$ & $\gamma_i$ & $\gamma_i$ & $\gamma_i$ & $\gammaup_i$ & $\gamma_i$ \\ +% activity coefficient (Henry, rational) & \verb"\gammarat_i" & $\gammarat_i$ & $\inherit{\gammarat_i}$ & $\inherit{\gammarat_i}$ & $\gamma_i^\ast$ & $\gammaup_i$ & $\gamma_i^\text{Henry's}$ & $\inherit{\gammarat_i}$ & $\inherit{\gammarat_i}$ & $\gamma_i^\ast$ & $\inherit{\gammarat_i}$ & $\gammaup_i^{\ast\ast}$ & $\inherit{\gammarat_i}$ \\ +% activity coefficient (Henry, molal) & \verb"\gammamol_i" & $\gammamol_i$ & $\inherit{\gammamol_i}$ & $\inherit{\gammamol_i}$ & $\gamma_i^\square$ & $\gammaup_i$ & $\gamma_i^m$ & $\inherit{\gammamol_i}$ & $\inherit{\gammamol_i}$ & $\gamma_i^\square$ & $\gammarat_i$ & $\gammaup_i^\ast$ & $\inherit{\gammamol_i}$ \\ +% adiabatic compressibility & \multicolumn{13}{l}{\emph{See} isentropic compressibility} \\ +% adiabatic expansivity & \multicolumn{13}{l}{\emph{See} isentropic expansivity} \\ +% area (total) & \verb"\At" & $\At$ & $A$ & $A$ & $\inherit{\At}$ & $\inherit{a}$ & $A$ & $A$ & $\inherit{A}$ & $\inherit{a}$ & $\inherit{a^t}$ & {\large$\underline{a}$} & $\inherit{\mkern2mu\underline{\mkern-2mu\mathcal{A}\mkern-2mu}\mkern2mu}$ \\ +% chemical potential & \verb"\mu" & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\muup$ & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\mu$ & $\muup$ & $\mu$ \\ +% electric potential & \verb"\Epot" & $\Epot$ & $\inherit{\Epot}$ & $\inherit{\Epot}$ & $E$ & $\emf$\footnote{The +% symbol $\emf$ requires the \pkg{emf} package. If that package is not +% loaded, $\mathcal{E}$ is used instead.\label{fn:emf}} +% & $E$ & $\inherit{\Epot}$ & $\emf$\footref{fn:emf} & $E$ & $E$ & $\exists$ & $E$ \\ +% electric potential (standard) & \verb"\Epot^\std" & $\Epot^\std$ & $\inherit{\Epot^\std}$ & $\inherit{\Epot^\std}$ & $E^\circ$ & $\emf^\circ$ & $E^o$ & $\inherit{\Epot^\std}$ & $\emf^0$ & $\inherit{E^\circ}$ & $E^\circ$ & $\exists^o$ & $E^\circ$ \\ +% energy (total) & \verb"\Et" & $\Et$ & $E$ & $E$ & $\inherit{\Et}$ & $\inherit{E}$ & $E$ & $E$ & $E$ & $\inherit{E}$ & $\inherit{E^t}$ & $\Et$ & $\inherit{\Et}$ \\ +% energy (molar) & \verb"\Em" & $\Em$ & $\overline{e}$ & $\overline{e}$ & $\inherit{\Em}$ & $\inherit{E_{\textrm{m}}}$ & $e$ & $\overline{e}$ & $\inherit{e}$ & \begin{thermoextensiveplain}$\inherit{\Em}$\end{thermoextensiveplain} & $\inherit{E}$ & $\Em$ & $\inherit{\Em}$ \\ +% energy (specific) & \verb"\Es" & $\Es$ & $e$ & $e$ & $\inherit{E}$ & $\inherit{\hat E}$ & $\hat e$ & $e$ & $\inherit{\hat e}$ & $\hat E$ & $\inherit{E}$ & $\Es$ & $\inherit{\Em}$ \\ +% enthalpy (total) & \verb"\Ht" & $\Ht$ & $H$ & $H$ & $\Ht$ & $H$ & $H$ & $H$ & $H$ & $H$ & $H^t$ & $\Ht$ & $\Ht$ \\ +% enthalpy (molar) & \verb"\Hm" & $\Hm$ & $\overline{h}$ & $\overline{h}$ & $H$ & $H_{\textrm{m}}$ & $h$ & $\overline{h}$ & $h$ & \begin{thermoextensiveplain}$\Hm$\end{thermoextensiveplain} & $H$ & $\Hm$ & $\Hm$ \\ +% enthalpy (specific) & \verb"\Hs" & $\Hs$ & $h$ & $h$ & $H$ & $\inherit{\Hs}$ & $\hat h$ & $h$ & $\inherit{\hat h}$ & $\hat H$ & $H$ & $\Hs$ & $\inherit{\Hs}$ \\ +% enthalpy (partial molar) of $i$ & \verb"\Hpm_i" & $\Hpm_i$ & $\inherit{\overline{h}_i}$ & $\widetilde{h}_i$ & $\overline{H}_i$ & $H_{\mathrm{m}i}$ & $\overline{H}_i$ & $\Hpm_i$ & $\overline{h}_i$ & \begin{thermoshortpm}$\Hpm_i$\end{thermoshortpm} & $\overline{H}_i$ & $\Hpm_i$ & $\Hpm_i$ \\ +% enthalpy of reaction & \verb"\Deltarxn\Hm" & $\Deltarxn\Hm$ & $\inherit{\Delta\overline{h}_\text{rxn}}$ & $\overline{h}_R$ & $\Delta H$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{rxn}$ & $\inherit{\Delta\overline{h}_\text{rxn}}$ & $\inherit{\Delta h_\text{rxn}}$ & \begin{thermoextensiveplain}$\Delta_{\text{rxn}}\Hm$\end{thermoextensiveplain} & $\Delta H$ & $\Delta H_{rx}$ & $\Delta H_R$ \\ +% enthalpy of fusion & \verb"\Deltafus\Hm" & $\Deltafus\Hm$ & $\overline{h}_{sf}$ & $\overline{h}_{sf}$ & $\Delta H^{fus}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{fus}$ & $\inherit{\overline{h}^\text{fus}}$ & $\inherit{\Delta h^\text{fus}}$ & \begin{thermoextensiveplain}$\Delta_\text{fus}\Hm$\end{thermoextensiveplain} & $\Delta H^{sl}$ & $\inherit{\Deltafus H}$ & $\Delta H^{SL}$ \\ +% enthalpy of vaporization & \verb"\Deltavap\Hm" & $\Deltavap\Hm$ & $\overline{h}_{sf}$ & $\overline{h}_{fg}$ & $\Delta H^{vap}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{vap}$ & $\inherit{\overline{h}^\text{vap}}$ & $\inherit{\Delta h^\text{vap}}$ & \begin{thermoextensiveplain}$\Delta_\text{vap}\Hm$\end{thermoextensiveplain} & $\Delta H^{vl}$ & $\inherit{\Deltavap H}$ & $\Delta H^{LV}$ \\ +% enthalpy of sublimation & \verb"\Deltasub\Hm" & $\Deltasub\Hm$ & $\overline{h}_{sg}$ & $\overline{h}_{sg}$ & $\inherit{\Delta H^{sub}}$ & $\Delta H_{\mathrm{m}}$ & $\Delta h_\text{sub}$ & $\inherit{\overline{h}^\text{sub}}$ & $\inherit{\Delta h^\text{sub}}$ & $\Delta_\text{sub}\Ht$ & $\Delta H^{vs}$ & $\inherit{\Deltasub H}$ & $\inherit{\Delta H^{SV}}$ \\ +% entropy (total) & \verb"\St" & $\St$ & $S$ & $S$ & $\St$ & $S$ & $S$ & $S$ & $S$ & $S$ & $S^t$ & $\St$ & $\St$ \\ +% entropy (molar) & \verb"\Sm" & $\Sm$ & $\overline{s}$ & $\overline{s}$ & $S$ & $S_{\mathrm{m}}$ & $s$ & $\overline{s}$ & $s$ & $\St$ & $S$ & $S$ & $S$ \\ +% entropy (specific) & \verb"\Ss" & $\Ss$ & $s$ & $s$ & $S$ & $\inherit{\Ss}$ & $\hat s$ & $s$ & $\inherit{\hat s}$ & $\hat S$ & $S$ & $\hat S$ & $\inherit{\Ss}$ \\ +% entropy (partial molar) of $i$ & \verb"\Spm_i" & $\Spm_i$ & $\overline{S}_i$ & $\widetilde{s}_i$ & $\overline{S}_i$ & $S_{\mathrm{m}i}$ & $\overline{S}_i$ & $\Spm_i$ & $\overline{s}_i$ & \begin{thermoshortpm}$\Spm_i$\end{thermoshortpm} & $\overline{S}_i$ & $\Spm_i$ & $\Spm_i$ \\ +% extent of reaction & \verb"\xrxn" & $\xrxn$ & $\zeta$ & $\inherit{\xrxn}$ & $\xi$ & $\xiup$ & $\xi$ & $\varepsilon$ & $\inherit{\xi}$ & $X$ & $\varepsilon$ & $\xiup$ & $\xi$ \\ +% fugacity of pure substance & \verb"\fpure" & $\fpure$ & $f$ & $\inherit{\fpure}$ & $f$ & $f$ & $f$ & $f$ & $f_\text{pure}$ & $f$ & $f$ & $f$ & $f$ \\ +% fugacity of pure $i$ & \verb"\fpure_i" & $\fpure_i$ & $\inherit{f_i^\bullet}$ & $\inherit{\fpure_i}$ & $f_i$ & $f_i^\bullet$ & $f_i$ & $f_i$ & $f_{\text{pure}\,i}$ & $f_i$ & $f_i$ & $f_i$ & $f_i^\bullet$ \\ +% fugacity of $i$ in mixture & \verb"\fmix_i" & $\fmix_i$ & $f_i$ & $\inherit{\fmix_i}$ & $\hat f_i$ & $f_i$ & $\hat f_i$ & $\bar f_i$ & $f_i$ & $\bar f_i$ & $\hat f_i$ & $\hat f_i$ & $\widehat{f}_i$ \\ +% fugacity at saturation & \verb"\fsat" & $\fsat$ & $\inherit{f^\sat}$ & $\inherit{\fsat}$ & $f^{sat}$ & $\inherit{f^\text{sat}}$ & $\inherit{f^\text{sat}}$ & $\inherit{f^\text{sat}}$ & $f^s_\text{pure}$ & $f^\text{sat}$ & $f^\text{sat}$ & $\inherit{\fsat}$ & $f^\text{sat}$ \\ +% fugacity coefficient of pure substance & \verb"\phipure" & $\phipure$ & $\inherit{\phi}$ & $\inherit{\phipure}$ & $\phi$ & $\gamma$ & $\varphi$ & $\inherit{\phi}$ & $\varphi_{\text{pure}}$ & $\phi$ & $\phi$ & $\phiup$ & $\phi$ \\ +% fugacity coefficient of pure $i$ & \verb"\phipure_i" & $\phipure_i$ & $\inherit{\phi_i^\bullet}$ & $\inherit{\phipure_i}$ & $\phi_i$ & $\gamma_i^\bullet$ & $\varphi_i$ & $\inherit{\phi_i}$ & $\varphi_{\text{pure}\,i}$ & $\phi_i$ & $\phi_i$ & $\phiup_i$ & $\phi_i^\bullet$ \\ +% fugacity coefficient of $i$ in mixture & \verb"\phimix_i" & $\phimix_i$ & $\inherit{\phi_i}$ & $\inherit{\phimix_i}$ & $\hat\phi_i$ & $\gamma_i$ & $\hat\varphi_i$ & $\bar\phi_i$ & $\varphi_i$ & $\bar\phi_i$ & $\hat\phi_i$ & $\hat\phiup_i$ & $\widehat{\phi}_i$ \\ +% fugacity coefficient at saturation & \verb"\phisat" & $\phisat$ & $\inherit{\phisat}$ & $\inherit{\phisat}$ & $\phi^{sat}$ & $\inherit{\gamma^\text{sat}}$ & $\varphi^\text{sat}$ & $\inherit{\phi^\text{sat}}$ & $\varphi^s$ & $\phi^\text{sat}$ & $\phi^\text{sat}$ & $\inherit{\phiup^\sat}$ & $\phi^\text{sat}$ \\ +% Gibbs free energy (total) & \verb"\Gt" & $\Gt$ & $G$ & $G$ & $\Gt$ & $G$ & $G$ & $G$ & $G$ & $G$ & $G^t$ & $\Gt$ & $\Gt$ \\ +% Gibbs free energy (molar) & \verb"\Gm" & $\Gm$ & $\overline{g}$ & $\overline{g}$ & $G$ & $G_{\mathrm{m}}$ & $g$ & $\overline{g}$ & $g$ & $\Gt$ & $G$ & $G$ & $G$ \\ +% Gibbs free energy (specific) & \verb"\Gs" & $\Gs$ & $g$ & $g$ & $G$ & $\inherit{\Gs}$ & $\hat g$ & $g$ & $\inherit{\hat g}$ & $\hat G$ & $G$ & $\Gs$ & $\inherit{\Gs}$ \\ +% Gibbs free energy (partial molar) & \verb"\Gpm_i" & $\Gpm_i$ & $\overline{G}_i$ & $\widetilde{g}_i$ & $\Gpm_i$ & $G_{\mathrm{m}i}$ & $\overline{G}_i$ & $\Gpm_i$ & $\partialmolar{g}_i$ & \begin{thermoshortpm}$\Gpm_i$\end{thermoshortpm} & $\Gpm_i$ & $\Gpm_i$ & $\partialmolar{G}_i$ \\ +% Gibbs free energy of mixing & \verb"\Deltamix\Gt" & $\Deltamix\Gt$ & $\inherit{\Deltamix G}$ & $\inherit{\Deltamix G}$ & $\Delta\Gt_\text{mix}$ & $\Delta G_\text{mix}$ & $\Delta G_\text{mix}$ & $\inherit{\Deltamix G}$ & $\Delta G_\text{mixing}$ & $\Delta_\text{mix}G$ & $\Delta G^t$ & $\Deltamix\Gt$ & $\Delta_{MIX}\Gt$ \\ +% Gibbs free energy of reaction & \verb"\Deltarxn\Gm" & $\Deltarxn\Gm$ & $\inherit{\Deltarxn{\bar{g}}}$ & $\overline{g}_R$ & $\Delta G$ & $\Delta G_{\mathrm{m}}$ & $\Delta g_\text{rxn}$ & $\inherit{\Deltarxn{\overline{g}}}$ & $\inherit{\Delta g_\text{rxn}}$ & $\Delta_\text{rxn}\Gt$ & $\Delta G$ & $\Delta G_{rx}$ & $\Delta G_R$ \\ +% grand potential (total) & \verb"\Lt" & $\Lt$ & $F_\mu$ & $\inherit{\Omega}$ & $\inherit{\Lt}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Omega}$ & $\inherit{\Lt}$ & $\inherit{\Lt}$ & $\inherit{\Lt}$ \\ +% grand potential (molar) & \verb"\Lm" & $\Lm$ & $\overline{f}_\mu$ & $\inherit{\overline{\omega}}$ & $\inherit{\Lm}$ & $\inherit{\Omega_{\mathrm{m}}}$ & $\inherit{\omega}$ & $\inherit{\overline{\omega}}$ & $\inherit{\omega}$ & $\inherit{\Lt}$ & $\inherit{\Lm}$ & $\inherit{\Lm}$ & $\inherit{\Lm}$ \\ +% grand potential (specific) & \verb"\Ls" & $\Ls$ & $f_\mu$ & $\inherit{\omega}$ & $\inherit{\Ls}$ & $\inherit{\Ls}$ & $\inherit{\hat\omega}$ & $\inherit{\omega}$ & $\inherit{\hat\omega}$ & $\inherit{\Ls}$ & $\inherit{\Lm}$ & $\inherit{\Ls}$ & $\inherit{\Ls}$ \\ +% heat (total) & \verb"\Qt" & $\Qt$ & $Q$ & $Q$ & $\Qt$ & $Q$ & $Q$ & $Q$ & $Q$ & $Q$ & $Q^t$ & $\inherit{\Qt}$ & $\inherit{\Qt}$ \\ +% heat (molar) & \verb"\Qm" & $\Qm$ & $\overline{q}$ & $\overline{q}$ & $Q$ & $\inherit{Q_{\mathrm{m}}}$ & $q$ & $\overline{q}$ & $\inherit{q}$ & $\inherit{\Qt}$ & $Q$ & $Q$ & $Q$ \\ +% heat (specific) & \verb"\Qs" & $\Qs$ & $q$ & $q$ & $Q$ & $\inherit{\Qs}$ & $\hat q$ & $q$ & $\inherit{\hat q}$ & $\inherit{\Qs}$ & $Q$ & $\inherit{\hat Q}$ & $\inherit{\Qs}$ \\ +% heat capacity (isobaric, total) & \verb"\cPt" & $\cPt$ & $C_P$ & $\inherit{C_p}$ & $\underline{C}_P$ & $C_P$ & $\inherit{C_P}$ & $\inherit{C_p}$ & $C_p$ & $NC_P$ & $nC_P$ & $\inherit{\underline{C}_p}$ & $\inherit{\cPt}$ \\ +% heat capacity (isobaric, molar) & \verb"\cP" & $\cP$ & $\overline{c}_P$ & $\overline{c}_p$ & $C_P$ & $C_{P\mathrm{m}}$ & $c_P$ & $\overline{c}_p$ & $c_p$ & $C_P$ & $C_P$ & $C_p$ & $C_P$ \\ +% heat capacity of $i$ (isobaric, molar) & \verb"\cP_i" & $\cP_i$ & $\overline{c}_{P,i}$ & $\overline{c}_{p,i}$ & $C_{P,i}$ & $C_{P\mathrm{m}i}^\bullet$ & $C_{P,i}$ & $\overline{c}_{p,i}$ & $c_{p\,i}$ & $C_{P,i}$ & ${C_P}_i$ & $C_{pi}$ & $C_{P,i}$ \\ +% heat capacity (isobaric, specific) & \verb"\cPs" & $\cPs$ & $c_P$ & $c_p$ & $C_P$ & $\inherit{\cPs}$ & $\hat c_P$ & $c_p$ & $\inherit{\hat c_p}$ & $\hat C_P$ & $C_P$ & $\inherit{\hat C_p}$ & $\inherit{\hat C_p}$ \\ +% heat capacity (isobaric, partial molar) & \verb"\cPpm_i" & $\cPpm_i$ & $\overline{c}_{P,i}$ & $\inherit{\widetilde{C}_{p,i}}$ & $\overline{C}_{P,i}$ & $C_{P\mathrm{m}i}$ & $\overline{C}_{P,i}$ & \begin{thermoshortpm}$\partialmolar{C}_{p,i}$\end{thermoshortpm} & $\inherit{\bar c_{p\,i}}$ & \begin{thermoshortpm}$\cPpm_i$\end{thermoshortpm} & ${\overline{C}_P}_i$ & $\overline{C}_{pi}$ & \begin{thermoshortpm}$\inherit{\cPpm_i}$\end{thermoshortpm} \\ +% heat capacity (isochoric, total) & \verb"\cVt" & $\cVt$ & $C_V$ & $\inherit{C_V}$\footref{fn:XeTeX} & $\underline{C}_V$ & $C_V$ & $C_V$ & $C_v$ & $C_v$ & $NC_V$ & $nC_V$ & $\inherit{\underline{C}_v}$ & $\inherit{\cVt}$ \\ +% heat capacity (isochoric, molar) & \verb"\cV" & $\cV$ & $\overline{c}_v$ & $\overline{c}_V$\footref{fn:XeTeX} & $C_V$ & $C_{V\mathrm{m}}$ & $c_V$ & $\overline c_v$ & $c_v$ & $C_V$ & $C_V$ & $C_v$ & $C_V$ \\ +% heat capacity (isochoric, specific) & \verb"\cVs" & $\cVs$ & $c_v$ & $c_V$\footref{fn:XeTeX} & $C_V$ & $\inherit{\cVs}$ & $\hat c_v$ & $c_v$ & $\inherit{\hat c_p}$ & $\hat C_V$ & $C_V$ & $\inherit{\hat C_v}$ & $\inherit{\cVs}$ \\ +% heat capacity (isochoric, partial molar) & \verb"\cVpm_i" & $\cVpm_i$ & $\overline{c}_{v,i}$ & $\widetilde{C}_{V,i}$\footref{fn:XeTeX} & $\overline{C}_{V,i}$ & $C_{V\mathrm{m}i}$ & $\overline{C}_V$ & \begin{thermoshortpm}$\partialmolar{C}_{v,i}$\end{thermoshortpm} & $\inherit{\bar c_{v\,i}}$ & \begin{thermoshortpm}$\cVpm_i$\end{thermoshortpm} & ${\overline{C}_V}_i$ & $\overline{C}_{vi}$ & \begin{thermoshortpm}$\inherit{\cVpm_i}$\end{thermoshortpm} \\ +% Helmholtz free energy (total) & \verb"\Ft" & $\Ft$ & $F$ & $A$ & $\underline{A}$ & $A$ & $A$ & $\Psi$ & $A$ & $A$ & $A^t$ & $\Ft$ & $\Ft$ \\ +% Helmholtz free energy (molar) & \verb"\Fm" & $\Fm$ & $\bar{f}$ & $\overline{a}$ & $A$ & $A_{\mathrm{m}}$ & $a$ & $\overline{\psi}$ & $a$ & $\Ft$ & $A$ & $A$ & $A$ \\ +% Helmholtz free energy (specific) & \verb"\Fs" & $\Fs$ & $f$ & $a$ & $A$ & $\inherit{\Fs}$ & $\hat a$ & $\psi$ & $\inherit{\hat a}$ & $\hat A$ & $A$ & $\Fs$ & $\inherit{\Fs}$ \\ +% Helmholtz free energy (partial molar) & \verb"\Fpm_i" & $\Fpm_i$ & $\overline{f}_i$ & $\widetilde{a}_i$ & $\overline{A}_i$ & $A_{\mathrm{m}i}$ & $\overline{A}_i$ & $\overline{\Psi}_i$ & $\overline a_i$ & \begin{thermoshortpm}$\Fpm_i$\end{thermoshortpm} & $\begin{thermoshortpm}\Fpm_i\end{thermoshortpm}$ & $\partialmolar{A}_i$ & \begin{thermoshortpm}$\partialmolar{A}_i$\end{thermoshortpm} \\ +% Henry's constant (rational basis) & \verb"\Henryrat_i" & $\Henryrat_i$ & $\inherit{\Henryrat_i}$ & $\inherit{\Henryrat_i}$ & $h_i$ & $k_i$ & $\mathcal{H}_i$ & $\inherit{\Henryrat_i}$ & $H_i$ & $H_i$ & $\mathcal{H}_i$ & $f^{**}$ & $k_{H,i}$ \\ +% Henry's constant (molal basis) & \verb"\Henrymol_i" & $\Henrymol_i$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $k''_i$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\inherit{\Henrymol_i}$ & $\mathcal{H}_i$ & $\inherit{\Henrymol_i}$ & $f^*$ & $k_{H,i}$ \\ +% ideal gas enthalpy & \verb"\Hm^\IG" & $\Hm^\IG$ & $\inherit{\bar{h}^\IG}$ & $\inherit{\overline{h}^\IG}$ & $H^{ig}$ & $\inherit{H_{\mathrm{m}}^\IG}$ & $h^\text{ideal~gas}$ & $\smash{\overline{h}}^\ast$ & $h^\text{id}$ & $H^\text{IG}$ & $H^{ig}$ & $H^o$ & $H^{IG}$ \\ +% ideal gas mixture enthalpy & \verb"\Hm^\IGM" & $\Hm^\IGM$ & $\inherit{\bar{h}^\IG}$ & $\inherit{\overline{h}^\IGM}$ & $H^{ig}$ & $\inherit{H_{\mathrm{m}}^\IGM}$ & $h^\text{ideal}$ & $\smash{\overline{h}}^\ast$ & $h^\text{id}$ & $H^\text{IGM}$ & $H^{ig}$ & $H^o$ & $H^{IG}$ \\ +% ideal solution enthalpy & \verb"\Hm^\IS" & $\Hm^\IS$ & $\inherit{\bar{h}^\IS}$ & $\inherit{\overline{h}^\IS}$ & $H^{is}$ & $\inherit{H_{\mathrm{m}}^\IS}$ & $h^\text{ideal}$ & $\inherit{\smash{\overline{h}}^\IS}$ & $h^\text{(ideal)}$ & $H^\text{IM}$ & $H^{id}$ & $H^{ID}$ & $H^{IS}$ \\ +% inexact differential & \verb"\dbar" & $\dbar$ & $\delta$ & $\delta$ & $d$ & $d$ & $\delta$ & $\delta$ & $\inherit{\dbar}$ & $\inherit{\dbar}$ & $\dbar$ & $\delta$ & $\delta$ \\ +% internal energy (total) & \verb"\Ut" & $\Ut$ & $U$ & $U$ & $\underline{U}$ & $U$ & $U$ & $U$ & $U$ & $U$ & $U^t$ & $\Ut$ & $\Ut$ \\ +% internal energy (molar) & \verb"\Um" & $\Ut$ & $\bar{u}$ & $\overline{u}$ & $U$ & $U_{\mathrm{m}}$ & $u$ & $\overline{u}$ & $u$ & $\Ut$ & $U$ & $U$ & $U$ \\ +% internal energy (specific) & \verb"\Us" & $\Us$ & $u$ & $u$ & $U$ & $\inherit{\Us}$ & $\hat u$ & $u$ & $\inherit{\hat u}$ & $\hat U$ & $U$ & $u$ & $\inherit{\Us}$ \\ +% internal energy (partial molar) & \verb"\Upm_i" & $\Upm_i$ & $\overline{u}_i$ & $\widetilde{u}_i$ & $\overline{U}_i$ & $U_{\mathrm{m}i}$ & $\overline{U}_i$ & $\Upm_i$ & $\overline{u}_i$ & \begin{thermoshortpm}$\Upm_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Upm_i$\end{thermoshortpm} & $\Upm_i$ & $\Upm_i$ \\ +% isothermal compressibility & \verb"\kappaT" & $\kappaT$ & $\kappa$ & $\alpha$ & $\kappa_T$ & $\betaup$ & $\kappa$ & $\kappa$ & $\beta$ & $\kappa_T$ & $\kappa$ & $\kappa_T$ & $\inherit{\kappaT}$ \\ +% isentropic compressibility & \verb"\kappaS" & $\kappaS$ & $\inherit{\kappaS}$ & $\inherit{\alpha_S}$ & $\inherit{\kappa_S}$ & $\inherit{\beta_S}$ & $\inherit{\kappaS}$ & $\alpha$ & $\inherit{\beta_S}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ & $\inherit{\kappaS}$ \\ +% isobaric expansivity & \verb"\alphaP" & $\alphaP$ & $\beta$ & $\beta$ & $\alpha_P$ & $\alpha$ & $\beta$ & $\beta$ & $\alpha$ & $\alpha$ & $\beta$ & $\alpha_P$ & $\inherit{\alphaP}$ \\ +% isentropic expansivity & \verb"\alphaS" & $\alphaS$ & $\inherit{\beta_S}$ & $\inherit{\beta_S}$ & $\inherit{\alpha_S}$ & $\inherit{\alpha_S}$ & $\inherit{\beta_S}$ & $\inherit{\beta_S}$ & $\alpha_S$ & $\inherit{\alphaS}$ & $\inherit{\beta_S}$ & $\inherit{\alphaS}$ & $\inherit{\alphaS}$ \\ +% Joule--Thomson coefficient & \verb"\muJT" & $\muJT$ & $\mu_J$ & $\mu_\text{JT}$ & $\mu_{JT}$ & $\mu_\text{J.T.}$ & $\mu_\text{JT}$ & $\mu_J$ & $\inherit{\muJT}$ & $\mu$ & $\mu$ & $\alpha_H$ & $\alpha_H$ \\ +% moles & \verb"\Nt" & $\Nt$ & $N$ & $N$ & $n$ & $n$ & $n$ & $n$ & $n$ & $N$ & $n$ & $N$ & $n$ \\ +% saturation pressure & \verb"\Psat" & $\Psat$ & $\inherit{\Psat}$ & $P^v$ & $P^{sat}$ & $p$ & $P^\text{sat}$ & $\inherit{P^\text{sat}}$ & $P^s$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ \\ +% saturation pressure of $i$ & \verb"\Psat_i" & $\Psat_i$ & $\inherit{\Psat_i}$ & $P^v_i$ & $P^{sat}_i$ & $p^\bullet_i$ & $P^\text{sat}_i$ & $\inherit{P^\text{sat}_i}$ & $P^s_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ & $P^\text{sat}_i$ \\ +% standard molality & \verb"\Cstd_i" & $\Cstd_i$ & $\inherit{\Cstd_i}$ & $\inherit{\Cstd_i}$ & $m_i^\circ$ & $m_i^\circ$ & $\inherit{C_i^o}$ & $\inherit{\Cstd_i}$ & $C_i^0$ & \text{1~molal} & $m^\circ$ & $m^+$ & $m_i^\circ$ \\ +% standard chemical potential & \verb"\mustd" & $\mustd$ & $\inherit{\mustd}$ & $\inherit{\mustd}$ & $\mu^\circ$ & $\muup^\circ$ & $\mu^o$ & $\overline{g}^\circ$ & $\mu^0$ & $\mu^\circ$ & $G^\circ$ & $\muup^o$ & $\Gamma$ \\ +% standard enthalpy & \verb"\Hm^\std" & $\Hm^\std$ & $\bar{h}^\circ$ & $\smash{\overline{h}}^\circ$ & $H^\circ$ & $H^\circ_{\mathrm{m}}$ & $h^o$ & $\overline{h}^\circ$ & $h^0$ & $\Ht^\circ$ & $H^\circ$ & $H^o$ & $H^\circ$ \\ +% standard enthalphy of formation & \verb"\Deltaf\Hm^std" & $\Deltaf\Hm^\std$ & $\bar{h}^\circ_f$ & $\smash{\overline{h}}_f^\circ$ & $\Delta H_f^\circ$ & $\Delta_f H^\circ_{\mathrm{m}}$ & $\Delta h_f^o$ & $\bar{h}^\circ_{\mathrm{f}}$ & $\Delta h_f^0$ & $\Delta_{\mathrm{f}}\Ht^\circ$ & $\Delta H^\circ_{f298}$ & $\Delta H_f^o$ & $\Delta H_F^\circ$ \\ +% standard enthalphy of formation of $i$ & \verb"\Deltaf\Hm^std_i" & $\Deltaf\Hm^\std_i$ & $\bar{h}^\circ_{f,i}$ & $\smash{\overline{h}}_{f,i}^\circ$ & $\Delta H_{f,i}^\circ$ & $\Delta_f H^\circ_{\mathrm{m}i}$ & $(\Delta h_f^o)_i$ & $(\bar{h}^\circ_{\mathrm{f}})_i$ & $\Delta h_{f\,i}^0$ & $\Delta_{\mathrm{f}}\Ht^\circ_i$ & $\Delta H^\circ_{f298i}$ & $\Delta H^o_{fi}$ & $\Delta H_{F,i}^\circ$ \\ +% standard enthalphy of reaction & \verb"\Deltarxn\Hm^std" & $\Deltarxn\Hm^\std$ & $\inherit{\bar{h}^\circ_\reaction}$ & $\smash{\overline{h}}_R^\circ$ & $\Delta H^\circ$ & $\Delta H_{\mathrm{m}}$ & $\Delta h^o_\text{rxn}$ & $\inherit{\Delta\bar{h}^\circ_\text{rxn}}$ & $\Delta h^0_\text{rxn}$ & $\Delta_\text{rxn}\Ht^\circ$ & $\Delta H^\circ$ & $\Delta H_{rx}^o$ & $\Delta H_R^\circ$ \\ +% standard free energy of formation & \verb"\Deltaf\Gm^std" & $\Deltaf\Gm^\std$ & $\bar{g}^\circ$ & $\smash{\bar{g}}_f^\circ$ & $\Delta G_f^\circ$ & $\Delta_f G^\circ_{\mathrm{m}}$ & $\Delta g_f^o$ & $\bar{g}^\circ_{\mathrm{f}}$ & $\Delta g_f^0$ & $\Delta_{\mathrm{f}}\Gt^\circ$ & $\Delta G^\circ_{f298}$ & $\Delta G_f^o$ & $\Delta G_F^\circ$ \\ +% standard free energy of formation of $i$ & \verb"\Deltaf\Gm_i^std" & $\Deltaf\Gm_i^\std$ & $\bar{g}^\circ_{f,i}$ & $\smash{\bar{g}}_{f,i}^\circ$ & $\Delta G_{f,i}^\circ$ & $\Delta_f G^\circ_{\mathrm{m}i}$ & $(\Delta g_f^o)_i$ & $(\bar{g}^\circ_{\mathrm{f}})_i$ & $\Delta g_{f\,i}^0$ & $\Delta_{\mathrm{f}}\Gt^\circ_i$ & $\Delta G^\circ_{f298i}$ & $\Delta G^o_{fi}$ & $\Delta G_{F,i}^\circ$ \\ +% standard free energy of reaction & \verb"\Deltarxn\Gm^std" & $\Deltarxn\Gm^\std$ & $\inherit{\bar{g}^\circ_\reaction}$ & $\smash{\bar{g}}^\circ_R$ & $\Delta G^\circ$ & $\Delta G_{\mathrm{m}}$ & $\Delta g^o_\text{rxn}$ & $\inherit{\Delta\bar{g}^\circ_\text{rxn}}$ & $\Delta g_\text{rxn}^0$ & $\Delta_\text{rxn}\Gt^\std$ & $\Delta G^\circ$ & $\Delta G^o_{rx}$ & $\Delta G_R^\circ$ \\ +% standard fugacity & \verb"\fstd" & $\fstd$ & $\inherit{f^\circ}$ & $\inherit{f^\circ}$ & $f^\circ$ & $f^\circ$ & $f^o$ & $\inherit{f^\circ}$ & $f^0$ & $\bar f^\circ$ & $f^\circ$ & $\inherit{\fstd}$ & $f^\circ$ \\ +% standard Gibbs free energy & \verb"\Gm^\std" & $\Gm^\std$ & $\bar{g}^\circ$ & $\bar{g}^\circ$ & $G^\circ$ & $G^\circ_{\mathrm{m}}$ & $g^o$ & $\overline{g}^\circ$ & $g^0$ & $\Gt^\circ$ & $G^\circ$ & $G^o$ & $G^\circ$ \\ +% standard Gibbs free energy of $i$ & \verb"\Gm^\std_i" & $\Gm^\std_i$ & $\bar{g}^\circ_i$ & $\bar{g}_i^\circ$ & $G^\circ_i$ & $G^\circ_{\mathrm{m}i}$ & $g_i^o$ & $\overline{g}^\circ_i$ & $g^0_i$ & $\Gt^\circ_i$ & $G^\circ_i$ & $G^o_i$ & $G^\circ_i$ \\ +% standard pressure & \verb"\Pstd" & $\Pstd$ & $P_0$ & $P_0$ & $P^\circ$ & $P^\circ$ & $\inherit{P^o}$ & $p_\text{ref}$ & $P^0$ & \text{1~bar} & $P^\circ$ & $P^\ast$ & $P^\circ$ \\ +% vapor pressure & \verb"\Pvap" & $\Pvap$ & $\inherit{\Pvap}$ & $P^v$ & $P^{std}$ & $p$ & $\inherit{P^\text{sat}}$ & $p_\text{ref}$ & $P^s$ & $P^\text{vap}$ & $P^\text{sat}$ & $P^\text{sat}$ & $P^\text{sat}$ \\ +% volume (total) & \verb"\Vt" & $\Vt$ & $V$ & $V$\footref{fn:XeTeX} & $\Vt$ & $V$ & $V$ & $V$ & $V$ & $V$ & $V^t$ & $\Vt$ & $\Vt$ \\ +% volume (molar) & \verb"\Vm" & $\Vm$ & $\bar{v}$ & $\overline{v}$\footref{fn:XeTeX} & $V$ & $V_{\mathrm{m}}$ & $v$ & $\overline{v}$ & $v$ & $\Vt$ & $V$ & $V$ & $V$ \\ +% volume (specific) & \verb"\Vs" & $\Vs$ & $v$ & $v$\footref{fn:XeTeX} & $V$ & $\inherit{\Vs}$ & $\hat v$ & $v$ & $\inherit{\hat v}$ & $\hat V$ & $V$ & $\inherit{v}$ & $\inherit{\Vs}$ \\ +% volume (molar, residual) & \verb"\VR" & $\VR$ & $\inherit{\bar{v}^\residual}$ & $\inherit{\overline{v}^\residual}$\footref{fn:XeTeX} & $\inherit{V^R}$ & $\inherit{V^{\mathrm{R}}_{\mathrm{m}}}$ & $v^\text{dep}$ & $\inherit{\overline{v}^R}$ & $v^R$ & $\Vt^r$ & $V^R$ & $\inherit{\VR}$ & $V^R$ \\ +% volume (molar, excess) & \verb"\VE" & $\VE$ & $\inherit{\bar{v}^\excess}$ & $\inherit{\overline{v}^\excess}$\footref{fn:XeTeX} & $V^E$ & $V^{\mathrm{E}}_{\mathrm{m}}$ & $v^E$ & $\inherit{\overline{v}^E}$ & $v^E$ & $\Vt^\text{ex}$ & $V^E$ & $V^{EX}$ & $V^{EX}$ \\ +% volume (partial molar, excess) & \verb"\VEpm_i" & $\VEpm_i$ & $\inherit{\overline{v}_i^\excess}$ & $\inherit{\widetilde{v}^\excess}$\footref{fn:XeTeX} & $\smash{\overline{V}}^E_i$ & $V^{\mathrm{E}}_{\mathrm{m}i}$ & $\smash{\overline{V}}^E_i$ & $\inherit{\overline{V}^E_i}$ & $\overline{v}^E_i$ & \begin{thermoshortpm}$\Vpm^{\text{ex}}_i$\end{thermoshortpm} & \begin{thermoshortpm}$\VEpm_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Vpm^{EX}_i$\end{thermoshortpm} & \begin{thermoshortpm}$\Vpm^{EX}_i$\end{thermoshortpm} \\ +% work (total) & \verb"\Wt" & $\Wt$ & $W$ & $W$ & $\underline{W}$ & $W$ & $W$ & $W$ & $W$ & $W$ & $\inherit{W^t}$ & $\inherit{\Wt}$ & $\inherit{\Wt}$ \\ +% work (molar) & \verb"\Wm" & $\Wm$ & $\bar{w}$ & $\overline{w}$ & $W$ & $\inherit{W_{\mathrm{m}}}$ & $w$ & $\inherit{\overline{w}}$ & $\inherit{w}$ & $\inherit{\Wt}$ & $W$ & $W$ & $W$ \\ +% work (specific) & \verb"\Ws" & $\Ws$ & $w$ & $w$ & $W$ & $\inherit{\Ws}$ & $\hat w$ & $\inherit{w}$ & $\inherit{\hat w}$ & $\inherit{\hat W}$ & $\inherit{W}$ & $w$ & $\inherit{\Ws}$ \\ +% \end{mpsupertabular} +% \end{landscape} +% %^^X \end{documentation} % % \setcounter{IndexColumns}{2} @@ -1763,17 +1984,18 @@ % \end{macro} % % Symbols are defined for the total energy, internal energy, Helmholtz free -% energy, Gibbs free energy, enthalpy, entropy, surface area, volume, number -% of moles, heat, and work; these are $E$, $U$, $A$, $G$, $H$, $S$, $a$, -% $V$, $n$, $Q$, and $W$, respectively. These commands should not be used on -% their own, but rather accessed through the macros \cs{Ut}, \cs{Um}, and -% \cs{Us} (using the internal energy as an example). +% energy, Gibbs free energy, grand potential (Landau free energy), enthalpy, +% entropy, surface area, volume, number of moles, heat, and work; these are +% $E$, $U$, $A$, $G$, $\Omega$, $H$, $S$, $a$, $V$, $n$, $Q$, and $W$, +% respectively. These commands should not be used on their own, but rather +% accessed through the macros \cs{Ut}, \cs{Um}, and \cs{Us} (using the internal +% energy as an example). % % The default symbols are not intended to be easy to change---the intended % mechanism is through package options. If you want to use a non-standard % symbol that is not available through one of the package options, you can % redefine the internal token lists inside -% \cs{ExplSyntaxOn}\dots\cs{ExplSyntaxOff}. For example, +% \cs{ExplSyntaxOn}\,\dots\!\cs{ExplSyntaxOff}. For example, % \begin{verbatim} % \ExplSyntaxOn % \tl_gset:Nn \g__thermodynamics_Helmholtz_symbol {H} @@ -1783,7 +2005,7 @@ % would define the ill-advised notation that I have nonetheless heard of % that uses $H$ for Helmholtz free energy and $h$ for enthalpy. % Note that the macros for temperature and pressure are only used inside -% the definitions of the compressibilities, expansivitites, and heat +% the definitions of the compressibilities, expansivities, and heat % capacities; there is no user-level macro for the temperature or the pressure, % so it is up to the user to use consistent symbols for those properties. % \begin{macrocode} @@ -1806,7 +2028,9 @@ \tl_gset:Nn \g_@@_internal_energy_symbol U \tl_gset:Nn \g_@@_Helmholtz_symbol A \tl_gset:Nn \g_@@_Gibbs_symbol G -\tl_gset:Nn \g_@@_Landau_symbol \Omega +\cs_if_exist:NTF \Omegait +{ \tl_gset:Nn \g_@@_Landau_symbol \Omegait } +{ \tl_gset:Nn \g_@@_Landau_symbol \Omega } \tl_gset:Nn \g_@@_enthalpy_symbol H \tl_gset:Nn \g_@@_entropy_symbol S \tl_gset:Nn \g_@@_area_symbol a @@ -1960,7 +2184,14 @@ } \cs_new:Npn \@@_set_extensive_superscripts { - \cs_set:Nn \@@_extensive:n {{##1}\c_math_superscript_token t} + \cs_set:Nn \@@_extensive_one:n + { \c_math_superscript_token {##1\l_@@_super_separator_tl t} } + \cs_set:Nn \@@_extensive:n + { + \peek_catcode_remove:NTF \c_math_superscript_token + { ##1 \@@_extensive_one:n } + { ##1 \c_math_superscript_token t } + } \cs_set:Nn \@@_intensive:n {##1} } \DeclareOption{extensive-plain}{\@@_set_extensive_plain} @@ -1969,44 +2200,83 @@ \@@_set_intensive_lowercase \AtEndOfPackage{ \@@_set_lowercase_pms - \RenewDocumentCommand{\heatcapacitysymbol}{}{c} } } \DeclareOption{extensive-superscript}{% \@@_set_extensive_superscripts - \AtEndOfPackage{% - \RenewDocumentCommand{\URt}{}{\g_@@_internal_energy_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\HRt}{}{\g_@@_enthalpy_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\FRt}{}{\g_@@_Helmoholtz_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\GRt}{}{\g_@@_Gibbs_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\VRt}{}{\g_@@_volume_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\SRt}{}{\g_@@_entropy_symbol - \c_math_superscript_token{\residual,t}} - \RenewDocumentCommand{\UEt}{}{\g_@@_internal_energy_symbol - \c_math_superscript_token{\excess,t}} - \RenewDocumentCommand{\HEt}{}{\g_@@_enthalpy_symbol - \c_math_superscript_token{\excess,t}} - \RenewDocumentCommand{\FEt}{}{\g_@@_Helmoholtz_symbol - \c_math_superscript_token{\excess,t}} - \RenewDocumentCommand{\GEt}{}{\g_@@_Gibbs_symbol - \c_math_superscript_token{\excess,t}} - \RenewDocumentCommand{\VEt}{}{\g_@@_volume_symbol - \c_math_superscript_token{\excess,t}} - \RenewDocumentCommand{\SEt}{}{\g_@@_entropy_symbol - \c_math_superscript_token{\excess,t}} +%^^A \AtEndOfPackage{% +%^^A \RenewDocumentCommand{\URt}{}{\g_@@_internal_energy_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\HRt}{}{\g_@@_enthalpy_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\FRt}{}{\g_@@_Helmoholtz_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\GRt}{}{\g_@@_Gibbs_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\VRt}{}{\g_@@_volume_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\SRt}{}{\g_@@_entropy_symbol +%^^A \c_math_superscript_token{\residual,t}} +%^^A \RenewDocumentCommand{\UEt}{}{\g_@@_internal_energy_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A \RenewDocumentCommand{\HEt}{}{\g_@@_enthalpy_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A \RenewDocumentCommand{\FEt}{}{\g_@@_Helmoholtz_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A \RenewDocumentCommand{\GEt}{}{\g_@@_Gibbs_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A \RenewDocumentCommand{\VEt}{}{\g_@@_volume_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A \RenewDocumentCommand{\SEt}{}{\g_@@_entropy_symbol +%^^A \c_math_superscript_token{\excess,t}} +%^^A } +} +% \end{macrocode} +% \begin{environment}{thermolongpm,thermoshortpm} +% The |longpm| option (the default) makes partial molar quantities that +% look like \(\UEpm_i\). The |shortpm| option (which is used by several +% textbooks) makes partial molar quantities look like +% \(\smash{\mkern2mu\overline{\mkern-2mu U}}_i^E\). +% The environments \env{thermolongpm} and \env{thermoshortpm} do the same +% thing locally. +% \changes{v2.02}{2024/06/14}{Added ``longpm'' and ``shortpm'' options to +% control how partial molar properties are rendered along with the +% environments \env{thermolongpm} and \env{thermoshortpm} to change them +% locally.} +% \begin{macrocode} +\bool_new:N \l_@@_longpm_bool +\DeclareOption{longpm}{\bool_set_true:N \l_@@_longpm_bool} +\cs_set_eq:NN \@@_overline_copy:n \@@_overline:n +\DeclareOption{shortpm}{ + \bool_set_false:N \l_@@_longpm_bool + \AtEndOfPackage{ + \RenewDocumentCommand{\cPpm}{} + { + \cs_set:Nn \@@_overline:n {##1} + \partialmolar{\cPpmshort} + } + \RenewDocumentCommand{\cVpm}{} + { + \cs_set:Nn \@@_overline:n {##1} + \partialmolar{\cVpmshort} + } } } +\NewDocumentEnvironment{thermolongpm}{}{% + \bool_set_true:N \l_@@_longpm_bool +}{} +\NewDocumentEnvironment{thermoshortpm}{}{% + \bool_set_false:N \l_@@_longpm_bool + \RenewSubscriptedSymbol{\cPpm}{\@@_overline:n \heatcapacitysymbol} + {\g_@@_pressure_symbol} + \RenewSubscriptedSymbol{\cVpm}{\@@_overline:n \heatcapacitysymbol} + {\g_@@_volume_symbol} +}{} % \end{macrocode} +% \end{environment} % % The next two options choose whether variables held constant are subscripted % (the default) or placed next to the function. The difference is -%%^^A \[ \left(\frac{\partial U}{\partial S}\right)_V \quad\text{versus}\quad -%%^^A \left(\frac{\partial U(S,V)}{\partial S}\right) \] % \[ \Partial{\Um}{\Sm}{\Vm} \quad\text{versus}\quad % \begin{thermoNOsubscripts} % \Partial{\Um}{\Sm}{\Vm} @@ -2132,7 +2402,8 @@ % \end{macrocode} % \end{macro} % -% We then define two package options that change how to render \cs{allNs} and +% \subsection{Package Options} +% We define two package options that change how to render \cs{allNs} and % friends.\relax % \changes{v1.01}{2022/05/04}{Fixed bug in \cs{allbutlastand} when using the % |moles-range| option ($C$ should have been $C-1$ in the last option).} @@ -2177,50 +2448,343 @@ } % \end{macrocode} % The remaining options define textbook-specific notation. +% \changes{v2.02}{2024/06/14}{Added \texttt{KlotzRosenberg} option.} % \begin{macrocode} \DeclareOption{Bejan}{ - \ExecuteOptions{EUFGHAN,intensive-lowercase,delta} - \cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}} - \cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n {#1}}} - \tl_gset:Nn \g_@@_volume_symbol v + \ExecuteOptions{EUFGHAN,intensive-lowercase,delta,shortpm} + \AtEndOfPackage{ + \cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}} + \cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n {#1}}} + \cs_set:Nn \@@_extensive:n {\text_uppercase:n {#1}} + \tl_gset:Nn \g_@@_volume_symbol v + \RenewExpandableDocumentCommand{\ncomponents}{}{n} + \RenewSubscriptedSymbol{\Lt}{\g_@@_Helmholtz_symbol}{\mu} + \RenewSubscriptedSymbol{\Lm} + {\bar{\text_lowercase:n \g_@@_Helmholtz_symbol}}{\mu} + \RenewSubscriptedSymbol{\Ls} + {\text_lowercase:n \g_@@_Helmholtz_symbol}{\mu} + \cs_new:Npn \Delta_vap_sym {} {} + \NewSubscriptedSymbol{\Delta_vap}{\Delta_vap_sym}{{fg}} + \RenewDocumentCommand{\Deltavap}{m}{ + \cs_set:Npn \Delta_vap_sym {} {#1} + \Delta_vap + } + \cs_new:Npn \Delta_fus_sym {} {} + \NewSubscriptedSymbol{\Delta_fus}{\Delta_fus_sym}{{sf}} + \RenewDocumentCommand{\Deltafus}{m}{ + \cs_set:Npn \Delta_fus_sym {} {#1} + \Delta_fus + } + \cs_new:Npn \Delta_sub_sym {} {} + \NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{{sg}} + \RenewDocumentCommand{\Deltasub}{m}{ + \cs_set:Npn \Delta_sub_sym {} {#1} + \Delta_sub + } + \RenewExpandableDocumentCommand{\heatcapacitysymbol}{}{c} + \RenewSubscriptedSymbol{\cV}{\@@_intensive:n {\heatcapacitysymbol}} + {\text_lowercase:n \g_@@_volume_symbol} + \RenewSubscriptedSymbol{\cVt}{\@@_extensive:n {\heatcapacitysymbol}} + {\text_uppercase:n \g_@@_volume_symbol} + \RenewSubscriptedSymbol{\cVpm}{\heatcapacitysymbol} + {\text_lowercase:n \g_@@_volume_symbol} + \RenewSubscriptedSymbol{\cPpm}{\heatcapacitysymbol} + {\text_lowercase:n \g_@@_pressure_symbol} + \RenewExpandableDocumentCommand{\xrxn}{}{\zeta} + \RenewDocumentCommand{\fmix}{}{f} + \RenewDocumentCommand{\Qm}{}{Q} + \RenewDocumentCommand{\Qs}{}{Q} + \RenewExpandableDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewExpandableDocumentCommand{\expansivitysymbol}{}{\beta} + \RenewExpandableDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewSubscriptedSymbol{\muJT}{\JTsymbol}{J} + \RenewDocumentCommand{\Deltaf}{m} + { \tl_set:Nn \l_@@_Deltaf_sym_tl {#1} \@@_Deltaf } + \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0} + \RenewDocumentCommand{\Wm}{}{W} + \RenewDocumentCommand{\Ws}{}{W} + \cs_new:Nn \@@_fpure_one:n + { + f\c_math_subscript_token{#1} + \peek_catcode_remove:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \RenewDocumentCommand{\fpure}{} + { + \peek_catcode_remove:NTF \c_math_subscript_token + { \@@_fpure_one:n } + { f } + } + \cs_new:Nn \@@_phipure_one:n + { + \phi\c_math_subscript_token{#1} + \peek_catcode:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \RenewDocumentCommand{\phipure}{} + { + \peek_catcode_remove:NTF \c_math_subscript_token + { + \@@_phipure_one:n + } + {\phi} + } + \RenewDocumentCommand{\phimix}{}{\phi} + } } \DeclareOption{CBK}{ - \ExecuteOptions{EUAGHAN,intensive-lowercase} + \ExecuteOptions{EUAGHAN,intensive-lowercase,delta,shortpm} \AtEndOfPackage{ - \cs_set:Nn \@@_overline:n {\widetilde{#1}} + \cs_set:Nn \@@_overline:n {\widetilde #1} + \cs_set:Nn \@@_overline_copy:n {\widetilde #1} \cs_set:Nn \@@_specific:n {\text_lowercase:n {#1}} \cs_set:Nn \@@_intensive:n {\bar{\text_lowercase:n{#1}}} + \tl_gset:Nn \g_@@_area_symbol A + \RenewExpandableDocumentCommand{\reaction}{}{R} + \cs_new:Npn \Delta_vap_sym {} {} + \NewSubscriptedSymbol{\Delta_vap}{\Delta_vap_sym}{{fg}} + \RenewDocumentCommand{\Deltavap}{m}{ + \cs_set:Npn \Delta_vap_sym {} {#1} + \Delta_vap + } + \cs_new:Npn \Delta_fus_sym {} {} + \NewSubscriptedSymbol{\Delta_fus}{\Delta_fus_sym}{{sf}} + \RenewDocumentCommand{\Deltafus}{m}{ + \cs_set:Npn \Delta_fus_sym {} {#1} + \Delta_fus + } + \cs_new:Npn \Delta_sub_sym {} {} + \NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{{sg}} + \RenewDocumentCommand{\Deltasub}{m}{ + \cs_set:Npn \Delta_sub_sym {} {#1} + \Delta_sub + } \tl_gset:Nn \g_@@_pressure_symbol p - \RenewDocumentCommand{\Deltarxn}{m}{{#1}\c_math_subscript_token R} - \RenewDocumentCommand{\compressibilitysymbol}{}{\beta} - \RenewDocumentCommand{\expansivitysymbol}{}{\alpha} + \RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alpha} + \RenewExpandableDocumentCommand{\expansivitysymbol}{}{\beta} + \RenewExpandableDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewExpandableDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewSuperscriptedSymbol{\Psat}{P}{v} + \RenewDocumentCommand{\Deltaf}{m} + { \tl_set:Nn \l_@@_Deltaf_sym_tl {#1} + \@@_Deltaf + } + \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0} + \RenewDocumentCommand{\Lm}{}{\@@_intensive:n\omega} + \RenewDocumentCommand{\Ls}{}{\@@_specific:n\omega} } } \DeclareOption{ElliottLira}{ + \ExecuteOptions{shortpm} \AtEndOfPackage{ + \cs_gset_eq:NN \@@_specific:n \@@_intensive:n + %^^A\RenewDocumentCommand{\partialmolar}{m}{\@@_overline:n #1} \RenewDocumentCommand{\allcomponents}{O{} m}{#2} \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1} - \RenewDocumentCommand{\IG}{}{{\text{ig}}} - \RenewDocumentCommand{\IGM}{}{{\text{ig}}} - \RenewDocumentCommand{\IS}{}{{\text{is}}} + \RenewDocumentCommand{\fusion}{}{{fus}} + \RenewDocumentCommand{\sublimation}{}{{sub}} + \RenewDocumentCommand{\vaporization}{}{{vap}} + \RenewDocumentCommand{\sat}{}{{sat}} + %^^A\RenewSubscriptedSymbol{\Henrymol}{/K}{H} %^^A FIXME + \RenewDocumentCommand{\IG}{}{{ig}} + \RenewDocumentCommand{\IGM}{}{{ig}} + \RenewDocumentCommand{\IS}{}{{is}} + \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token \std} + \RenewDocumentCommand{\muJT}{}{\mu\c_math_subscript_token{JT}} + } +} +\DeclareOption{KlotzRosenberg}{ + \ExecuteOptions{delta} + \AtEndOfPackage{ + \tl_set:Nn \l_@@_sub_separator_tl {} + \cs_set:Nn \@@_extensive:n {#1} + \cs_new:Nn \@@_intensive_one:n + { + \c_math_superscript_token {#1} + \peek_catcode_remove:NTF \c_math_subscript_token + { \@@_intensive_three:n } + { \c_math_subscript_token{\mathrm{m}} } + } + \cs_new:Nn \@@_intensive_three:n + { \c_math_subscript_token{\mathrm{m}\l_@@_sub_separator_tl #1} } + \cs_new:Nn \@@_intensive_two:n + { + \c_math_subscript_token{\mathrm{m}\l_@@_sub_separator_tl #1} + \peek_catcode:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \cs_set:Nn \@@_intensive:n + { + #1 + \peek_catcode_remove:NTF \c_math_superscript_token + { \@@_intensive_one:n } + { \peek_catcode_remove:NTF \c_math_subscript_token + { \@@_intensive_two:n } + { \c_math_subscript_token{\mathrm{m}} } + } + } + \cs_new:Nn \@@_fpure_one:n + { + f\c_math_subscript_token{#1} + \peek_catcode_remove:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \RenewDocumentCommand{\fpure}{} + { + \peek_catcode_remove:NTF \c_math_subscript_token + { \@@_fpure_one:n } + { f } + } + \cs_new:Nn \@@_phipure_one:n + { + \gamma\c_math_subscript_token{#1} + \peek_catcode_remove:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \RenewDocumentCommand{\phipure}{} + { + \peek_catcode_remove:NTF \c_math_subscript_token + { \@@_phipure_one:n } + { \gamma } + } + \RenewDocumentCommand{\fmix}{}{f} + \RenewDocumentCommand{\phimix}{}{\gamma} + \RenewDocumentCommand{\phisat}{}{\gamma^\sat} + \cs_if_exist:NTF \gammaup + { \RenewDocumentCommand{\gamma}{}{\gammaup} } + { \cs_if_exist:NT \upgamma + { \RenewDocumentCommand{\gamma}{}{\upgamma} } + } + \RenewDocumentCommand{\gammarat}{}{\gamma} + \RenewDocumentCommand{\gammamol}{}{\gamma} + \cs_if_exist:NTF \muup + {\RenewDocumentCommand{\mu}{}{\muup}} + {\cs_if_exist:NT \upmu + {\RenewDocumentCommand{\mu}{}{\upmu}} + } + \cs_if_exist:NTF \alphaup + {\RenewExpandableDocumentCommand{\expansivitysymbol}{}{\alphaup}} + {\cs_if_exist:NTF \upalpha + {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alphaup}} + {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\alpha}} + } + \cs_if_exist:NTF \betaup + {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\betaup}} + {\cs_if_exist:NTF \upbeta + {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\betaup}} + {\RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\beta}} + } + \cs_if_exist:NTF \xiup + {\RenewDocumentCommand{\xrxn}{}{\xiup}} + {\cs_if_exist:NT \upxi + {\RenewDocumentCommand{\xrxn}{}{\upxi}} + } + \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewSubscriptedSymbol{\muJT}{\JTsymbol}{\text{J.T.}} + \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1} + \RenewDocumentCommand{\Deltaf}{}{\Delta\c_math_subscript_token\formation} + \RenewDocumentCommand{\Deltafus}{}{\Delta} + \RenewDocumentCommand{\Deltavap}{}{\Delta} + \RenewDocumentCommand{\Deltasub}{}{\Delta} +%^^A FIXME: should be \Delta G_{\text{mix},\mathrm{m}} not other way around + \RenewDocumentCommand{\Deltamix}{m}{ + \tl_set:Nn \l_@@_sub_separator_tl {,} + \Delta #1\c_math_subscript_token{\mixing} + } + \RenewDocumentCommand{\excess}{}{{\mathrm{E}}} + \RenewDocumentCommand{\residual}{}{{\mathrm{R}}} + \cs_set:Nn \@@_overline:n {#1} + \RenewDocumentCommand{\IS}{}{{\mathrm{I}}} + \RenewDocumentCommand{\Psat}{} + { + \peek_catcode:NTF \c_math_subscript_token + {p\c_math_superscript_token\bullet} + {p} + } + \RenewDocumentCommand{\Cstd}{}{m^\std} + \RenewDocumentCommand{\Henryrat}{}{k} + \RenewDocumentCommand{\Henrymol}{}{k''} + + % Fix partial molar properties + \cs_set:Npn \@@_pm_case_one #1 + { + \l_@@_pm_symbol_tl\c_math_subscript_token{\mathrm{m}#1} + } + \cs_set:Npn \@@_pm_case_two [#1]#2 + { + \l_@@_pm_symbol_tl + \c_math_superscript_token{#1}\c_math_subscript_token{\mathrm{m}#2} + } + \cs_set:Npn \@@_pm_case_three_part_two #1 + { + \l_@@_pm_symbol_tl + \c_math_superscript_token{\l_@@_pm_arg_tl} + \c_math_subscript_token{\mathrm{m}#1} + } + \cs_set:Npn \@@_pm_case_four #1 + { + \l_@@_pm_symbol_tl\c_math_superscript_token{#1} + \c_math_subscript_token{\mathrm{m}\l_@@_pm_arg_tl} + } + \cs_set:Npn \@@_pm_case_five + { + \l_@@_pm_symbol_tl + \c_math_subscript_token{\mathrm{m}\l_@@_pm_arg_tl} + } + + % fix heat capacities + \RenewSubscriptedSymbol{\cP}{\heatcapacitysymbol} + {\g_@@_pressure_symbol\mathrm{m}} + \RenewSubscriptedSymbol{\cV}{\heatcapacitysymbol} + {\g_@@_volume_symbol\mathrm{m}} + \RenewDocumentCommand{\cPpm}{}{\partialmolar{\cPt}} + \RenewDocumentCommand{\cVpm}{}{\partialmolar{\cVt}} + + \cs_set:Npn \cP_two:n #1 + { \heatcapacitysymbol + \c_math_subscript_token{\g_@@_pressure_symbol\mathrm{m} + \l_@@_sub_separator_tl #1} + \peek_catcode:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + \cs_set:Npn \cV_two:n #1 + { \heatcapacitysymbol + \c_math_subscript_token{\g_@@_volume_symbol\mathrm{m} + \l_@@_sub_separator_tl #1} + \peek_catcode:NF \c_math_superscript_token + { \c_math_superscript_token\bullet } + } + } + \AtBeginDocument{ + \@ifpackageloaded{emf}{\RenewDocumentCommand{\Epot}{}{\emf}} + {% + \PackageWarningNoLine{thermodynamics} + {Package~emf~not~loaded;~load~to~make~Epot~match~Klotz~ + and~Rosenberg's~notation}% + } } } \DeclareOption{Koretsky}{ - \ExecuteOptions{EUAGHAn,brackets,intensive-lowercase,delta} + \ExecuteOptions{EUAGHAn,brackets,intensive-lowercase,delta,shortpm} \AtEndOfPackage{ - %^^A Undo part of intensive-lowercase + \tl_gset:Nn \g_@@_area_symbol {A} + \RenewExpandableDocumentCommand{\std}{}{o} + \RenewExpandableDocumentCommand{\ncomponents}{}{m} \RenewDocumentCommand{\partialmolar}{m} - { \tl_set:Nn \l_@@_pm_symbol_tl {#1} + { + \tl_set:Nn \l_@@_pm_symbol_tl {#1} \@@_generic_pm: } \RenewDocumentCommand{\expansivitysymbol}{}{\beta} \RenewDocumentCommand{\IS}{}{{\text{ideal}}} \RenewDocumentCommand{\residual}{}{{\text{dep}}} - \RenewDocumentCommand{\IG}{}{{\text{ideal}}} + \RenewDocumentCommand{\IG}{}{{\text{ideal~gas}}} \RenewDocumentCommand{\IGM}{}{{\text{ideal}}} \RenewDocumentCommand{\Henryrat}{}{{\mathcal{H}}} \RenewDocumentCommand{\gammarat}{} {\gamma\c_math_superscript_token\text{Henry's}} + \RenewDocumentCommand{\gammamol}{}{\gamma\c_math_superscript_token{m}} \RenewDocumentCommand{\phipure}{}{\varphi} \RenewDocumentCommand{\phimix}{}{\hat\varphi} \RenewDocumentCommand{\phisat}{}{\varphi\c_math_superscript_token\sat} @@ -2238,19 +2802,100 @@ } \cs_new:Npn \Delta_sub_sym {} {} \NewSubscriptedSymbol{\Delta_sub}{\Delta_sub_sym}{\sublimation} - %^^A Undo part of intensive-lowercase \RenewDocumentCommand{\Deltasub}{m}{ \cs_set:Npn \Delta_sub_sym {} { \Delta #1 } \Delta_sub } + \tl_new:N \l_@@_Deltaf_superscript_tl + \tl_new:N \l_@@_Deltaf_subscript_tl + \bool_new:N \l_@@_Deltaf_parentheses_bool + \tl_new:N \l_@@_Deltaf_entity_tl + \cs_set:Nn \@@_Deltaf_one:n + { + \tl_set:Nn \l_@@_Deltaf_superscript_tl {#1} + \peek_catcode_remove:NTF \c_math_subscript_token + { + \bool_set_true:N \l_@@_Deltaf_parentheses_bool + \@@_Deltaf_two:n + } + { + \bool_if:NTF \l_@@_Deltaf_parentheses_bool + { + (\Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + ) + \tl_if_empty:NF \l_@@_Deltaf_subscript_tl + { \c_math_subscript_token\l_@@_Deltaf_subscript_tl } + } + { + \Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + } + } + } + \cs_set:Nn \@@_Deltaf_two:n + { + \tl_set:Nn \l_@@_Deltaf_subscript_tl {#1} + % check for case 4 + \peek_catcode_remove:NTF \c_math_superscript_token + { \@@_Deltaf_one:n } + { + \bool_if:NTF \l_@@_Deltaf_parentheses_bool + { + (\Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + {\c_math_superscript_token\l_@@_Deltaf_superscript_tl} + ) + \tl_if_empty:NF \l_@@_Deltaf_subscript_tl + \c_math_subscript_token\l_@@_Deltaf_subscript_tl + } + { + \Delta\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + {\c_math_superscript_token\l_@@_Deltaf_superscript_tl} + } + } + } + \RenewDocumentCommand{\Deltaf}{m} + { + \tl_clear:N \l_@@_Deltaf_superscript_tl + \tl_clear:N \l_@@_Deltaf_subscript_tl + \tl_set:Nn \l_@@_Deltaf_entity_tl {#1} + \bool_set_false:N \l_@@_Deltaf_parentheses_bool + \peek_catcode_remove:NTF \c_math_superscript_token + { + \@@_Deltaf_one:n + } + { + \peek_catcode_remove:NTF \c_math_subscript_token + { + \bool_set_true:N \l_@@_Deltaf_parentheses_bool + \@@_Deltaf_two:n + } + { + \Delta #1\c_math_subscript_token \formation + } + } + } + \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewSubscriptedSymbol{\cV}{\@@_intensive:n \heatcapacitysymbol} + {\@@_intensive:n \g_@@_volume_symbol} + \RenewSubscriptedSymbol{\cVs}{\@@_specific:n \heatcapacitysymbol} + {\@@_intensive:n \g_@@_volume_symbol} + \RenewDocumentCommand{\Lm}{}{\omega} + \RenewDocumentCommand{\Ls}{}{\hat\omega} } } \DeclareOption{MSBB}{ - \ExecuteOptions{EUFGHAn,intensive-lowercase,delta} + \ExecuteOptions{EUFGHAn,intensive-lowercase,delta,shortpm} \AtEndOfPackage{ - \RenewDocumentCommand{\IGM}{}{\ast} + \RenewDocumentCommand{\IGM}{}{\ast} % FIXME: is this * or \circ? \RenewDocumentCommand{\IG}{}{\ast} \RenewDocumentCommand{\expansivitysymbol}{}{\beta} + \RenewDocumentCommand{\muJT}{}{\mu\c_math_subscript_token J} \RenewDocumentCommand{\allcomponents}{O{} m}{#2} \RenewDocumentCommand{\allbut}{O{j} m m} { @@ -2260,29 +2905,114 @@ } \tl_gset_eq:NN \g_@@_Helmholtz_symbol \psi \RenewDocumentCommand{\Ft}{}{\Psi} + \RenewDocumentCommand{\Fpm}{}{\partialmolar{\Psi}} \cs_set:Nn \@@_intensive:n {\@@_overline:n{\text_lowercase:n{#1}}} \cs_set:Nn \@@_specific:n {\text_lowercase:n{#1}} \RenewDocumentCommand{\fmix}{}{\bar f} \RenewDocumentCommand{\phimix}{}{\bar\phi} \RenewDocumentCommand{\phimix}{}{\bar\phi} \tl_gset:Nn \g_@@_pressure_symbol p + \tl_gset:Nn \g_@@_volume_symbol v \RenewDocumentCommand{\partialmolar}{m} { - \tl_set:Nn \l_@@_pm_symbol_tl {#1} + \tl_set:Nn \l_@@_pm_symbol_tl {\text_uppercase:n #1} \@@_generic_pm: } + \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewDocumentCommand{\mustd}{}{\Gm^\std} + \RenewExpandableDocumentCommand{\formation}{}{{\mathrm{f}}} + \RenewDocumentCommand{\Pstd}{} + {\g_@@_pressure_symbol\c_math_subscript_token\text{ref}} + \RenewExpandableDocumentCommand{\xrxn}{}{\varepsilon} + \RenewExpandableDocumentCommand{\Lm}{}{\@@_intensive:n \omega} + \RenewExpandableDocumentCommand{\Ls}{}{\@@_specific:n \omega} + \RenewExpandableDocumentCommand{\heatcapacitysymbol}{}{C} + \tl_new:N \l_@@_Deltaf_superscript_tl + \tl_new:N \l_@@_Deltaf_subscript_tl + \bool_new:N \l_@@_Deltaf_parentheses_bool + \tl_new:N \l_@@_Deltaf_entity_tl + \cs_set:Nn \@@_Deltaf_one:n + { + \tl_set:Nn \l_@@_Deltaf_superscript_tl {#1} + \peek_catcode_remove:NTF \c_math_subscript_token + { + \bool_set_true:N \l_@@_Deltaf_parentheses_bool + \@@_Deltaf_two:n + } + { + \bool_if:NTF \l_@@_Deltaf_parentheses_bool + { + (\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + ) + \tl_if_empty:NF \l_@@_Deltaf_subscript_tl + { \c_math_subscript_token\l_@@_Deltaf_subscript_tl } + } + { + \l_@@_Deltaf_entity_tl\c_math_subscript_token{\formation} + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + } + } + } + \cs_set:Nn \@@_Deltaf_two:n + { + \tl_set:Nn \l_@@_Deltaf_subscript_tl {#1} + % check for case 4 + \peek_catcode_remove:NTF \c_math_superscript_token + { \@@_Deltaf_one:n } + { + \bool_if:NTF \l_@@_Deltaf_parentheses_bool + { + (\l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + ) + \tl_if_empty:NF \l_@@_Deltaf_subscript_tl + { \c_math_subscript_token\l_@@_Deltaf_subscript_tl } + } + { + \l_@@_Deltaf_entity_tl\c_math_subscript_token\formation + \tl_if_empty:NF \l_@@_Deltaf_superscript_tl + { \c_math_superscript_token\l_@@_Deltaf_superscript_tl } + } + } + } + \RenewDocumentCommand{\Deltaf}{m} + { + \tl_clear:N \l_@@_Deltaf_superscript_tl + \tl_clear:N \l_@@_Deltaf_subscript_tl + \tl_set:Nn \l_@@_Deltaf_entity_tl {#1} + \bool_set_false:N \l_@@_Deltaf_parentheses_bool + \peek_catcode_remove:NTF \c_math_superscript_token + { + \@@_Deltaf_one:n + } + { + \peek_catcode_remove:NTF \c_math_subscript_token + { + \bool_set_true:N \l_@@_Deltaf_parentheses_bool + \@@_Deltaf_two:n + } + { + \Delta #1\c_math_subscript_token \formation + } + } + } } } \DeclareOption{Prausnitz}{ - \ExecuteOptions{intensive-lowercase} + \ExecuteOptions{intensive-lowercase,shortpm} \AtEndOfPackage{ + \RenewExpandableDocumentCommand{\ncomponents}{}{m} \RenewDocumentCommand{\fmix}{}{f} - \RenewDocumentCommand{\phimix}{}{\phi} \RenewDocumentCommand{\fsat}{}{\fpure\c_math_superscript_token\sat} - % TODO: this should pick up H_2 and make it into H_{2,1} (assuming the - % solvent is always 1...?) + % TODO: this should pick up H_2 and make it into H_{2,1} (assuming + % the solvent is always 1...?) \RenewDocumentCommand{\Henryrat}{}{H} - \RenewDocumentCommand{\residual}{}{{{\mathcal{R}}}} + %^^A\RenewDocumentCommand{\residual}{}{{{\mathcal{R}}}} \RenewDocumentCommand{\allcomponents}{O{i} m} { {#2}\c_math_subscript_token{#1} } \RenewDocumentCommand{\allbut}{O{i} m m} @@ -2290,14 +3020,36 @@ { {#3}\c_math_subscript_token k } { {#3}\c_math_subscript_token{#1} } } + \tl_set:Nn \l_@@_sub_separator_tl {\,} + \tl_gset:Nn \g_@@_pressure_symbol {p} + \tl_gset:Nn \g_@@_volume_symbol {v} \RenewSubscriptedSymbol{\fpure}{f}{{\text{pure}}} - \RenewSubscriptedSymbol{\phipure}{\phi}{{\text{pure}}} + \RenewDocumentCommand{\phimix}{}{\varphi} + \RenewDocumentCommand{\phisat}{}{\varphi^\sat} + \RenewDocumentCommand{\sat}{}{s} + \RenewDocumentCommand{\mixing}{}{\text{mixing}} + \RenewDocumentCommand{\Lm}{}{\omega} + \RenewDocumentCommand{\Ls}{}{\@@_specific:n \omega} + \RenewSubscriptedSymbol{\phipure}{\varphi}{{\text{pure}}} + \RenewDocumentCommand{\IG}{}{{\text{id}}} + \RenewDocumentCommand{\IGM}{}{{\text{id}}} + \RenewDocumentCommand{\IS}{}{{\text{(ideal)}}} + \RenewExpandableDocumentCommand{\compressibilitysymbol}{}{\beta} + \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewExpandableDocumentCommand{\std}{}{0} + \@ifpackageloaded{emf} + {\RenewDocumentCommand{\Epot}{}{\emf}} + {\RenewDocumentCommand{\Epot}{}{\mathcal{E}}} + \DeclareMathAlphabet{\mathdutchcal}{U}{dutchcal}{m}{n} + \RenewExpandableDocumentCommand{\actrel}{}{\mathdutchcal{a}} } } \DeclareOption{Sandler}{ - \ExecuteOptions{EUAGHaN,extensive-plain} + \ExecuteOptions{EUAGHaN,extensive-plain,shortpm} \AtEndOfPackage{ - \RenewDocumentCommand{\sat}{}{{\text{vap}}} + \RenewDocumentCommand{\Pvap}{} + {{P\c_math_superscript_token{\text{vap}}}} \RenewDocumentCommand{\excess}{}{{\text{ex}}} \RenewDocumentCommand{\residual}{}{{\text{r}}} \RenewExpandableDocumentCommand{\ncomponents}{}{\mathcal{C}} @@ -2318,6 +3070,12 @@ {\Delta\c_math_subscript_token\fusion #1} \RenewDocumentCommand{\Deltavap}{m} {\Delta\c_math_subscript_token\vaporization #1} + \RenewDocumentCommand{\Pstd}{}{\text{1~bar} + \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n} + } + \RenewDocumentCommand{\Cstd}{}{\text{1~molal} + \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n} + } \RenewDocumentCommand{\Henryrat}{}{H} \RenewSubscriptedSymbol{\cV} {\heatcapacitysymbol}{\g_@@_volume_symbol} @@ -2327,10 +3085,16 @@ {\Nt\heatcapacitysymbol}{\g_@@_volume_symbol} \RenewSubscriptedSymbol{\cPt} {\Nt\heatcapacitysymbol}{\g_@@_pressure_symbol} + \RenewDocumentCommand{\formation}{}{\mathrm{f}} + \RenewDocumentCommand{\Deltaf}{} + {\Delta\c_math_subscript_token\formation} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewDocumentCommand{\muJT}{}{\mu} + \RenewDocumentCommand{\xrxn}{}{X} } } \DeclareOption{SVNAS}{ - \ExecuteOptions{extensive-superscript} + \ExecuteOptions{extensive-superscript,shortpm} \AtEndOfPackage{ \RenewDocumentCommand{\allcomponents}{O{} m}{#2} \RenewDocumentCommand{\allbut}{O{j} m m} @@ -2342,17 +3106,44 @@ \RenewDocumentCommand{\IG}{}{{ig}} \RenewDocumentCommand{\IGM}{}{{ig}} \RenewDocumentCommand{\IS}{}{{id}} + \RenewDocumentCommand{\IS}{}{{id}} + \RenewDocumentCommand{\fusion}{}{{sl}} + \RenewDocumentCommand{\vaporization}{}{{vl}} + \RenewDocumentCommand{\sublimation}{}{{vs}} \RenewDocumentCommand{\expansivitysymbol}{}{\beta} + \RenewDocumentCommand{\xrxn}{}{\varepsilon} \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1} + \RenewDocumentCommand{\Deltamix}{m}{\Delta #1} \RenewSubscriptedSymbol{\cVt} {\Nt\heatcapacitysymbol}{\g_@@_volume_symbol} \RenewSubscriptedSymbol{\cPt} {\Nt\heatcapacitysymbol}{\g_@@_pressure_symbol} + % FIXME + \RenewDocumentCommand{\cP}{} + {{\heatcapacitysymbol\c_math_subscript_token\g_@@_pressure_symbol}} + \RenewDocumentCommand{\cV}{} + {{\heatcapacitysymbol\c_math_subscript_token\g_@@_volume_symbol}} + \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol} + \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol} + \RenewDocumentCommand{\muJT}{}{\mu} + \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token\std + \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n} + } + \RenewDocumentCommand{\mustd}{}{\Gm\c_math_superscript_token\std} + \RenewDocumentCommand{\Henryrat}{}{\mathcal{H}} + \RenewDocumentCommand{\formation}{} + { + \tl_set:Nn \l_@@_sub_separator_tl {} + f298 + } + \cs_set:Nn \@@_specific:n {#1} } } +\DeclareOption{ModellReid}{\ExecuteOptions{TesterModell}} \DeclareOption{TesterModell}{ - \ExecuteOptions{EUAGHaN,delta} + \ExecuteOptions{EUAGHaN,delta,shortpm} \AtEndOfPackage{ + \cs_set:Nn \@@_specific:n {\text_lowercase:n{#1}} \RenewExpandableDocumentCommand{\ncomponents}{}{n} \RenewDocumentCommand{\allcomponents}{O{i} m} { @@ -2379,23 +3170,62 @@ \RenewDocumentCommand{\Henryrat}{} {f\c_math_superscript_token{\ast\ast}} \RenewDocumentCommand{\Henrymol}{}{f\c_math_superscript_token\ast} + \cs_if_exist:NTF \gammaup + { \RenewDocumentCommand{\gamma}{}{\gammaup} } + { \cs_if_exist:NT \upgamma + { \RenewDocumentCommand{\gamma}{}{\upgamma} } + } \RenewDocumentCommand{\gammarat}{} {\gamma\c_math_superscript_token{\ast\ast}} \RenewDocumentCommand{\gammamol}{} {\gamma\c_math_superscript_token\ast} \RenewExpandableDocumentCommand{\JTsymbol}{}{\alpha} \RenewSubscriptedSymbol{\muJT}{\JTsymbol}{H} + \cs_if_exist:NTF \xiup + { \RenewDocumentCommand{\xrxn}{}{\xiup} } + { \cs_if_exist:NT \upxi + { \RenewDocumentCommand{\xrxn}{}{\upxi} } + } + \cs_if_exist:NTF \phiup + { + \RenewDocumentCommand{\phipure}{}{\phiup} + \RenewDocumentCommand{\phimix}{}{\hat\phiup} + \RenewDocumentCommand{\phisat}{}{\phiup\c_math_superscript_token\sat} + } + { \cs_if_exist:NT \upphi + { + \RenewDocumentCommand{\phipure}{}{\upphi} + \RenewDocumentCommand{\phimix}{}{\hat\upphi} + \RenewDocumentCommand{\phisat}{}{\upphi\c_math_superscript_token\sat} + } + } + \RenewDocumentCommand{\Cstd}{}{m\c_math_superscript_token+ + \peek_catcode_remove:NT \c_math_subscript_token {\use_none:n} + } + \cs_if_exist:NTF \muup + { \RenewDocumentCommand{\mu}{}{\muup} } + { \cs_if_exist:NT \upmu + { \RenewDocumentCommand{\mu}{}{\upmu} } + } + \RenewDocumentCommand{\std}{}{o} + \RenewDocumentCommand{\Pstd}{}{P^\ast} + \tl_gset:Nn \g_@@_area_symbol {\text{\large\(\mathit{a}\)}} + \RenewDocumentCommand{\Epot}{}{\exists} + \tl_set:Nn \l_@@_sub_separator_tl {} + \tl_gset:Nn \g_@@_pressure_symbol {p} + \RenewSubscriptedSymbol{\cVt}{\@@_extensive:n {\heatcapacitysymbol}}{v} + \RenewSubscriptedSymbol{\cV}{\@@_intensive:n {\heatcapacitysymbol}}{v} + \RenewSubscriptedSymbol{\cVs}{\@@_specific:n {\heatcapacitysymbol}}{v} } } \DeclareOption{Thompson}{ - \ExecuteOptions{EUAGHAn,delta} + \ExecuteOptions{EUAGHAn,delta,shortpm} \AtEndOfPackage { \RenewDocumentCommand{\excess}{}{{EX}} \RenewDocumentCommand{\residual}{}{{R}} - %^^A He uses k_H for both types of Henry's constant, but I changed - %^^A the rational basis one just so there is SOME difference - \RenewSubscriptedSymbol{\Henryrat}{k}{h} + \RenewDocumentCommand{\actrel}{}{\widehat{a}} + \RenewSubscriptedSymbol{\Henryrat}{k}{H} \RenewSubscriptedSymbol{\Henrymol}{k}{H} \RenewDocumentCommand{\allcomponents}{O{j} m} { @@ -2432,7 +3262,8 @@ } } \cs_set:Nn \@@_intensive:n - { #1 + { + #1 \peek_catcode_remove:NT \c_math_subscript_token { \@@_intensive_two:n } } @@ -2450,10 +3281,16 @@ } {\phi} } + \RenewDocumentCommand{\phimix}{}{\widehat\phi} + \RenewDocumentCommand{\fmix}{}{\widehat f} \RenewDocumentCommand{\mixing}{}{{MIX}} + \RenewDocumentCommand{\muJT}{}{\alpha\c_math_subscript_token H} \RenewDocumentCommand{\Deltamix}{m} {\Delta\c_math_subscript_token\mixing #1} - \RenewDocumentCommand{\Deltarxn}{m}{\Delta #1} + \RenewDocumentCommand{\reaction}{}{R} + \RenewDocumentCommand{\fusion}{}{{SL}} + \RenewDocumentCommand{\vaporization}{}{{LV}} + \RenewDocumentCommand{\sublimation}{}{{SV}} \RenewDocumentCommand{\allbut}{O{j} m m} { \tl_if_eq:nnTF {#1} {#2} { @@ -2463,18 +3300,25 @@ {#3}\c_math_subscript_token{#1}\neq{#3}\c_math_subscript_token{#2} } } + \RenewDocumentCommand{\Cstd}{}{m^\std} + \RenewDocumentCommand{\mustd}{}{\Gamma} + \RenewDocumentCommand{\formation}{}{F} +%^^A \RenewDocumentCommand{\Deltarxn}{}{\Delta} } } % \end{macrocode} % We execute the default options below. % \begin{macrocode} -\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,moles-index} +\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain, + moles-index,longpm} \ProcessOptions % \end{macrocode} +% \subsection{Variable Order} % We next encode a routine to sort non-subscripted variables into a consistent % order. It currently does not sort variables with subscripts. % \changes{v2.00}{2023/11/16}{Added a sorting routine to make function -% arguments be in a consistent order using the |nosubscripts| option.} +% arguments be in a consistent order using the \texttt{nosubscripts} +% option.} % \begin{macrocode} \tl_const:Nn \c_@@_sort_order_tl {\Et\Em\Es\Ut\Um\Us\Ht\Hm\Hs\Ft\Fm\Fs\Gt\Gm\Gs\Lt\Lm\Ls T\St\Sm\Ss @@ -2540,11 +3384,14 @@ % of partial derivatives. The command \cs{Partial*} is the same as % \cs{Partial} except that it adjusts the spacing so the (presumably) binary % operator that follows it slightly overlaps the subscripts. -% \changes{v1.01}{2022/03/01}{Changed \cs{adjust@width} to 2pt (up from 1pt)} +% \changes{v1.01}{2022/03/01}{Changed \cs{adjust@width} to 2pt (up from 1pt).} % \changes{v1.01}{2022/04/21}{Changed \cs{adjust@width} 0.1\cs{operator@width} -% (from 2pt)} +% (from 2pt).} % \changes{v2.00}{2023/11/16}{Changed length added to -% \cs{l_@@_Partial_const_dim} from $-0.15$ to $-0.20$} +% \ExplSyntaxOn +% \cs{l_@@_Partial_const_dim}~ +% \ExplSyntaxOff +% from $-0.15$ to $-0.20$.} % \begin{macrocode} \tl_new:N \l_@@_Partial_start_tl \tl_new:N \l_@@_Partial_end_tl @@ -2676,8 +3523,8 @@ % \end{macro} % \begin{macro}{\PartialSecondBigg} % The \cs{PartialSecondBigg} macro and its starred variant replace \cs{left} -% and \tn{right} with \pkg{amsmath}'s \cs[module=amsmath]{Biggl} and -% \cs[module=amsmath]{Biggr}. +% and \tn{right} with \pkg{amsmath}'s \cs{Biggl} and +% \cs{Biggr}. % \begin{macrocode} \NewDocumentCommand{\PartialSecondBigg}{} { \tl_set:Nn \l_@@_Partial_start_tl {\biggl\l_@@_PartialOpen_tl} @@ -2689,8 +3536,8 @@ % \end{macro} % \begin{macro}{\PartialSecondbigg} % The \cs{PartialSecondbigg} macro and its starred variant replace \tn{left} -% and \tn{right} with \pkg{amsmath}'s \cs[module=amsmath]{biggl} and -% \cs[module=amsmath]{biggr}. +% and \tn{right} with \pkg{amsmath}'s \cs{biggl} and +% \cs{biggr}. % \begin{macrocode} \NewDocumentCommand{\PartialSecondbigg}{} { \tl_set:Nn \l_@@_Partial_start_tl {\biggl\l_@@_PartialOpen_tl} @@ -2808,14 +3655,14 @@ % \end{macrocode} % % If the user does not load the \pkg{amsmath} package, we will not have access -% to \cs[module=amsmath]{Biggl}, \cs{Biggr}, \cs{biggl}, and \cs{biggr}, so we revert them back +% to \cs{Biggl}, \cs{Biggr}, \cs{biggl}, and \cs{biggr}, so we revert them back % to the ordinary \cs{left} and \cs{right} versions and warn the user. % \begin{macrocode} \AtBeginDocument{% \@ifpackageloaded{amsmath}{}{% \PackageWarningNoLine{thermodynamics} - {Package~amsmath~not~loaded;~load~to~make~PartialBigg~and~friends - ~work~correctly}% + {Package~amsmath~not~loaded;~load~to~make~PartialBigg~and~friends~ + work~correctly}% \cs_set_eq:NN \PartialBigg \Partial \cs_set_eq:NN \Partialbigg \Partial \cs_set_eq:NN \PartialSecondBigg \PartialSecond @@ -3046,13 +3893,13 @@ % of \pkg{xparse}-based \cs{NewSubscriptedSymbol} and % \cs{RenewSubscriptedSymbol}.} % \begin{macrocode} +\str_new:N \l_@@_tmp_str \cs_new:Npn \@@_check_definable:nN #1#2 { - \bool_set_true:N \l_@@_arg_legal_bool \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nTF { - \str_set:Nx \l_tmp_str {\tl_to_str:n {#1}} - \int_compare:nNnT {\str_count:N \l_tmp_str} = 1 + \str_set:Nx \l_@@_tmp_str {\tl_to_str:n {#1}} + \int_compare:nNnT {\str_count:N \l_@@_tmp_str} = 1 { \PackageError{thermodynamics} {First~argument~of~'\tl_trim_spaces:o {\tl_to_str:n {#2}}'~ must~be~a~command} @@ -3072,7 +3919,11 @@ contains~more~than~one~token. \MessageBreak Perhaps~a~backslash~is~missing?} } -} +} +\tl_new:N \l_@@_super_separator_tl +\tl_new:N \l_@@_sub_separator_tl +\tl_set:Nn \l_@@_super_separator_tl {,} +\tl_set:Nn \l_@@_sub_separator_tl {,} \NewDocumentCommand{\NewSubscriptedSymbol}{m m m} { \@@_check_definable:nN {#1} \NewSubscriptedSymbol @@ -3092,10 +3943,10 @@ } \cs_new:cpn {\cs_to_str:N #1_two:n} ##1 - { {#2}\c_math_subscript_token{#3,##1} } + { {#2}\c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} } \cs_new:cpn {\cs_to_str:N #1_three:n} ##1 - { \c_math_subscript_token{#3,##1} } + { \c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} } \NewDocumentCommand{#1}{} {% @branch @@ -3126,10 +3977,10 @@ } \cs_set:cpn {\cs_to_str:N #1_two:n} ##1 - { {#2}\c_math_subscript_token{#3,##1} } + { {#2}\c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} } \cs_set:cpn {\cs_to_str:N #1_three:n} ##1 - { \c_math_subscript_token{#3,##1} } + { \c_math_subscript_token{#3\l_@@_sub_separator_tl ##1} } \RenewDocumentCommand{#1}{} {% @branch @@ -3140,7 +3991,6 @@ { {#2}\c_math_subscript_token{#3} } } } - } % \end{macrocode} % \end{macro} @@ -3168,10 +4018,10 @@ } \cs_new:cpn {\cs_to_str:N #1_two:n} ##1 - { {#2}\c_math_superscript_token{#3,##1} } + { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} } \cs_new:cpn {\cs_to_str:N #1_three:n} ##1 - { {#2}\c_math_superscript_token{#3,##1} } + { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} } \NewDocumentCommand{#1}{} { @@ -3202,10 +4052,10 @@ } \cs_set:cpn {\cs_to_str:N #1_two:n} ##1 - { {#2}\c_math_superscript_token{#3,##1} } + { {#2}\c_math_superscript_token{#3\l_@@_super_separator_tl ##1} } \cs_set:cpn {\cs_to_str:N #1_three:n} ##1 - { \c_math_superscript_token{#3,##1} } + { \c_math_superscript_token{#3\l_@@_super_separator_tl ##1} } \RenewDocumentCommand{#1}{} {% @branch @@ -3217,11 +4067,76 @@ } } } +\cs_new:Nn \@@_subscripted_and_superscripted_core:nnnn +{ + \cs_set:cpn {\cs_to_str:N #1_one:n} ##1 + { + {#2}\c_math_superscript_token{##1} + \peek_catcode_remove:NTF \c_math_subscript_token + { \use:c {\cs_to_str:N #1_three:n} } + { \c_math_subscript_token{#3} } + } + \cs_set:cpn {\cs_to_str:N #1_two:n} ##1 + { + {#2}\c_math_subscript_token{#3 ##1} + \peek_catcode_remove:NTF \c_math_superscript_token + { \use:c {\cs_to_str:N #1_four:n} } + { \c_math_superscript_token{#4 \bullet} } + } + \cs_set:cpn {\cs_to_str:N #1_three:n} ##1 + { \c_math_subscript_token{#3 ##1} } + \cs_set:cpn {\cs_to_str:N #1_four:n} ##1 + { \c_math_superscript_token{#4 ##1} } +} +\NewDocumentCommand{\NewSubscriptedandSuperscriptedSymbol}{m m m m} +{ + \@@_check_definable:nN {#1} \NewSubscriptedandSuperscriptedSymbol + \cs_if_exist:NT #1 + { \PackageError{thermodynamics} + {Command~'\tl_trim_spaces:o {\tl_to_str:n {#1}}'~already~defined} + {You~have~used~ + '\tl_trim_spaces:o + {\tl_to_str:n {\NewSubscriptedandSuperScriptedSymbol}}'~ + with~a~command~that~already~has~a~definition} + } + \@@_subscripted_and_superscripted_core:nnnn {#1} {#2} {#3} {#4} + \NewDocumentCommand{#1}{} + { + \peek_catcode_remove:NTF \c_math_superscript_token + { \use:c {\cs_to_str:N #1_one:n} } + { \peek_catcode_remove:NTF \c_math_subscript_token + { \use:c {\cs_to_str:N #1_two:n} } + { {#2}\c_math_subscript_token{#3}\c_math_superscript_token{#4} } + } + } +} +\NewDocumentCommand{\RenewSubscriptedandSuperscriptedSymbol}{m m m m} +{ + \@@_check_definable:nN {#1} \RenewSubscriptedandSuperscriptedSymbol +%^^A \cs_if_exist:NF #1 +%^^A { \PackageError{thermodynamics} +%^^A {Command~'\tl_trim_spaces:o {\tl_to_str:n {#1}}'~not~already~defined} +%^^A {You~have~used~ +%^^A '\tl_trim_spaces:o +%^^A {\tl_to_str:n {\RenewSubscriptedandSuperScriptedSymbol}}'~ +%^^A with~a~command~that~does~not~have~a~definition} +%^^A } +%^^A \@@_subscripted_and_superscripted_core:nnnn {#1} {#2} {#3} {#4} +%^^A \RenewDocumentCommand{#1}{} +%^^A { +%^^A \peek_catcode_remove:NTF \c_math_superscript_token +%^^A { \use:c {\cs_to_str:N #1_one:n} } +%^^A { \peek_catcode_remove:NTF \c_math_subscript_token +%^^A { \use:c {\cs_to_str:N #1_two:n} } +%^^A { {#2}\c_math_subscript_token{#3}\c_math_superscript_token{#4} } +%^^A } +%^^A } +} % \end{macrocode} % \end{macro} +% \subsection{Symbol Definitions} % \begin{macro}{\heatcapacitysymbol,\compressibilitysymbol,\expansivitysymbol} -% Now we define symbols for the heat capacities, compressibilities, and -% so forth. +% We define symbols for the heat capacities, compressibilities, and so forth. % \begin{macrocode} \NewExpandableDocumentCommand{\heatcapacitysymbol}{}{C} \NewExpandableDocumentCommand{\compressibilitysymbol}{}{\kappa} @@ -3283,7 +4198,7 @@ % \begin{macro}{\muJT} % The macro \cs{muJT} renders the Joule--Thomson coefficient. % \begin{macrocode} -\NewSubscriptedSymbol{\muJT}{\JTsymbol}{JT} +\NewSubscriptedSymbol{\muJT}{\JTsymbol}{\text{JT}} % \end{macrocode} % \end{macro} % @@ -3302,16 +4217,71 @@ \NewDocumentCommand{\fsat}{}{\fpure\c_math_superscript_token\sat} % \end{macrocode} % \end{macro} -% \begin{macro}{\std,\Pstd,\fstd} -% The \cs{std} macro denotes standard properties. \cs{Pstd} and \cs{fstd} are -% defined for convenience and for consistency across textbooks. +% \begin{macro}{\std,\Pstd,\fstd,\Cstd,\mustd} +% The \cs{std} macro denotes standard properties. \cs{Pstd}, \cs{Cstd}, +% \cs{fstd}, and \cs{mustd} are defined for convenience and for consistency +% across textbooks. +% \changes{v2.02}{2024/06/14}{Added \cs{Cstd} and \cs{mustd} to standardize +% standard molalities and chemical potentials across textbooks.} % \begin{macrocode} \NewDocumentCommand{\std}{}{\circ} \NewDocumentCommand{\Pstd}{}{P\c_math_superscript_token \std} +\NewDocumentCommand{\Cstd}{}{C\c_math_superscript_token \std} \NewDocumentCommand{\fstd}{}{f\c_math_superscript_token \std} +\NewDocumentCommand{\mustd}{}{\mu\c_math_superscript_token \std} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\xrxn} +% The \cs{xrxn} macro denotes the extent of reaction. +% \changes{v2.02}{2024/06/14}{Added \cs{xrxn} macro to standardize the +% extent of reaction macro across textbooks.} +% \begin{macrocode} +\NewDocumentCommand{\xrxn}{}{\xi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fmix} +% The \cs{fmix} command is intended to describe fugacities in mixtures. +% It renders as $\hat f$ by default, and would be used as \verb"\fmix_i" or +% the like, producing $\hat f_i$; some authors like to use $\bar f_i$ or +% just $f_i$, and this command creates a consistent way to change between +% such options. +% \begin{macrocode} +\NewDocumentCommand{\fmix}{}{\hat{f}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\phimix} +% A similar command, \cs{phimix}, renders $\hat\phi$ by default to represent +% the fugacity coefficient in a mixture. +% \begin{macrocode} +\NewDocumentCommand{\phimix}{}{\hat\phi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\fpure} +% The \cs{fpure} command is intended to describe fugacities in pure substances. +% It renders as $f$ by default, and would be used as \verb"\fpure" or +% \verb"\fpure_i" or the like, producing $f_i$; some authors like to use +% $f_{\text{pure}\,i}$, and others like to use $f_i^\bullet$; this command +% creates a consistent way to change between the these options. A similar +% command for $\phi$ is given, \cs{phipure}, for fugacity coefficients. +% \begin{macrocode} +\NewDocumentCommand{\fpure}{}{f} +\NewDocumentCommand{\phipure}{}{\phi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\actabs,\actrel} +% The \cs{actabs} and \cs{actrel} macros are intended to standardize the macro +% for the absolute and relative activities, respectively, across textbooks. +% The defaults are \(\actabs\) and \(\actrel\), respectively. +% \changes{v2.02}{2024/06/14}{Added \cs{actabs} and \cs{actrel} to make +% absolute and relative activity symbols consistent.} +% \begin{macrocode} +\NewExpandableDocumentCommand{\actabs}{}{\lambda} +\NewExpandableDocumentCommand{\actrel}{}{a} % \end{macrocode} % \end{macro} % +% \subsubsection{Property Changes} % \begin{macro}{\Deltamix,\mixing} % Mixing properties, such as $\Deltamix\Gm$, should be accessed using % \verb"\Deltamix\Gm" and similar constructions---this construct will typeset @@ -3325,16 +4295,22 @@ % \end{macro} % % \pagebreak[2]% -% \begin{macro}{\Deltafus,\fusion,\Deltavap,\vaporization} -% \begin{macro}{\Deltasub,\sublimation,\Deltarxn,\reaction} -% Similar entities for property changes on fusion, reaction, sublimation, and -% vaporization are defined. +% \begin{macro}{\formation,\fusion,\reaction,\sublimation,\vaporization} +% Macros for subscripts/superscripts on property changes, % \begin{macrocode} +\NewDocumentCommand{\formation}{}{f} \NewDocumentCommand{\fusion}{}{{\text{fus}}} \NewDocumentCommand{\reaction}{}{{\text{rxn}}} \NewDocumentCommand{\sublimation}{}{{\text{sub}}} \NewDocumentCommand{\vaporization}{}{{\text{vap}}} -\NewDocumentCommand{\formation}{}{f} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\Deltafus,\Deltasub,\Deltavap,\Deltarxn} +% and similar macros for the property changes themselves. Some of these may +% be redefined by package options that select a particular textbook. +% \changes{v2.02}{2024/06/14}{Changed implementation of \cs{Deltarxn} to +% handle subscripts.} +% \begin{macrocode} \NewDocumentCommand{\Deltafus}{m} {\Delta #1\c_math_superscript_token\fusion} \NewDocumentCommand{\Deltasub}{m} @@ -3342,55 +4318,37 @@ \NewDocumentCommand{\Deltavap}{m} {\Delta #1\c_math_superscript_token\vaporization} \NewDocumentCommand{\Deltarxn}{m} - {\Delta #1\c_math_subscript_token\reaction} +{ + \cs_set:Npn \@@_Deltarxn_one ##1 + { + \Delta #1\c_math_subscript_token{\reaction,##1} + } + \peek_catcode_remove:NTF \c_math_subscript_token + { + \@@_Deltarxn_one + } + { + \Delta #1\c_math_subscript_token{\reaction} + } +} \tl_new:N \l_@@_Deltaf_sym_tl -\NewSubscriptedSymbol{\@@_Deltaf}{\l_@@_Deltaf_sym_tl}{f} +\NewSubscriptedSymbol{\@@_Deltaf}{\l_@@_Deltaf_sym_tl}{\formation} \NewDocumentCommand{\Deltaf}{m} { \tl_set:Nn \l_@@_Deltaf_sym_tl {\Delta #1} \@@_Deltaf } % \end{macrocode} % \end{macro} -% \end{macro} -% -% \begin{macro}{\fmix} -% The \cs{fmix} command is intended to describe fugacities in mixtures. -% It renders as $\hat f$ by default, and would be used as \verb"\fmix_i" or -% the like, producing $\hat f_i$; some authors like to use $\bar f_i$ or -% just $f_i$, and this command creates a consistent way to change between -% such options. -% \begin{macrocode} -\NewDocumentCommand{\fmix}{}{\hat{f}} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\phimix} -% A similar command, \cs{phimix}, renders $\hat\phi$ by default to represent -% the fugacity coefficient in the mixture. -% \begin{macrocode} -\NewDocumentCommand{\phimix}{}{\hat\phi} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\fpure} -% The \cs{fpure} command is intended to describe fugacities in pure substances. -% It renders as $f$ by default, and would be used as \verb"\fpure" or -% \verb"\fpure_i" or the like, producing $f_i$; some authors like to use -% $f_{\text{pure},i}$, and others like to use $f_i^\bullet$; this command -% creates a consistent way to change between the these options. A similar -% command for $\phi$ is given, \cs{phipure}, for fugacity coefficients. -% \begin{macrocode} -\NewDocumentCommand{\fpure}{}{f} -\NewDocumentCommand{\phipure}{}{\phi} -% \end{macrocode} -% \end{macro} % -% \subsection{Partial Molar Quantities} +% \subsubsection{Partial Molar Quantities} % \begin{macro}{\partialmolar} % Partial molar quantities with superscripts appear as $\Gpm[\IG]{i}$ or -% $\GRpm{i}$, rather than something like -% $\overline{G}^\IG_i$ or $\overline{G}_i^R$; the former looks better but -% is harder to implement for obvious reasons. Their definitions allow them to -% be used as symbols, something like \verb"\Gpm_i", \verb"\Gpm^{\IGM}_i", -% \verb"\Gpm^{\IGM}_i", and even \verb"\Gpm_i^{\IGM}"; +% $\GRpm{i}$ (or, with the |shortpm| option, as +% \begin{thermoshortpm}$\Gpm[\IG]{i}$ or $\GRpm{i}$\end{thermoshortpm}), +% rather than something like $\overline{G}^\IG_i$ or $\overline{G}_i^R$; the +% former looks better but is harder to implement for obvious reasons. Their +% definitions allow them to be used as symbols, something like \verb"\Gpm_i", +% \verb"\Gpm^{\IGM}_i", \verb"\Gpm^{\IGM}_i", and even \verb"\Gpm_i^{\IGM}"; % they can also be treated as commands: \verb"\Gpm{i}" is equivalent to % \verb"\Gpm_i" and \verb"\Gpm[\IGM]{i}" is equivalent to \verb"\Gpm_i^{\IGM}". % The macro \cs{partialmolar} can be used to create an arbitrary partial @@ -3434,12 +4392,21 @@ } \cs_new:Npn \@@_pm_case_one #1 { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token{#1}} + \bool_if:NTF \l_@@_longpm_bool + { \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token{#1}} } + { + \@@_overline:n {\l_@@_pm_symbol_tl}\c_math_subscript_token{#1} + } } \cs_new:Npn \@@_pm_case_two [#1]#2 { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{#1}\c_math_subscript_token{#2}} + \bool_if:NTF \l_@@_longpm_bool + { \@@_overline:n {\l_@@_pm_symbol_tl + \c_math_superscript_token{#1}\c_math_subscript_token{#2}} + } + { \@@_overline:n {\l_@@_pm_symbol_tl} + \c_math_superscript_token{#1}\c_math_subscript_token{#2} + } } \cs_new:Npn \@@_pm_case_three #1 { @@ -3450,9 +4417,15 @@ } \cs_new:Npn \@@_pm_case_three_part_two #1 { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{\l_@@_pm_arg_tl} - \c_math_subscript_token{#1}} + \bool_if:NTF \l_@@_longpm_bool + { \@@_overline:n {\l_@@_pm_symbol_tl + \c_math_superscript_token{\l_@@_pm_arg_tl} + \c_math_subscript_token{#1}} + } + { \@@_overline:n {\l_@@_pm_symbol_tl} + \c_math_superscript_token{\l_@@_pm_arg_tl} + \c_math_subscript_token{#1} + } } \cs_new:Npn \@@_pm_case_four_or_five #1 { @@ -3463,18 +4436,28 @@ } \cs_new:Npn \@@_pm_case_four #1 { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{#1} - \c_math_subscript_token{\l_@@_pm_arg_tl}} + \bool_if:NTF \l_@@_longpm_bool + { \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{#1} + \c_math_subscript_token{\l_@@_pm_arg_tl}} + } + { \@@_overline:n {\l_@@_pm_symbol_tl}\c_math_superscript_token{#1} + \c_math_subscript_token{\l_@@_pm_arg_tl} + } } \cs_new:Npn \@@_pm_case_five { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_subscript_token{\l_@@_pm_arg_tl}} + \bool_if:NTF \l_@@_longpm_bool + { \@@_overline:n {\l_@@_pm_symbol_tl + \c_math_subscript_token{\l_@@_pm_arg_tl}} + } + { \@@_overline:n {\l_@@_pm_symbol_tl} + \c_math_subscript_token{\l_@@_pm_arg_tl} + } } % \end{macrocode} % \end{macro} % -% \subsection{Symbol Definitions} +% \subsubsection{Thermodynamic Property Definitions} % These macros define the user interface to the symbols for energy, volume, % and so forth. There are five commands that define thermodynamic properties. % @@ -3528,7 +4511,7 @@ \NewResidualProperty{#1}{#2} \NewExcessProperty{#1}{#2} } -\NewDocumentCommand{\NewExtensiveProperty}{m m} +\ProvideDocumentCommand{\NewExtensiveProperty}{m m} { % Extensive property \exp_after:wN \NewDocumentCommand \exp_after:wN @@ -3546,7 +4529,7 @@ \exp_after:wN \NewDocumentCommand \exp_after:wN {\cs:w #1pm\cs_end:}{}{\partialmolar{#2}} } -\NewDocumentCommand{\NewExcessProperty}{m m} +\ProvideDocumentCommand{\NewExcessProperty}{m m} { \exp_after:wN \NewSuperscriptedSymbol \exp_after:wN {\cs:w #1 Et\cs_end:}{\@@_extensive:n{#2}}{\excess} @@ -3555,13 +4538,12 @@ \exp_after:wN \NewSuperscriptedSymbol \exp_after:wN {\cs:w #1 Es\cs_end:}{\@@_specific:n{#2}}{\excess} - %^^A TODO: make super- or subscripted partial molar quantities work % Excess partial molar property \exp_after:wN \NewDocumentCommand \exp_after:wN {\cs:w #1Epm\cs_end:}{}{\partialmolar{#2} \c_math_superscript_token\excess} } -\NewDocumentCommand{\NewResidualProperty}{m m} +\ProvideDocumentCommand{\NewResidualProperty}{m m} { \exp_after:wN \NewSuperscriptedSymbol \exp_after:wN {\cs:w #1 Rt\cs_end:}{\@@_extensive:n{#2}}{\residual} @@ -3603,75 +4585,32 @@ % \begin{macro}{\cVpm,\cPpm} % Partial molar heat capacities are \emph{hard}, but the following % implementation seems to work flawlessly\dots so far. +% \changes{v2.02}{2024/06/14}{Simplified implementations of partial molar +% heat capacities that take advantage of \cs{NewPartialMolarProperty} and +% \cs{NewSubscriptedProperty}. This fixes the issue of the subscripts being +% ``persistent'' after \cs{cPpm} is used in a line. Also declared alternative +% symbols for use with the \texttt{shortpm} option.} % \begin{macrocode} -\NewDocumentCommand{\cPpm}{} -{ - \cs_set:Npn \@@_pm_case_one ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token - {\g_@@_pressure_symbol,##1}} - } - \cs_set:Npn \@@_pm_case_two [##1]##2 - { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_superscript_token{##1} - \c_math_subscript_token{\g_@@_pressure_symbol,##2}} - } - \cs_set:Npn \@@_pm_case_three_part_two ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{\l_@@_pm_arg_tl} - \c_math_subscript_token{\g_@@_pressure_symbol,##1}} - } - \cs_set:Npn \@@_pm_case_four ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{##1}\c_math_subscript_token - {\g_@@_pressure_symbol,\l_@@_pm_arg_tl}} - } - \cs_set:Npn \@@_pm_case_five - { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token - {\g_@@_pressure_symbol,\l_@@_pm_arg_tl}} - } - \partialmolar{\heatcapacitysymbol} -} -\NewDocumentCommand{\cVpm}{} -{ - \cs_set:Npn \@@_pm_case_one ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token - {\g_@@_volume_symbol,##1}} - } - \cs_set:Npn \@@_pm_case_two [##1]##2 - { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{##1}\c_math_subscript_token - {\g_@@_volume_symbol,##2}} - } - \cs_set:Npn \@@_pm_case_three_part_two ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{\l_@@_pm_arg_tl} - \c_math_subscript_token{\g_@@_volume_symbol,##1}} - } - \cs_set:Npn \@@_pm_case_four ##1 - { - \@@_overline:n {\l_@@_pm_symbol_tl - \c_math_superscript_token{##1} - \c_math_subscript_token - {\g_@@_volume_symbol,\l_@@_pm_arg_tl}} - } - \cs_set:Npn \@@_pm_case_five - { - \@@_overline:n {\l_@@_pm_symbol_tl\c_math_subscript_token - {\g_@@_volume_symbol,\l_@@_pm_arg_tl}} - } - \partialmolar{\heatcapacitysymbol} -} +\NewPartialMolarProperty{cP}{\cP} +\NewPartialMolarProperty{cV}{\cV} +\NewSubscriptedSymbol{\cPpmshort}{\@@_overline_copy:n{\heatcapacitysymbol}} + {\g_@@_pressure_symbol} +\NewSubscriptedSymbol{\cVpmshort}{\@@_overline_copy:n{\heatcapacitysymbol}} + {\g_@@_volume_symbol} % \end{macrocode} % \end{macro} % -% \subsection{Residual and Excess Properties} +% \subsubsection{Electrochemistry} +% \begin{macro}{\Epot} +% \changes{v2.02}{2024/06/14}{Added \cs{Epot} to standardize the electric +% potential across textbooks for electrochemistry.} +% The \cs{Epot} command can be used for the electric potential. +% \begin{macrocode} +\NewExpandableDocumentCommand{\Epot}{}{E} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Residual and Excess Properties} % \begin{macro}{\residual,\excess} % Macros are defined for residual properties (departure from ideal gases) % and excess properties (departure from ideal solutions). We begin with two @@ -3683,9 +4622,9 @@ % \end{macrocode} % \end{macro} % -% \pagebreak[1]% +% \pagebreak[1]\relax % \begin{macro}{\prodall,\sumall,\summallbutlast} -% The \cs{sumall} command and its cousin, \cs{sumallbutlast}, simplify the +% The \cs{sumall} macro and its cousin, \cs{sumallbutlast}, simplify the % typesetting of commonly-used sums; the command \cs{prodall} does the same % thing for products, viz., % \begin{verbatim} @@ -3694,9 +4633,9 @@ % = \prodall_i a_i^{\nu_i} \] %\end{verbatim} % gives -% \[ \sum_{i=1}^C x_i = 1 \qquad \sum_{i=1}^{C-1} x_i = 1 - x_C \qquad -% K = \exp\left(\frac{-\Delta G_\text{rxn}^\circ}{RT}\right) -% = \prod_{i=1}^C a_i^{\nu_i} \] +% \[ \sumall_i x_i = 1 \qquad \sumallbutlast_i x_i = 1 - x_\ncomponents +% \qquad K = \exp\left(\frac{-\Deltarxn\Gm^\std}{RT}\right) +% = \prodall_i a_i^{\nu_i} \] % \begin{macrocode} \NewDocumentCommand{\sumall}{m m} { \sum\c_math_subscript_token{#2=1} @@ -3723,6 +4662,7 @@ % \end{macro} % % \begin{macro}{\Henryrat,\Henrymol} +% \subsubsection{Henry's Law Constants and Activity Coefficients} % The Henry's Law constants for the rational basis ($y_i P = x_i h_i$) and % the molal basis ($y_i P = C_i \mathcal{H}_i$) are given by the macros % \cs{Henryrat} and \cs{Henrymol}, respectively. Using them this way @@ -3733,20 +4673,28 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\gammait,\muit} +% \changes{v2.02}{2024/06/14}{Added \cs{muit} and \cs{gammait} to preserve +% symbols in case the base macros are redefined by a package.} % \begin{macro}{\gammarat,\gammamol} -% The ordinary activity coefficient is universally denoted $\gamma$, so I -% have not defined a special macro for that. However, symbols for the Henry's -% Law activity coefficients are far from universal, so I have defined macros to -% make their use consistent. The defaults render \cs{gammarat} as $\gamma^\ast$ -% and \cs{gammamol} as $\gamma^\square$. -% \cs{gammamol} will use \cs{square} from packages if it is defined; if not, -% it ``fakes it'' with the definition below. +% The ordinary activity coefficient is typically denoted $\gamma$ or +% $\gammaup$, so the base symbol will still be \cs{gamma}. The macro +% \cs{gammait} is defined just in case \cs{gamma} is redefined by a package +% option. However, symbols for the Henry's Law activity coefficients are far +% from universal, so I have defined macros to make their use consistent. The +% defaults render \cs{gammarat} as $\gamma^\ast$ and \cs{gammamol} as +% $\gamma^\square$. \cs{gammamol} will use \cs{square} from packages if it is +% defined; if not, it ``fakes it'' with the definition below. +% The symbol for the chemical potential is \cs{mu}, but \cs{muit} is defined +% so the symbol is still available, should \cs{mu} be redefined later. %^^A Backup for \square adapted from amsthm.sty with tweaks to make it %^^A look reasonably similar to that from newpx (i.e., smaller than the -%^^A amsfonts) version +%^^A amsfonts version) % \begin{macrocode} +\cs_gset_eq:NN \gammait \gamma +\cs_gset_eq:NN \muit \mu \AtBeginDocument{% - \providecommand*{\square}{% + \ProvideDocumentCommand{\square}{}{% \text{\leavevmode \hbox to.65em{% \hfil\vrule @@ -3759,6 +4707,8 @@ \NewDocumentCommand{\gammamol}{}{\gamma\c_math_superscript_token\square} % \end{macrocode} % \end{macro} +% \end{macro} +% \subsection{Jacobians} % \begin{environment}{thermovmatrix} % This is a non-user-interface wrapper environment used to detect, in % effect, whether \pkg{amsmath} has been loaded. If so, it uses its @@ -3778,7 +4728,7 @@ % \end{environment} % \begin{macro}{Jacobian} % The \cs{Jacobian} command typesets the Leibnitz notation for the Jacobian -% determinant. +% determinant.\relax % \changes{v2.00}{2023/11/16}{Reimplemented \cs{Jacobian} to handle an % arbitary number of variables and implemented \cs{Jacobiandet} to % handle the matrix representation of the Jacobian.} diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.ins b/macros/latex/contrib/thermodynamics/thermodynamics.ins index f2f2b95f40..ac1f6bd146 100644 --- a/macros/latex/contrib/thermodynamics/thermodynamics.ins +++ b/macros/latex/contrib/thermodynamics/thermodynamics.ins @@ -1,4 +1,4 @@ -%% File: thermodynamics.ins Copyright (C) 2022-2023 Karl D. Hammond +%% File: thermodynamics.ins Copyright (C) 2022-2024 Karl D. Hammond %% %% Karl D. Hammond, %% Department of Chemical Engineering @@ -30,7 +30,7 @@ This is a generated file. -Copyright (C) 2022-2023 by Karl D. Hammond +Copyright (C) 2022-2024 by Karl D. Hammond Karl D. Hammond, Department of Chemical Engineering diff --git a/macros/latex/contrib/thermodynamics/thermodynamics.pdf b/macros/latex/contrib/thermodynamics/thermodynamics.pdf Binary files differindex 389a58d238..b2d2f3c62c 100644 --- a/macros/latex/contrib/thermodynamics/thermodynamics.pdf +++ b/macros/latex/contrib/thermodynamics/thermodynamics.pdf |