Proposal: add parameter checks

edit
-12:26, 6 March 2023 (UTC)
  • Orange clock Proposal on hold
Waiting for Template talk:Chem2 § Must preserve minus signs in subscripts to be finished -DePiep (talk) 09:24, 28 February 2023 (UTC)
See talk Template talk:Chem2 § Proposal: add parameter checks
Prepared in {{Chem2/sandbox2}}. -DePiep (talk) 09:24, 28 February 2023 (UTC)
Tests (also by Preview)
  • Example, by /sandbox2:
{{chem2/sandbox2|foo=H2O|1=A_{x}H_{1-x}}}
AxH_{1x}
to check (negative check expected): "A{B{Q}" -- error all right, but for other reason (unbalanced, & end-bracket). Effect is OK.
A{B{Q}
A{B
pattern: ><
-DePiep (talk) 05:49, 1 March 2023 (UTC)

subscript hyphen (Feb 2023)

edit
-DePiep (talk) 19:47, 27 February 2023 (UTC)
{{Chem2/sandbox}} initially: now has Module:Chem2/sandbox (from live source code).
Template styles: Module:Chem2/styles.css (Chem2/sandbox/styles.css diff)
Bug reproduction:
(A) code: {{chem2|A_{''x''}H_{1-''x''}|}}AxH1−x (current live result)
Hardcoded result from expanded live template (19:36, 27 February 2023): AxH1-x
(B, {chem2/sandbox} live): AxH1−x
Characters involved:
(H) U+002D - HYPHEN-MINUSAxH1−x
(M) U+2212 MINUS SIGN (&minus;) → AxM1−x
  • Done /sandbox: L239, % not \ (tot test; errors from live code?)
L250, L251
  • what's with \s, \-
  • whatwhen entering &minus; ?

tests

edit
tst setup: {{chem2|1=A^{1-''y''}B_{1-''x''}H|2=}} (H, M)
test minus M>−< vs, hyphen H>-<:
live, in:H>-<: A1−yB1−xH2−
/sbx, in:H>-<: A1−yB1−xH2−
live, in:M>−<: A1−yB1−xM2−
/sbx, in:M>−<: A1−yB1−xM2−
All sup/sub returns (8) are U+002d hyphen Red XN
All (4) 2- charge returnsa are U+2212 Green tickY
-DePiep (talk) 20:36, 27 February 2023 (UTC)
  • Entering &minus;
live, in:>&minus;<: A1−yB1−xM2− -- incidentally, returns as expected ..
/sbx, in:>&minus;<: A1−yB1−xM2−


Entering &beta;
live, in:>&beta;<: AyBxM(2β)
/sbx, in:>&beta;<: AyBxM(2β)


  • lol from doc: use \s, \-
live, in:H>\-<: A1\−yB1\−xH(2-)
/sbx, in:H>\-<: A1\−yB1\−xH(2-)
live, in:M>\s<: A1\syB1\sxM(2−)
/sbx, in:M>\s<: A1\syB1\sxM(2−)

talk: Must preserve minus signs in subscripts

edit

talk: debugging & tests

edit
see /testcases at § subscript hyphen (Feb 2023)
  • More research:
Test string to be (rule: when final-} in formula input, end pipe }|}} is required):
(A) {{chem2|A_{''x''}H_{1-''x''}|}}AxH1−x
Characters involved:
(H) U+002D - HYPHEN-MINUSAxH1−x
(M) U+2212 MINUS SIGN (&minus;) → AxM1−x
re MSGJ: by reading the code, none of the lines 277 (good replacement), 288 (good replacement), 294 (hyphen only) seem to make the wrong replacement.
-DePiep (talk) 19:02, 27 February 2023 (UTC)
code review:
  • L239 (current live): if not x then x = f:match('^\^{[^}]*}', i); t = T_CARET; end -- ^{...}
^\^{[^}]*} ? expected ^^{[^}]*} (Lua pattern not regex; module preview reports Error: [239:42] invalid escape sequence near '\^'. (Errors from this, missed? hidden?) edited in sandboxDePiep (talk) 19:57, 27 February 2023 (UTC)
  • test code to be:
{{chem2|1=A^{1-''y''}B_{1-''x''}H(2-)}}
Three minus/hyphen signs input, expected result: all three Minus (M). Current live test:
Live M>−<: A1−yB1−xM2−
returns H, H, M. sup/sub issue. -DePiep (talk) 20:43, 27 February 2023 (UTC)

talk: Bug report

edit
(H) U+002D - HYPHEN-MINUS
(M) U+2212 MINUS SIGN (&minus;)

From original report (OP); B2-B (demo/test inline) and (4-) (charge) added as extra testcases (situations 1–4 now).

In the tests here, B2-B is added and is not targeted (no changes claimed nor expected; ignored in conclsions)
{{chem2|1=HA^{''1-x''}B2-B_{3-''x''}(4-)}}
{{chem2|1=HA^{1-x}B2-B_{3-x}(4-)}}
in H>-<: HA1−xB2B3−x4− -- Red XN MINUS expected
in M>−<: MA1−xB2B3−x4− -- Red XN MINUS expected
(A) Original complaint
MINUS (−) not kept when in (topically correct) sub/supscripted formula is entered; shows hyphen (-) instead.
Cause: {{Chem2}} early replaces NDASH and MINUS with HYPHEN, to be treatred similar (see code L250, 251).
When as charge, the hyphen is changed into MINUS all right, but no such replacement in the supsubscripts.
Proposed solution: in T_CARET and T_UNDERSCORE change any hyphen (from early replacement) into MINUS [1].
live, in:H>-<: HA1−xB2B3−x4−
/sbx, in:H>-<: HA1−xB2B3−x4−
live, in:M>−<: MA1−xB2B3−x4−
/sbx, in:M>−<: MA1−xB2B3−x4−
Showing: current live version returns HYPHEN in subsuptexts; correct MINUS inline and in the "(2-)" charge). All irrespective of input character.
(B) Handling of HTML entities (&minus;)
When entering like &minus; (for character MINUS), it is not handled as the character.
Incidentally, this preserves the MINUS character as asked for in the OP (undocumented 'solution', hack).
However, not documented and would give different results between input &minus; vs. . Also, other codes entries could be affected.
Proposed solution: add early decoding mw.text.decode() [2].
  • Entering HTML Entity &minus;
live, in:>&minus;<: EA1−xB2B3−x4− -- incidentally, returns as expected
/sbx, in:>&minus;<: EA1−xB2B3−x4−
Entering &beta;
live, in:>&beta;<: EA1βxB2βBx(4β) -- as expected :/sbx, in:>&beta;<: EA1βxB2βBx(4β) -- same result (returns decoded &beta; to UA: decoded later)
(C) Bad code
L239: if not x then x = f:match('^\^{[^}]*}', i); t = T_CARET; end   -- ^{...}
Parser gives error: '^\^{[^}]*}' has incorrect "\" (note: expected is Lua pattern not Regex). Saves with error (-warning).
No error effects (in pages) known, nor seen in testpage.
From Lua documentation mw:Lua manual: "At other positions, '^' and '$' have no special meaning and represent themselves". That is: the second caret should represent the input character (to indicate superscript).
Proposed solution: Remove the slash: [3]. No effects in tests seen.
Testcases: see superscripts (CARET input) throughout.
Late note 29 March 2023, from mw:Lua_reference_manual § string: the code \^ is not required to escape the literal character in Lua code (as opposed to e.g., \"). -DePiep (talk) 05:04, 29 March 2023 (UTC)
(D) Escape codes limitations
The /documentation mentions \s, \- for input "single bond" (topical term) and "hyphen" when used in line. However, they don't work as expected when in sup/subscripted text (as in OP).
Proposed solution: the escape codes are not developed to function more widely. Instead, documentation to be improved (mention limitations).
  • From doc: use \s, \- slashed escape code (note: "B2-B" as expected)
live, in:>\s<: SsA1\sxB2−B3\sx(4−)
/sbx, in:>\s<: SsA1\sxB2−B3\sx(4−)
live, in:>\-<: ShA1\−B2-B3\−x(4-)
/sbx, in:>\-<: ShA1\−B2-B3\−x(4-)
-DePiep (talk) 00:06, 28 February 2023 (UTC)

(T) more tests: bare hyphen: input without no preceding number etc in text element (eg, charge "(-)"):

HA−xBx
HA−xBx
MA−xBx
MA−xBx
EA−xBx -- &minus;
EA−xBx
Adjustmensts, refining testcases, spell uc MINUS etc, create 4 numberred testsituations DePiep 05:41, 28 February 2023
For more bare "-" input tests (not "2-" &tc;), see /testcases (UTC), -DePiep (talk) 06:36, 28 February 2023 (UTC)

(T2) added in /testcases

edit

(T2) more bare tests FWIW: rm italice, (), use \s \-

live
HA−xBx
MA−xB−x
SsA\sx−B\sx
ShA\−x-B\−x-
SsA\sx−B\sx(−)
ShA\−x-B\−x(-)
/sbox
HA−xBx
MA−xB−x
SsA\sx−B\sx
ShA\−x-B\−x-
SsA\sx−B\sx(−)
ShA\−x-B\−x(-)

Proposal (code edit)

edit
From the Report above, I propose to oconsider: edit all code from module:Chem2/sandbox into module:Chem2 (diff).
Note: the (B) may change behaviour (instances relying on undocumented effects). Conservation action needed? OTOH, when entering &minus;, what else should be expected than MINUS?
Also, I'd like to have chemicist eyes taking a look.
More tests at the Template:Chem2/testcases.
-DePiep (talk) 00:06, 28 February 2023 (UTC)
ping|Christian75|Mikhail Ryazanov|MSGJ demos and tests stable & ok now, please take a look. -DePiep (talk) 06:41, 28 February 2023 (UTC)

doc input-code table (Feb 2023)

edit

Formula punctuation (Chem2 live)

edit
Symbol Gives Example Output
\s {{chem2|CH3\sCH3}} CH3−CH3
\d = {{chem2|CH2\dCH2}} CH2=CH2
\t {{chem2|HC\tCH}} HC≡CH
\q {{chem2|[Cl4Re\qReCl4](2−)|}} [Cl4Re≣ReCl4]2−
\- - {{chem2|A\-B}} A-B
\\ \ {{chem2|C\\D}} C\D
\h η {{chem2|\h}} η
\h{1} η1- {{chem2|\h{1} |}} η1-
\m{1} μ1- {{chem2|\m{1} |}} μ1-
-> {{chem2|2H2 + O2 -> 2H2O}} 2H2 + O2 → 2H2O
<-> {{chem2|K<->L}} K ⇌ L
* · {{chem2|CoCl2*6H2O}} CoCl2·6H2O
\* * {{chem2|Cp\*2Fe}} Cp*2Fe
_{} subscript {{chem2|CH4_{(g)} |}} * CH4(g)
^{} superscript {{chem2|^{13}CH4}} 13CH4
&nabla; {{chem2|&nabla;}}
( ) ( ) {{chem2|R\sCH(OH)CN}} R−CH(OH)CN

^ If the last character of the template input is }, MediaWiki will confuse it with the end-of-template tag }}. Adding a space between the two resolves this ambiguity. Other options include instead inserting {{null}} or <nowiki/>.

Formula punctuation (Chem2/sandbox)

edit
Symbol Gives Example Output
\s {{chem2/sandbox|CH3\sCH3}} CH3−CH3
\d = {{chem2/sandbox|CH2\dCH2}} CH2=CH2
\t {{chem2/sandbox|HC\tCH}} HC≡CH
\q {{chem2/sandbox|[Cl4Re\qReCl4](2−)}} [Cl4Re≣ReCl4]2−
\- - {{chem2/sandbox|A\-B}} A-B
\\ \ {{chem2/sandbox|C\\D}} C\D
\h η {{chem2/sandbox|\h}} η
\h{1} η1- {{chem2/sandbox|\h{1} |}} η1-
\m{1} μ1- {{chem2/sandbox|\m{1} |}} μ1-
-> {{chem2/sandbox|2H2 + O2 -> 2H2O}} 2H2 + O2 → 2H2O
<-> {{chem2/sandbox|K<->L}} K ⇌ L
* · {{chem2/sandbox|CoCl2*6H2O}} CoCl2·6H2O
\* * {{chem2/sandbox|Cp\*2Fe}} Cp*2Fe
_{} subscript {{chem2/sandbox|CH4_{(g)} |}} * CH4(g)
^{} superscript {{chem2/sandbox|^{13}CH4}} 13CH4
&nabla; {{chem2/sandbox|&nabla;}}
( ) ( ) {{chem2/sandbox|R\sCH(OH)CN}} R−CH(OH)CN

^ If the last character of the template input is }, MediaWiki will confuse it with the end-of-template tag }}. Adding a space between the two resolves this ambiguity. Other options include instead inserting {{null}} or <nowiki/>.

from Doc

edit
{{Chems}}
Symbol Gives Example Output
\s {{chem2|CH3\sCH3}} CH3−CH3
\d = {{chem2|CH2\dCH2}} CH2=CH2
\t {{chem2|HC\tCH}} HC≡CH
\q {{chem2|[Cl4Re\qReCl4](2−)|}} [Cl4Re≣ReCl4]2−
\- -
\\ \
\h η
\h{1} η1-
\m{1} μ1-
-> {{chem2|2H2 + O2 -> 2H2O}} 2H2 + O2 → 2H2O
<->
* · {{chem2|CoCl2*6H2O}} CoCl2·6H2O
\* * {{chem2|Cp\*2Fe}} Cp*2Fe
_{} {{chem2|CH4_{(g)}|}} * CH4(g)
^{} {{chem2|^{13}CH4}} 13CH4
&nabla; {{chem2|&nabla;}}

^ If the last character of the template input is }, MediaWiki will confuse it with the end-of-template tag }}. Adding | between the two resolves this ambiguity. Other options include instead inserting (space), {{null}} or <nowiki/>.

Formulas (without charge) are just written. Eg.:

  • {{chem2|CH3(CH2)5CH3}} gives CH3(CH2)5CH3
  • {{chem2|Fe3S2(CO)9}} gives Fe3S2(CO)9
  • {{chem2|C_{''n''}H_{2''n''+2}|}} gives CnH2n+2

Charges are written inside parenthesis, otherwise its treated as +1 or −1, e.g.:

  • {{chem2|Na+}} gives Na+
  • {{chem2|O2-}} gives O2 but can be written as {{chem2|O2(-)}} too.
  • {{chem2|SO4(2-)}} gives SO2−4
  • {{chem2|S19(2+)}} gives S2+19

Chemical equations can be written too. E.g.:

  • {{chem2|2 S + 3 O2 + 2 H2O -> 2 H2SO4}} gives 2 S + 3 O2 + 2 H2O → 2 H2SO4
  • {{chem2|2S + 3O2 + 2H2O -> 2H2SO4}} gives 2S + 3O2 + 2H2O → 2H2SO4

The arrows can be written as -> or just . All characters (and unicode markup) are valid input except \, = (Mediawiki use it), _ and - (endash etc.)

  • {{chem2|2 H2_{(g)} + O2_{(g)} -> 2H2O_{(g)}|}} gives 2 H2(g) + O2(g) → 2H2O(g)
  • {{chem2|NH2RCHCO2H <-> NH3+RCHCO2-}} gives NH2RCHCO2H ⇌ NH+3RCHCO2

Hapticity and mu:

  • {{chem2|W(CO)3(PiPr3)2(\h{2}\-H2)}} gives W(CO)3(PiPr3)22--H2)
  • {{chem2|auto=yes|W(CO)3(PiPr3)2(\h{2}\-H2)}} gives W(CO)3(PiPr3)2(η2--H2)

Links: Use link=<wiki page> or ordinary wiki link ([[ and ]]), e.g.:

  • {{chem2|link=Iron(III) chloride|FeCl3}} gives FeCl3
  • {{chem2|3[[hydrogen|H2]] + 2[[nitrogen|N2]] <-> 2[[ammonia|NH3]]}} gives 3H2 + 2N2 ⇌ 2NH3

Auto links: Automatic link elements: Use auto=<something> (e.g. yes):

  • {{chem2|auto=yes|CH3CH2CH3CBrFCIClCH3}} gives CH3CH2CH3CBrFCIClCH3

All /sandbox

edit
{{Chems/sandbox}}
Symbol Gives Example Output
\s {{chem2/sandbox|CH3\sCH3}} CH3−CH3
\d = {{chem2/sandbox|CH2\dCH2}} CH2=CH2
\t {{chem2/sandbox|HC\tCH}} HC≡CH
\q {{chem2/sandbox|[Cl4Re\qReCl4](2−)|}} [Cl4Re≣ReCl4]2−
\- -
\\ \
\h η
\h{1} η1-
\m{1} μ1-
-> {{chem2/sandbox|2H2 + O2 -> 2H2O}} 2H2 + O2 → 2H2O
<->
* · {{chem2/sandbox|CoCl2*6H2O}} CoCl2·6H2O
\* * {{chem2/sandbox|Cp\*2Fe}} Cp*2Fe
_{} {{chem2/sandbox|CH4_{(g)}|}} * CH4(g)
^{} {{chem2/sandbox|^{13}CH4}} 13CH4
&nabla; {{chem2/sandbox|&nabla;}}

^ If the last character of the template input is }, MediaWiki will confuse it with the end-of-template tag }}. Adding | between the two resolves this ambiguity. Other options include instead inserting (space), {{null}} or <nowiki/>.

/doc

edit
using /sandbox

/doc Formula punctuation

edit
Symbol Gives Example Output
\s {{chem2|CH3\sCH3}} CH3−CH3
\d = {{chem2|CH2\dCH2}} CH2=CH2
\t {{chem2|HC\tCH}} HC≡CH
\q {{chem2|[Cl4Re\qReCl4](2−)}} [Cl4Re≣ReCl4]2−
\- - {{chem2|A\-B}} A-B
\\ \ {{chem2|C\\D}} C\D
\h η {{chem2|\h}} η
\h{1} η1- {{chem2|\h{1} |}} η1-
\m{1} μ1- {{chem2|\m{1} |}} μ1-
-> {{chem2|2H2 + O2 -> 2H2O}} 2H2 + O2 → 2H2O
<-> {{chem2|K<->L}} K ⇌ L
* · {{chem2|CoCl2*6H2O}} CoCl2·6H2O
\* * {{chem2|Cp\*2Fe}} Cp*2Fe
_{} subscript {{chem2|CH4_{(g)} |}} * CH4(g)
^{} superscript {{chem2|^{13}CH4}} 13CH4
&nabla; {{chem2|&nabla;}}
( ) ( ) {{chem2|R\sCH(OH)CN}} R−CH(OH)CN

^ If the last character of the template input is }, MediaWiki will confuse it with the end-of-template tag }}. Adding a space between the two resolves this ambiguity. Other options include instead inserting {{null}} or <nowiki/>.

/doc Formulas, charges, equations

edit

Formulas (without charge) are just written:

  • {{chem2|CH3(CH2)5CH3}}CH3(CH2)5CH3
  • {{chem2|Fe3S2(CO)9}}Fe3S2(CO)9
  • {{chem2|C_{''n''}H_{2''n''+2}|}}CnH2n+2

Charges are written inside parentheses:

  • {{chem2|SO4(2-)}}SO2−4
  • {{chem2|S19(2+)}}S2+19

Charges +1 and −1 can be written plain:

  • {{chem2|Na+}}Na+
  • {{chem2|O2-}}O2
equals {{chem2|O2(-)}}

Chemical equations:

  • {{chem2|2 S + 3 O2 + 2 H2O -> 2 H2SO4}}2 S + 3 O2 + 2 H2O → 2 H2SO4
  • {{chem2|2S + 3O2 + 2H2O -> 2H2SO4}}2S + 3O2 + 2H2O → 2H2SO4

The arrows can be written as -> or just . All characters (and unicode markup) are valid input except \, = (Mediawiki use it), _ and - (endash etc.)

  • {{chem2|2 H2_{(g)} + O2_{(g)} -> 2H2O_{(g)}|}}2 H2(g) + O2(g) → 2H2O(g)
  • {{chem2|NH2RCHCO2H <-> NH3+RCHCO2-}}NH2RCHCO2H ⇌ NH+3RCHCO2

Hapticity and mu:

  • {{chem2|W(CO)3(PiPr3)2(\h{2}H2)}}W(CO)3(PiPr3)22-H2)
  • {{chem2|auto=yes|W(CO)3(PiPr3)2(\h{2}H2)}}W(CO)3(PiPr3)2(η2-H2)
edit
edit

Link the whole formula with |link=<wiki pagename>:

  • {{chem2|FeCl3|link=Iron(III) chloride}}FeCl3

Or use wikilink brackets in input like [[ammonia|NH3]]:

  • {{chem2|3[[hydrogen|H2]] + 2[[nitrogen|N2]] <-> 2[[ammonia|NH3]]}}3H2 + 2N2 ⇌ 2NH3
edit
Use |auto=yes to link each element symbol once, as well as some others such as Ph
  • {{chem2|CH3CH2CH3CBrFCIClCH3|auto=yes}}CH3CH2CH3CBrFCIClCH3
edit

Some common groups are recognized and linked if you wikilink them using [[ ]]

  • {{chem2|R\-[[COOH]]}}R-COOH
  • {{chem2|[[CH3]]C[[R]]2[[I]]}}CH3CR2I
  • In particular H2O links to water of crystallization in {{chem2|CuSO4 * 5 [[H2O]]}}CuSO4 · 5 H2O, because a link to water is generally unnecessary.

You can link to any article even if chem2 is unaware of it:!-- same as |link=... then -->

To change the default link:

  • {{chem2|[[water|H2O]]}}H2O

/doc All recognised symbols and codes

edit
All link targets recognised by {{chem2}} (elements, general codes, functional groups)

Elements and element-style symbols

These may be automatically linked or used as if they were redirects.

Symbol Link target
Ac Actinium
Ag Silver
Al Aluminium
Am Americium
Ar Argon
As Arsenic
At Astatine
Au Gold
B Boron
Ba Barium
Be Beryllium
Bh Bohrium
Bi Bismuth
Bk Berkelium
Bn Benzyl group
Br Bromine
Bz Benzoyl group
C Carbon
Ca Calcium
Cd Cadmium
Ce Cerium
Cf Californium
Cl Chlorine
Cm Curium
Co Cobalt
Cp Copernicium
Cr Chromium
Cs Caesium
Cu Copper
D Deuterium
Db Dubnium
Ds Darmstadtium
Dy Dysprosium
Er Erbium
Es Einsteinium
Et Ethyl group
Eu Europium
F Fluorine
Fe Iron
Fl Flerovium
Fm Fermium
Fr Francium
Ga Gallium
Gd Gadolinium
Ge Germanium
H Hydrogen
He Helium
Hf Hafnium
Hg Mercury (element)
Ho Holmium
Hs Hassium
I Iodine
In Indium
Ir Iridium
K Potassium
Kr Krypton
La Lanthanum
Li Lithium
Ln Lanthanide
Lr Lawrencium
Lu Lutetium
Lv Livermorium
Mc Moscovium
Md Mendelevium
Mg Magnesium
Mn Manganese
Mo Molybdenum
Mt Meitnerium
N Nitrogen
Na Sodium
Nb Niobium
Nd Neodymium
Ne Neon
Nh Nihonium
Ni Nickel
No Nobelium
Np Neptunium
Nu Nucleophile
O Oxygen
Og Oganesson
Os Osmium
P Phosphorus
Pa Protactinium
Pb Lead
Pd Palladium
Ph Phenyl group
Pm Promethium
Po Polonium
Pr Praseodymium
Pt Platinum
Pu Plutonium
R Substituent
Ra Radium
Rb Rubidium
Re Rhenium
Rf Rutherfordium
Rg Roentgenium
Rh Rhodium
Rn Radon
Ru Ruthenium
S Sulfur
Sb Antimony
Sc Scandium
Se Selenium
Sg Seaborgium
Si Silicon
Sm Samarium
Sn Tin
Sr Strontium
T Tritium
Ta Tantalum
Tb Terbium
Tc Technetium
Te Tellurium
Tf Trifluoromethylsulfonyl group
Th Thorium
Ti Titanium
Tl Thallium
Tm Thulium
Ts Tennessine
U Uranium
V Vanadium
W Tungsten
X Halogen
Xe Xenon
Y Yttrium
Yb Ytterbium
Zn Zinc
Zr Zirconium

Groups

These must be linked manually; they work as if they were redirects.

Symbol Link target
CH3 Methyl group
CO3 Carbonate
COOH Carboxyl group
ClO Hypochlorite
ClO2 Chlorite
ClO3 Chlorate
ClO4 Perchlorate
H2O Water of crystallization
H3O Hydronium
NH2 Amine group
NH4 Ammonium
NO3 Nitrate
PO3 Phosphite
PO4 Phosphate
SH Thiol group
SO3 Sulfite
SO4 Sulfate
SeH Selenol group

/doc Examples

edit
  • {{chem2|[Cl4Re\qReCl4](2−)|}} gives [Cl4Re≣ReCl4]2−
  • {{chem2|[Cl4Re\qReCl4](2-)|}} gives [Cl4Re≣ReCl4]2−
  • {{chem2|NH2RCHCO2H <-> NH3+RCHCO2−}} gives NH2RCHCO2H ⇌ NH+3RCHCO2

  • {{chem2|\\hallo}} gives \hallo
  • {{chem2|H3CC\tCH <-> H2C\dC\dCH2}} gives H3CC≡CH ⇌ H2C=C=CH2
  • {{chem2|4 NH3 + 5 O2 -> 4 NO + 6 H2O}} gives 4 NH3 + 5 O2 → 4 NO + 6 H2O

  • "H2O &#8594; H2O" is H2O → H2O
  • "H2O_{(l)} -> H2O_{(g)}" is H2O(l) → H2O(g)

  • "4 NH3 + 5 O2 → 4 NO + 6 H2O" is 4 NH3 + 5 O2 → 4 NO + 6 H2O
  • " 4 NH3 + 5 O2 → 4 NO + 6 H2O" is 4 NH3 + 5 O2 → 4 NO + 6 H2O
  • " 4NH3 + 5O2 → 4NO + 6H2O" is 4NH3 + 5O2 → 4NO + 6H2O
  • " 2Mn2(+)" is 2Mn+2
  • " 2Mn2(+) + 3H2O" is 2Mn+2 + 3H2O
  • Mn– is Mn

  • Mn2(2-) is Mn2−2
  • Mn2☃+ is Mn2+, Mn2(2–) is Mn2−2, Mn2(2☃–) is Mn2(2)
  • Mn2(+) is Mn+2
  • Mn2+ is Mn+2
  • Mn2(-) is Mn2
  • Mn2- is Mn2

  • {{chem2|C_{''n''}H_{2''n'' + 2}|}} gives CnH2n + 2
  • {{chem2|C_{abc}|}} gives Cabc
  • (chem gives C
    n
    H
    2n + 2
    )
  • {{chem2|CoCl2*1.5H2O}} gives CoCl2·1.5H2O
  • Mn22– is Mn22
  • Cu2C2*H2O is Cu2C2·H2O

Special
  • {{chem2|[Me2Al(\m{2}Me)]2}} gives [Me2Al(μ2-Me)]2
  • {{chem2|^{13}CO2}} gives 13CO2
  • {{chem2|auto=yes|^{13}CO2}} gives 13CO2
  • {{chem2|\h{5}(C5H5)2TiCl2}} gives η5-(C5H5)2TiCl2
  • {{chem2|\h{5}\s(C5H5)}} gives η5-−(C5H5)
  • {{chem2|CH2\dCH2\sCH2\sC\tCH\qMn}} is CH2=CH2−CH2−C≡CH≣Mn

  • {{chem2|RC(OR’)3}} gives RC(OR’)3
  • {{chem2|C\\C}} gives C\C
  • {{chem2|C2*NH3}} gives C2·NH3
  • {{chem2|C2*2NH3}} gives C2·2NH3
  • {{chem2|C1.2H3.5}} gives C1.2H3.5

  • {{chem2|12|6|C}} is 12
  • {{chem2|12|C}} is 12
  • {{chem2|CH3\i{13}CH2CH3}} is CH3CH2CH3
  • {{chem2|\{\{abc\}\}}} is AbC
  • C2(μ\-C) is C2(μ-C)

  • SO4(2-) is SO2−4
  • 2Mn2(2+) is 2Mn2+2
  • CH3-CH2-OH is CH3CH2OH
  • [ZnCl4]- is [ZnCl4]
  • [ZnCl4](2-) is [ZnCl4]2−
  • AUTO: ((H2O)5{CoCl2})2 is ((H2O)5{CoCl2})2
  • Si(OH)4 is Si(OH)4

  • AUTO: Cu2C2*H2O is Cu2C2·H2O
  • Cu2C2*2H2O is Cu2C2·2H2O
  • CuSO*2H2O is CuSO·2H2O
  • CuSO4*15H2O is CuSO4·15H2O
  • CuSO4(H2O)5 is CuSO4(H2O)5
  • H+ + OH- → H2O is H+ + OH → H2O
  • H → O is H → O

  • ZxPo4 is ZxPo4     Unknown element.
  • ((Na)Cl is ((Na)Cl     Too many "(".
  • Si(OH))4 is Si(OH))4     Too many ")".
  • Si&Si is Si&Si
  • CH2=CH2

/doc More

edit
  • {{chem2|Cl2O6|link=dichlorine hexoxide}} is Cl2O6
  • [Fe(Phen)(Phen)3](2+) is [Fe(Phen)(Phen)3]2+
  • AUTO: [Fe(Phen)(Phen)3](2+) is [Fe(Phen)(Phen)3]2+
  • {{chem2|[C2O2](2+)}} is [C2O2]2+
  • {{chem2|link=Tomato|SI4}} is SI4
  • H2SO4+ is H2SO+4
  • Mn- is Mn
  • Mn22+ is Mn+22, Mn22- is Mn22,
  • Mn(2+) is Mn2+
  • Mn2(+) is Mn+2
  • Mn(22-) is Mn22−
  • Mn3(22-) is Mn22−3
  • Mn(22+) is Mn22+
  • Mn2(22+) is Mn22+2
  • Mn2(2+) is Mn2+2
  • Mn22(2+) is Mn2+22

Predefined codes (groups etc.)

edit
Predefined codes
code target article {{Chem2|code}} type note
A. Groups etc with element-like names
Bz Benzoyl group Bz A: wl |auto=yes
Et Ethyl group Et A: wl |auto=yes
Ln Lanthanide Ln A: wl |auto=yes
Nu Nucleophile Nu A: wl |auto=yes
Ph Phenyl group Ph A: wl |auto=yes
R Substituent R A: wl |auto=yes
T Tritium T A: wl |auto=yes
Tf Trifluoromethylsulfonyl group Tf A: wl |auto=yes
X Halogen X A: wl |auto=yes
B. Groups which are redirected from their normal target if wikilinked; never autolinked.
CH3 Methyl group CH3 B: wl |..[[code]]..
CO3 Carbonate CO3 B: wl |..[[code]]..
COOH Carboxyl group COOH B: wl |..[[code]]..
ClO Hypochlorite ClO B: wl |..[[code]]..
ClO2 Chlorite ClO2 B: wl |..[[code]]..
ClO3 Chlorate ClO3 B: wl |..[[code]]..
ClO4 Perchlorate ClO4 B: wl |..[[code]]..
H2O Water of crystallization H2O B: wl |..[[code]]..
H3O Hydronium H3O B: wl |..[[code]]..
NH2 Amine group NH2 B: wl |..[[code]]..
NH4 Ammonium NH4 B: wl |..[[code]]..
NO3 Nitrate NO3 B: wl |..[[code]]..
PO3 Phosphite PO3 B: wl |..[[code]]..
PO4 Phosphate PO4 B: wl |..[[code]]..
SH Thiol group SH B: wl |..[[code]]..
SO3 Sulfite SO3 B: wl |..[[code]]..
SO4 Sulfate SO4 B: wl |..[[code]]..
SeH Selenol group SeH B: wl |..[[code]]..

/doc Line wrapping

edit
Table 1: Incnis Mrsi original post demo
(extended by DMacks)
Incnis
Mrsi's
original
sandbox (nowrap) current live (wraps)
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
CO2−3
DMacks's
additions
C6H12O6
C6H12O6
C6H12O6
C6H12O6
2H2 + O2 → 2H2O​+heat
2H2 + O2 → 2H2O​+heat


Table 2
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
C2H5 OH
CH3 COO
Attention!
It is not {{chem2}},
it is HTML.

Automated testcases

edit
{{Chem2|H2O}}
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
H2O H2O
Multiple arguments - not supported
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
H H
{{Chem2|H2O|link=water}}
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
H2O H2O
{{Chem2|H2O|auto=1}}
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
H2O H2O
hyphen
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
CH3CH3 CH3CH3
en-dash
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
CH3CH3 CH3CH3
minus sign
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
CH3CH3 CH3CH3
Wikilinks with numbers
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
CH3CH2OH CH3CH2OH
Auto-link next to [
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
[Fe(Phen)(Phen)3]2+ [Fe(Phen)(Phen)3]2+
Manual link next to [
Side by side comparison
{{Chem2}}{{Chem2/sandbox}}
[Fe(Phen)(Phen)3]2+ [Fe(Phen)(Phen)3]2+

autodoc

edit
  • {{#invoke:chem2|_autodoc}}
Adds sections:
 === Elements and element-style symbols ===
 === Groups ===
autodoc tables
(start of autodoc)

Elements and element-style symbols

These may be automatically linked or used as if they were redirects.

Symbol Link target
Ac Actinium
Ag Silver
Al Aluminium
Am Americium
Ar Argon
As Arsenic
At Astatine
Au Gold
B Boron
Ba Barium
Be Beryllium
Bh Bohrium
Bi Bismuth
Bk Berkelium
Bn Benzyl group
Br Bromine
Bz Benzoyl group
C Carbon
Ca Calcium
Cd Cadmium
Ce Cerium
Cf Californium
Cl Chlorine
Cm Curium
Co Cobalt
Cp Copernicium
Cr Chromium
Cs Caesium
Cu Copper
D Deuterium
Db Dubnium
Ds Darmstadtium
Dy Dysprosium
Er Erbium
Es Einsteinium
Et Ethyl group
Eu Europium
F Fluorine
Fe Iron
Fl Flerovium
Fm Fermium
Fr Francium
Ga Gallium
Gd Gadolinium
Ge Germanium
H Hydrogen
He Helium
Hf Hafnium
Hg Mercury (element)
Ho Holmium
Hs Hassium
I Iodine
In Indium
Ir Iridium
K Potassium
Kr Krypton
La Lanthanum
Li Lithium
Ln Lanthanide
Lr Lawrencium
Lu Lutetium
Lv Livermorium
Mc Moscovium
Md Mendelevium
Mg Magnesium
Mn Manganese
Mo Molybdenum
Mt Meitnerium
N Nitrogen
Na Sodium
Nb Niobium
Nd Neodymium
Ne Neon
Nh Nihonium
Ni Nickel
No Nobelium
Np Neptunium
Nu Nucleophile
O Oxygen
Og Oganesson
Os Osmium
P Phosphorus
Pa Protactinium
Pb Lead
Pd Palladium
Ph Phenyl group
Pm Promethium
Po Polonium
Pr Praseodymium
Pt Platinum
Pu Plutonium
R Substituent
Ra Radium
Rb Rubidium
Re Rhenium
Rf Rutherfordium
Rg Roentgenium
Rh Rhodium
Rn Radon
Ru Ruthenium
S Sulfur
Sb Antimony
Sc Scandium
Se Selenium
Sg Seaborgium
Si Silicon
Sm Samarium
Sn Tin
Sr Strontium
T Tritium
Ta Tantalum
Tb Terbium
Tc Technetium
Te Tellurium
Tf Trifluoromethylsulfonyl group
Th Thorium
Ti Titanium
Tl Thallium
Tm Thulium
Ts Tennessine
U Uranium
V Vanadium
W Tungsten
X Halogen
Xe Xenon
Y Yttrium
Yb Ytterbium
Zn Zinc
Zr Zirconium

Groups

These must be linked manually; they work as if they were redirects.

Symbol Link target
CH3 Methyl group
CO3 Carbonate
COOH Carboxyl group
ClO Hypochlorite
ClO2 Chlorite
ClO3 Chlorate
ClO4 Perchlorate
H2O Water of crystallization
H3O Hydronium
NH2 Amine group
NH4 Ammonium
NO3 Nitrate
PO3 Phosphite
PO4 Phosphate
SH Thiol group
SO3 Sulfite
SO4 Sulfate
SeH Selenol group
(end of autodoc)