Ошибка компилятора при создании макроса/среды

Ошибка компилятора при создании макроса/среды

Я пытаюсь создать новую команду или среду или что-то еще для форматирования того, что по сути является разделом, но ему нужен свой счетчик. Я бы не хотел использовать \section \subsection и т. д., поскольку я иду в полную глубину, которую они предоставляют.

Идея была в том, чтобы ввести что-то похожее на...

\session{Hello World}

... и он выведет что-то вроде (хотя и центрированное) ...

Сессия 1: Привет, мир!

На данный момент у меня есть следующая команда:

\newcounter{sessioncounter}
\newcommand{\session}
{
\begin{center}
\begin{emph}
\begin{textbf}
\begin{Large}
Session \value{sessioncounter}\stepcounter{sessioncounter}: 
}{
\end{Large}
\end{textbf}
\end{emph}
\end{center}
}

При попытке сделать это в точности компилятор Latex выдает следующую ошибку (обратите внимание, это происходит еще до вызова \begin{document}).

Ошибка LaTeX: \begin{document} завершен на \end{Large}

Я также пробовал создать новую среду, буквально заменив \newcommand{\session} на \newenvironment{session}. Пока это компилируется, я получаю следующую ошибку в строке \begin{session}.

Отсутствует вставленный \endcsname.

        <to be read again> 

\aftergroup

л.13 \begin{session}

Кто-нибудь может понять, где я ошибаюсь? По ошибке я предполагаю, что newcommand не может использоваться именно с этим синтаксисом для того, что мне нужно; однако я также не понимаю, почему среда тоже не работает.

решение1

Ваше определение соответствует форматусреда, а не приказ.

Вот как определяются среды:

\newenvironment{example}{<starting commands>}{<ending commands>}

Затем они используются следующим образом:

\begin{example}
<text>
\end{example}

Но я думаю, ты хочешькомандапринимает один аргумент, как в этом примере. Также \thesessioncounterвозвращает вам число в виде текста; \valueпредназначено для использования в других внутренних командах. (Я также немного подправил команды форматирования.)

\documentclass{article}
\newcounter{sessioncounter}
\newcommand{\session}[1]{%
    \hfil\bgroup\Large\itshape\bfseries 
    Session~\thesessioncounter: #1\egroup\par\bigskip
    \stepcounter{sessioncounter}%
}

\begin{document}
\session{Hello World}
\session{Hello again}
\session{Hello for the last time}
\end{document}

введите описание изображения здесь

решение2

Вы не можете сделать \begin{textbf}ни того, ни другого \begin{emph}и не должны \begin{Large}этого делать.

Вы хотите

\newcommand{\session}[1]{%
  \begin{center}\Large\itshape\bfseries
    \stepcounter{sessioncounter}%
    Session \value{sessioncounter}: #1%
  \end{center}%
}

в преамбуле и использовании

\session{Hello world}

в документе.

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