PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Literaturverzeichnis durch IF-Abfrage erstellen



s.doubleu
29-07-2009, 08:14
Hallo ...

ich möchte gern durch eine IF-Abfrage bestimmen, ob ein Literaturverzeichnis erstellt wird oder eben nicht. Ich denke mal, dass man das durch die Überprüfung irgend eines internen verwendeten Counters erreichen kann, der erstellt oder benötigt wird, sobald man den \cite-Befehl nutzt.
Allerdings weiß ich nicht, wie ich das realisieren kann, da ich noch keine wirklichen Erfahrungen in der LaTex-Programmierung besitze.
Es soll nach dem Prinzip funktionieren:
IF \cite-Befehl verwendet THEN erstelle


\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{bib/references}
\bibliographystyle{unsrtdin}


Danke für eure Ideen, Hilfe und Verweise.

mechanicus
29-07-2009, 13:59
Hallo,

das ist Standard. Er gibt dir nur ein Literaturverzeichnis aus, wenn du auch auf Einträge referenzierst.

Gruß
Marco

u_fischer
29-07-2009, 14:14
Nein, LaTeX und bibtex warnen zwar beide, wenn es keine Einträge gibt, die bbl enthält aber dennoch eine thebibliography-Umgebung, die dann auch einen Titel druckt. Mit biblatex und \bibbysection oder \bibbysegment müsste es aber gehen.

mechanicus
29-07-2009, 14:25
die dann auch einen Titel druckt.

Das ist klar. Aber wer bindet ein Literaturverzeichnis ein, wenn es nicht gedruckt bzw. ausgegeben werden soll :p Daher verstehe ich die Frage anders.

Gruß
Marco

s.doubleu
30-07-2009, 08:47
Hallo ...
ich habe jetzt einfach mal folgendes probiert


\iftrue\cite
\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{bib/references}
\bibliographystyle{unsrtdin}
\fi

aber wie nicht anders zu erwarten geht das natürlich nicht.
Wie müsste es denn richtig geschieben werden, damit es so funktioniert ... sobald ich einen \cite{} Befehl im Text benutze, dass dann automatisch der Eintrag


\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{bib/references}
\bibliographystyle{unsrtdin}

für das Literaturverzeichnis im Dokument erstellt bzw. geschriebe wird?

u_fischer
30-07-2009, 09:26
Da gibt es nichts, du müsstest \cite umdefinieren oder einen eigenen \cite-Befehl definieren, so dass es einen Schalter setzt. Oder du gewöhnst dir an, beim ersten \cite-Befehl irgendeinen Schalter auf true zu setzen. Oder wie bereits angemerkt: Benutze biblatex.

mechanicus
30-07-2009, 09:33
Hallo,

Ulrike ich muss mich wiederholen.
s.doubleu schreibt:

sobald ich einen \cite{} Befehl im Text benutze, dass dann automatisch der Eintrag für das Literaturverzeichnis im Dokument erstellt bzw. geschrieben wird?
Und das ist Standard.

Gruß
Marco

u_fischer
30-07-2009, 09:58
Marco, du magst es für unsinning halten, ein Literaturverzeichnis einzubinden, wenn es gar nicht gedruckt werden soll. Aber genau danach ist hier gefragt.

Der/die OP möchte den Code
\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{bib/references}
\bibliographystyle{unsrtdin}
automatisch hinzufügen, wenn ein \cite-Befehl exisitiert, das Verzeichnis also nicht leer ist.

Bei einem einzelnen Dokument würde ich mir sicher nicht die Arbeit machen, aber vielleicht hat er/sie ja eine größere Zahl ähnlicher Artikel, bei denen nicht klar ist, ob sie einen \cite-Befehl enthalten werden.

s.doubleu
30-07-2009, 10:20
genau so ist habe ich das gemeint und wollte gerade die gleiche Erklärung (nur mit anderen Worten) darlegen. Es soll in so was wie einer Vorlage bzw. template eingefügt werden.
@ulrike kannst du mir den Hinweis mit biblatex noch näher erläutern?
meinst du das so? (aber ich denke mal sicher nicht)


\iftrue\biblatex
\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{bib/references}
\bibliographystyle{unsrtdin}
\fi

Ich gebe zu, ich bin darin noch sehr unwissend.

Danke ertmal für die Hilfe und Hinweise,
Stefan

mechanicus
30-07-2009, 10:32
Hallo,

Ulrike: Mit dem Argument kann ich leben ;)
dann so:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{lit.bib}
@book{test,
title={Buch},
author={Vorname Nachname},
year={1900},
}
\end{filecontents*}
\newcommand{\citeda}{nein}
\IfFileExists{\jobname.aux}{%
\immediate\write18{if grep -q citation *.aux ; then touch citeda.txt; fi}%
}{}
\IfFileExists{citeda.txt}
{\def\citeda{ja}}{}
\usepackage{ifthen}
\begin{document}
Text %\cite{test}
\ifthenelse{\equal{\citeda}{ja}}{%
\bibliography{lit}
\bibliographystyle{unsrtdin}
}{}

\end{document}

kompilieren mit:
pdflatex --shell-escape test.tex

Der Code kann sicherlich noch optimiert werden und ist unter Linux getestet.

Gruß
Marco

mechanicus
30-07-2009, 11:40
Hallo,

alternative (vielleicht hilft es anderen als Denkanstoß):

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{lit.bib}
@book{test1,
title={Buch},
author={Vorname Nachname},
year={1900},
}
@book{test2,
title={Buch},
author={Vornamen Nachnamen},
year={1900},
}
\end{filecontents*}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\newboolean{citeda}\setboolean{citeda}{false}
\let\CiteAlt\cite
\makeatletter
\def\cite{%
\@ifnextchar[%]
{\@CiteAlt}{\@@CiteAlt}
}
\def\@CiteAlt[#1]#2{\CiteAlt[#1]{#2}\setboolean{citeda}{true}}
\def\@@CiteAlt#1{\CiteAlt{#1}\setboolean{citeda}{t rue}}
\makeatother
\begin{document}
Text \cite[Seite]{test1} und \cite{test2}
\ifthenelse{ \boolean{citeda} }{%
\bibliography{lit}
\bibliographystyle{unsrtdin}%
}{nichts}
\end{document}

Gruß
Marco

s.doubleu
30-07-2009, 14:00
@ Marco
Erstmal danke für deine Hilfe. Das ist ja dann doch aufwendiger als ich dachte. Da Blick ich ja schon gar nicht mehr durch, um es zu verstehen bzw. wenn ich mal was ändern will.

Ich habe es jetzt so realisiert, auch wenn es nicht das ist was ich wollte und auch nicht so komfortabel ist ... aber es erfüllt seinen Zweck.


\def\myref{0} % LITERATURVERZEICHNIS erstellen 0=nein, 1=ja
\def\mypathref{bib/references} % Pfad zur Literaturbibliothek

\ifnum\myref=1
\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{\mypathref}
\bibliographystyle{unsrtdin}
\fi

Man könnte das jetzt sicher noch auf diese Weise noch bei der Zitierweise (Verweisdarstellung) und der Formatierung im Lit.verz. erweitern ...

Gibt es nicht einen fest definierten counter für die verwendeten Verweise bzw. für die Häufigkeit von der Verwendung von \cite? Kann ich fast nicht glauben. Dann könnte man das doch nach dem Prinzip realisieren.


\ifnum\interner_counter_für_cite>1
\addcontentsline{toc}{chapter}{Literaturverzeichni s}
\bibliography{\mypathref}
\bibliographystyle{unsrtdin}
\fi

Warum kann die Lösung zu Abwechslung mal nicht so einfach aussehen? :(

mechanicus
30-07-2009, 17:53
Hallo,

das ist ja das, was Ulrike im Beitrag 6 geschrieben hat. Du hast dir einen Schalter gebaut, den du manuell aktivieren musst.

Mein Vorgehen sollte auch erstmal als Denkanstoß dienen. Vielleicht gibt es noch eine andere Alternative. Allerdings erfüllt die genau das, was du haben wolltest.
Was verstehst du an dem Code nicht? Vielleicht können wir das ja beheben.
Oder willst du jetzt deine Variante nehmen?

Das es intern einen Counter gibt, kann ich mir nicht vorstellen. Aber ich weiß es auch nicht.

Gruß
Marco