\cite-Einträge kleiner machen

Schriftbild, Absätze und Auflistungen einstellen


Thomas D
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Di 15. Feb 2011, 08:51

\cite-Einträge kleiner machen

Beitrag von Thomas D »

Hallo,

Ich möchte gerne alle \cite in meinem Dokument verkleinern. Dazu bin ich auf folgendes Codeschnipsel gestoßen:
\let\OrgiCite\cite
\renewcommand*\cite[2][]{
  {
    \tiny
    \OrigCite[#1]{#2}
  }
}
Nur leider bekomme ich dabei einen Fehler mit der Meldung "Undefined control sequence".

Mein Minimalbeispiel sieht wie folgt aus:
\documentclass[11pt,ngerman]{scrbook}
\usepackage{fontspec}
\usepackage{babel}

\let\OrgiCite\cite
\renewcommand*\cite[2][]{
  {
    \tiny
    \OrigCite[#1]{#2}
  }
}

\makeatother

\begin{document}
Text \cite{Test}

\bibliographystyle{plain}
\phantomsection\addcontentsline{toc}{chapter}{\bibname}\bibliography{Literatur_Kopie}

\end{document}
Der Eintrag Test existiert in der bib-Datei, die sich auch im selben Ordner befindet. Woran könnte es liegen, dass diese Neudefinierung von \cite nicht funktioniert? Oder gibt es eine andere Methode, um die Literaturverweise im Dokument anders gestalten zu können?

DADABBI

Beitrag von DADABBI »

Du definierst \OrgiCite verwendest dann aber \OrigCite. Letzteres ist dann natürlich noch nicht definiert.

Ansonsten: Das ist so natürlich kein Minimalbeispiel. Bitte beachte den angegebenen Link! Außerdem trägst du die falsche Seite ins Inhaltsverzeichnis ein, weil du Option bibliography nicht in der KOMA-Script-Anleitung oder im KOMA-Script-Buch nachgelesen hast.

Ich empfehle außerdem die Verwendung von biblatex. Das bietet u. a. auch die Möglichkeit, Fonts einzustellen. Beispielsweise:
\documentclass[bibliography=totoc]{scrbook}

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{xpatch}
\xapptocmd\citesetup{\tiny}{}{}

\begin{document}
\tableofcontents
\chapter{Test}
Test \cite{knuth:ct} test.

\printbibliography
\end{document}

Thomas D
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Di 15. Feb 2011, 08:51

Beitrag von Thomas D »

Da habe ich bei der Übernahme des Codes zu wenig genau geschaut. Tut mir leid.

Das Projekt ist nahezu fertig und ich möchte erst beim nächsten den Umstieg von BibTeX auf BibLaTeX wagen.

Ich habe nun mit filecontents probiert, ein lauffähiges Minimalbeispiel zusammenzustellen:
\documentclass[11pt,ngerman]{scrbook}
\usepackage{babel}

\let\OrigCite\cite
\renewcommand*\cite[2][]{
  {
    \tiny
    \OrigCite[#1]{#2}
  }
}

\usepackage{filecontents}
\begin{filecontents}{Literatur_Kopie.bib}
@book{buchtest,
    author    = "Vorname Nachname",
    title     = "Buchtitel",
    year      = "2016",
    publisher = "Verleger"
}
\end{filecontents}

\makeatother

\begin{document}
Text \cite{buchtest}.
Text \cite[S.\,16]{buchtest}.

\bibliographystyle{plain}
\bibliography{Literatur_Kopie}

\end{document}
Das Problem hierbei ist allerdings, dass jeweils vor und nach dem Verweis ein Leerzeichen eingefügt wird. Zudem macht der Befehl, wenn kein Seitenanzahlargument mitgeliefert wird, trotzdem ein Komma und ein Leerzeichen. Das ist natürlich nicht erwünscht.

Gibt es eine Möglichkeit mit BibTeX a) die Leerzeichen vor und hinter dem Befehl wegzubekommen und b) den \cite-Aufruf sowohl mit als auch ohne Seitenanzahlargument angeben zu können und der redefinierte Befehl dafür Sorge trägt, dass der Verweis richtig gesetzt wird?

Im Beispiel soll also beim ersten Aufruf [1] und zwei zweiten [1, S. 16] herauskommen.

DADABBI

Beitrag von DADABBI »

Zeilenenden sind Leerzeichen

Für das zweite Problem ist es am Einfachsten, nicht \cite, sondern \@citex umzudefinieren:
\documentclass[11pt,ngerman]{scrbook}
\usepackage{babel}

\makeatletter
\let\OrigCite\@citex
\renewcommand*\@citex[2][]{%
  {%
    \tiny
    \OrigCite[#1]{#2}%
  }%
}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{Literatur_Kopie.bib}
@book{buchtest,
    author    = "Vorname Nachname",
    title     = "Buchtitel",
    year      = "2016",
    publisher = "Verleger"
}
\end{filecontents}

\makeatother

\begin{document}
Text \cite{buchtest}.
Text \cite[S.\,16]{buchtest}.

\bibliographystyle{plain}
\bibliography{Literatur_Kopie}

\end{document}
Wobei der Stil plain so primitiv ist, dass ein Wechsel zu biblatex kein Problem sein sollte.

Thomas D
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Di 15. Feb 2011, 08:51

Beitrag von Thomas D »

Tatsache. Die Umdefinierung von citex war das, was ich gesucht habe. Vielen Dank.

Bei den Leerzeichen hatte ich das Problem, dass ich die Kommentare nach den Klammern gelöscht habe, da ich dachte, die braucht es nicht. Fehlanzeige, denn ohne diese bekommt man die störenden Abstände. Habe ich wieder was Neues gelernt.

plain habe ich übrigens nur für dieses Minimalbeispiel herangezogen, um die Komplexität herauszunehmen. In Wahrheit verwendet ich eine komplexere Stilvorlage, die ich bereits an mehreren Stellen bearbeitet habe.

Für das nächste Projekt habe ich mir aber vorgenommen, einerseits von Lyx auf einen LaTeX-Editor zu wechseln und in diesem Zusammenhang auch gleich auf biber und biblatex zu wechseln. Für dieses Projekt, das wie gesagt kurz vor dem Abschluss steht, wollte ich diese Änderung nicht mehr angehen.

Danke dir auf jeden Fall für deine Unterstützung!

Antworten