% -------------------------------------------------------------------------- % % the CHEMMACROS package -- module: `errorcheck' % % -------------------------------------------------------------------------- % Clemens Niederberger % -------------------------------------------------------------------------- % https://github.org/cgnieder/chemmacros/ % contact@mychemistry.eu % -------------------------------------------------------------------------- % If you have any ideas, questions, suggestions or bugs to report, please % feel free to contact me. % -------------------------------------------------------------------------- % Copyright 2011--2020 Clemens Niederberger % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Clemens Niederberger. % -------------------------------------------------------------------------- \ChemModule{errorcheck}{2016/10/05 error checking for unloaded modules}[5.2] \RequirePackage{scrlfile} \msg_new:nnn {chemmacros} {undefined} { The~ #1~ `#2'~ is~ undefined.~ You~ need~ to~ load~ the~ `#3'~ module. } \cs_generate_variant:Nn \msg_error:nnnnn {nnnx} \cs_new_protected:Npn \chemmacros_requires_module:nNn #1#2#3 { \chemmacros_if_module_loaded:nF {#3} { \cs_if_free:NT #2 { \cs_set:Npn #2 { \msg_error:nnnxn {chemmacros} {undefined} {#1} {\token_to_str:N #2} {#3} } \chemmacros_before_module:nn {#3} { \cs_undefine:N #2 } } } } \cs_generate_variant:Nn \chemmacros_requires_module:nNn {nc} \cs_new_protected:Npn \chemmacros_command_requires_module:Nn #1#2 { \chemmacros_requires_module:nNn {command} #1 {#2} } \cs_new_protected:Npn \chemmacros_environment_requires_module:nn #1#2 { \chemmacros_requires_module:ncn {environment} {#1} {#2} } % -------------------------------------------------------------------------- % add checking for the most common user commands and environments: % isotopes module \chemmacros_command_requires_module:Nn \isotope {isotopes} % mechanisms module \chemmacros_command_requires_module:Nn \mech {mechanisms} % newman module \chemmacros_command_requires_module:Nn \newman {newman} % orbital module \chemmacros_command_requires_module:Nn \orbital {orbital} % polymers module \chemmacros_command_requires_module:Nn \makepolymerdelims {polymers} % reactions module \chemmacros_environment_requires_module:nn {reaction} {reactions} \chemmacros_environment_requires_module:nn {reaction*} {reactions} \chemmacros_environment_requires_module:nn {reactions} {reactions} \chemmacros_environment_requires_module:nn {reactions*} {reactions} \chemmacros_command_requires_module:Nn \listofreactions {reactions} \chemmacros_command_requires_module:Nn \AddRxnDesc {reactions} % redox module \chemmacros_command_requires_module:Nn \ox {redox} \chemmacros_command_requires_module:Nn \OX {redox} \chemmacros_command_requires_module:Nn \redox {redox} % scheme module \chemmacros_environment_requires_module:nn {scheme} {scheme} \chemmacros_command_requires_module:Nn \listschemename {scheme} \chemmacros_command_requires_module:Nn \schemename {scheme} \chemmacros_command_requires_module:Nn \listofschemes {scheme} \BeforePackage {chemscheme} { \cs_undefine:N \scheme \cs_undefine:N \endscheme \cs_undefine:N \listschemename \cs_undefine:N \schemename \cs_undefine:N \listofschemes } % spectroscopy module \chemmacros_command_requires_module:Nn \NMR {spectroscopy} \chemmacros_environment_requires_module:nn {experimental} {spectroscopy} % thermodynamics module \chemmacros_command_requires_module:Nn \state {thermodynamics} \chemmacros_command_requires_module:Nn \enthalpy {thermodynamics} \chemmacros_command_requires_module:Nn \entropy {thermodynamics} \chemmacros_command_requires_module:Nn \gibbs {thermodynamics} % xfrac module \chemmacros_command_requires_module:Nn \chemfrac {xfrac} % -------------------------------------------------------------------------- \file_input_stop: 2015/10/14 - first version 2016/03/08 - add `polymers' module 2016/05/31 - enable `chemscheme' to be loaded after chemmacros 2016/10/06 - check if commands exist before defining them to raise errors