Erro do compilador ao criar uma macro/ambiente

Erro do compilador ao criar uma macro/ambiente

Estou tentando criar um novo comando ou ambiente ou algo para formatar o que é essencialmente uma seção, mas precisa ter seu próprio contador. Eu gostaria de não usar nenhum \section \subsection etc. à medida que me aprofundo em tudo o que eles fornecem.

A ideia é que eu digitasse algo semelhante a ...

\session{Hello World}

... e geraria algo como (embora centralizado) ...

Sessão 1: Olá, Mundo

O comando que tenho atualmente é o seguinte:

\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}
}

Tentando exatamente isso, o compilador Latex gera o seguinte erro (observe que isso ocorre antes mesmo de \begin{document} ter sido chamado).

Erro LaTeX: \begin{document} finalizado com \end{Large}

Também tentei criar um novo ambiente trocando literalmente \newcommand{\session} por \newenvironment{session}. Enquanto isso compila, recebo o seguinte erro na linha de \begin{session}.

\endcsname ausente inserido.

        <to be read again> 

\pósgrupo

1.13 \begin{sessão}

Alguém pode ver onde estou errando? Presumo pelo erro que newcommand não pode ser usado exatamente com esta sintaxe para o que desejo; no entanto, também estou confuso sobre por que o ambiente também não funciona.

Responder1

Sua definição corresponde ao formato de umambiente, não um comando.

É assim que os ambientes são definidos:

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

Eles são então usados ​​assim:

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

Mas acho que você quer umcomandoisso leva um argumento, como neste exemplo. Além disso, \thesessioncounterfornece o número como texto; \valueé para uso em outros comandos internos. (Também ajustei um pouco os comandos de formatação.)

\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}

insira a descrição da imagem aqui

Responder2

Você não pode fazer \begin{textbf}ou \begin{emph}e também não deveria fazer \begin{Large}.

Você quer

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

no preâmbulo e uso

\session{Hello world}

no documento.

informação relacionada