Seite 1 von 1

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

Verfasst: So 5. Sep 2010, 11:50
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?

Verfasst: So 5. Sep 2010, 12:06
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

Verfasst: So 5. Sep 2010, 12:14
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.

Verfasst: So 5. Sep 2010, 12:32
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

Verfasst: So 5. Sep 2010, 14:50
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! :)

Verfasst: Mo 6. Sep 2010, 07:21
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.