Produktfunktionen "automatisch" nummerieren Thema ist als GELÖST markiert

Schriftbild, Absätze und Auflistungen einstellen


Gast

Produktfunktionen "automatisch" nummerieren

Beitrag von Gast »

Hallo zusammen,

vielleicht ist es ganz simpel und sich sehe den Wald vor lauter Bäumen nicht, aber:
Ich schreibe eine Funktionsübersicht und möchte verschiedene Funktionen nummerieren. Bisher mache ich das manuell und wenn sich ein Fehler einschleicht muss alles von vorn geändert werden - ist also recht aufwändig.

Hier ein Minimalbeispiel zu meinem Vorhaben:
\documentclass{scrartcl}
\usepackage{blindtext} 


\begin{document}

\section{Allgemeine Funktionen}
\subsection{/F0010/ Ich bin eine Funktion}
\label{subsec_F0010}
\blindtext

\subsubsection{/F0011/ ich gehöre zu F0010}
\label{subsubsec_F0011}
\blindtext

\subsubsection{/F0012/ ich gehöre zu F0010}
\label{subsubsec_F0012}
\blindtext

\subsection{/F0020/ Ich kann mehr}
\label{subsec_F0020}
\blindtext


\section{Produktbezogene Funktionen}
\subsection{/F1010/ Ich kann noch mehr}
\label{subsec_F1010}
\blindtext

\subsection{/F1020/ Ich kann noch vieeel mehr}
\label{subsec_F1020}
\blindtext

\end{document}

Daher die Frage:
Gibt es die Möglichkeit die Nummern /F010/ ... automatisch durch Latex erstellen zu lassen? Ich habe dabei eine gewisse Hierarchie vorgegeben bekommen. Mit zunehmendem Abschnitt steigt die erste Stelle. Neue Funktionen steigen in 10er-Schritten an und Unterfunktionen sind dann die einstelligen...

Habt ihr hier eine Idee? Ich habe knapp 40 Funktionen die ich beschreiben muss/möchte... EIne automatische Erstellung wäre ein Segen... :)

Vielen Dank bereits jetzt.


Viele Grüße

Marius

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Gibt es die Möglichkeit die Nummern /F010/ ... automatisch durch Latex erstellen zu lassen?
Ja, natürlich -- sofern es eine geeignete Formel gibt. In deinem Beispiel:
\makeatletter
\newcommand\functionnumber{/F\the\numexpr\c@section-1\relax\ifnum\c@section<10 0\fi\arabic{subsection}\arabic{subsubsection}/}
\makeatother

Gast

Beitrag von Gast »

Hallo Ulrike,

ich bin total begeistert. Dank für deine schnelle Hilfe. Ich habe den Abschnitt gleich in mein Minimalbeispiel eingebaut - falls jemand Interesse hat.
\documentclass{scrartcl}
\usepackage{blindtext}


\makeatletter
\newcommand\functionnumber{/F\the\numexpr\c@section-1\relax\ifnum\c@section<10 0\fi\arabic{subsection}\arabic{subsubsection}/}
\makeatother


\begin{document}

\section{Allgemeine Funktionen}
\subsection{\functionnumber  Ich bin eine Funktion}
\label{subsec_F0010}
\blindtext

\subsubsection{\functionnumber  ich gehöre zu F0010}
\label{subsubsec_F0011}
\blindtext

\subsubsection{\functionnumber  ich gehöre zu F0010}
\label{subsubsec_F0012}
\blindtext

\subsection{\functionnumber  Ich kann mehr}
\label{subsec_F0020}
\blindtext


\section{Produktbezogene Funktionen}
\subsection{\functionnumber  Ich kann noch mehr}
\label{subsec_F1010}
\blindtext

\subsection{\functionnumber  Ich kann noch vieeel mehr}
\label{subsec_F1020}
\blindtext

\end{document}
Ich habe jetzt jedoch noch ein paar Rückfragen:
- Bei deiner Lösung eben hast du die Kapitelüberschriften verwendet. Zugegeben, bei mir waren die mehr Mittel zum Zweck - damit ich überhaupt einigermaßen Struktur einbringen konnte. Kann man evtl. auch ganz ohne die Überschriften arbeiten? Vielleicht soetwas wie zwei Befehle - Einen für die Funktion und einen anderen für die Unterfunktion... Bei mir scheitert es gerade an dem Punkt bei der Realisierung...

Die andere Frage bezieht sich auf die Leerstelle nach der Nummerierung. Irgendwie bekomme ich keine Leerstelle mehr eingefügt in den Text.

Dritte und letzte Frage: In meinem Beispiel oben hatte ich verschiedene Labels eingefügt. Gibt es eine Möglichkeit die Funktionen im Text zu zitieren, so dass im Text dann sowas wie "...wie bereits in Funktion /F0110/ beschrieben wurde." erscheint? Ich habe einwenig mit "label" herumprobiert, bin aber aktuell noch auf der Suche nach einer Lösung.

Ich muss leider gestehen, dass ich mit Latex noch nicht so viel programmiert habe. Habe aber Interesse mich in die Thematik einzuarbeiten. Gibt es hier ein HowTo oder so etwas, das mir den Einstieg dahingehend erleichtert?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Gast

Beitrag von Gast »

Hallo Johannes,

danke für die beiden Links. Hast du auch noch speziell etwas zur Programmierung? Genauer: Definition von Befehlen und der Ausgabe?

Ich habe jetzt nochmal probiert, ob ich die Leerstelle und das Label zur Referenzierung irgendwie einbauen/selber programmieren kann. Leider stoße ich nach \newcommand\neuerBefehl an meine Grenzen... Falls jemand mir zeigt wie ich so eine Funktion erstellen kann, wäre mir bestimmt später geholfen.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Das Problem mit dem Leerzeichen kannst du umgehen, in dem du das Ende des Befehls mit {} markierst, also einfach \functionnumber{} schreibst. Dann wird das darauf folgende Leerzeichen wieder normal ausgegeben.

Gruß
Elke

Gast

Beitrag von Gast »

Achwas wie cool ist das denn bitte 8) danke Elke

Ich nochmal

Beitrag von Ich nochmal »

Hallo Leute,

was in meinem Minimalbeispiel und der Lösung von Ulrike noch prima geklappt hat (Danke an dieser Stelle nochmal für deine Hilfe!), funktioniert in meinem realen Dokument aufgrund der Hierarchie leider gar nicht mehr.

Ich bin jetzt gerade wie wild damit beschäftigt eine Lösung zur Programmierung der Funktionen zu finden... Ich habe dabei nur die Befürchtung, dass es nicht "mal eben so" programmiert ist. Gibt es vielleicht hier bereits ein Package, was ich nutzen kann? Bisher habe ich noch nichts gefunden - leider. Falls es soetwas nich nicht geben sollte, würde ich euch den Code gerne zur Verfügung stellen (vielleicht fürs Wiki?).

Ich wäre euch für eure Hilfe wirklich sehr sehr dankbar.


Viele Grüße




Hier mal meine Gedanken:

Die Nummerierung sollte im Dokument so aussehen:
/F12.3/ Funktionsname
Hierbei ist:
Stelle F - Funktionsklasse, kann frei vergeben werden, hier Beispiel F
Stelle 1 - Gruppenfunktion in 1er Schritten aufzählend, Start bei 0
Stelle 2 - Einzelfunktion in 10er Schritten aufzählend, Start bei 10
Stelle 3 - Unterfunktion in 1er Schritten, Start bei 1
\documentclass{scrartcl}


%Befehl für Funktionsklasse
\newcommand{\fkclass}
\newcommand{\reffkclass}

%Befehl für Gruppenfunktion
\newcommand{\fkgroup}
\newcommand{\reffkgroup}

%Befehl für Einzelfunktion
\newcommand{\fksingle}
\newcommand{\reffksingle}

%Befehl für Teilfunktion
\newcommand{\fkpart}
\newcommand{\reffkpart}


\begin{document}

\section{Beschreibung von Produktfunktionen}
\subsection{Allgemeine Funktionen}	% Eintrag im Inhaltsverzeichnis und Überschrift des Abschnitts
\fkclass{A}{Allgemeine Funktionen}	% Es wird ein Buchstabe und eine Beschreibung
																		% der Funktionsklasse zugeordnet
																		
\fkgroup{Group1}{Gruppenvorgang 1 von Klasse A}
Vielleicht eine Beschreibung. Nummer ist /A100/

\fksingle{Single11}{Einzelfunktion der Gruppenfunktion A1}
Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben. Ich sollte Nummer /A101/ haben.

\fkpart{Part111}{Ich bin eine Teilfunktion von obiger Funktion}
Und eine Unterfunktion mit der Nummer /A101.1/

\fkpart{Part112}{Ich bin eine Teilfunktion von obiger Funktion}
Und eine Unterfunktion mit der Nummer /A101.2/

\fksingle{Single12}{Weitere Einzelfunktion der Gruppenfunktion A1}
Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben. Ich sollte die Nummer /A102/ haben.


\fkgroup{Group2}}{Gruppenvorgang 2 von Klasse A}
Vielleicht eine Beschreibung. Nummer ist /A200/

\fksingle{Single22}{Einzelfunktion der Gruppenfunktion A2}
Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben.  Ich sollte die Nummer /A201/ haben.

Ausgabe möglicher Referenzierungen...
\reffkclass{A}					%Referenzierung der Funktionsklasse
\reffkgroup{Group1}			%Referenzierung der Funktionsgruppe
\reffksingle{Single11}	%Referenzierung der Einzelfunktion
\reffkpart{Part111}			%Referenzierung der Teilfunktion



\subsection{Funktionale Anforderungen}
\fkclass{F}{Funktionale Anforderungen}
																		
\fkgroup{Gruppenvorgang von Klasse F}
Wieder eine Beschreibung... Nummer: /F100/

\end{document}

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Kannst du vielleicht in wenigen Worten den Anwendungsfall erläutern? Im moment habe ich überhaupt keine Vorstelleung, worum es hier geht.

Sind das mathematische Funktionen? Funktionen eines Computerprogramms? ...
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\documentclass{scrartcl}


%Befehl für Funktionsklasse
\newcommand{\fkclass}[2]{\def\fkclassname{#1}\def\fkclassdescription{#2}\setcounter{fkgroupcounter}{0}}
%\newcommand{\reffkclass}

%Befehl für Gruppenfunktion
\newcounter{fkgroupcounter}
\newcounter{fksinglecounter}[fkgroupcounter]
\newcounter{fkpartcounter}[fksinglecounter]
\makeatletter
\renewcommand\thefkgroupcounter{%
   /\fkclassname
   \the\c@fkgroupcounter\relax\ifnum\c@fkgroupcounter<10 0\fi
   \arabic{fksinglecounter}/}
   
\let\thefksinglecounter\thefkgroupcounter


\renewcommand\thefkpartcounter{%
   /\fkclassname
   \the\c@fkgroupcounter\relax\ifnum\c@fkgroupcounter<10 0\fi
   \arabic{fksinglecounter}.\arabic{fkpartcounter}/}


\newcommand{\fkgroup}[2]{\refstepcounter{fkgroupcounter}%
 \thefkgroupcounter~#2\label{#1}}


%Befehl für Einzelfunktion
\newcommand{\fksingle}[2]{\refstepcounter{fksinglecounter}%
 \thefksinglecounter~#2\label{#1}}


%Befehl für Teilfunktion
\newcommand{\fkpart}[2]{\refstepcounter{fkpartcounter}%
 \thefkpartcounter~#2\label{#1}}



\begin{document}

\section{Beschreibung von Produktfunktionen}
\subsection{Allgemeine Funktionen}   % Eintrag im Inhaltsverzeichnis und Überschrift des Abschnitts
\fkclass{A}{Allgemeine Funktionen}   % Es wird ein Buchstabe und eine Beschreibung
                                                       % der Funktionsklasse zugeordnet

\fkgroup{Group1}{Gruppenvorgang 1 von Klasse A}
 Vielleicht eine Beschreibung. Nummer ist /A100/

\fksingle{Single11}{Einzelfunktion der Gruppenfunktion A1}
 Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben. Ich sollte Nummer /A101/ haben.

\fkpart{Part111}{Ich bin eine Teilfunktion von obiger Funktion}
 Und eine Unterfunktion mit der Nummer /A101.1/

\fkpart{Part112}{Ich bin eine Teilfunktion von obiger Funktion}
 Und eine Unterfunktion mit der Nummer /A101.2/

\fksingle{Single12}{Weitere Einzelfunktion der Gruppenfunktion A1}
 Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben. Ich sollte die Nummer /A102/ haben.


\fkgroup{Group2}{Gruppenvorgang 2 von Klasse A}
 Vielleicht eine Beschreibung. Nummer ist /A200/

\fksingle{Single22}{Einzelfunktion der Gruppenfunktion A2}
 Dies ist die Beschreibung zum Funktionsumfang der Einzelfunktion. Es wird die Nummer und der Name ausgegeben.  Ich sollte die Nummer /A201/ haben.

 Ausgabe möglicher Referenzierungen...
%\reffkclass{A}               %Referenzierung der Funktionsklasse
%\reffkgroup{Group1}         %Referenzierung der Funktionsgruppe
%\reffksingle{Single11}   %Referenzierung der Einzelfunktion
%\reffkpart{Part111}         %Referenzierung der Teilfunktion

\ref{Group1}, \ref{Single11}, \ref{Part111}


\subsection{Funktionale Anforderungen}
\fkclass{F}{Funktionale Anforderungen}

\fkgroup{Gruppenvorgang von Klasse F}
 Wieder eine Beschreibung... Nummer: /F100/

\end{document}

Für die Referenzen habe ich jetzt keine Zeit. Das sollte man wahrscheinlich mit dem zref-Paket machen. Und ob die Sache mit den Zehnerschritten begriffen habe, weiß ich auch nicht.[/code]

Antworten