解决Latex编译报错:Command `\Bbbk' already defined. ...ol{\Bbbk} {\mathord}{AMSb}{"7C}

Latex template 版本

使用的是ACM 最新的latex模板:
\ProvidesClass{acmart}
[2020/02/22 v1.70 Typesetting articles for the Association for Computing Machinery]

场景例子

\documentclass[sigconf]{acmart}

\usepackage{times}%, mathptm}
\usepackage{moreverb}
\usepackage{graphicx}
\usepackage{mathrsfs}
\usepackage{bm}
\usepackage{url}
\usepackage{amsmath}
\usepackage{amssymb}
...

问题的原因:

由于acmart.cls格式文件中引入了newtxmath包,该包(即newtxmath.sty)中定义了’\Bbbk’命令:\re@DeclareMathSymbol{\Bbbk}{\mathord}{AMSm}{107} % was 124
同时我在preamble中用\usepackage{amssymb}导入了amssymb包,其中也定义了’\Bbbk’命令:\DeclareMathSymbol{\Bbbk} {\mathord}{AMSb}{"7C}

acmart.cls格式文件部分内容如下:

...
\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
    have the newtxmath package installed.  Please upgrade your
    TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts
  \RequirePackage[T1]{fontenc}
\ifxetex
  \RequirePackage[tt=false]{libertine}
  \setmonofont{inconsolata}
\else
  \RequirePackage[tt=false, type1=true]{libertine}
\fi
\RequirePackage[varqu]{zi4}
\RequirePackage[libertine]{newtxmath}
\fi
...

最终修改如下:

\documentclass[sigconf]{acmart}

\usepackage{times}%, mathptm}
\usepackage{moreverb}
\usepackage{graphicx}
\usepackage{mathrsfs}
\usepackage{bm}
\usepackage{url}
\usepackage{amsmath}
\let\Bbbk\relax         %%redefined in newtxmath.sty
\usepackage{amssymb}
...

\usepackage{amssymb}前加上\let\Bbbk\relax使得前面(即newtxmath包中)定义的Bbbk失效。

抱歉给出的回答仍然有误。感谢你指出了问题。 在 IOP 出版社的文档类 `iopart` 中,BibTeX 的默认样式 `iopart-num.bst` 并不支持生成参考文献中的 `\newblock` 命令。因此,在使用 `iopart` 文档类时,你可能会遇到 `\newblock undefined` 的报错。 为了解决这个问题,你可以手动修改参考文献样式文件(.bst 文件),在适当的位置添加对 `\newblock` 命令的支持。 具体操作如下: 1. 找到 `iopart-num.bst` 样式文件的副本,并将其重命名为一个新的文件(例如 `iopart-num-newblock.bst`)。 2. 使用文本编辑器打开这个新文件。 3. 在文件中搜索以下行: ```bibtex FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ". " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ % 在这行之后添加这一行 } { skip$ } if$ mid.sentence 'output.state := } if$ s } ``` 4. 在注释中标注的位置,添加 `\newblock` 命令。修改后的代码应如下所示: ```bibtex FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ". " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ % 在这行之后添加这一行 "\newblock " write$ % 添加这一行 } { skip$ } if$ mid.sentence 'output.state := } if$ s } ``` 5. 保存并关闭文件。 6. 在你的 LaTeX 文档中,将 `\bibliographystyle{iopart-num}` 改为 `\bibliographystyle{iopart-num-newblock}`,以使用修改后的样式文件。 这样,你应该能够成功使用 `\newblock` 命令来解决报错问题。 请注意,修改样式文件可能会对参考文献的格式产生其他影响。因此,在修改和使用新的样式文件之前,建议仔细检查和测试参考文献的输出。 希望这次回答能够帮到你!如果还有其他问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值