Compilerfehler beim Erstellen eines Makros/einer Umgebung

Compilerfehler beim Erstellen eines Makros/einer Umgebung

Ich versuche, einen neuen Befehl oder eine neue Umgebung oder etwas anderes zu erstellen, um einen Abschnitt zu formatieren, der aber einen eigenen Zähler haben muss. Ich möchte keine der \Abschnitte \Unterabschnitte usw. verwenden, da ich die gesamte Tiefe benötige, die sie bieten.

Die Idee dahinter ist, dass ich etwas Ähnliches wie ... eingeben würde.

\session{Hello World}

... und die Ausgabe wäre ungefähr so ​​(allerdings zentriert) ...

Sitzung 1: Hallo Welt

Der Befehl, den ich derzeit habe, lautet wie folgt:

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

Wenn Sie dies genau versuchen, gibt der Latex-Compiler den folgenden Fehler aus (beachten Sie, dass dies geschieht, bevor \begin{document} überhaupt aufgerufen wurde).

LaTeX-Fehler: \begin{document} beendet durch \end{Large}

Ich habe auch versucht, eine neue Umgebung zu erstellen, indem ich \newcommand{\session} buchstäblich durch \newenvironment{session} ersetzt habe. Während der Kompilierung erhalte ich in der Zeile \begin{session} den folgenden Fehler.

Fehlender \endcsname eingefügt.

        <to be read again> 

\nachgruppe

l.13 \begin{session}

Kann irgendjemand erkennen, was ich falsch mache? Ich gehe aufgrund des Fehlers davon aus, dass newcommand mit dieser Syntax nicht genau für das verwendet werden kann, was ich möchte. Allerdings bin ich auch verwirrt, warum die Umgebung nicht funktioniert.

Antwort1

Ihre Definition entspricht dem Format einerUmfeld, kein Befehl.

So werden Umgebungen definiert:

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

Sie werden dann folgendermaßen verwendet:

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

Aber ich glaube, Sie wollen eineBefehldas nimmt ein Argument an, wie in diesem Beispiel. \thesessioncounterGibt Ihnen außerdem die Nummer als Text; \valueist für die Verwendung in anderen internen Befehlen vorgesehen. (Ich habe auch die Formatierungsbefehle ein wenig angepasst.)

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

Bildbeschreibung hier eingeben

Antwort2

\begin{textbf}Das eine oder das andere können Sie nicht tun , \begin{emph}und das andere sollten Sie auch nicht tun \begin{Large}.

Sie wollen

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

in der Präambel und Verwendung

\session{Hello world}

im Dokument.

verwandte Informationen