Nur \cite mit Kapitälchen, \footcite nicht

Erstellung eines Literaturverzeichnisses mit BibTeX, Biber, BibLaTeX und Co.
UvW

Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von UvW »

Hallo zusammen,

ich würde gerne für meine Ausarbeitung zwei Citationsarten verwenden: \cite und \footcite Im Fließtext soll lediglich der Autor als Kapitälchen erscheinen:

Code: Alles auswählen

Nach \cite{Winkler.2020} ist die Aussage...

Nach WINKLER ist die Aussage...

in der Fußzeile soll dann die genaue Quellenangabe stehen:

Code: Alles auswählen

 Diese Aussagen werden durch die Quelle bestätigt \footcite[Vgl.][16]{Winkler.2020}

(Fußnote) Vgl. Winkler (2020), S.16.

Mit

Code: Alles auswählen

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}

erhalte ich auch die Kapitälchen. Der Befehl beeinflusst aber auch die \footcite und erstellt dort ebenfalls Kapitälchen. Dort möchte ich aber keine Kapitälchen haben (s. Beispiel oben). Wie kann ich nur die \cite Anwendung abändern?

Danke für Eure Hilfe


MoeWe
Forum-Guru
Forum-Guru
Beiträge: 264
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von MoeWe »

Wir könnten das Format je nach delimiter context umstellen. Eigentlich wird der delimiter context nur für Zeichensetzung verwendet, aber niemand hindert uns daran, das System auch für andere Zwecke zu gebrauchen.

Man kann die Idee etwas verallgemeinern. Mit \TurnIntoContextSensitiveCommand kannst Du einen Befehl wie \mkbibnamefamily in einen context sensitive macro verwandeln. Mit \DefineContextSensitiveCommand kannst Du dann die kontextabhängigen Definitionen angeben. Wenn das optionale Argument leer bleibt, dann definierst Du den globalen Kontext. Mit optionalem Argument ist die Definition speziell für den angegebenen Kontext. Für die Befehlsdefinition nutzt \DefineContextSensitiveCommand die gleiche Syntax wie \(re)newcommand, nur dass Du hier den Backslash im Befehlsnamen weglässt.

Code: Alles auswählen

\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=verbose, backend=biber]{biblatex}

\makeatletter
\newrobustcmd{\TurnIntoContextSensitiveCommand}[1]{%
  \csdef{#1}{%
    \ifcsundef{#1@\blx@delimcontext}
      {\csuse{#1@global}}
      {\csuse{#1@\blx@delimcontext}}}}

\newcommand{\DefineContextSensitiveCommand}[2][global]{%
  \csundef{#2@#1}%
  \expandafter\newcommand\expandafter{\csname #2@#1\endcsname}}
\makeatother

\TurnIntoContextSensitiveCommand{mkbibnamefamily}

\DefineContextSensitiveCommand{mkbibnamefamily}[1]{#1}
\DefineContextSensitiveCommand[textcite]{mkbibnamefamily}[1]{\textsc{#1}}


\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem \textcite{sigfridsson}
ipsum \textcite{nussbaum}
\printbibliography
\end{document}

UvW

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von UvW »

Super!! Vielen Dank MoeWe, für die schnelle Antwort.

mit dem Befehl

Code: Alles auswählen

\textcite

gibt er mir jetzt aber noch die Jahreszahl mit. Kann ich das noch unterdrücken, dass ich lediglich den Namen des Autors/ der Autoren in Kapitälchen bekomme?

In dem Bereich von Latex kenne ich mich leider überhaupt nicht aus.

Viele Grüße


MoeWe
Forum-Guru
Forum-Guru
Beiträge: 264
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von MoeWe »

Nimm doch einfach meinen Code (insbes. also style=verbose,). Da ist keine Jahreszahl in \textcite. Wenn Du weiterhin Deinen Code nutzen möchtest, dann musst Du \textcite dort anpassen. Wie das geht, kann ich Dir aber nur sagen, wenn Du den status quo in einem Minimalbeispiel mit uns teilst.


UvW

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von UvW »

Ok. Ich dachte man kann den Befehl

Code: Alles auswählen

\footcite

direkt beeinflussen. Daher habe ich auf das MWE verzichtet. Ich benutze

Code: Alles auswählen

\usepackage[style=authoryear-ibid, backend=biber, maxcitenames=2]{biblatex}

damit bei wiederholter Quellenangabe ein

ebd.

angegeben wird.

Lässt sich das verknüpfen?

Mein MWE:

Code: Alles auswählen

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} % Textsonderzeichen
\usepackage[ngerman]{babel} % Umlaute
\usepackage{lmodern} % Schriftstil

\usepackage[style=authoryear-ibid, backend=biber, maxcitenames=2]{biblatex}
\usepackage[german=quotes]{csquotes}

\makeatletter
\newrobustcmd{\TurnIntoContextSensitiveCommand}[1]{%
  \csdef{#1}{%
    \ifcsundef{#1@\blx@delimcontext}
      {\csuse{#1@global}}
      {\csuse{#1@\blx@delimcontext}}}}

\newcommand{\DefineContextSensitiveCommand}[2][global]{%
  \csundef{#2@#1}%
  \expandafter\newcommand\expandafter{\csname #2@#1\endcsname}}
\makeatother

\TurnIntoContextSensitiveCommand{mkbibnamefamily}

\DefineContextSensitiveCommand{mkbibnamefamily}[1]{#1}
\DefineContextSensitiveCommand[textcite]{mkbibnamefamily}[1]{\textsc{#1}}


\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem \textcite{sigfridsson} \\
ipsum \textcite{nussbaum} \\
dolor \textcite{nussbaum}\\
sit \footcite[Vgl.][10]{sigfridsson} \\
amet \footcite[Vgl.][23]{sigfridsson}
\printbibliography
\end{document}

MoeWe
Forum-Guru
Forum-Guru
Beiträge: 264
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von MoeWe »

UvW hat geschrieben:
Fr 19. Jun 2020, 13:45

Ok. Ich dachte man kann den Befehl

Code: Alles auswählen

\footcite

direkt beeinflussen. Daher habe ich auf das MWE verzichtet.

Kann man schon, aber man muss in den allermeisten Fällen für solche Dinge den genutzten Stil wissen, um gewisse Kleinigkeiten korrekt einrichten zu können.

Hier scheint es mir auf den ersten Blick relativ simpel den \textcite-Code von verbose-ibid.cbx zu authoryear-icomp zu transplantieren.

Code: Alles auswählen

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}

\usepackage[style=authoryear-ibid, backend=biber, maxcitenames=2, autocite=footnote]{biblatex}
\usepackage[german=quotes]{csquotes}

\makeatletter
\newrobustcmd{\TurnIntoContextSensitiveCommand}[1]{%
  \csdef{#1}{%
    \ifcsundef{#1@\blx@delimcontext}
      {\csuse{#1@global}}
      {\csuse{#1@\blx@delimcontext}}}}

\newcommand{\DefineContextSensitiveCommand}[2][global]{%
  \csundef{#2@#1}%
  \expandafter\newcommand\expandafter{\csname #2@#1\endcsname}}

\renewbibmacro*{textcite}{%
  \ifnameundef{labelname}
    {\printfield[citetitle]{labeltitle}}
    {\printnames{labelname}}}

\newbibmacro*{textcite:init}{%
  \citetrackerfalse%
  \pagetrackerfalse%
  \iffirstcitekey
    {\global\undef\cbx@lasthash}
    {}}

\newbibmacro*{textcite:count}{%
  \stepcounter{textcitetotal}%
  \ifnumgreater{\value{uniquelist}}{\value{maxnames}}
    {\ifnumgreater{\value{uniquelist}}{\value{textcitemaxnames}}
       {\setcounter{textcitemaxnames}{\value{uniquelist}}}
       {}}
    {\ifnumless{\value{labelname}}{\value{maxnames}}
       {\ifnumgreater{\value{labelname}}{\value{textcitemaxnames}}
          {\setcounter{textcitemaxnames}{\value{labelname}}}
          {}}
       {\ifnumgreater{\value{maxnames}}{\value{textcitemaxnames}}
          {\setcounter{textcitemaxnames}{\value{maxnames}}}
          {}}}}

\DeclareCiteCommand{\cbx@textcite}
  {\usebibmacro{textcite:init}}
  {\iffieldequals{namehash}{\cbx@lasthash}
     {}
     {\iffirstcitekey
        {}
        {\textcitedelim}%
      \stepcounter{textcitecount}%
      \usebibmacro{textcite}%
      \savefield{namehash}{\cbx@lasthash}}}
  {}
  {}

\DeclareCiteCommand{\textcite}[\cbx@textcite@init\cbx@textcite\footcite]
  {\usebibmacro{textcite:init}%
   \gdef\cbx@savedkeys{}%
   \DeferNextCitekeyHook}
  {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
     {\protected@xappto\cbx@footcite@args{%
        (\thefield{multiprenote})(\thefield{multipostnote})}}
     {}%
   \xappto\cbx@savedkeys{\thefield{entrykey},}%
   \iffieldequals{namehash}{\cbx@lasthash}
     {}
     {\usebibmacro{textcite:count}%
      \savefield{namehash}{\cbx@lasthash}}%
   \ifnumequal{\value{citecount}}{\value{citetotal}}
     {\protected@xappto\cbx@textcite@args{{\cbx@savedkeys}}%
      \protected@xappto\cbx@footcite@args{%
        [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}%
      \iflastcitekey
        {\protected@xappto\cbx@textcite@args{\thefield{postpunct}}%
         \protected@xappto\cbx@footcite@args{\nopunct}}
        {}}
     {}}
  {}
  {}

% textcite has nested \DeclareCiteCommand definitions for textcite and we want to use
% the normal textcite context
\DeclareDelimcontextAlias{cbx@textcite}{textcite}

\newrobustcmd{\cbx@textcite@init}[3]{%
  \setcounter{textcitetotal}{0}%
  \setcounter{textcitecount}{0}%
  \setcounter{textcitemaxnames}{0}%
  \def\cbx@textcite@args{#1}\def\cbx@footcite@args{#2}#3%
  \cbx@textcite@args\@empty\cbx@footcite@args\@empty}

\DeclareMultiCiteCommand{\cbx@textcites}{\cbx@textcite}{}
\DeclareMultiCiteCommand{\textcites}
  [\cbx@textcites@init\cbx@textcites\footcites]{\textcite}{}

\let\cbx@textcites@init\cbx@textcite@init
\pretocmd{\cbx@textcites@init}{%
  \UseNextMultiCiteHook%
  \AtNextMultiCite{%
    \renewbibmacro{multiprenote}{}%
    \renewbibmacro{multipostnote}{}}}{}{}
\makeatother

\TurnIntoContextSensitiveCommand{mkbibnamefamily}

\DefineContextSensitiveCommand{mkbibnamefamily}[1]{#1}
\DefineContextSensitiveCommand[textcite]{mkbibnamefamily}[1]{\textsc{#1}}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \textcite{sigfridsson}
ipsum \textcite{nussbaum}
dolor \textcite{nussbaum}
sit \autocite[Vgl.][10]{sigfridsson}
amet \autocite[Vgl.][23]{sigfridsson}
\printbibliography
\end{document}

UvW

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von UvW »

Wow. Ok vielen Dank.

Das einzige was noch nicht passt, ist dass \textcite auch ein Hochzahl mit \footcite einfügt.

Was ich versuche ist mit folgender Eingabe:

Code: Alles auswählen

Wie \textcite{nussbaum] in seinem Paper beschreibt, passiert... Diese Beschreibung findet sich auch in weiteren Quellen \footcite{sigfridsson}

folgende Ausgabe zu bekommen:

Code: Alles auswählen

Wie NUSSBAUM in seinem Paper beschreibt, passiert... Diese Beschreibung findet sich auch in weiteren Quellen^1

MoeWe
Forum-Guru
Forum-Guru
Beiträge: 264
Registriert: Fr 30. Aug 2019, 15:35
Kontaktdaten:

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von MoeWe »

Wenn Du die Fußnote nicht automatisch direkt am Namen erzeugt haben möchtest, dann nutzt Du besser \citeauthor (das trotz des Namens wie andere Zitat-Befehle auch labelname ausgibt, also z.B. auch den editor, wenn es keinen author gibt) und gibst \footcite manuell an.

Du musst dann das mkbibnamefamily-Format für citeauthor anpassen, aber das geht mit \DefineContextSensitiveCommand ja ganz einfach.

Wenn Du \textcite dann in der neuen Form gar nicht mehr brauchst, könnte die Definition von oben natürlich wieder weg, aber ich lasse sie mal vorsichtshalber drin.

Code: Alles auswählen

\documentclass[a4paper, 12pt]{scrreprt}
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}

\usepackage[style=authoryear-ibid, backend=biber, maxcitenames=2, autocite=footnote]{biblatex}
\usepackage[german=quotes]{csquotes}

\makeatletter
\newrobustcmd{\TurnIntoContextSensitiveCommand}[1]{%
  \csdef{#1}{%
    \ifcsundef{#1@\blx@delimcontext}
      {\csuse{#1@global}}
      {\csuse{#1@\blx@delimcontext}}}}

\newcommand{\DefineContextSensitiveCommand}[2][global]{%
  \csundef{#2@#1}%
  \expandafter\newcommand\expandafter{\csname #2@#1\endcsname}}

\renewbibmacro*{textcite}{%
  \ifnameundef{labelname}
    {\printfield[citetitle]{labeltitle}}
    {\printnames{labelname}}}

\newbibmacro*{textcite:init}{%
  \citetrackerfalse%
  \pagetrackerfalse%
  \iffirstcitekey
    {\global\undef\cbx@lasthash}
    {}}

\newbibmacro*{textcite:count}{%
  \stepcounter{textcitetotal}%
  \ifnumgreater{\value{uniquelist}}{\value{maxnames}}
    {\ifnumgreater{\value{uniquelist}}{\value{textcitemaxnames}}
       {\setcounter{textcitemaxnames}{\value{uniquelist}}}
       {}}
    {\ifnumless{\value{labelname}}{\value{maxnames}}
       {\ifnumgreater{\value{labelname}}{\value{textcitemaxnames}}
          {\setcounter{textcitemaxnames}{\value{labelname}}}
          {}}
       {\ifnumgreater{\value{maxnames}}{\value{textcitemaxnames}}
          {\setcounter{textcitemaxnames}{\value{maxnames}}}
          {}}}}

\DeclareCiteCommand{\cbx@textcite}
  {\usebibmacro{textcite:init}}
  {\iffieldequals{namehash}{\cbx@lasthash}
     {}
     {\iffirstcitekey
        {}
        {\textcitedelim}%
      \stepcounter{textcitecount}%
      \usebibmacro{textcite}%
      \savefield{namehash}{\cbx@lasthash}}}
  {}
  {}

\DeclareCiteCommand{\textcite}[\cbx@textcite@init\cbx@textcite\footcite]
  {\usebibmacro{textcite:init}%
   \gdef\cbx@savedkeys{}%
   \DeferNextCitekeyHook}
  {\ifthenelse{\iffirstcitekey\AND\value{multicitetotal}>0}
     {\protected@xappto\cbx@footcite@args{%
        (\thefield{multiprenote})(\thefield{multipostnote})}}
     {}%
   \xappto\cbx@savedkeys{\thefield{entrykey},}%
   \iffieldequals{namehash}{\cbx@lasthash}
     {}
     {\usebibmacro{textcite:count}%
      \savefield{namehash}{\cbx@lasthash}}%
   \ifnumequal{\value{citecount}}{\value{citetotal}}
     {\protected@xappto\cbx@textcite@args{{\cbx@savedkeys}}%
      \protected@xappto\cbx@footcite@args{%
        [\thefield{prenote}][\thefield{postnote}]{\cbx@savedkeys}}%
      \iflastcitekey
        {\protected@xappto\cbx@textcite@args{\thefield{postpunct}}%
         \protected@xappto\cbx@footcite@args{\nopunct}}
        {}}
     {}}
  {}
  {}

% textcite has nested \DeclareCiteCommand definitions for textcite and we want to use
% the normal textcite context
\DeclareDelimcontextAlias{cbx@textcite}{textcite}

\newrobustcmd{\cbx@textcite@init}[3]{%
  \setcounter{textcitetotal}{0}%
  \setcounter{textcitecount}{0}%
  \setcounter{textcitemaxnames}{0}%
  \def\cbx@textcite@args{#1}\def\cbx@footcite@args{#2}#3%
  \cbx@textcite@args\@empty\cbx@footcite@args\@empty}

\DeclareMultiCiteCommand{\cbx@textcites}{\cbx@textcite}{}
\DeclareMultiCiteCommand{\textcites}
  [\cbx@textcites@init\cbx@textcites\footcites]{\textcite}{}

\let\cbx@textcites@init\cbx@textcite@init
\pretocmd{\cbx@textcites@init}{%
  \UseNextMultiCiteHook%
  \AtNextMultiCite{%
    \renewbibmacro{multiprenote}{}%
    \renewbibmacro{multipostnote}{}}}{}{}
\makeatother

\TurnIntoContextSensitiveCommand{mkbibnamefamily}

\DefineContextSensitiveCommand{mkbibnamefamily}[1]{#1}
\DefineContextSensitiveCommand[textcite]{mkbibnamefamily}[1]{\textsc{#1}}
\DefineContextSensitiveCommand[citeauthor]{mkbibnamefamily}[1]{\textsc{#1}}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \textcite{sigfridsson}
ipsum \textcite{nussbaum}
dolor \textcite{nussbaum}
sit \autocite[Vgl.][10]{sigfridsson}
amet \autocite[Vgl.][23]{sigfridsson}

Oder manuell \citeauthor{sigfridsson} und erst später das ganze Zitat\footcite{sigfridsson}

\printbibliography
\end{document}
Zuletzt geändert von MoeWe am Di 23. Jun 2020, 17:26, insgesamt 1-mal geändert.

UvW

Re: Nur \cite mit Kapitälchen, \footcite nicht

Beitrag von UvW »

Super. Vielen Dank!!


Antworten