xparse/命令已定义

xparse/命令已定义

您好,我正在尝试使用此链接中的以下类(yReport.cls)https://github.com/HarveySheppard/yLaTeX

我使用的是 MikTex 2.9,并且安装了相关的包、字体和 cls 文件。不幸的是,出现了以下错误,我不知道如何修复它:

! LaTeX error: "xparse/command-already-defined"
! 
! Command '\FA' already defined!
! 
! See the LaTeX3 documentation for further information.

加载以下代码时出现此错误,该代码是布局工作所需的最少代码:

\documentclass[french]{yReport}

\author{Your name}
\subtitle{Subtitle}
\title{Title}
\hypersetup{
    pdftitle={Title},
    pdfsubject={Subject},
    pdfauthor={Your name},
    pdfkeywords={{keyword 1}{keyword 2}},
}

\makeatletter
\let\runauthor\@author
\let\runtitle\@title
\makeatother

\begin{document}
    \titleTwo
\end{document}

答案1

这个问题可以通过以下方式重现:

\documentclass{article}
\usepackage{infoBulle}
\begin{document}
Lorem
\end{document}

infoBulle.sty你需要https://github.com/HarveySheppard/yLaTeX/tree/master/yPackages/infoBulle以及yMainColor.sty来自https://github.com/HarveySheppard/yLaTeX/blob/master/yPackages/yMainColor/运行代码。

简短的调查显示,infoBulle.sty不仅加载fontawesome包(在第 44 行),但它也存在问题

\newfontfamily{\FA}{FontAwesome}

后来115 行

然而,此时,fontawesome同一行代码本身已经执行完毕,我们得到了一个错误。

我觉得在 FontAwesome 已经加载的情况下infoBulle.sty使用\FAwith是错误的。应该向维护者报告这个问题(\newfontfamilyfontawesomeinfoBullehttps://github.com/HarveySheppard/yLaTeX/issues/8)。维护者很快就做出了回应,并在 GitHub 上提供了一个修复版本。

与此同时,最简单但也最肮脏的修复方法是编辑本地副本infoBulle.sty并删除(或注释掉)\newfontfamily{\FA}{FontAwesome}第 115 行。

萨布霍克的调查显示,这个问题并没有发生在旧版本上fontspec。事实上,fontspec文档解释了

[ \newfontfamily, \setfontfamily, \renewfontfamily] 这些命令定义新的字体系列命令(如\rmfamily)。该new命令检查是否⟨cmd⟩已定义,如果已定义,则发出错误。该renew命令检查是否⟨cmd⟩已定义,如果未定义,则发出错误。该set命令从不检查;使用风险自负。

新的:在 的早期版本中fontspec,仅\newfontfamily提供 ,但其行为类似于\setfontfamily。如果这现在导致问题,您必须稍微更新您的代码;抱歉。

因此,在旧版本的中,infontspec会简单地覆盖默认的 in ,但现在两个具有相同名称的 s 会发生冲突并产生错误。\newfontfamilyinfoBullefontawesome\newfontfamily

答案2

问题出在较新版本的 fontec 上。我添加了以下行

\usepackage{fontspec}

大约在第 43 行左右。我还将其更改\newfontfamily{\FA}{FontAwesome}\setfontfamily{\FA}{FontAwesome}现在它正常工作了。此外,应该使用 LuaLaTeX 而不是 XeLaTeX

相关内容