Difference between revisions of "Chemistry"
m (Text replacement - "pragma-ade.com" to "pragma-ade.nl") |
(restructured, removed outdated links and infos) |
||
Line 1: | Line 1: | ||
< [[Math]], [[XML]], [[Graphics]], [[MetaPost]] > | < [[Math]], [[XML]], [[Graphics]], [[MetaPost]] > | ||
− | ConTeXt | + | ConTeXt always came with extensive chemistry support including drawing of chemical structures and the typesetting of reactions. |
− | + | In MkII this was called PPCHTeX, which works also with plain TeX and LaTeX. | |
− | + | There doesn’t seem to be any current documentation (all previous links were long dead), while chemistry support is still part of the distribution, but seems broken. | |
− | |||
− | |||
− | |||
− | + | * [http://www.mit.edu/afs/athena/contrib/tex-contrib/Chem2/ppchtex/doc/fh-ch-en.htm PPCHTeX FAQ] (1997) | |
− | + | * [http://www.tug.org/TUGboat/Articles/tb17-1/tb50hage.pdf TUG Boat article on PPCHTeX] by Hans Hagen and A.F. Otten 1996 | |
− | * [http://www.mit.edu/afs/athena/contrib/tex-contrib/Chem2/ppchtex/doc/fh-ch-en.htm PPCHTeX FAQ | ||
− | * [http://www.tug.org/TUGboat/Articles/tb17-1/tb50hage.pdf TUG Boat article on PPCHTeX] by Hans Hagen and A.F Otten | ||
Some other links about chemistry in ConTeXt: | Some other links about chemistry in ConTeXt: | ||
Line 19: | Line 14: | ||
* [[manual:xchemml-p.pdf|ChemML]] ([[manual:xchemml-s.pdf|screen]]), [[MathML]] extension for chemistry | * [[manual:xchemml-p.pdf|ChemML]] ([[manual:xchemml-s.pdf|screen]]), [[MathML]] extension for chemistry | ||
− | == | + | == Using {{cmd|chemical}} == |
− | + | This is the built-in version of the previous `chemic` module. | |
− | |||
− | |||
− | |||
− | <context> | + | <context source="yes"> |
− | |||
\chemical{HSO_4^{-}} | \chemical{HSO_4^{-}} | ||
</context> | </context> | ||
− | + | You can also typeset chemical ''reactions'': | |
− | < | + | <context source="yes"> |
− | |||
\startformula | \startformula | ||
\chemical{2H_2,+,O_2,->,2H_2O} | \chemical{2H_2,+,O_2,->,2H_2O} | ||
\stopformula | \stopformula | ||
− | </ | + | </context> |
+ | |||
+ | == Chemical structures == | ||
+ | |||
+ | (The “good” images are old; the broken ones are the result of the current code.) | ||
+ | |||
+ | <context source="yes"> | ||
+ | \startchemical | ||
+ | \chemical[FIVE,FRONT,BB125,+SB3,-SB4,Z4][O] | ||
+ | \chemical[FIVE,FRONT,+R1235,+RZ1235][H,H,\SR{HOH_2C},OH] | ||
+ | \chemical[FIVE,FRONT,-R1235,-RZ1235][H,OH,H,H] | ||
+ | \stopchemical | ||
+ | </context> | ||
+ | |||
+ | [[Image:Chemistry_example1.png]] | ||
+ | |||
+ | <context source="yes"> | ||
+ | \setupchemical[width=fit] | ||
+ | |||
+ | \startchemical | ||
+ | \chemical[SIX,B,C,MOV2,B,C,R234,RZ234,MOV5,MOV6,B,C,R561,RZ561] | ||
+ | [R,R,R,R,R,R] | ||
+ | \stopchemical | ||
+ | </context> | ||
+ | |||
+ | [[Image:chemistry_example2.png]] | ||
+ | |||
+ | To draw this structure horizontally: | ||
+ | <context source="yes"> | ||
+ | \setupchemical[width=fit] | ||
+ | |||
+ | \def\RotR{\rotate[rotation=270]{\ix R}} | ||
+ | |||
+ | \rotate[rotation=90]{ | ||
+ | \startchemical | ||
+ | \chemical[SIX,B,C,MOV2,B,C,R234,RZ234,MOV5,MOV6,B,C,R561,RZ561] | ||
+ | [\RotR,\RotR,\RotR,\RotR,\RotR,\RotR] | ||
+ | \stopchemical | ||
+ | } | ||
+ | </context> | ||
+ | [[Image:chemistry_example3.png]] | ||
− | <context> | + | An example of an amino acid: Histidine (Ace-His-Nme). |
− | \ | + | The rest of the amino acids are shown in [http://tt4sci.wordpress.com/2009/08/05/drawing-organic-molecules-in-latex-ii-amino-acids/ TT4Sci] |
− | \ | + | <context source="yes"> |
− | + | \definechemical[radical] | |
− | \ | + | {\chemical[SAVE,ONE,SB768,Z068][C,H,H] |
+ | \chemical[MOV7,ONE,Z0][C] | ||
+ | \chemical[MOV7,FIVE,ROT4,SB12345,EB42,Z1235,SR125,RZ125,RESTORE][N,C,N,C,H,H,H]} | ||
+ | \startchemical | ||
+ | [scale=big,size=big,left=2600,right=4200,bottom=2800,top=4500] | ||
+ | \bottext{Histidine} | ||
+ | \chemical[SIX,SB23] | ||
+ | \chemical[PB:Z1,SAVE,radical,RESTORE,PE] | ||
+ | \chemical[PB:Z2,ONE,SB37,Z03,PE][\SL{C^{\alpha}},H^{\alpha 1}] | ||
+ | \chemical[PB:Z3,SIX,Z5,SB4,Z4,PE][N,H] | ||
+ | {\color{blue} | ||
+ | \chemical[PB:Z4,SIX,Z2,SB2,DB1,Z31,PE][C{\text{\tiny{-1}}},\SR{H_3C},O{\text{\tiny{-1}}}]} | ||
+ | \chemical[SIX,MOV1,SB23] | ||
+ | \chemical[PB:Z3,SIX,Z5,DB4,Z4,PE][C,O] | ||
+ | {\color{red} | ||
+ | \chemical[PB:Z2,SIX,Z4,SB34,Z53,PE][N{\text{\tiny{+1}}},H{\text{\tiny{+1}}},\SL{CH_3}]} | ||
+ | \stopchemical | ||
</context> | </context> | ||
− | + | [[Image:histidine.png]] | |
+ | |||
+ | |||
+ | == Simple Formulae in Text Mode == | ||
An alternative to using the chemistry module or mathmode for typesetting simple formulae are the three ConTeXt commands {{cmd|high}}, {{cmd|low}} and {{cmd|lohi}}. This might be useful if you want to typset the formula with the same font as the surrounding text (in titles or slanted fonts, although that might not be desired in all situations). | An alternative to using the chemistry module or mathmode for typesetting simple formulae are the three ConTeXt commands {{cmd|high}}, {{cmd|low}} and {{cmd|lohi}}. This might be useful if you want to typset the formula with the same font as the surrounding text (in titles or slanted fonts, although that might not be desired in all situations). | ||
− | + | <context source="yes"> | |
− | |||
− | |||
− | |||
− | |||
− | <context> | ||
\ss H\low{2}O also consists of H\high{+} and OH\high{--}.\crlf | \ss H\low{2}O also consists of H\high{+} and OH\high{--}.\crlf | ||
There are two main carbon isotopes: \lohi{6}{12}C and \lohi[left]{6}{13}C. | There are two main carbon isotopes: \lohi{6}{12}C and \lohi[left]{6}{13}C. | ||
Line 141: | Line 185: | ||
</context> | </context> | ||
− | The main difference with the | + | The main difference with the built-in chemistry is that the <code>\molecule</code> from this example uses the same font as the one in surrounding text, while the official module always uses the (mostly roman) math font (which is probably the proper way if you’re writing dozens of formulas). |
− | Alternatively | + | Alternatively you can setup the <code>style</code> parameter used for chemical formulas manually: |
<texcode> | <texcode> | ||
\setupchemical[style=\bs] | \setupchemical[style=\bs] | ||
</texcode> | </texcode> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:Sciences]] | [[Category:Sciences]] |
Revision as of 19:31, 30 September 2023
< Math, XML, Graphics, MetaPost >
ConTeXt always came with extensive chemistry support including drawing of chemical structures and the typesetting of reactions.
In MkII this was called PPCHTeX, which works also with plain TeX and LaTeX.
There doesn’t seem to be any current documentation (all previous links were long dead), while chemistry support is still part of the distribution, but seems broken.
- PPCHTeX FAQ (1997)
- TUG Boat article on PPCHTeX by Hans Hagen and A.F. Otten 1996
Some other links about chemistry in ConTeXt:
- Chromatograms macro
- ChemML (screen), MathML extension for chemistry
Using \chemical
This is the built-in version of the previous chemic
module.
\chemical{HSO_4^{-}}
You can also typeset chemical reactions:
\startformula \chemical{2H_2,+,O_2,->,2H_2O} \stopformula
Chemical structures
(The “good” images are old; the broken ones are the result of the current code.)
\startchemical \chemical[FIVE,FRONT,BB125,+SB3,-SB4,Z4][O] \chemical[FIVE,FRONT,+R1235,+RZ1235][H,H,\SR{HOH_2C},OH] \chemical[FIVE,FRONT,-R1235,-RZ1235][H,OH,H,H] \stopchemical
\setupchemical[width=fit] \startchemical \chemical[SIX,B,C,MOV2,B,C,R234,RZ234,MOV5,MOV6,B,C,R561,RZ561] [R,R,R,R,R,R] \stopchemical
To draw this structure horizontally:
\setupchemical[width=fit] \def\RotR{\rotate[rotation=270]{\ix R}} \rotate[rotation=90]{ \startchemical \chemical[SIX,B,C,MOV2,B,C,R234,RZ234,MOV5,MOV6,B,C,R561,RZ561] [\RotR,\RotR,\RotR,\RotR,\RotR,\RotR] \stopchemical }
An example of an amino acid: Histidine (Ace-His-Nme). The rest of the amino acids are shown in TT4Sci
\definechemical[radical] {\chemical[SAVE,ONE,SB768,Z068][C,H,H] \chemical[MOV7,ONE,Z0][C] \chemical[MOV7,FIVE,ROT4,SB12345,EB42,Z1235,SR125,RZ125,RESTORE][N,C,N,C,H,H,H]} \startchemical [scale=big,size=big,left=2600,right=4200,bottom=2800,top=4500] \bottext{Histidine} \chemical[SIX,SB23] \chemical[PB:Z1,SAVE,radical,RESTORE,PE] \chemical[PB:Z2,ONE,SB37,Z03,PE][\SL{C^{\alpha}},H^{\alpha 1}] \chemical[PB:Z3,SIX,Z5,SB4,Z4,PE][N,H] {\color{blue} \chemical[PB:Z4,SIX,Z2,SB2,DB1,Z31,PE][C{\text{\tiny{-1}}},\SR{H_3C},O{\text{\tiny{-1}}}]} \chemical[SIX,MOV1,SB23] \chemical[PB:Z3,SIX,Z5,DB4,Z4,PE][C,O] {\color{red} \chemical[PB:Z2,SIX,Z4,SB34,Z53,PE][N{\text{\tiny{+1}}},H{\text{\tiny{+1}}},\SL{CH_3}]} \stopchemical
Simple Formulae in Text Mode
An alternative to using the chemistry module or mathmode for typesetting simple formulae are the three ConTeXt commands \high, \low and \lohi. This might be useful if you want to typset the formula with the same font as the surrounding text (in titles or slanted fonts, although that might not be desired in all situations).
\ss H\low{2}O also consists of H\high{+} and OH\high{--}.\crlf There are two main carbon isotopes: \lohi{6}{12}C and \lohi[left]{6}{13}C.
Taco's macros implement this approach [1]:
\newbox\chemlowbox \def\chemlow#1% {\setbox\chemlowbox\hbox{{\switchtobodyfont[small]#1}}} \def\chemhigh#1% {\ifvoid\chemlowbox \high{{\switchtobodyfont[small]#1}}% \else \/\lohi{\box\chemlowbox}{{\switchtobodyfont[small]#1}}\fi } \def\finishchem% {\ifvoid\chemlowbox \else \iffluor \fluorfalse \kern-.1em \fi\low{\box\chemlowbox}\fi} % for "kerning" after F \newif\iffluor \unexpanded\def\molecule% {\bgroup \catcode`\_=\active \uccode`\~=`\_ \uppercase{\let~\chemlow}% \catcode`\^=\active \uccode`\~=`\^ \uppercase{\let~\chemhigh}% \dostepwiserecurse {65}{90}{1} {\catcode \recurselevel = \active \uccode`\~=\recurselevel \uppercase{\edef~{\noexpand\finishchem \rawcharacter{\recurselevel}}}}% \uccode `\~=`\F \uppercase{\def~{\finishchem F\fluortrue}}% \catcode`\-=\active \uccode`\~=`\- \uppercase{\def~{--}}% \loggingall \domolecule }% \def\domolecule#1% {\expandafter\scantokens\expandafter {\detokenize{#1\finishchem}}\egroup}
\bs Bold slanted molecules: \molecule{HSO_4^-} and \molecule{SF_6}
The main difference with the built-in chemistry is that the \molecule
from this example uses the same font as the one in surrounding text, while the official module always uses the (mostly roman) math font (which is probably the proper way if you’re writing dozens of formulas).
Alternatively you can setup the style
parameter used for chemical formulas manually:
\setupchemical[style=\bs]