LINUX.ORG.RU

Определение команд со звездочкой (LaTeX)

 , ,


2

3

Здравствуйте!

Я тут хочу определить команду \chapter со звездочкой и без, но как это сделать?

Пробую сделать так:

\newcommand{\chapterNoStar}[1]{
  \newpage
  \stepcounter{chapter}
  \begin{center}
    \textbf{\MakeUppercase{\chaptersname~\thechapter~#1}}
  \end{center}
  \addcontentsline{toc}{chapter}{\MakeUppercase{\chaptersname~\thechapter~#1}}
}


\newcommand{\chapterStar}[1]{
  \newpage
  \begin{flushleft}
    \textbf{\MakeUppercase{#1}}
  \end{flushleft}
  \addcontentsline{toc}{chapter}{#1}
}


\newcommand{\chapter}[1]{
  \@ifstar{\chapterStar{#1}}{\chapterNoStar{#1}}
}

Проверяю:

\chapter*{FOO}

\chapter{BAR}

В случае со звездочкой я вижу только-лишь звездочку, а сам заголовок не вижу.

Хочу, чтобы \chapter* не нумеровало главу, а без звездочки - нумеровало.

Deleted
Ответ на: комментарий от Deleted

Да, классовый. К сожалению помочь не могу, только предложить посмотреть исходники чужих классовых файлов, как они хэндлят chapter*. Но на тему подпишусь

Crocodoom ★★★★★
()

На текущем этапе развития LaTeX я бы советовал при разработке команд пользоваться пакетом xparse (https://ctan.org/pkg/xparse). С его помощью можно легко реализовывать команды и окружения с разными всякими вариантами аргументов (звездочки, обязательные, необязательные аргументы). Пример со звездочкой:

\documentclass{article}
\usepackage{xparse}

\DeclareDocumentCommand{\stuff}{sm}{%
  \IfBooleanTF{#1}{%
    Starred version of #2
  }{%
    Ordinary version of #2
  }%
}

\begin{document}
\stuff{something}

\stuff*{anything}
\end{document}

TeopeTuK ★★★★★
()
22 декабря 2018 г.
Ответ на: комментарий от Crocodoom

Отпишусь на всякий случай.

Вот так заработало:

\newcommand{\foo}{\@ifstar{\foob}{\fooi}}
\newcommand{\foob}[1]{\textbf{#1}}
\newcommand{\fooi}[1]{\textit{#1}}

\foo{test}
\foo*{test}
Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.