Wie definiere ich meine eigene Nummerierung?

Wie definiere ich meine eigene Nummerierung?

Ich möchte eine eigene Nummerierung und deren Darstellung definieren.

Zum Beispiel,

Heute habe ich David (P1) auf dem Parkplatz getroffen. David war freundlich. Plötzlich fällt mir ein, dass er eine Freundin von mir war, Susan (P2). ...

Wenn ich den Text bearbeite, indem ich hinzufüge

Heute habe ich David (P1) auf dem Parkplatz getroffen. David war freundlich.David ist der Vater von John (P2). Plötzlich fällt mir ein, dass er ein Freund von mir war, Susan (P3). ...

Ich gehe davon aus, dass sich die Zahlen automatisch ändern.

Antwort1

Vielleicht so etwas?

\documentclass{article}
\newcounter{numerations}
\newcommand\nlabel[1]{%
  \refstepcounter{numerations}%
  \expandafter\xdef\csname REF#1\endcsname{\thenumerations}%
  \expandafter\xdef\csname NUMERATIONS\thenumerations\endcsname{#1}%
  #1 (P\thenumerations)%
}
\newcommand\nref[1]{#1 (P\csname REF#1\endcsname)}
\newcommand\numeration[1]{\csname NUMERATIONS#1\endcsname{} (P#1)}
\begin{document}
Today I have met \nlabel{David} in the parking.  David was friendly.
\textit{David is the father of \nlabel{John}.} Suddenly I remember he was
a friend of mine \nlabel{Susan}...

I can recall the label for \nref{John}, \nref{David}, and or \nref{Susan}.

Or I can invoke them by number: \numeration{2}, \numeration{1}, and or 
\numeration{3}.

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Version mit \nameref- funktionierender (falls erforderlich) und automatischer Beschriftung durch Verwendung des optionalen Arguments, das sich auf den Namen der Person bezieht, während ein zusätzlicher \labelBefehlnachDas \newpersonsMakro bezieht sich auf die Nummer der Person (z. B. P1 usw.).

\documentclass{article}


\usepackage{xparse}

\newcounter{person}
\renewcommand{\theperson}{P\arabic{person}}
\makeatletter
\NewDocumentCommand{\newperson}{O{#2}m}{%
  \protected@edef\@currentlabel{#1}%
  % If hyperref is not loaded, \protected@edef\currentlabelname does no harm here
  \protected@edef\@currentlabelname{#1}% for nameref. 
  \label{#2}%
  \refstepcounter{person}%
  #1~(\theperson)%
}
\makeatother

\usepackage{hyperref}

\begin{document}
Today I have met \newperson{David} in the parking.  David was friendly.
\textit{\ref{David} is the father of \ref{John}.} Suddenly I remember he was
a friend of mine \newperson{Susan}\label{susansnumber}...

I can recall the label for \newperson{John}, \ref{David}, and or \nameref{Susan} or call them by a reference to the number with \ref{susansnumber}. 

\end{document}

Bildbeschreibung hier eingeben

Antwort3

Das folgende Beispiel gibt \newperson{<name>}den Namen gefolgt von einem erhöhten Zähler in der Form an (P<num>):

Bildbeschreibung hier eingeben

\documentclass{article}

\newcounter{person}
\newcommand{\newperson}[1]{%
  \refstepcounter{person}%
  #1~(P\theperson)}

\begin{document}

Today I have met David~(P1) in the parking. David was friendly. 
David is the father of John~(P2). Suddenly I remember he was a friend of mine, Susan~(P3).

Today I have met \newperson{David} in the parking. David was friendly. 
David is the father of \newperson{John}. Suddenly I remember he was a friend of mine, \newperson{Susan}.

\end{document}

Dies könnte erweitert werden, um ein -System zu verwenden \label, \refdas es ermöglicht, aus Konsistenzgründen auf bereits benannte (nicht neue) Personen zu verweisen. Hier ist eine solche Implementierung, die bereitstellt, \newperson[<tag>]{<name>}auf die mit verwiesen werden kann \refperson{<tag>}. Wenn kein <tag>angegeben ist, <name>wird verwendet:

Bildbeschreibung hier eingeben

\documentclass{article}

\newcounter{person}
\makeatletter
\newcommand{\newperson}[2][]{%
  \refstepcounter{person}% New person added
  \def\@currentlabel{#2}% Update label
  \@currentlabel~(P\theperson)% Set person
  % https://tex.stackexchange.com/a/53091/5764
  \if\relax\detokenize{#1}\relax
    \label{#2}%
  \else
    \label{#1}%
  \fi
  }
\makeatother
\newcommand{\refperson}[1]{\ref{#1}}%

\begin{document}

Today I have met Davidofilofsky~(P1) in the parking. Davidofilofsky was friendly. 
Davidofilofsky is the father of John~(P2). Suddenly I remember he was a friend of mine, Susan~(P3).

Today I have met \newperson[david]{Davidofilofsky} in the parking. \refperson{david} was friendly. 
\refperson{david} is the father of \newperson{John}. Suddenly I remember he was a friend of mine, \newperson{Susan}.

\end{document}

verwandte Informationen