From b18eebf8c60c2aaf7ab3d69c6293c41f903590c8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 14 Jun 2024 21:41:45 +0000 Subject: thermodynamics (14jun24) git-svn-id: svn://tug.org/texlive/trunk@71522 c570f23f-e606-0410-a88d-b1316a301751 --- .../thermodynamics/thermodynamics-examples.tex | 3 +- .../doc/latex/thermodynamics/thermodynamics.pdf | Bin 270368 -> 333889 bytes .../source/latex/thermodynamics/thermodynamics.dtx | 1686 +++++++++++++++----- .../source/latex/thermodynamics/thermodynamics.ins | 4 +- .../tex/latex/thermodynamics/thermodynamics.sty | 957 +++++++++-- 5 files changed, 2105 insertions(+), 545 deletions(-) (limited to 'Master/texmf-dist') 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 Binary files a/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf and b/Master/texmf-dist/doc/latex/thermodynamics/thermodynamics.pdf 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 $ -%^^X {thermodynamics notation} %<*driver> -%^^X\ProvidesFile{\ExplFileName} \ProvidesFile{thermodynamics.dtx} % % @@ -36,9 +32,8 @@ %\RequirePackage{expl3} %\ProvidesPackage{thermodynamics} %<*package> - [2023/12/05 v2.01 thermodynamics notation] + [2024/06/14 v2.02 thermodynamics notation] % -%^^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} % % \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 -- cgit v1.2.3