summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-06-14 21:41:45 +0000
committerKarl Berry <karl@freefriends.org>2024-06-14 21:41:45 +0000
commitb18eebf8c60c2aaf7ab3d69c6293c41f903590c8 (patch)
tree8fd8be23fca6f9134f86f6501028469a69a1ece7 /Master/texmf-dist
parent67f2d087cbd99f34d7b14172eb033b9362513306 (diff)
thermodynamics (14jun24)
git-svn-id: svn://tug.org/texlive/trunk@71522 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/thermodynamics/thermodynamics-examples.tex3
-rw-r--r--Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdfbin270368 -> 333889 bytes
-rw-r--r--Master/texmf-dist/source/latex/thermodynamics/thermodynamics.dtx1686
-rw-r--r--Master/texmf-dist/source/latex/thermodynamics/thermodynamics.ins4
-rw-r--r--Master/texmf-dist/tex/latex/thermodynamics/thermodynamics.sty957
5 files changed, 2105 insertions, 545 deletions
diff --git a/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics-examples.tex b/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics-examples.tex
index 60118041f0f..35ba7df57b0 100644
--- a/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics-examples.tex
+++ b/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics-examples.tex
@@ -8,7 +8,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
@@ -22,7 +22,6 @@
%% 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.
-%%^^A = C_i \gammamol_i \Henrymol_i
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{amsmath,amssymb}
diff --git a/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf b/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf
index 389a58d2388..b2d2f3c62c1 100644
--- a/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf
+++ b/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.dtx b/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.dtx
index 972a2b6b0ca..98fdb4c3de4 100644
--- a/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.dtx
+++ b/Master/texmf-dist/source/latex/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/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.ins b/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.ins
index f2f2b95f40b..ac1f6bd1462 100644
--- a/Master/texmf-dist/source/latex/thermodynamics/thermodynamics.ins
+++ b/Master/texmf-dist/source/latex/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/Master/texmf-dist/tex/latex/thermodynamics/thermodynamics.sty b/Master/texmf-dist/tex/latex/thermodynamics/thermodynamics.sty
index 87c22917702..fd2de467bb8 100644
--- a/Master/texmf-dist/tex/latex/thermodynamics/thermodynamics.sty
+++ b/Master/texmf-dist/tex/latex/thermodynamics/thermodynamics.sty
@@ -8,7 +8,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
@@ -25,8 +25,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
\ProvidesPackage{thermodynamics}
- [2023/12/05 v2.01 thermodynamics notation]
-%%^^A = C_i \gammamol_i \Henrymol_i
+ [2024/06/14 v2.02 thermodynamics notation]
\ExplSyntaxOn
\cs_generate_variant:Nn \tl_if_eq:nnTF { xxTF }
\RequirePackage{amstext}
@@ -91,7 +90,9 @@
\tl_gset:Nn \g__thermodynamics_internal_energy_symbol U
\tl_gset:Nn \g__thermodynamics_Helmholtz_symbol A
\tl_gset:Nn \g__thermodynamics_Gibbs_symbol G
-\tl_gset:Nn \g__thermodynamics_Landau_symbol \Omega
+\cs_if_exist:NTF \Omegait
+{ \tl_gset:Nn \g__thermodynamics_Landau_symbol \Omegait }
+{ \tl_gset:Nn \g__thermodynamics_Landau_symbol \Omega }
\tl_gset:Nn \g__thermodynamics_enthalpy_symbol H
\tl_gset:Nn \g__thermodynamics_entropy_symbol S
\tl_gset:Nn \g__thermodynamics_area_symbol a
@@ -203,7 +204,14 @@
}
\cs_new:Npn \__thermodynamics_set_extensive_superscripts
{
- \cs_set:Nn \__thermodynamics_extensive:n {{##1}\c_math_superscript_token t}
+ \cs_set:Nn \__thermodynamics_extensive_one:n
+ { \c_math_superscript_token {##1\l__thermodynamics_super_separator_tl t} }
+ \cs_set:Nn \__thermodynamics_extensive:n
+ {
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { ##1 \__thermodynamics_extensive_one:n }
+ { ##1 \c_math_superscript_token t }
+ }
\cs_set:Nn \__thermodynamics_intensive:n {##1}
}
\DeclareOption{extensive-plain}{\__thermodynamics_set_extensive_plain}
@@ -212,40 +220,39 @@
\__thermodynamics_set_intensive_lowercase
\AtEndOfPackage{
\__thermodynamics_set_lowercase_pms
- \RenewDocumentCommand{\heatcapacitysymbol}{}{c}
}
}
\DeclareOption{extensive-superscript}{%
\__thermodynamics_set_extensive_superscripts
- \AtEndOfPackage{%
- \RenewDocumentCommand{\URt}{}{\g__thermodynamics_internal_energy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\HRt}{}{\g__thermodynamics_enthalpy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\FRt}{}{\g__thermodynamics_Helmoholtz_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\GRt}{}{\g__thermodynamics_Gibbs_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\VRt}{}{\g__thermodynamics_volume_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\SRt}{}{\g__thermodynamics_entropy_symbol
- \c_math_superscript_token{\residual,t}}
- \RenewDocumentCommand{\UEt}{}{\g__thermodynamics_internal_energy_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\HEt}{}{\g__thermodynamics_enthalpy_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\FEt}{}{\g__thermodynamics_Helmoholtz_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\GEt}{}{\g__thermodynamics_Gibbs_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\VEt}{}{\g__thermodynamics_volume_symbol
- \c_math_superscript_token{\excess,t}}
- \RenewDocumentCommand{\SEt}{}{\g__thermodynamics_entropy_symbol
- \c_math_superscript_token{\excess,t}}
- }
-}
-%%^^A \[ \left(\frac{\partial U}{\partial S}\right)_V \quad\text{versus}\quad
-%%^^A \left(\frac{\partial U(S,V)}{\partial S}\right) \]
+}
+\bool_new:N \l__thermodynamics_longpm_bool
+\DeclareOption{longpm}{\bool_set_true:N \l__thermodynamics_longpm_bool}
+\cs_set_eq:NN \__thermodynamics_overline_copy:n \__thermodynamics_overline:n
+\DeclareOption{shortpm}{
+ \bool_set_false:N \l__thermodynamics_longpm_bool
+ \AtEndOfPackage{
+ \RenewDocumentCommand{\cPpm}{}
+ {
+ \cs_set:Nn \__thermodynamics_overline:n {##1}
+ \partialmolar{\cPpmshort}
+ }
+ \RenewDocumentCommand{\cVpm}{}
+ {
+ \cs_set:Nn \__thermodynamics_overline:n {##1}
+ \partialmolar{\cVpmshort}
+ }
+ }
+}
+\NewDocumentEnvironment{thermolongpm}{}{%
+ \bool_set_true:N \l__thermodynamics_longpm_bool
+}{}
+\NewDocumentEnvironment{thermoshortpm}{}{%
+ \bool_set_false:N \l__thermodynamics_longpm_bool
+ \RenewSubscriptedSymbol{\cPpm}{\__thermodynamics_overline:n \heatcapacitysymbol}
+ {\g__thermodynamics_pressure_symbol}
+ \RenewSubscriptedSymbol{\cVpm}{\__thermodynamics_overline:n \heatcapacitysymbol}
+ {\g__thermodynamics_volume_symbol}
+}{}
\bool_new:N \l__thermodynamics_subscripted_bool
\bool_set_true:N \l__thermodynamics_subscripted_bool
\DeclareOption{subscripts}{\bool_set_true:N \l__thermodynamics_subscripted_bool}
@@ -338,48 +345,339 @@
}
}
\DeclareOption{Bejan}{
- \ExecuteOptions{EUFGHAN,intensive-lowercase,delta}
- \cs_set:Nn \__thermodynamics_specific:n {\text_lowercase:n {#1}}
- \cs_set:Nn \__thermodynamics_intensive:n {\bar{\text_lowercase:n {#1}}}
- \tl_gset:Nn \g__thermodynamics_volume_symbol v
+ \ExecuteOptions{EUFGHAN,intensive-lowercase,delta,shortpm}
+ \AtEndOfPackage{
+ \cs_set:Nn \__thermodynamics_specific:n {\text_lowercase:n {#1}}
+ \cs_set:Nn \__thermodynamics_intensive:n {\bar{\text_lowercase:n {#1}}}
+ \cs_set:Nn \__thermodynamics_extensive:n {\text_uppercase:n {#1}}
+ \tl_gset:Nn \g__thermodynamics_volume_symbol v
+ \RenewExpandableDocumentCommand{\ncomponents}{}{n}
+ \RenewSubscriptedSymbol{\Lt}{\g__thermodynamics_Helmholtz_symbol}{\mu}
+ \RenewSubscriptedSymbol{\Lm}
+ {\bar{\text_lowercase:n \g__thermodynamics_Helmholtz_symbol}}{\mu}
+ \RenewSubscriptedSymbol{\Ls}
+ {\text_lowercase:n \g__thermodynamics_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}{\__thermodynamics_intensive:n {\heatcapacitysymbol}}
+ {\text_lowercase:n \g__thermodynamics_volume_symbol}
+ \RenewSubscriptedSymbol{\cVt}{\__thermodynamics_extensive:n {\heatcapacitysymbol}}
+ {\text_uppercase:n \g__thermodynamics_volume_symbol}
+ \RenewSubscriptedSymbol{\cVpm}{\heatcapacitysymbol}
+ {\text_lowercase:n \g__thermodynamics_volume_symbol}
+ \RenewSubscriptedSymbol{\cPpm}{\heatcapacitysymbol}
+ {\text_lowercase:n \g__thermodynamics_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__thermodynamics_Deltaf_sym_tl {#1} \__thermodynamics_Deltaf }
+ \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0}
+ \RenewDocumentCommand{\Wm}{}{W}
+ \RenewDocumentCommand{\Ws}{}{W}
+ \cs_new:Nn \__thermodynamics_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
+ { \__thermodynamics_fpure_one:n }
+ { f }
+ }
+ \cs_new:Nn \__thermodynamics_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
+ {
+ \__thermodynamics_phipure_one:n
+ }
+ {\phi}
+ }
+ \RenewDocumentCommand{\phimix}{}{\phi}
+ }
}
\DeclareOption{CBK}{
- \ExecuteOptions{EUAGHAN,intensive-lowercase}
+ \ExecuteOptions{EUAGHAN,intensive-lowercase,delta,shortpm}
\AtEndOfPackage{
- \cs_set:Nn \__thermodynamics_overline:n {\widetilde{#1}}
+ \cs_set:Nn \__thermodynamics_overline:n {\widetilde #1}
+ \cs_set:Nn \__thermodynamics_overline_copy:n {\widetilde #1}
\cs_set:Nn \__thermodynamics_specific:n {\text_lowercase:n {#1}}
\cs_set:Nn \__thermodynamics_intensive:n {\bar{\text_lowercase:n{#1}}}
+ \tl_gset:Nn \g__thermodynamics_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__thermodynamics_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__thermodynamics_Deltaf_sym_tl {#1}
+ \__thermodynamics_Deltaf
+ }
+ \RenewDocumentCommand{\Pstd}{}{P\c_math_subscript_token 0}
+ \RenewDocumentCommand{\Lm}{}{\__thermodynamics_intensive:n\omega}
+ \RenewDocumentCommand{\Ls}{}{\__thermodynamics_specific:n\omega}
}
}
\DeclareOption{ElliottLira}{
+ \ExecuteOptions{shortpm}
\AtEndOfPackage{
+ \cs_gset_eq:NN \__thermodynamics_specific:n \__thermodynamics_intensive:n
+ %^^A\RenewDocumentCommand{\partialmolar}{m}{\__thermodynamics_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__thermodynamics_sub_separator_tl {}
+ \cs_set:Nn \__thermodynamics_extensive:n {#1}
+ \cs_new:Nn \__thermodynamics_intensive_one:n
+ {
+ \c_math_superscript_token {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ { \__thermodynamics_intensive_three:n }
+ { \c_math_subscript_token{\mathrm{m}} }
+ }
+ \cs_new:Nn \__thermodynamics_intensive_three:n
+ { \c_math_subscript_token{\mathrm{m}\l__thermodynamics_sub_separator_tl #1} }
+ \cs_new:Nn \__thermodynamics_intensive_two:n
+ {
+ \c_math_subscript_token{\mathrm{m}\l__thermodynamics_sub_separator_tl #1}
+ \peek_catcode:NF \c_math_superscript_token
+ { \c_math_superscript_token\bullet }
+ }
+ \cs_set:Nn \__thermodynamics_intensive:n
+ {
+ #1
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \__thermodynamics_intensive_one:n }
+ { \peek_catcode_remove:NTF \c_math_subscript_token
+ { \__thermodynamics_intensive_two:n }
+ { \c_math_subscript_token{\mathrm{m}} }
+ }
+ }
+ \cs_new:Nn \__thermodynamics_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
+ { \__thermodynamics_fpure_one:n }
+ { f }
+ }
+ \cs_new:Nn \__thermodynamics_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
+ { \__thermodynamics_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}
+ \RenewDocumentCommand{\Deltamix}{m}{
+ \tl_set:Nn \l__thermodynamics_sub_separator_tl {,}
+ \Delta #1\c_math_subscript_token{\mixing}
+ }
+ \RenewDocumentCommand{\excess}{}{{\mathrm{E}}}
+ \RenewDocumentCommand{\residual}{}{{\mathrm{R}}}
+ \cs_set:Nn \__thermodynamics_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 \__thermodynamics_pm_case_one #1
+ {
+ \l__thermodynamics_pm_symbol_tl\c_math_subscript_token{\mathrm{m}#1}
+ }
+ \cs_set:Npn \__thermodynamics_pm_case_two [#1]#2
+ {
+ \l__thermodynamics_pm_symbol_tl
+ \c_math_superscript_token{#1}\c_math_subscript_token{\mathrm{m}#2}
+ }
+ \cs_set:Npn \__thermodynamics_pm_case_three_part_two #1
+ {
+ \l__thermodynamics_pm_symbol_tl
+ \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
+ \c_math_subscript_token{\mathrm{m}#1}
+ }
+ \cs_set:Npn \__thermodynamics_pm_case_four #1
+ {
+ \l__thermodynamics_pm_symbol_tl\c_math_superscript_token{#1}
+ \c_math_subscript_token{\mathrm{m}\l__thermodynamics_pm_arg_tl}
+ }
+ \cs_set:Npn \__thermodynamics_pm_case_five
+ {
+ \l__thermodynamics_pm_symbol_tl
+ \c_math_subscript_token{\mathrm{m}\l__thermodynamics_pm_arg_tl}
+ }
+
+ % fix heat capacities
+ \RenewSubscriptedSymbol{\cP}{\heatcapacitysymbol}
+ {\g__thermodynamics_pressure_symbol\mathrm{m}}
+ \RenewSubscriptedSymbol{\cV}{\heatcapacitysymbol}
+ {\g__thermodynamics_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__thermodynamics_pressure_symbol\mathrm{m}
+ \l__thermodynamics_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__thermodynamics_volume_symbol\mathrm{m}
+ \l__thermodynamics_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__thermodynamics_area_symbol {A}
+ \RenewExpandableDocumentCommand{\std}{}{o}
+ \RenewExpandableDocumentCommand{\ncomponents}{}{m}
\RenewDocumentCommand{\partialmolar}{m}
- { \tl_set:Nn \l__thermodynamics_pm_symbol_tl {#1}
+ {
+ \tl_set:Nn \l__thermodynamics_pm_symbol_tl {#1}
\__thermodynamics_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}
@@ -397,19 +695,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__thermodynamics_Deltaf_superscript_tl
+ \tl_new:N \l__thermodynamics_Deltaf_subscript_tl
+ \bool_new:N \l__thermodynamics_Deltaf_parentheses_bool
+ \tl_new:N \l__thermodynamics_Deltaf_entity_tl
+ \cs_set:Nn \__thermodynamics_Deltaf_one:n
+ {
+ \tl_set:Nn \l__thermodynamics_Deltaf_superscript_tl {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l__thermodynamics_Deltaf_parentheses_bool
+ \__thermodynamics_Deltaf_two:n
+ }
+ {
+ \bool_if:NTF \l__thermodynamics_Deltaf_parentheses_bool
+ {
+ (\Delta\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_subscript_tl
+ { \c_math_subscript_token\l__thermodynamics_Deltaf_subscript_tl }
+ }
+ {
+ \Delta\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \cs_set:Nn \__thermodynamics_Deltaf_two:n
+ {
+ \tl_set:Nn \l__thermodynamics_Deltaf_subscript_tl {#1}
+ % check for case 4
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \__thermodynamics_Deltaf_one:n }
+ {
+ \bool_if:NTF \l__thermodynamics_Deltaf_parentheses_bool
+ {
+ (\Delta\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ {\c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl}
+ )
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_subscript_tl
+ \c_math_subscript_token\l__thermodynamics_Deltaf_subscript_tl
+ }
+ {
+ \Delta\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ {\c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl}
+ }
+ }
+ }
+ \RenewDocumentCommand{\Deltaf}{m}
+ {
+ \tl_clear:N \l__thermodynamics_Deltaf_superscript_tl
+ \tl_clear:N \l__thermodynamics_Deltaf_subscript_tl
+ \tl_set:Nn \l__thermodynamics_Deltaf_entity_tl {#1}
+ \bool_set_false:N \l__thermodynamics_Deltaf_parentheses_bool
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ {
+ \__thermodynamics_Deltaf_one:n
+ }
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l__thermodynamics_Deltaf_parentheses_bool
+ \__thermodynamics_Deltaf_two:n
+ }
+ {
+ \Delta #1\c_math_subscript_token \formation
+ }
+ }
+ }
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewSubscriptedSymbol{\cV}{\__thermodynamics_intensive:n \heatcapacitysymbol}
+ {\__thermodynamics_intensive:n \g__thermodynamics_volume_symbol}
+ \RenewSubscriptedSymbol{\cVs}{\__thermodynamics_specific:n \heatcapacitysymbol}
+ {\__thermodynamics_intensive:n \g__thermodynamics_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}
{
@@ -419,29 +798,114 @@
}
\tl_gset_eq:NN \g__thermodynamics_Helmholtz_symbol \psi
\RenewDocumentCommand{\Ft}{}{\Psi}
+ \RenewDocumentCommand{\Fpm}{}{\partialmolar{\Psi}}
\cs_set:Nn \__thermodynamics_intensive:n {\__thermodynamics_overline:n{\text_lowercase:n{#1}}}
\cs_set:Nn \__thermodynamics_specific:n {\text_lowercase:n{#1}}
\RenewDocumentCommand{\fmix}{}{\bar f}
\RenewDocumentCommand{\phimix}{}{\bar\phi}
\RenewDocumentCommand{\phimix}{}{\bar\phi}
\tl_gset:Nn \g__thermodynamics_pressure_symbol p
+ \tl_gset:Nn \g__thermodynamics_volume_symbol v
\RenewDocumentCommand{\partialmolar}{m}
{
- \tl_set:Nn \l__thermodynamics_pm_symbol_tl {#1}
+ \tl_set:Nn \l__thermodynamics_pm_symbol_tl {\text_uppercase:n #1}
\__thermodynamics_generic_pm:
}
+ \RenewDocumentCommand{\kappaT}{}{\compressibilitysymbol}
+ \RenewDocumentCommand{\alphaP}{}{\expansivitysymbol}
+ \RenewDocumentCommand{\mustd}{}{\Gm^\std}
+ \RenewExpandableDocumentCommand{\formation}{}{{\mathrm{f}}}
+ \RenewDocumentCommand{\Pstd}{}
+ {\g__thermodynamics_pressure_symbol\c_math_subscript_token\text{ref}}
+ \RenewExpandableDocumentCommand{\xrxn}{}{\varepsilon}
+ \RenewExpandableDocumentCommand{\Lm}{}{\__thermodynamics_intensive:n \omega}
+ \RenewExpandableDocumentCommand{\Ls}{}{\__thermodynamics_specific:n \omega}
+ \RenewExpandableDocumentCommand{\heatcapacitysymbol}{}{C}
+ \tl_new:N \l__thermodynamics_Deltaf_superscript_tl
+ \tl_new:N \l__thermodynamics_Deltaf_subscript_tl
+ \bool_new:N \l__thermodynamics_Deltaf_parentheses_bool
+ \tl_new:N \l__thermodynamics_Deltaf_entity_tl
+ \cs_set:Nn \__thermodynamics_Deltaf_one:n
+ {
+ \tl_set:Nn \l__thermodynamics_Deltaf_superscript_tl {#1}
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l__thermodynamics_Deltaf_parentheses_bool
+ \__thermodynamics_Deltaf_two:n
+ }
+ {
+ \bool_if:NTF \l__thermodynamics_Deltaf_parentheses_bool
+ {
+ (\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_subscript_tl
+ { \c_math_subscript_token\l__thermodynamics_Deltaf_subscript_tl }
+ }
+ {
+ \l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token{\formation}
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \cs_set:Nn \__thermodynamics_Deltaf_two:n
+ {
+ \tl_set:Nn \l__thermodynamics_Deltaf_subscript_tl {#1}
+ % check for case 4
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ { \__thermodynamics_Deltaf_one:n }
+ {
+ \bool_if:NTF \l__thermodynamics_Deltaf_parentheses_bool
+ {
+ (\l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ )
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_subscript_tl
+ { \c_math_subscript_token\l__thermodynamics_Deltaf_subscript_tl }
+ }
+ {
+ \l__thermodynamics_Deltaf_entity_tl\c_math_subscript_token\formation
+ \tl_if_empty:NF \l__thermodynamics_Deltaf_superscript_tl
+ { \c_math_superscript_token\l__thermodynamics_Deltaf_superscript_tl }
+ }
+ }
+ }
+ \RenewDocumentCommand{\Deltaf}{m}
+ {
+ \tl_clear:N \l__thermodynamics_Deltaf_superscript_tl
+ \tl_clear:N \l__thermodynamics_Deltaf_subscript_tl
+ \tl_set:Nn \l__thermodynamics_Deltaf_entity_tl {#1}
+ \bool_set_false:N \l__thermodynamics_Deltaf_parentheses_bool
+ \peek_catcode_remove:NTF \c_math_superscript_token
+ {
+ \__thermodynamics_Deltaf_one:n
+ }
+ {
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \bool_set_true:N \l__thermodynamics_Deltaf_parentheses_bool
+ \__thermodynamics_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}
@@ -449,14 +913,36 @@
{ {#3}\c_math_subscript_token k }
{ {#3}\c_math_subscript_token{#1} }
}
+ \tl_set:Nn \l__thermodynamics_sub_separator_tl {\,}
+ \tl_gset:Nn \g__thermodynamics_pressure_symbol {p}
+ \tl_gset:Nn \g__thermodynamics_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}{}{\__thermodynamics_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}}
@@ -477,6 +963,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__thermodynamics_volume_symbol}
@@ -486,10 +978,16 @@
{\Nt\heatcapacitysymbol}{\g__thermodynamics_volume_symbol}
\RenewSubscriptedSymbol{\cPt}
{\Nt\heatcapacitysymbol}{\g__thermodynamics_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}
@@ -501,17 +999,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__thermodynamics_volume_symbol}
\RenewSubscriptedSymbol{\cPt}
{\Nt\heatcapacitysymbol}{\g__thermodynamics_pressure_symbol}
+ % FIXME
+ \RenewDocumentCommand{\cP}{}
+ {{\heatcapacitysymbol\c_math_subscript_token\g__thermodynamics_pressure_symbol}}
+ \RenewDocumentCommand{\cV}{}
+ {{\heatcapacitysymbol\c_math_subscript_token\g__thermodynamics_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__thermodynamics_sub_separator_tl {}
+ f298
+ }
+ \cs_set:Nn \__thermodynamics_specific:n {#1}
}
}
+\DeclareOption{ModellReid}{\ExecuteOptions{TesterModell}}
\DeclareOption{TesterModell}{
- \ExecuteOptions{EUAGHaN,delta}
+ \ExecuteOptions{EUAGHaN,delta,shortpm}
\AtEndOfPackage{
+ \cs_set:Nn \__thermodynamics_specific:n {\text_lowercase:n{#1}}
\RenewExpandableDocumentCommand{\ncomponents}{}{n}
\RenewDocumentCommand{\allcomponents}{O{i} m}
{
@@ -538,23 +1063,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__thermodynamics_area_symbol {\text{\large\(\mathit{a}\)}}
+ \RenewDocumentCommand{\Epot}{}{\exists}
+ \tl_set:Nn \l__thermodynamics_sub_separator_tl {}
+ \tl_gset:Nn \g__thermodynamics_pressure_symbol {p}
+ \RenewSubscriptedSymbol{\cVt}{\__thermodynamics_extensive:n {\heatcapacitysymbol}}{v}
+ \RenewSubscriptedSymbol{\cV}{\__thermodynamics_intensive:n {\heatcapacitysymbol}}{v}
+ \RenewSubscriptedSymbol{\cVs}{\__thermodynamics_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}
{
@@ -591,7 +1155,8 @@
}
}
\cs_set:Nn \__thermodynamics_intensive:n
- { #1
+ {
+ #1
\peek_catcode_remove:NT \c_math_subscript_token
{ \__thermodynamics_intensive_two:n }
}
@@ -609,10 +1174,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}
{
@@ -622,9 +1193,13 @@
{#3}\c_math_subscript_token{#1}\neq{#3}\c_math_subscript_token{#2}
}
}
+ \RenewDocumentCommand{\Cstd}{}{m^\std}
+ \RenewDocumentCommand{\mustd}{}{\Gamma}
+ \RenewDocumentCommand{\formation}{}{F}
}
}
-\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,moles-index}
+\ExecuteOptions{EUAGHan,subscripts,parentheses,intensive-plain,
+ moles-index,longpm}
\ProcessOptions
\tl_const:Nn \c__thermodynamics_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
@@ -883,8 +1458,8 @@
\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
@@ -984,13 +1559,13 @@
\__thermodynamics_set_extensive_superscripts
}
{}
+\str_new:N \l__thermodynamics_tmp_str
\cs_new:Npn \__thermodynamics_check_definable:nN #1#2
{
- \bool_set_true:N \l__thermodynamics_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__thermodynamics_tmp_str {\tl_to_str:n {#1}}
+ \int_compare:nNnT {\str_count:N \l__thermodynamics_tmp_str} = 1
{ \PackageError{thermodynamics}
{First~argument~of~'\tl_trim_spaces:o {\tl_to_str:n {#2}}'~
must~be~a~command}
@@ -1011,6 +1586,10 @@
\MessageBreak Perhaps~a~backslash~is~missing?}
}
}
+\tl_new:N \l__thermodynamics_super_separator_tl
+\tl_new:N \l__thermodynamics_sub_separator_tl
+\tl_set:Nn \l__thermodynamics_super_separator_tl {,}
+\tl_set:Nn \l__thermodynamics_sub_separator_tl {,}
\NewDocumentCommand{\NewSubscriptedSymbol}{m m m}
{
\__thermodynamics_check_definable:nN {#1} \NewSubscriptedSymbol
@@ -1030,10 +1609,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__thermodynamics_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__thermodynamics_sub_separator_tl ##1} }
\NewDocumentCommand{#1}{}
{% @branch
@@ -1064,10 +1643,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__thermodynamics_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__thermodynamics_sub_separator_tl ##1} }
\RenewDocumentCommand{#1}{}
{% @branch
@@ -1078,7 +1657,6 @@
{ {#2}\c_math_subscript_token{#3} }
}
}
-
}
\NewDocumentCommand{\NewSuperscriptedSymbol}{m m m}
{
@@ -1099,10 +1677,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__thermodynamics_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__thermodynamics_super_separator_tl ##1} }
\NewDocumentCommand{#1}{}
{
@@ -1133,10 +1711,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__thermodynamics_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__thermodynamics_super_separator_tl ##1} }
\RenewDocumentCommand{#1}{}
{% @branch
@@ -1148,6 +1726,53 @@
}
}
}
+\cs_new:Nn \__thermodynamics_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}
+{
+ \__thermodynamics_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}
+ }
+ \__thermodynamics_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}
+{
+ \__thermodynamics_check_definable:nN {#1} \RenewSubscriptedandSuperscriptedSymbol
+}
\NewExpandableDocumentCommand{\heatcapacitysymbol}{}{C}
\NewExpandableDocumentCommand{\compressibilitysymbol}{}{\kappa}
\NewExpandableDocumentCommand{\expansivitysymbol}{}{\alpha}
@@ -1170,7 +1795,7 @@
{\g__thermodynamics_entropy_symbol}
\NewSubscriptedSymbol{\alphaP}{\expansivitysymbol}{\g__thermodynamics_pressure_symbol}
\NewSubscriptedSymbol{\alphaS}{\expansivitysymbol}{\g__thermodynamics_entropy_symbol}
-\NewSubscriptedSymbol{\muJT}{\JTsymbol}{JT}
+\NewSubscriptedSymbol{\muJT}{\JTsymbol}{\text{JT}}
\NewDocumentCommand{\sat}{}{{\text{sat}}}
\NewDocumentCommand{\Psat}{}{P\c_math_superscript_token\sat}
\NewDocumentCommand{\Pvap}{}{\Psat}
@@ -1178,15 +1803,24 @@
\NewDocumentCommand{\fsat}{}{\fpure\c_math_superscript_token\sat}
\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}
+\NewDocumentCommand{\xrxn}{}{\xi}
+\NewDocumentCommand{\fmix}{}{\hat{f}}
+\NewDocumentCommand{\phimix}{}{\hat\phi}
+\NewDocumentCommand{\fpure}{}{f}
+\NewDocumentCommand{\phipure}{}{\phi}
+\NewExpandableDocumentCommand{\actabs}{}{\lambda}
+\NewExpandableDocumentCommand{\actrel}{}{a}
\NewDocumentCommand{\mixing}{}{{\text{mix}}}
\NewDocumentCommand{\Deltamix}{m}
{\Delta{#1}\c_math_subscript_token\mixing}
+\NewDocumentCommand{\formation}{}{f}
\NewDocumentCommand{\fusion}{}{{\text{fus}}}
\NewDocumentCommand{\reaction}{}{{\text{rxn}}}
\NewDocumentCommand{\sublimation}{}{{\text{sub}}}
\NewDocumentCommand{\vaporization}{}{{\text{vap}}}
-\NewDocumentCommand{\formation}{}{f}
\NewDocumentCommand{\Deltafus}{m}
{\Delta #1\c_math_superscript_token\fusion}
\NewDocumentCommand{\Deltasub}{m}
@@ -1194,17 +1828,25 @@
\NewDocumentCommand{\Deltavap}{m}
{\Delta #1\c_math_superscript_token\vaporization}
\NewDocumentCommand{\Deltarxn}{m}
- {\Delta #1\c_math_subscript_token\reaction}
+{
+ \cs_set:Npn \__thermodynamics_Deltarxn_one ##1
+ {
+ \Delta #1\c_math_subscript_token{\reaction,##1}
+ }
+ \peek_catcode_remove:NTF \c_math_subscript_token
+ {
+ \__thermodynamics_Deltarxn_one
+ }
+ {
+ \Delta #1\c_math_subscript_token{\reaction}
+ }
+}
\tl_new:N \l__thermodynamics_Deltaf_sym_tl
-\NewSubscriptedSymbol{\__thermodynamics_Deltaf}{\l__thermodynamics_Deltaf_sym_tl}{f}
+\NewSubscriptedSymbol{\__thermodynamics_Deltaf}{\l__thermodynamics_Deltaf_sym_tl}{\formation}
\NewDocumentCommand{\Deltaf}{m}
{ \tl_set:Nn \l__thermodynamics_Deltaf_sym_tl {\Delta #1}
\__thermodynamics_Deltaf
}
-\NewDocumentCommand{\fmix}{}{\hat{f}}
-\NewDocumentCommand{\phimix}{}{\hat\phi}
-\NewDocumentCommand{\fpure}{}{f}
-\NewDocumentCommand{\phipure}{}{\phi}
\tl_new:N \l__thermodynamics_pm_symbol_tl
\tl_new:N \l__thermodynamics_pm_arg_tl
\NewDocumentCommand{\partialmolar}{m}
@@ -1243,12 +1885,21 @@
}
\cs_new:Npn \__thermodynamics_pm_case_one #1
{
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token{#1}}
+ \bool_if:NTF \l__thermodynamics_longpm_bool
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token{#1}} }
+ {
+ \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl}\c_math_subscript_token{#1}
+ }
}
\cs_new:Npn \__thermodynamics_pm_case_two [#1]#2
{
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{#1}\c_math_subscript_token{#2}}
+ \bool_if:NTF \l__thermodynamics_longpm_bool
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
+ \c_math_superscript_token{#1}\c_math_subscript_token{#2}}
+ }
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl}
+ \c_math_superscript_token{#1}\c_math_subscript_token{#2}
+ }
}
\cs_new:Npn \__thermodynamics_pm_case_three #1
{
@@ -1259,9 +1910,15 @@
}
\cs_new:Npn \__thermodynamics_pm_case_three_part_two #1
{
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
- \c_math_subscript_token{#1}}
+ \bool_if:NTF \l__thermodynamics_longpm_bool
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
+ \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
+ \c_math_subscript_token{#1}}
+ }
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl}
+ \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
+ \c_math_subscript_token{#1}
+ }
}
\cs_new:Npn \__thermodynamics_pm_case_four_or_five #1
{
@@ -1272,13 +1929,23 @@
}
\cs_new:Npn \__thermodynamics_pm_case_four #1
{
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_superscript_token{#1}
- \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}}
+ \bool_if:NTF \l__thermodynamics_longpm_bool
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_superscript_token{#1}
+ \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}}
+ }
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl}\c_math_superscript_token{#1}
+ \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}
+ }
}
\cs_new:Npn \__thermodynamics_pm_case_five
{
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}}
+ \bool_if:NTF \l__thermodynamics_longpm_bool
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
+ \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}}
+ }
+ { \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl}
+ \c_math_subscript_token{\l__thermodynamics_pm_arg_tl}
+ }
}
\NewDocumentCommand{\NewThermodynamicProperty}{m m}
{
@@ -1287,7 +1954,7 @@
\NewResidualProperty{#1}{#2}
\NewExcessProperty{#1}{#2}
}
-\NewDocumentCommand{\NewExtensiveProperty}{m m}
+\ProvideDocumentCommand{\NewExtensiveProperty}{m m}
{
% Extensive property
\exp_after:wN \NewDocumentCommand \exp_after:wN
@@ -1305,7 +1972,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:}{\__thermodynamics_extensive:n{#2}}{\excess}
@@ -1314,13 +1981,12 @@
\exp_after:wN \NewSuperscriptedSymbol \exp_after:wN
{\cs:w #1 Es\cs_end:}{\__thermodynamics_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:}{\__thermodynamics_extensive:n{#2}}{\residual}
@@ -1347,70 +2013,13 @@
\NewPartialMolarProperty{A}{\g__thermodynamics_area_symbol}
\NewExtensiveProperty{Q}{\g__thermodynamics_heat_symbol}
\NewExtensiveProperty{W}{\g__thermodynamics_work_symbol}
-\NewDocumentCommand{\cPpm}{}
-{
- \cs_set:Npn \__thermodynamics_pm_case_one ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token
- {\g__thermodynamics_pressure_symbol,##1}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_two [##1]##2
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_superscript_token{##1}
- \c_math_subscript_token{\g__thermodynamics_pressure_symbol,##2}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_three_part_two ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
- \c_math_subscript_token{\g__thermodynamics_pressure_symbol,##1}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_four ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{##1}\c_math_subscript_token
- {\g__thermodynamics_pressure_symbol,\l__thermodynamics_pm_arg_tl}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_five
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token
- {\g__thermodynamics_pressure_symbol,\l__thermodynamics_pm_arg_tl}}
- }
- \partialmolar{\heatcapacitysymbol}
-}
-\NewDocumentCommand{\cVpm}{}
-{
- \cs_set:Npn \__thermodynamics_pm_case_one ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token
- {\g__thermodynamics_volume_symbol,##1}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_two [##1]##2
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{##1}\c_math_subscript_token
- {\g__thermodynamics_volume_symbol,##2}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_three_part_two ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{\l__thermodynamics_pm_arg_tl}
- \c_math_subscript_token{\g__thermodynamics_volume_symbol,##1}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_four ##1
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl
- \c_math_superscript_token{##1}
- \c_math_subscript_token
- {\g__thermodynamics_volume_symbol,\l__thermodynamics_pm_arg_tl}}
- }
- \cs_set:Npn \__thermodynamics_pm_case_five
- {
- \__thermodynamics_overline:n {\l__thermodynamics_pm_symbol_tl\c_math_subscript_token
- {\g__thermodynamics_volume_symbol,\l__thermodynamics_pm_arg_tl}}
- }
- \partialmolar{\heatcapacitysymbol}
-}
+\NewPartialMolarProperty{cP}{\cP}
+\NewPartialMolarProperty{cV}{\cV}
+\NewSubscriptedSymbol{\cPpmshort}{\__thermodynamics_overline_copy:n{\heatcapacitysymbol}}
+ {\g__thermodynamics_pressure_symbol}
+\NewSubscriptedSymbol{\cVpmshort}{\__thermodynamics_overline_copy:n{\heatcapacitysymbol}}
+ {\g__thermodynamics_volume_symbol}
+\NewExpandableDocumentCommand{\Epot}{}{E}
\NewDocumentCommand{\residual}{}{R}
\NewDocumentCommand{\excess}{}{E}
\NewDocumentCommand{\sumall}{m m}
@@ -1427,8 +2036,10 @@
\NewDocumentCommand{\IS}{}{{\text{IS}}}
\NewDocumentCommand{\Henryrat}{}{h}
\NewDocumentCommand{\Henrymol}{}{\mathcal{H}}
+\cs_gset_eq:NN \gammait \gamma
+\cs_gset_eq:NN \muit \mu
\AtBeginDocument{%
- \providecommand*{\square}{%
+ \ProvideDocumentCommand{\square}{}{%
\text{\leavevmode
\hbox to.65em{%
\hfil\vrule