包含括号的长化学名称换行

包含括号的长化学名称换行

我有一些很长的化学名称,它们溢出到了页边距,我想告诉 LaTeX 如何自动为它们添加连字符,这样我就不必手动返回并插入硬换行符。我尝试使用 \hyphenate,它给出了“不是字母”的错误,这可能是因为这些公式名称包含括号。

化学名称为:三(四氯儿茶酚)锰(IV)、双(四氯儿茶酚)四氯半醌钴(III)、三(四氯半醌)铁(III)和三(四氯儿茶酚)铁(III)

以下是我在序言中尝试过的内容:

\hyphenation{tris(tetra-chloro-cat-e-cho-la-to)man-gan-ese(IV)}
\hyphenation{bis(tetra-chloro-cat-e-cho-la-to)tetra-chloro-semi-qui-non-ato-cobalt(III)}
\hyphenation{tris(tetra-chloro-semi-qui-non-ato)iron(III)}
\hyphenation{tris(tetra-chloro-cat-e-cho-la-to)iron(III)}

我尝试对括号内的部分进行连字符连接:

\hyphenation{tetra-chloro-cat-e-cho-la-to}
\hyphenation{tetra-chloro-semi-qui-non-ato}

但它不会在化学名称较长的“单词”内使用连字符。有没有办法自动完成这一操作,还是我只能手动进行硬换行?

答案1

编辑: 正如 Joseph Wright 在评论中指出的那样,新版本(4.6)chemmacros提供的命令与中的命令\iupac执行的操作类似,但具有更多的定制,用户手册的第 8 节中有详细说明。\IUPACbpchem

对于你的情况使用chemmacros应该是

\iupac{tris|(tetra|chloro|cat|e|cho|la|to)|man|gan|ese(IV)}
\iupac{bis(tetra|chloro|cat|e|cho|la|to)tetra|chloro|semi|qui|non|ato|cobalt(III)}
\iupac{tris(tetra|chloro|semi|qui|non|ato)iron(III)}
\iupac{tris(tetra|chloro|cat|e|cho|la|to)iron(III)}

请注意,在中chemmacros和都处于活动状态,|但将被弃用,因此建议使用。\|\iupac\||


您还可以使用该bpchem包,并使用该\|命令来选择所需的连字符位置。

\IUPAC{tris\|(tetra\|chloro\|cat\|e\|cho\|la\|to)\|man\|gan\|ese(IV)}
\IUPAC{bis(tetra\|chloro\|cat\|e\|cho\|la\|to)tetra\|chloro\|semi\|qui\|non\|ato\|cobalt(III)}
\IUPAC{tris(tetra\|chloro\|semi\|qui\|non\|ato)iron(III)}
\IUPAC{tris(tetra\|chloro\|cat\|e\|cho\|la\|to)iron(III)}

答案2

将括号设置为用于连字符的字母:

\lccode`(=`( \lccode`)=`)
\hyphenation{tris(tetra-chloro-cat-e-cho-la-to)man-gan-ese(IV)}
\hyphenation{bis(tetra-chloro-cat-e-cho-la-to)tetra-chloro-semi-qui-non-ato-cobalt(III)}
\hyphenation{tris(tetra-chloro-semi-qui-non-ato)iron(III)}
\hyphenation{tris(tetra-chloro-cat-e-cho-la-to)iron(III)}

相关内容