Как устранить ошибку «команда \f уже определена» при запуске пакета ling-macros

Как устранить ошибку «команда \f уже определена» при запуске пакета ling-macros

Я набираю свою статью (лингвистика), и она работала нормально в 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 элементов внутри \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.

Связанный контент