Hallo,

ich benutze die folgende *.bst für einen Output der Literatur, die wie folgt aussieht:

alt text

Link zur *.bst inkl Minimaldokument: https://github.com/johannesbottcher/BibMods

Leider wird allerdings in dieser Datei nicht mehr unterstützt, dass man per \citep[e.g.][S.15]{key} eine Seite und zusätzliche Informationen der Quelle hinzufügen kann. Weiß jemand woran das liegen könnte?

Minimaldokument, sofern die obige *.bst im gleichen Verzeichnis liegt:

Open in Online-Editor
\begin{filecontents}{\jobname.bib}
@book{companion,
  author       = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander},
  title        = {The LaTeX Companion},
  year         = 1994,
  edition      = 1,
  editor = {Sandmann},
  publisher    = {Addison-Wesley},
}
@online{ctan,
    author={testautor},
  title        = {CTAN},
  year         = 2006,
  url          = {http://www.ctan.org},
  subtitle     = {The Comprehensive TeX Archive Network},
}

\end{filecontents}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{url}
\urlstyle{same}
\usepackage[numbers]{natbib}
\bibliographystyle{curlyhead}
\newcommand{\bbletalfont}{\itshape}
\let\citeP\citep
\renewcommand\citep[1]{{\scshape\citeP{#1}}}
\bibpunct{(}{)}{;}{}{}{,}
\begin{document}
\citep[S.42]{companion}\par
\citep{ctan}
\bibliography{\jobname}
\end{document}

Ich freue mich über jeden Tipp, der irgendwie Licht ins Dunkel bringt.

Viele Grüße

gefragt 30 Okt '16, 13:27

Xorem's gravatar image

Xorem
112
Akzeptiert-Rate: 0%

bearbeitet 30 Okt '16, 13:32

Willkommen auf der TeXwelt. Abgesehen davon, dass Du den Link zur bst nicht hinzugefügt hast: es liegt an dieser Neudefinition: \let\citeP\citep \renewcommand\citep[1]{{\scshape\citeP{#1}}}

(30 Okt '16, 13:31) cgnieder

Vielen Dank! :) Müsste es dann aber nicht wenigstens eine Option verarbeiten können? Sprich letztlich eben doch

citep[S.42]{companion}

ausführen?

(30 Okt '16, 13:34) Xorem

Nein: Du hast den Befehl ja selbst so neu definiert, dass er nur noch ein (nicht optionales) Argument hat und auch nur dieses an das originale \citep weiterreicht. Wenn Du diese Neudefinition (um das \scshape hinzuzufügen) unbedingt brauchst, dann ist eine komplexere Variante nötig. Ich glaube aber, dass das konzeptuell falsch ist. Das \scshape kann man sicher an besserer Stelle einfügen, als durch eine Neudefinition des Zitierbefehls.

(30 Okt '16, 13:38) cgnieder

Genau mir geht es um das scshape und die Kapitälchen im Fließtext. Ich dachte ich könnte die entsprechenden 3 Argumente direkt an das originale citep[#1][#2]{#3} durchschleifen, indem ich einfach

renewcommandcitep[3]{{scshapeciteP[#1][#2]{#3}}}

verändere. Allerdings funktioniert das nicht. Daher war meine Überlegung dass es einfacher ist die Übergabe an citep anzupassen, statt den eigentlich funktionierenden Stil komplett neuzuschreiben? Wie viel komplexer wäre diese funk. Übergabe denn?

Oder hast du vielleicht einen Tipp, wie ich mir das normale BibTex dahingehend anpassen könnte?

(30 Okt '16, 13:50) Xorem

Sorry natürlich sind da eig entsprechende Backslashs.. :)

(30 Okt '16, 13:51) Xorem

Die Backslashs sind zu sehen, wenn Du das richtige Markup verwendest. \makeatletter\renewcommand*\NAT@nmfmt[1]{{\scshape\NAT@up#1}}\makeatother scheint mir der bessere Ansatz… Leider hat natbib wohl keine offizielle Schnittstelle dafür.

(30 Okt '16, 13:56) cgnieder

Ich würde mir ja eher einen biblatex-Stil suchen, der generell meinen Anforderungen am nächsten kommt und den dann ggf. anpassen. Dinge wie die Schrift sind ja bei biblatex meist durch einfache Formatierungs-Anweisungen leicht anpassbar.

(30 Okt '16, 14:01) saputello
Ergebnis 5 von 8 show 3 more comments

\newcommand, \renewcommand und Freunde können Befehle nur mit maximal einem optionalen Argument definieren:

Open in Online-Editor
\newcommand\foo{...}         % gar kein Argument
\newcommand\foo[1]{...}      % ein Argument
\newcommand\foo[2]{...}      % zwei Argumente
\newcommand\foo[2][bla]{...} % zwei Argumente, von denen das erste optional
                             % ist und den voreingestellten Wert `bla' hat

Wenn Du also

Open in Online-Editor
\let\citeP\citep
\renewcommand\citep[1]{{\scshape\citeP{#1}}}

machst, dann hat \citep hinterher gar keine optionalen Argumente mehr.

Open in Online-Editor
\renewcommand\citep[3]{{\scshape\citeP[#1][#2]{#3}}}

würde bedeuten, dass \citep nun immer mit drei verpflichtenden Argumenten zu verwenden wäre:

Open in Online-Editor
\citep{}{}{key}
\citep{Vgl.}{S.~3}{key}

Möglichkeiten einer passenden Neudefinition wären mit xparse sicher gegeben, aber hier ist das IMHO konzeptionell die falsche Herangehensweise. Die Namen werden in natbib alle mit \NAT@nmfmt aufgerufen. Besser ist es, hier anzusetzen, und es benötigt auch nur ein Argument:

Open in Online-Editor
\makeatletter
\renewcommand*\NAT@nmfmt[1]{{\scshape\NAT@up#1}}% wie original, aber mit \scshape
\makeatother

Damit sieht Dein MWE dann so aus:

alt text


Noch besser wäre es, ganz auf natbib zu verzichten, und stattdessen einen passenden Stil mit biblatex zu verwenden. Dort sind solche Anpassungen in der Regel trivial bzw. es gibt dafür dann eine offizielle Schnittstelle.

Permanenter link

beantwortet 30 Okt '16, 14:03

cgnieder's gravatar image

cgnieder
22.1k243463
Akzeptiert-Rate: 60%

bearbeitet 30 Okt '16, 14:14

Vorsicht: Das zerstört die natbib-Option nonamebreak. Besser mit xpatch direkt vor \NAT@up das \scshape hinein patchen. Dann funktioniert es sowohl mit als auch ohne die genannte Option.

(30 Okt '16, 14:31) saputello

Cool damit funktioniert es. Eine alternative Funktionsweise über biblatex werde ich mir aber dann wohl auch nochmal zu Gemüte führen müssen. :)

Vielen Dank für deine und eure Hilfe! :)

(30 Okt '16, 14:38) Xorem

@saputello das habe ich gesehen und geflissentlich ignoriert und nicht erwähnt, da die Lösung so oder so nur ein Hack ist, der auf interne Makros zählt und die Option in der Frage nicht verwendet wurde. Idealerweise würde natbib ein \citenamefont o.ä. einführen, das man umdefinieren kann.

(30 Okt '16, 14:39) cgnieder
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×48
×14
×8

gestellte Frage: 30 Okt '16, 13:27

Frage wurde gesehen: 7,011 Mal

zuletzt geändert: 30 Okt '16, 15:38