"Gib einen Punkt aus, wenn noch kein Punkt vorher."

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


talueng
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Mo 31. Mai 2010, 13:32

"Gib einen Punkt aus, wenn noch kein Punkt vorher."

Beitrag von talueng »

In diesem Beitrag wurde ein eigener Befehl entwickelt, der je nach Parameter entweder S. seite, S. seite f., S. seite ff., bzw. S. von-bis ausgibt. Wenn ich diesen Befehl jetzt in einem anderen Befehl verwenden will, weiß ich ex ante nicht, was der Befehl ausgibt. Zum Beispiel weiß ich nicht, ob durch das "f." bzw. "ff." bereits ein Punkt ausgegeben wurde.

Deshalb die Frage: Existiert irgendein LaTeX-Befehl, der einen Punkt (".") nur dann ausgibt, wenn nicht vorher schon ein Punkt ausgegeben wurde?

Mechanicus
Forum-Guru
Forum-Guru
Beiträge: 322
Registriert: Mi 8. Okt 2008, 18:41
Wohnort: Hamburg

Beitrag von Mechanicus »

Hi,

erstelle bitte ein Minimalbeispiel, dass das Problem zeigt. Ich persönlich verstehe nicht, was du mit den Punkten meinst bzw. wo der herkommen soll.

Gruß
Marco
Personalführung ist die Kunst der Vorgesetzten den Untergebenen so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet.

talueng
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Mo 31. Mai 2010, 13:32

Beitrag von talueng »

Also, diese Funktion wird aufgerufen mit \ct[seiten]{key} und gibt dann, je nachdem, welchen Wert der optionale Parameter "seiten" hat, folgendes aus:

S. [seiten] -- wenn [seiten] nur ein einzelner numerischer Wert ist.
S. [seiten] f. -- wenn [seiten] sich auf zwei aufeinanderfolgende Seiten bezieht.
S. [seiten] ff. -- wenn [seiten] sich auf 3-5 aufeinanderfolgende Seiten bezieht.
S. [von-bis] -- wenn [seiten] sich auf mehr als 5 aufeinanderfolgende Seiten bezieht.

Mit dieser Funktion möchte ich jetzt eine neue Funktion bauen, die automatisch eine Fußnote setzt, außerdem "Vgl." hinzufügt und am Ende einen Punkt, d.h.:
\newcommand{\Cp}[2][]{%
  \footnote{Vgl. \ct[#1]{#2}.}%
}
Das Problem dabei ist der Punkt am Ende. Wenn bereits die Funktion \ct[seiten]{key} einen Punkt ausgibt (wegen dem "f." bzw. "ff.") hätte ich nachher zwei Punkte am Ende. Lasse ich umgekehrt den Punkt weg, würde ein Punkt fehlen, sofern die Funktion kein "f."/"ff." ausgibt, sondern nur eine Seitenzahl.

Mechanicus
Forum-Guru
Forum-Guru
Beiträge: 322
Registriert: Mi 8. Okt 2008, 18:41
Wohnort: Hamburg

Beitrag von Mechanicus »

Hi,

das ist kein Minimalbeispiel.

Das Problem dabei ist der Punkt am Ende. Wenn bereits die Funktion \ct[seiten]{key} einen Punkt ausgibt (wegen dem "f." bzw. "ff.") hätte ich nachher zwei Punkte am Ende. [/quote]
und was ist das Problem daran? Wenn du eine Fußnote mit einem Punkt abschließen willst, dann musst du zwei Punkte haben. Denn der erste Punkt bezieht sich doch auf ff.

Möglichkeit:
\documentclass{article}
\usepackage{xspace}
\newcounter{testA}
\makeatletter
\newif\ifpunctation
\punctationfalse
\newcommand*\ct[2][]{%
  \cite{#2}\ifx\relax#1\relax\punctationtrue\else, S.\,%
  \expandafter\Seite@i#1--\@nil\fi}
\def\Seite@i#1-#2-#3\@nil{%
  \ifx\relax#2\relax %    ohne -
    #1\punctationtrue\else
    \setcounter{testA}{#2}%
    \addtocounter{testA}{-#1}%
    \ifnum \value{testA}=1
       \mbox{#1\,f.\xspace}\else\ifnum \value{testA}<6
         \mbox{#1\,ff.\xspace}\else#1--#2\punctationtrue\fi\fi\fi}
\makeatother 
\newcommand{\Cf}[1]{%
  \footnote{Vgl. \cite{#1}}%
}

\newcommand{\Cp}[2][]{%
  \footnote{Vgl. \ct[#1]{#2}\ifpunctation .\punctationfalse \fi}%
}
 
\begin{document}
Text \Cp{foo} \\%
Text \Cp[23]{foo} \\%
Text \Cp[23-24]{foo} \\%
Text \Cp[23-27]{foo} \\%
Text \Cp[24-500]{foo} \\
Text \Cp{foo} \\%
Text \Cp[23]{foo} \\%
Text \Cp[23-24]{foo} \\%
Text \Cp[23-27]{foo} \\%
Text \Cp[24-500]{foo} 
\begin{thebibliography}{xxx}
\bibitem{foo}Foo, bar, baz 2010
\end{thebibliography}

\end{document}
Gruß
Marco
Personalführung ist die Kunst der Vorgesetzten den Untergebenen so schnell über den Tisch zu ziehen, dass er die Reibungshitze als Nestwärme empfindet.

talueng
Forum-Anfänger
Forum-Anfänger
Beiträge: 39
Registriert: Mo 31. Mai 2010, 13:32

Beitrag von talueng »

Mechanicus hat geschrieben:das ist kein Minimalbeispiel.
Sorry, aber da ich noch keine Lösung zu meinem Problem hatte, konnte ich auch kein Minimalbeispiel geben. Geht in diesem Fall ja nicht um eine Fehlermeldung, sondern um eine Lösung, die ich suche.
Mechanicus hat geschrieben:und was ist das Problem daran? Wenn du eine Fußnote mit einem Punkt abschließen willst, dann musst du zwei Punkte haben. Denn der erste Punkt bezieht sich doch auf ff.
Nein, typografisch korrekt ist es, keinen zweiten Punkt zu setzen.
Mechanicus hat geschrieben:Möglichkeit:
Danke, funktioniert. Sehr schön! :)

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

talueng hat geschrieben:
Mechanicus hat geschrieben:das ist kein Minimalbeispiel.
Sorry, aber da ich noch keine Lösung zu meinem Problem hatte, konnte ich auch kein Minimalbeispiel geben.
Wie kannst Du so etwas schreiben, wenn du den Link, den man Dir gegeben hat, beachtet und die entsprechenden Seiten gründlich gelesen hast? Du kannst doch problemlos ein vollständiges Minimalbeispiel (← dies ist ein geprüfter Link mit relevanten Informationen!) machen, in dem genau das von Dir beschriebene Problem mit dem Aufeinandertreffen von zwei Punkten gezeigt wird. Idealer Weise hättest Du genau an der Stelle dann wahlweise als Teil des Textes der Minimalbeispiels oder als Kommentar noch angemerkt, dass eben an dieser Stelle zwei Punkte erscheinen, aber nur einer stehen soll.

Antworten