我有一些很长的化学名称,它们溢出到了页边距,我想告诉 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 节中有详细说明。\IUPAC
bpchem
对于你的情况使用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)}