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