Как я создаю команду как \title в ЛАТЕКСЕ?

Я пишу класс документов для ЛАТЕКСА, и я хочу, чтобы он был универсален. В этом классе документов я переопределяю \maketitle управляйте для отображения пользовательского титульного листа, и здесь я хочу отобразить некоторую информацию, как заголовок, автор, и т.д., но также и некоторая другая информация. Вот то, как я отображаю заголовок:

{\LARGE{\bf \@title}}\\

Я хотел бы создать новую команду, которая работает так же к \title или \author, как я могу сделать это?

16
задан Kjir 14 May 2010 в 12:08
поделиться

2 ответа

Если вы посмотрите на latex.ltx, то увидите, что \title определяется следующим образом:

\def\title#1{\gdef\@title{#1}}
\def\@title{\@latex@error{No \noexpand\title given}\@ehc}

Это низкоуровневые команды TeX. \title - это команда, которая переопределяет \@title для расширения до аргумента, переданного в \title. В более современных командах LaTeX ваше собственное определение может выглядеть так:

\newcommand\foo[1]{\renewcommand\@foo{#1}}
\newcommand\@foo{\@latex@error{No \noexpand\foo given}\@ehc}

Лучше использовать \PackageError или \ClassError, чтобы показать сообщение об ошибке. Или, если вы хотите, чтобы \foo был необязательным и по умолчанию был пустым:

\newcommand\foo[1]{\renewcommand\@foo{#1}}
\newcommand\@foo{}

Если это не внутри пакета, вам придется поместить его между \makeatletter и \makeatother из-за знаков @.

20
ответ дан 30 November 2019 в 21:18
поделиться

Здесь это пример команды, которую я использовал в своем классе thesis.cls . Он определяет новую команду \ University , которая работает как команды \ title или \ author со значением по умолчанию, равным «без университета». Если я не использую команду \ University в преамбуле, вместо нее будет использоваться значение по умолчанию.

\def\@university{no university}
\newcommand{\university}[1]{
  \def\@university{#1}
}

Затем в команде \ maketitle вы можете указать что-то вроде:

\newcommand{\maketitle}{
  {\LARGE{\bf \@title}}\\
  {\small{\@university}}\\
}
7
ответ дан 30 November 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: