问题解决 | ACM acmart模板替换XML代码后报错

问题描述

  • 将ACM latex模板中的XML代码按说明替换为:
%% The code below is generated by the tool at http://dl.acm.org/ccs.cfm.
%% Please copy and paste the code instead of the example below.
%%

\begin{CCSXML}
  <ccs2012>
     <concept>
         <concept_id>XXXXX</concept_id>
         <concept_desc>XXXXX</concept_desc>
         <concept_significance>500</concept_significance>
         </concept>
     <concept>
         <concept_id>XXXXX</concept_id>
         <concept_desc>XXXXX</concept_desc>
         <concept_significance>500</concept_significance>
         </concept>
   </ccs2012>
   \end{CCSXML}

\ccsdesc[500]{Human-centered computing~Ubiquitous and mobile computing systems and tools}
\ccsdesc[500]{Computing methodologies~Machine learning approaches}
  • 编译报错:
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
(d:/texlive/2022/texmf-dist/tex/latex/upquote/upquote.sty)
Excluding 'CCSXML' comment.)
Runaway argument?
! File ended while scanning use of \next.
<inserted text>
                \par
<*> sample-sigconf.tex

?
! Emergency stop.
<inserted text>
                \par
<*> sample-sigconf.tex

问题解决

  • 经尝试,删掉\end{CCSXML}前的空格后,成功编译:
\begin{CCSXML}
  <ccs2012>
     <concept>
         <concept_id>10003120.10003138.10003140</concept_id>
         <concept_desc>Human-centered computing~Ubiquitous and mobile computing systems and tools</concept_desc>
         <concept_significance>500</concept_significance>
         </concept>
     <concept>
         <concept_id>10010147.10010257.10010293</concept_id>
         <concept_desc>Computing methodologies~Machine learning approaches</concept_desc>
         <concept_significance>500</concept_significance>
         </concept>
   </ccs2012>
\end{CCSXML}

原因分析

  • acmart模板对\end{CCSXML}前的空格敏感。这种敏感性主要是由于\excludecomment{CCSXML}宏的实现:
    • 下面是acmart.cls中的相关代码
\RequirePackage{comment}
\excludecomment{CCSXML}
  • 可见:
    • acmart模板使用了comment宏包,该宏包提供了\excludecomment命令,可以在编译时忽略特定环境中的内容。

    • 然而,comment宏包对于\begin{…}和\end{…}之间的内容的处理方式是基于逐行文本匹配的。换句话说,它会在文档中查找以\end{CCSXML}开头的行来确定环境的结束。如果在\end{CCSXML}之前存在空格,宏包将无法识别这一行作为CCSXML环境的结束。这就是为什么将\end{CCSXML}前的空格去掉后,编译将不再报错。

    • 具体见comment package的文档:https://mirror-hk.koddos.net/CTAN/macros/latex/contrib/comment/comment.pdf 第一页:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R.X. NLOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值