PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LaTeX Wort merken, woanders ausgeben



LaTeX-Nutzer
20-05-2013, 16:32
Hallo Leute,

ich versuche zur Zeit mit LaTeX eine Protokollvorlage zu schreiben.
Dabei möchte ich auf der ersten Seite eine Tagesordnung haben, die in einer description-Umgebung steht.
Die einzelnen items sollen somit vom Namen her schnell änderbar sein. Jedoch sollen die item-Namen auch von LaTeX sozusagen "im Kopf" gemerkt werden und per Befehl an anderer Stelle automatisch ausgegeben werden.
Sprich: ich ändere den item-Namen und an der späteren Stelle ändert sich das Wort automatisch.

Bisher hab ich dies mit \label und \ref versucht, bzw. hab versucht dies mit \renewcommand von \label \und \ref zu tun, da ich keinen Befehl gefunden habe, der mir genau dies liefert, was ich will. (Habe gelesen \nameref kann evtl. so etwas, aber der funktioniert bei mir nicht, trotz einbinden des packets \usepackage{nameref}).

Leider weiß ich auch nicht, wie der Befehl \ref vollständig funktioniert, sodass ich es nicht schaffe, ihn mit \renewcommand so umzubauen, wie ich möchte, da ich nicht weiß, wie genau er sich etwas gemerktes holt und ausgibt.

Mein bisheriger Versuch sieht so aus:

\documentclass[a4paper,10pt]{article}

\usepackage{ngerman}
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{graphicx}
\usepackage{hyperref}

\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{Fachschaft Mathematik}
\fancyhead[R]{FR-Sitzung vom \today}
\fancyfoot[C]{\thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}

\renewcommand{\label}[2]{\label{#1} #2}
%\renewcommand{\ref}[1]{\ref{#1} #2}

\begin{document}
\begin{center}
\underline{\textbf{\large{Protokoll zur Sitzung des Fachschaftsrates Mathematik}}}\\[40pt]
\end{center}

\noindent\textbf{\underline{Anwesend: n/12}} \\[15pt]


b\label{a}c %Versuche mit label

\noindent\textbf{\underline{Beginn: Uhr}} \\

\noindent\textbf{\underline{Tagesordnung}}
\begin{description}
\item[\label{k}{Regularien}] %Regularien soll per label gemerkt und wieder ausgegeben werden werden

\end{description}


sfdglgns \nameref{a} \\ %versuch der Ausgabe
\ref{k} %versuch der Ausgabe

\end{document}

Ich hoffe sehr jemand kann mir hier helfen.

LG Kai

klops
20-05-2013, 17:05
Das kann so wie Du es gemacht hast aus zwei Gründen nicht funktionieren. Zum einen ist der \label/\ref-Mechanismus auf einen referenzierbares Objekt angewiesen. Normalerweise, also bei den referenzierbaren Objekten, die LaTeX und die meisten Klassen bereitstellen, ist das ein Zähler, der von den LaTeX, der Klasse oder einem Paket mit \refstepcounter erhöht wird. Aber weder ein \item in einer description-Umgebung noch einfach ein Buchstabe im Text setzt einen solchen referenzierbaren Zähler oder gar ein anderes referenzierbares Objekt. Das mag nun komplizierter klingen als unbedingt notwendig. Einfacher ausgedrückt aber etwas ungenauer: \label/\ref funktioniert normalerweise nur dort, wo eine referenzierbare Nummer vorhanden ist, beispielsweise bei Überschriften, Gleichungen, \item in enumerate-Umgebungen. Will man es anders, muss man sich das selbst definieren. Siehe dazu Ulrikes nachfolgender Vorschlag bzw. meine Korrektur ihres Vorschlags in #7 (http://www.mrunix.de/forums/showpost.php?p=352698&postcount=7).

Zum anderen kann man eine LaTeX-Anweisung nicht einfach umdefinieren und dabei in der neuen Definition die LaTeX-Anweisung selbst verwenden. TeX ist eine Makrosprache, wenn Du also
\renewcommand{\label}[2]{\label{#1} #2} schreibst und dann \label{a}{b} aufrufst, dann würde das expandieren zu "\label{a} b", was wiederum expandieren würde zu "\label{a} b" und immer so weiter, bis TeX merkt, dass da eine Endlosschleife entsteht und einen Fehler meldet.

Das was Du suchst, erinnert mich am ehesten an das, was das Paket acronym bietet:
\documentclass[a4paper,10pt]{article}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\usepackage{acronym}
\newcommand*{\ALabel}[2]{%
\acrodef{#1}{#2}\acl{#1}%
}

\begin{document}
\begin{center}
\underline{\textbf{\large{Protokoll zur Sitzung des Fachschaftsrates Mathematik}}}\\[40pt]
\end{center}

\noindent\textbf{\underline{Anwesend: n/12}} \\[15pt]


\ALabel{b}{a}c

\noindent\textbf{\underline{Beginn: Uhr}} \\

\noindent\textbf{\underline{Tagesordnung}}
\begin{description}
\item[\ALabel{k}{Regularien}] %Regularien soll per label gemerkt und wieder ausgegeben werden werden

\end{description}


sfdglgns \acl{a} \\ %versuch der Ausgabe
\acl{k} %versuch der Ausgabe

\end{document}
Ich habe aus der Präambel mal rausgeworfen, was für das Problem unerheblich ist. Du brauchst zwei LaTeX-Läufe für die korrekte Anzeige. Näheres zum Paket acronym ist dessen Anleitung zu entnehmen.

Ansonsten sei anzumerken, dass man im Blocksatz besser kein \\ verwenden sollte. Unterstreichen ist typografisch höchst bedenklich. Das macht man an der Tafel oder sonst handschriftlich, weil man dort schlecht kursiv oder fett verwenden kann. Vielleicht solltest Du Dir außerdem in einer LaTeX-Einführung mal Umgebungen wie flushleft oder auch das Paket ragged2e anschauen.

Achja: Du solltest Code im Forum als solchen markieren. Wenn man die erweiterte Eingabe verwenden, geht das mit dem #-Knopf. Dieser fügt die entsprechenden code-Tags (http://www.mrunix.de/forums/misc.php?do=bbcode) ein.

u_fischer
20-05-2013, 18:34
ch versuche zur Zeit mit LaTeX eine Protokollvorlage zu schreiben.
Dabei möchte ich auf der ersten Seite eine Tagesordnung haben, die in einer description-Umgebung steht.
Die einzelnen items sollen somit vom Namen her schnell änderbar sein. Jedoch sollen die item-Namen auch von LaTeX sozusagen "im Kopf" gemerkt werden und per Befehl an anderer Stelle automatisch ausgegeben werden.
Sprich: ich ändere den item-Namen und an der späteren Stelle ändert sich das Wort automatisch.

Nun, für mich hört sich das eher an, als sollte die Tagesordnung sich automatisch aus den späteren Überschriften erzeugt werden, also nach einem klassischen Inhaltsverzeichnis.

Oder warum verwendest du nicht simple Befehle? \label/\ref braucht man ja nur, weil die Referenz *vor* dem \label sein könnte.


Das kann so aus zwei Gründen nicht funktionieren. Zum einen ist der \label/\ref-Mechanismus auf einen referenzierbaren Zähler angewiesen.

Nein, der \label speichert einfach den aktuellen Wert von \@currentlabel: Und das kann alles mögliche sein (wenn man mal die Problematik zerbrechlicher Befehle und hyperref-Links ausklammert):


\documentclass[a4paper,10pt]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand\mylabel[2]{\protected@edef\@currentlabel{#2}\label{#1}#2}
\makeatother
\begin{document}
\begin{description}
\item[\mylabel{k}{Regularien öäü}] blub%
\end{description}

\ref*{k}
\end{document}

LaTeX-Nutzer
20-05-2013, 21:00
Vielen Dank schonmal für die Antworten.
Ich habe tatsächlich darüber nachgedacht einfach ein Inhaltsverzeichnis zu benutzen, dass sie automatisch aus den Überschriften generiert.

Jedoch soll dies eine Protokollvorlage sein, die auch von Leuten, die kein LaTeX beherrschen, genutzt wird. Dazu versuche ich die Datei so einfach zu gestalten, dass nur möglichst wenig geändert werden muss. Leider gehört zweimal kompilieren schon in die Kategorie zu schwer für jene Leute...

Da die Tagesordnung halt schon immer vorher feststeht möchte ich es hinbekommen, dass man nur diese schreibt und sich die Überschriften selbst generieren, sprich der umgekehrte tableofcontents-Befehl.

Ich werde nun versuchen mit dem Tipps von klops alles hinzubekommen.

Danke auch an dich, u_Fischer, deine Idee funktioniert auch super. Kannst du mir erklären wie genau du auf die Idee gekommen bist das so zu definieren?

ctansearch
21-05-2013, 02:29
Da nimmt man wohl am besten vorgegebene sections und ein vorangestelltes Inhaltsverzeichnis und fordert zweimaliges Kompilieren. Ansonsten, wenn zweimaliges Kompilieren schon eine Überforderung darstellt, hat es keinen Sinn , Latex zu verwenden.

rstuby
21-05-2013, 06:57
Bestimmt kann man doch auch im Editor einstellen, dass automatisch immer zweimal kompiliert wird?

klops
21-05-2013, 10:23
Nein, der \label speichert einfach den aktuellen Wert von \@currentlabel: Und das kann alles mögliche sein
Wenn man \@currentlabel (und damit einen internen Befehl von LaTeX) aber nicht wie in Deinem Beispiel selbst setzt, sondern wie im Beispiel des OP nur mit \label und \ref arbeitet, dann ist das sehr wohl auf einen referenzierbaren Zähler angewiesen. Deshalb verwendest Du ja auch nicht \label/\ref, sondern ein selbst definiertes \mylabel und \ref. Da sich meine Antwort auf die reine Verwendung von \label und \ref aus dem Beispiel des OP bezog, also wohl weniger ein "Nein", als ein "Aber".


wenn man mal die Problematik zerbrechlicher Befehle und hyperref-Links ausklammert Wenn man Problematiken ausklammert, kann man alles mögliche. Wobei das Problem der hyperref-Links sich durchaus lösen lässt:


\documentclass[a4paper,10pt]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand\mylabel[2]{\begingroup\csname phantomsection\endcsname\protected@edef\@currentla bel{#2}\label{#1}\endgroup#2}
\makeatother
\begin{document}
\section{Test}
Blubber
\newpage
\begin{description}
\item[\mylabel{k}{Regularien öäü}] blub%
\end{description}

\ref{k}
\end{document}

Das wäre dann vermutlich auch der eventuell entscheidende Vorteil gegenüber der Verwendung eines Pakets wie acronym, das für solche Zwecke gedacht ist, bei dem es aber keinen Link gibt. Allerdings kann man den Link dort ebenfalls nachrüsten.

\documentclass[a4paper,10pt]{article}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\usepackage{acronym}
\newcommand*{\ALabel}[2]{%
\acrodef{#1}{#2}\hypertarget{acro:#1}{\acl{#1}}%
}
\newcommand*{\ARef}[1]{%
\hyperlink{acro:#1}{\acl{#1}}%
}


\begin{document}
\begin{center}
\underline{\textbf{\large{Protokoll zur Sitzung des Fachschaftsrates Mathematik}}}\\[40pt]
\end{center}

\noindent\textbf{\underline{Anwesend: n/12}} \\[15pt]


\ALabel{b}{a}c

\noindent\textbf{\underline{Beginn: Uhr}} \\

\noindent\textbf{\underline{Tagesordnung}}
\begin{description}
\item[\ALabel{k}{Regularien}] %Regularien soll per label gemerkt und wieder ausgegeben werden werden

\end{description}

sfdglgns \ARef{b} \\ %versuch der Ausgabe
\ARef{k} %versuch der Ausgabe

\end{document}
Vorteil: Da nur Userland-Anweisungen verwenden werden, ist es für einen Anwender mit Hilfe der entsprechenden Paket-Anleitungen leicht nachzuvollziehen.
Nachteil: Man kann nicht wie gewohnt \ref verwenden, sondern muss eine eigene Anweisung verwenden.

All diesen Lösungen ist gemeinsam, dass sie mehrere LaTeX-Durchläufe benötigen. Will man eine Lösung haben, die mit nur einem LaTeX-Durchlauf auskommt, muss man alle Variablen vor der ersten Verwendung definieren. Das geht mit acronym tatsächlich ebenfalls:
\documentclass[a4paper,10pt]{article}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\usepackage{acronym}

\newcommand*{\ALabel}[2]{%
\newacro{#1}% Name der "Variablen"
[{\hyperlink{acro:#1}{#2}}]% Inhalt ab der zweiten Verwendung (Link setzen)
{\hypertarget{acro:#1}{#2}}% Inhalt der ersten Verwendung (Anker setzen)
}
\renewcommand*{\acfsfont}[1]{}% Damit von \ac nur entweder die Langform oder
% die Kurzform ausgegeben wird aber nicht beide
% zusammen.

% Hier alle "Variablen" in der Form \ALabel{Variablenname}{Variableninhalt} definieren.
% Auf diese kann dann später mit \ac{Variablenname} zugegriffen werden. Dabei wird
% bei der ersten Verwendung ein Anker gesetzt und bei allen anderen auf diesen Anker
% verlinkt. Soll der Anker an anderer Stelle stehen, so ist explizit \acs{Variablenname}
% für die Stellen zu verwenden, die einen Link setzen sollen und \ac{Variablenname} für
% die Stelle, die den Anker setzen soll (ab der Stelle kann dann alternativ auch wieder
% \ac{Variablenname} für die Links verwendet werden).
\ALabel{b}{a}
\ALabel{k}{Regularien}

\begin{document}
\begin{center}
\underline{\textbf{\large{Protokoll zur Sitzung des Fachschaftsrates Mathematik}}}\\[40pt]
\end{center}

\noindent\textbf{\underline{Anwesend: n/12}} \\[15pt]

\ac{b}k

\noindent\textbf{\underline{Beginn: Uhr}} \\

\noindent\textbf{\underline{Tagesordnung}}
\begin{description}
\item[\acs{k}] % hier nicht der Anker, sondern der Link

\end{description}

sfdglgns \ac{b} \\ %versuch der Ausgabe
\ac{k} % hier der Anker

\end{document}
Zwar meldet LaTeX nach dem ersten Lauf noch immer "LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.", allerdings stimmen die Links in meinem Test trotzdem bereits nach dem ersten Lauf.

Es wäre aber in diesem Fall auch eine Datenbanklösung (siehe datatools) denkbar oder eine ganz einfache Lösung:
\documentclass[a4paper,10pt,headings=small]{scrartcl}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand*\newvariable[2]{%
\@namedef{var@#1}{#2}%
}
% \usevariable{NAME}
\DeclareRobustCommand*\variable{%
\@ifstar {\@usevariable\hypertarget}{\@usevariable\hyperlin k}%
}
\newcommand*{\usevariable}[1]{\@nameuse{var@#1}}
\newcommand*{\@usevariable}[2]{%
#1{var:#2}{\@nameuse{var@#2}}%
}
\makeatother

\setcounter{secnumdepth}{-1}

% Hier alle "Variablen" in der Form \newvariable{NAME}{WERT} definiert. Diese
% können später per \variable{NAME} und \variable*{NAME} verwendet
% werden. Dabei setzt \variable*{NAME} gleichzeitig ein Linkziel, während
% \variable{NAME} einen Link auf das Linkziel setzt. Mit \usevariable{NAME}
% kann eine Variable verwendet werden, ohne dass ein Linkziel oder ein Link
% gesetzt wird.
\newvariable{SollZahl}{12}% Variable muss vorhanden sein!
\newvariable{anwesend}{10}% Variable muss vorhanden sein!
\newvariable{StartZeit}{18:00}

\newvariable{PunktA}{Regularien}
\newvariable{PunktB}{Noch ein Thema}
\newvariable{PunktC}{Ein weiterer Punkt}


\begin{document}
\title{Protokoll zur Sitzung des Fachschaftsrates Mathematik}
\date{21. Juni 2013}
\maketitle
\begin{labeling}[]{Tagesordnung:}
\item[Anwesend:] \usevariable{anwesend}/\usevariable{SollZahl}
\item[Beginn:] \usevariable{Startzeit} Uhr
\item[Tagesordnung:]
\variable{PunktA}\\
\variable{PunktB}\\
\variable{PunktC}
\end{labeling}

\section{\variable*{PunktA}}
Hier steht etwas

\section{\variable*{PunktB}}
Hier steht auch etwas

\section{\variable*{PunktC}}
Und auch hier

\end{document}
Sowohl diese als auch die vorherigen Lösung benötigen also nur einen LaTeX-Lauf.

Man könnte diese Lösung auch noch ausbauen:
\documentclass[a4paper,10pt,headings=small]{scrartcl}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand*\newvariable[2]{%
\@namedef{var@#1}{#2}%
}
% \usevariable{NAME}
\DeclareRobustCommand*\variable{%
\@ifstar {\@usevariable\hypertarget}{\@usevariable\hyperlin k}%
}
\newcommand*{\usevariable}[1]{\@nameuse{var@#1}}
\newcommand*{\@usevariable}[2]{%
#1{var:#2}{\@nameuse{var@#2}}%
}
\makeatletter
\newcounter{topic}
\newcommand*{\newtopic}[1]{%
\stepcounter{topic}\newvariable{topic\Alph{topic}} {#1}%
}
\newcommand*{\listtopics}{%
\begingroup
\edef\endvalue{\the\value{topic}}%
\setcounter{topic}{0}%
\setlength{\parskip}{\z@}%
\setlength{\parindent}{\z@}%
\@whilenum \value{topic}<\endvalue \do{%
\stepcounter{topic}%
\variable{topic\Alph{topic}}\par
}%
\endgroup
\setcounter{topic}{0}%
}
\newcommand{\topic}{%
\stepcounter{topic}%
\section*{\variable*{topic\Alph{topic}}}%
}
\makeatother

\setcounter{secnumdepth}{-1}

% Hier alle "Variablen" in der Form \newvariable{NAME}{WERT} definiert. Diese
% können später per \variable{NAME} und \variable*{NAME} verwendet
% werden. Dabei setzt \variable*{NAME} gleichzeitig ein Linkziel, während
% \variable{NAME} einen Link auf das Linkziel setzt. Mit \usevariable{NAME}
% kann eine Variable verwendet werden, ohne dass ein Linkziel oder ein Link
% gesetzt wird.
\newvariable{SollZahl}{12}% Variable muss vorhanden sein!
\newvariable{anwesend}{10}% Variable muss vorhanden sein!
\newvariable{StartZeit}{18:00}

\newtopic{Regularien}
\newtopic{Noch ein Thema}
\newtopic{Ein weiterer Punkt}


\begin{document}
\title{Protokoll zur Sitzung des Fachschaftsrates Mathematik}
\date{21. Juni 2013}
\maketitle
\begin{labeling}[]{Tagesordnung:}
\item[Anwesend:] \usevariable{anwesend}/\usevariable{SollZahl}
\item[Beginn:] \usevariable{Startzeit} Uhr
\item[Tagesordnung:]
\listtopics
\end{labeling}

\topic
Hier steht etwas

\topic
Hier steht auch etwas

\topic
Und auch hier

\end{document}
Dann müssen die Leute nur noch darauf achten, dass Sie die Topics auch wirklich in der Reihenfolge aufführen, in der sie sie am Anfang definieren. Das ist der Preis für nur einen LaTeX-Lauf.

Wollte man das vermeiden, bräuchte man wieder zwei LaTeX-Läufe, könnte sich aber das ganze Gedöns sparen:

\documentclass[a4paper,10pt,headings=small]{scrartcl}

\usepackage[ngerman]{babel}% ngerman.sty wird nicht mehr gepflegt, deshalb babel
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\makeatletter
\newcommand*{\listtopics}{%
\begingroup
\setlength{\parskip}{\z@}%
\setlength{\parindent}{\z@}%
\renewcommand*{\l@section}[2]{##1\par}%
\setcounter{tocdepth}{0}%
\@starttoc{toc}%
\endgroup
}
\newcommand{\topic}{\section}
\makeatother

\setcounter{secnumdepth}{-1}

\begin{document}
\title{Protokoll zur Sitzung des Fachschaftsrates Mathematik}
\date{21. Juni 2013}
\maketitle
\begin{labeling}[]{Tagesordnung:}
\item[Anwesend:] 10/12
\item[Beginn:] 11:11 Uhr
\item[Tagesordnung:]
\listtopics
\end{labeling}

\topic{Regularien}
Hier steht etwas

\topic{Punkt B}
Hier steht auch etwas

\topic{Punkt C}
Und auch hier

\end{document}

u_fischer
21-05-2013, 11:04
Wenn man \@currentlabel (und damit einen internen Befehl von LaTeX) aber nicht wie in Deinem Beispiel selbst setzt, sondern wie im Beispiel des OP nur mit \label und \ref arbeitet, dann ist das sehr wohl auf einen referenzierbaren Zähler angewiesen. Deshalb verwendest Du ja auch nicht \label/\ref, sondern ein selbst definiertes \mylabel und \ref.

Ich verwende \mylabel nicht, weil \label selbst nicht ausreicht, sondern weil die korrektere Umdefinition von \item (so dass man \item[Blub]\label{k} verwenden kann) mir zu aufwendig war - die ganze Idee mit \label/\ref finde ich sowieso etwas suspekt.

Deine Betonung von referenzierbaren Zählern ist irreführend: \label braucht ein Text in \@currentlabel (der halt auch von einem \thezaehler kommen kann). Und es ist auch irreführend, den Eindruck zu erwecken, es wäre schwer, weitere Objekte zu erzeugen, die einen Text in \@currentlabel speichern und damit referenzierbar werden.

ctansearch
21-05-2013, 18:34
So würde es gehen und fordert von den Teilnehmern nur, \Atopic \Btopic ... einzugeben und den Text zu schreiben. Die jeweiliige Vorlage mit den Topics wird ja von Dir erstellt, dazu musst Du nur das \newcommand\tagesordnung bearbeiten, und eventuell die Zahl der Topics anpassen.


\documentclass[a4paper,10pt]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\newcounter{tops}

\newcommand{\atopic}{}
\newcommand{\btopic}{}
\newcommand{\ctopic}{}
\newcommand{\dtopic}{}

\newcommand{\Atopic}{\par TOP \thetops \hspace{10pt} \textbf{\atopic} \stepcounter{tops}\par}
\newcommand{\Btopic}{\par TOP \thetops \hspace{10pt} \textbf{\btopic} \stepcounter{tops}\par}
\newcommand{\Ctopic}{\par TOP \thetops \hspace{10pt} \textbf{\ctopic} \stepcounter{tops}\par}
\newcommand{\Dtopic}{\par TOP \thetops \hspace{10pt} \textbf{\dtopic} \stepcounter{tops}\par}


\newcommand{\tagesordnung}{
\section{Tagesordnung}%
\parindent=0pt
\renewcommand{\atopic}{Vereinbarungen}
\renewcommand{\btopic}{Termine}
\renewcommand{\ctopic}{Sachstand}
\renewcommand{\dtopic}{Beschlüsse}
\Atopic
\Btopic
\Ctopic
\Dtopic
}
\newcommand{\protokoll}{\newpage \section{Protokoll}\setcounter{tops}{0}}

\begin{document}
\tagesordnung
\protokoll
\Atopic
Die Vereinbarungen sind wie folgt getroffen worden:
\Btopic
Termine für die nächsten Tage:
\Ctopic
Das ist der Stand der Dinge
\Dtopic
Beschlüsse wurden wie folgt gefasst:
\end{document}

klops
22-05-2013, 09:28
Ich verwende \mylabel nicht, weil \label selbst nicht ausreicht, sondern weil die korrektere Umdefinition von \item (so dass man \item[Blub]\label{k} verwenden kann) mir zu aufwendig war - die ganze Idee mit \label/\ref finde ich sowieso etwas suspekt.
Eine Umdefinierung von \item wäre ja auch gar nicht ausreichend gewesen, weil der OP den \label/\ref-Mechanismus in seinem Beispiel auch für ein schlichtes "b\label{a}" ohne "\item" vor dem "b" verwenden wollte.


die ganze Idee mit \label/\ref finde ich sowieso etwas suspekt.
Was meinst Du wohl, warum ich mich erst gar nicht erst damit aufgehalten hatte, sondern einen anderen Weg beschrieben hatte?


IDeine Betonung von referenzierbaren Zählern ist irreführend:
OK, Ok, ok, damit Du hoffentlich Deinen Frieden hast und wieder dazu zurückkehren kannst, Leuten funktionierende Lösungen zu präsentieren, statt Dich über kleine Ungenaugkeiten aufzuregen, ändere ich meinen Satz.