运行 ling-macros 包时如何解决“命令 \f 已经定义”错误

运行 ling-macros 包时如何解决“命令 \f 已经定义”错误

我正在排版我的论文(语言学),它在 XeLaTeX 中运行良好,直到我使用该ling-macros软件包,它应该运行良好,因为它不是一个新软件包,而且我没有发现与我遇到的错误类似的问题。这是我得到的:

    > ! LaTeX Error: Command \f already defined.
    >                Or name \end... illegal, see p.192 of the manual.
    > 
    > See the LaTeX manual or LaTeX Companion for explanation. Type  H
    > <return>  for immediate help.  ...                                    
    > 
    >                                                    l.235 \newcommand{\f}[1]{\ensuremath{#1}}
    >                                           ^^I^^I^^I^^I^^I^^I% Formal express...
    > 
    > ?

我确信这在某种程度上与我使用的其他一些软件包有关ling-macros(或者有冲突?),因为这是我收到的非常具体的消息;当我 % 处理该行时,文件再次运行良好(参见下面最后一行)。

以下是我的序言:

\documentclass[12pt]{article}
\usepackage[hmargin=2.5cm, vmargin=2.5cm]{geometry}
\setlength\parindent{4ex}
\setlength\parskip{0pt}
\usepackage{setspace}
\doublespace
\usepackage{fontspec}
\setmainfont{Times New Roman}
\defaultfontfeatures{Scale=MatchLowercase}
\usepackage{polyglossia}

\usepackage[rm, bf]{titlesec} % formatting taken out for brevity

\usepackage{longtable}

\usepackage{natbib}

\usepackage{fancyhdr} % actual header taken out
\pagestyle{fancy}

\usepackage{titling} % actual title with author info taken out

\usepackage{linguex}
\usepackage{tikz-qtree}
\usepackage{ling-macros}

答案1

linguex包定义\f为的别名\b。此外,\b它还被赋予了与标准 LaTeX 中不同的含义(“下划线”重音符号)。

在 的上下文中linguex\ex.其中输入\a.\b.用于介绍项目。该包还提供\c. \d. \e. \f.更多项目。

\f.你可以用两种方法解决这个问题。一种方法比较激进,即消除在 中使用 for items的可能性\ex.:只需\let\f\relax在 之前添加 即可\usepackage{ling-macros}

如果您想要使用\f.里面的物品\ex.,您需要一个更复杂的技巧,如下所示。

\documentclass[12pt]{article}

%% packages

\usepackage[hmargin=2.5cm, vmargin=2.5cm]{geometry}
\usepackage{setspace}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage[rm, bf]{titlesec} % formatting taken out for brevity
\usepackage{longtable}
\usepackage{natbib}
\usepackage{fancyhdr} % actual header taken out
\usepackage{titling} % actual title with author info taken out

\usepackage{linguex}
\usepackage{tikz-qtree}

%% fix the issues with \f
\let\f\relax % remove the definition done by linguex
\usepackage{ling-macros} % load the package
\makeatletter
\let\lingmacros@f\f
\DeclareRobustCommand{\f}{\@ifnextchar.\b\lingmacros@f}
\makeatother

%% settings

\setmainfont{Times New Roman}
\defaultfontfeatures{Scale=MatchLowercase}

\pagestyle{fancy}
\doublespacing % not \doublespace
% you don't know what ex is, until at begin document
\AtBeginDocument{\setlength\parindent{4ex}}
% leave a little flexibility to \parskip
%\setlength\parskip{0pt}

我将包加载部分与设置部分分开。请注意,这\doublespace不是正确的声明,正确的声明应该是\doublespacing

相关内容