是否可以在 biblatex 中合并两种 citestyle?

是否可以在 biblatex 中合并两种 citestyle?

所以我有这个问题,当我使用

\usepackage[backend=biber, autocite=inline, bibstyle=alphabetic,  citestyle=alphabetic]{biblatex}

我得到的\footnote{\cite{somebook}}输出是:

怎么样

但我希望它像这样:

应该如何

所以应该是:

作者、年份、简称、页码

我当然可以说

\footnote{Vgl. \citeauthor{book}, \citeyear{book}, \cite{book} p. xxx}

但我希望有一种更优雅的方式?

此外,并非每个条目(来自互联网的条目)都有年份,我通过注释解决了这个问题。

我的配置如下:

% !TEX root =  master.tex

%       LANGUAGE SETTINGS AND FONT ENCODING 
%
\usepackage[ngerman]{babel}     % German language
\usepackage[utf8]{inputenc}
\usepackage[german=quotes]{csquotes}    % correct quotes using \enquote{}
\usepackage[T1]{fontenc}
\usepackage[left=4cm, right=2cm, top=4cm, bottom=2cm]{geometry}
\usepackage{blindtext}

\usepackage{float}


%\usepackage[english]{babel}   % For english language
%\usepackage{csquotes}  % Richtiges Setzen der Anführungszeichen mit \enquote{}

% Zwei eigene Befehle zum Setzen von Autor und Titel. Ausserdem werden die PDF-Informationen richtig gesetzt.
\newcommand{\TitelDerArbeit}[1]{\def\DerTitelDerArbeit{#1}\hypersetup{pdftitle={#1}}}
\newcommand{\AutorDerArbeit}[1]{\def\DerAutorDerArbeit{#1}\hypersetup{pdfauthor={#1}}}
\newcommand{\Firma}[1]{\def\DerNameDerFirma{#1}}
\newcommand{\Kurs}[1]{\def\DieKursbezeichnung{#1}}

% Correct superscripts 
\usepackage{fnpct}

%       CALCULATIONS
%
\usepackage{calc} % Used for extra space below footsepline

%       BIBLIOGRAPHY SETTINGS
%
% Uncomment the next three lines for author-year-style with footnotes (Chicago)
%\usepackage[backend=biber, autocite=footnote, style=authortitle, dashed=false]{biblatex}%vorher authoryear
%Use Author-Year-Cites with footnotes
%\AdaptNoteOpt\footcite\multfootcite   %will add  separators if footcite is called multiple consecutive times 
%\AdaptNoteOpt\autocite\multautocite % will add  separators if autocite is called multiple consecutive times

% Uncomment the next line for IEEE-style 
%\usepackage[backend=biber, autocite=inline, style=ieee]{biblatex}  % Use IEEE-Style (e.g. [1])

% Uncomment the next line for apa-style 
%\usepackage[backend=biber, autocite=inline, style=apa]{biblatex}   % Use apa-Style

% Uncomment the next line for alphabetic style 
\usepackage[backend=biber, autocite=inline, bibstyle=alphabetic,  citestyle=alphabetic]{biblatex}
%\renewcommand*{\nameyeardelim}{\addcomma\space}

% Use alphabetic style: alphabetic (e.g. [TGK12])
% Don't fall back on other year fields if there is no year, use
% "nodate" string
\DeclareLabeldate{%
  \field{pubstate}
  \field{date}
  \literal{o. D.}
}
% Uncomment the next two lines vor Harvard-Style 
%\usepackage[backend=biber, style=apa]{biblatex}    
%\DeclareLanguageMapping{german}{german-apa}


\DefineBibliographyStrings{ngerman}{  %Change u.a. to et al. (german only!)
    andothers = {{et\,al\adddot}},
}

%%%für die Umbrüche der URLs im Literaturverzeichnis
\apptocmd{\UrlBreaks}{\do\f\do\m}{}{}
\setcounter{biburllcpenalty}{9000}% Kleinbuchstaben
\setcounter{biburlucpenalty}{9000}% Großbuchstaben

\setlength{\bibparsep}{\parskip}    %add some space between biblatex entries in the bibliography
\addbibresource{bibliography.bib}   %Add file bibliography.bib as biblatex resource

%       FOOTNOTES 
%
% Count footnotes over chapters
\usepackage{chngcntr}
\counterwithout{footnote}{chapter}

\usepackage{tablefootnote} %damit Fußnoten in Tabellen richtig angezeigt werden

%   ACRONYMS
%%%
%%% WICHTIG: Installieren Sie das neueste Acronyms-Paket!!!
%%%
\makeatletter
\usepackage[printonlyused, withpage]{acronym}

\@ifpackagelater{acronym}{2015/03/20}
  {%
    \renewcommand*{\aclabelfont}[1]{\textbf{\textsf{\acsfont{#1}}}}
  }%
  {%
  }%
\makeatother

%Figure

\renewcaptionname{ngerman}{\figurename}{Abbildung}
\renewcommand*\listoflofentryname{\figurename}
\BeforeStartingTOC[lof]{\renewcommand*\autodot{:}}

%Table


\renewcommand*\listoflotentryname{\tablename}
\BeforeStartingTOC[lot]{\renewcommand*\autodot{:}}




%       LISTINGS

\usepackage[final]{listings}    %Format Listings properly
\usepackage{color} %für das Styling in anderen Farben
\usepackage{scrhack}
\renewcommand{\lstlistingname}{Quelltext}
\renewcommand{\lstlistlistingname}{Quelltextverzeichnis}


\newcommand\listoflolentryname\lstlistingname
\BeforeStartingTOC[lol]{\renewcommand*\autodot{:}}


\lstset{numbers=left,
    numberstyle=\tiny,
    captionpos=b,
    basicstyle=\ttfamily\small,
    escapeinside={(*@}{@*)},
    literate= %für die Umlaute in Listings
    {Ö}{{\"O}}1
    {Ä}{{\"A}}1
    {Ü}{{\"U}}1
    {ß}{{\ss}}1
    {ö}{{\"o}}1
    {ü}{{\"u}}1
    {ä}{{\"a}}1
    {~}{{\textasciitilde}}1
}
    
\definecolor{codegreen}{rgb}{0,0.6,0} 
\lstdefinestyle{stylePython}{
    backgroundcolor=\color{white},       
    belowcaptionskip=1\baselineskip,
    breaklines=true,
    frame=L,
    xleftmargin=\parindent,
    language=Python,
    showstringspaces=false,
    basicstyle=\footnotesize\ttfamily,
    commentstyle=\color{codegreen},
    keywordstyle=\color{blue},
    identifierstyle=\color{black},
    stringstyle=\color{red},
    numberstyle=\tiny\color{blue},
    morekeywords={with, as}
}

%       EXTRA PACKAGES
\usepackage{graphicx} % use various graphics formats
\usepackage[german]{varioref}   % nicer references \vref
\usepackage{caption}    %better Captions
\usepackage{booktabs} %nicer Tabs
\usepackage{array}
%\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\usepackage{setspace} %für Zeilenabstand

%       ALGORITHMS
\usepackage{algorithm}
\usepackage{algpseudocode}
\renewcommand{\listalgorithmname}{Algorithmenverzeichnis }
\floatname{algorithm}{Algorithmus}


%       FONT SELECTION: Entweder Latin Modern oder Times / Helvetica
\usepackage{lmodern} %Latin modern font
%\usepackage{mathptmx}  %Helvetica / Times New Roman fonts (2 lines)
%\usepackage[scaled=.92]{helvet} %Helvetica / Times New Roman fonts (2 lines)

%PAGE HEADER / FOOTER
%Warning: There are some redefinitions throughout the master.tex-file!  DON'T CHANGE THESE REDEFINITIONS!
\RequirePackage[automark,headsepline]{scrpage2}
\pagestyle{scrheadings}
\renewcommand*{\pnumfont}{\upshape\sffamily}
\renewcommand*{\headfont}{\upshape\sffamily}
\renewcommand*{\footfont}{\upshape\sffamily}
\renewcommand{\chaptermarkformat}{}
\RedeclareSectionCommand[beforeskip=0pt]{chapter}
\clearscrheadfoot

%\ifoot[\rule{0pt}{\ht\strutbox+\dp\strutbox}Anton Zinn]{\rule{0pt}{\ht\strutbox+\dp\strutbox}Anton Zinn}
\ohead[\rule{0pt}{\ht\strutbox+\dp\strutbox}\pagemark]{\rule{0pt}{\ht\strutbox+\dp\strutbox}\pagemark}



%       HYPERREF
%
\usepackage[
    hidelinks=true % keine roten Markierungen bei Links
]{hyperref} %am Ende laden, ansonsten kommt es zu Fehlern

\makeatletter %damit Weiterleitung ins Glossar auf richtige Zeile erfolgt
 \newcommand{\linkdest}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
\makeatother

mastertex 如下:

%   ACHTUNG: Für das Erstellen des Literaturverzeichnisses wird das modernere Paket biblatex
%            in Kombination mit biber verwendet -- nicht mehr das ältere BibTex!
%            Bitte stellen Sie ggf. Ihre TeX-Umgebung
%            entsprechend ein (z.B. TeXStudio: Einstellungen --> Erzeugen --> Standard Bibliographieprogramm: biber)
%
%bei TexMaker: Optionen -> TexMaker konfigurieren -> bei Bib(la)Tex muss biber.exe ausgewählt werden(befindet sich bei MikTex im Ordner)

\documentclass[
    12pt,
    BCOR=5mm,
    DIV=12,
    headinclude=on,
    footinclude=off,
    parskip=half,
    bibliography=totoc,
    listof=entryprefix,
    toc=listof,
    pointlessnumbers,
    plainfootsepline]{scrreprt}
    
    \oddsidemargin = 0pt %für Seitenrand links kleiner
    \marginparsep = 16pt %für Seitenrand rechts größer

%   Konfigurationsdatei einziehen
\input{formale_einstellungen/config}

\begin{document}


%% BITTE GEBEN SIE HIER DEN TITEL UND DIE AUTORIN / DEN AUTOR DER ARBEIT AN!
%% DIESE INFORMATIONEN _MÜSSEN_ GESETZT SEIN, UM TITELBLATT, ABSTRACT UND
%% EIGENSTÄNDIGKEITSERKLÄRUNG AUTOMATISCH ANZUPASSEN!
\TitelDerArbeit{Evaluation verschiedener Datenbanken für die DAME der OFD}
\AutorDerArbeit{Sarah Übele}
\Firma{Oberfinanzdirektion Karlsruhe (LZfD)}
\Kurs{WI2019 Kurs C}

\onehalfspacing %1,5-zeiliger Abstand zwischen allen Zeilen

\input{formale_einstellungen/titlepage}

\pagenumbering{Roman} % Römische Seitennummerierung
\normalfont

%--------------------------------
% Verzeichnisse - nicht benötige Verzeichnisse bitte auskommentieren / löschen.
%--------------------------------




%   Sperrvermerk
\input{formale_einstellungen/nondisclosurenotice}
\thispagestyle{empty}

%   Kurzfassung
%\input{formale_einstellungen/abstract}
%\thispagestyle{empty}


%   Inhaltsverzeichnis
%\tableofcontents
{
  \pagestyle{empty}
  \addtocontents{toc}{\protect\thispagestyle{empty}} 
  \tableofcontents
  \clearpage
}

%   Abkürzungsverzeichnis (siehe Datei acronyms.tex!)
\input{formale_einstellungen/acronyms}
\ohead{Acronyms} % Neue Header-Definition
%\ohead{\pagemark}

%   Vorwort
%\input{vorwort}

%   Abbildungsverzeichnis
\listoffigures

%   Tabellenverzeichnis
\listoftables




%   Glossar
\input{formale_einstellungen/Glossar}

%--------------------------------
% Start des Textteils der Arbeit
%--------------------------------
\clearpage
\ihead{\chaptername~\thechapter} % Neue Header-Definition (inner header)
%\ohead{\headmark} % Neue Header-Definition (outer header)
\ohead{\pagemark}
\pagenumbering{arabic}  % Arabische Seitenzahlen

%   Einleitung
\input{PJ1/Einleitung}

%   KAPITEL 2
\input{PJ1/Kapitel2}

%   KAPITEL 3
\input{PJ1/Kapitel3}

%   KAPITEL 4
\input{PJ1/Kapitel4}

% Der Anhang beginnt hier - jedes Kapitel wird alphabetisch aufgezählt. (Anhang A, B usw.)
%\appendix
%\ihead{\appendixname~\thechapter} % Neue Header-Definition

% appendix.tex einziehen
%\input{formale_einstellungen/appendix}

%Beigabenverzeichnis
%\input{beigaben}
%\ihead{Beigaben}


%Literaturverzeichnis
\printbibliography[title=Literaturverzeichnis]
\ihead{Literatur}
 %Standard aus Vorlage
%\printbibliography[heading=bibintoc, type=book, title={Literaturverzeichnis}]
%\printbibliography[heading=subbibintoc, type=online, title={Elektronische Quellen}]
%\printbibliography[heading=subbibintoc, type=article, title={Artikel}]

%   Listingsverzeichnis
\lstlistoflistings

%   Algorithmenverzeichnis
%\listofalgorithms


% Ehrenwörtliche Erklärung ewerkl.tex einziehen
\input{formale_einstellungen/ewerkl}


\cleardoublepage

\end{document}

那么有人有想法吗?

没有年份的条目如下所示:

@online{oraclevarianten,
    author = {Oracle},
    title = {Oracle Database Editions},
    note = {(o\adddot~D\adddot)},
    url = {https://docs.oracle.com/cd/B28359_01/license.111/b28287/editions.htm#DBLIC109},
    urldate = {2020-07-30},
}

答案1

这种引用格式看起来有点多余。简单的作者年份格式可能同样有用,不需要额外的标签。

无论如何,以下是您可以如何实现它。由于所需的输出与style=alphabetic,通常生成的输出非常不同,我们需要重写一些 bibmacros。下面我选择了新名称并将它们映射到\autocite(如我在问题下的评论中所建议的那样),但如果您愿意,也可以重新使用 cite。

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

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

\DefineBibliographyStrings{german}{
  andothers = {et\addabbrvspace al\adddot},
}

\DeclareDelimFormat[doublecite]{nameyeardelim}{\addcomma\space}

\renewbibmacro*{date}{%
  \ifboolexpr{    test {\iffieldundef{year}}
              and test {\iffieldundef{endyear}}}
    {\bibstring{nodate}}
    {\printdate}}

\newbibmacro*{doublecite}{%
  \printtext[bibhyperref]{%
    \printnames{labelname}%
    \setunit{\printdelim{nameyeardelim}}%
    \usebibmacro{date}%
    \setunit{\addcomma\space}%
    \printtext[labelalphawidth]{%
      \printfield{labelprefix}%
      \printfield{labelalpha}%
      \printfield{extraalpha}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}}}

\DeclareCiteCommand{\doublecite}[\iffootnote\mkbibbrackets\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{doublecite}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareMultiCiteCommand{\doublecites}[\iffootnote\mkbibbrackets\mkbibfootnote]
  {\doublecite}{\multicitedelim}

\DeclareAutoCiteCommand{doublecite}{\doublecite}{\doublecites}
\ExecuteBibliographyOptions{autocite=doublecite,}


\setcounter{biburllcpenalty}{9000}
\setcounter{biburlucpenalty}{9000}

\setlength{\bibparsep}{\parskip}

\begin{filecontents}{\jobname.bib}
@online{oraclevarianten,
  author  = {Oracle},
  title   = {Oracle Database Editions},
  url     = {https://docs.oracle.com/cd/B28359_01/license.111/b28287/editions.htm#DBLIC109},
  urldate = {2020-07-30},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem \autocite[Vgl.][380]{sigfridsson}
ipsum \autocite{oraclevarianten}
\printbibliography
\end{document}

Vgl. Sigfridsson und Ryde,1998 年,[SR98],第 380 页。


编辑回应评论。

当您重新排列 bibmacro 时,您还需要考虑这些\setunit行。

如果您希望在引文和参考书目中使用不同的日期格式, labeldate这又派上用场了。(直到https://github.com/plk/biblatex/issues/863无论如何都已解决。)

“o.”和“D.”之间已经有一个空格,但是它是一个小空格(\,),您可以重新定义字符串以获得更大的正常空格。

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

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

\DefineBibliographyStrings{german}{
  andothers = {et\addabbrvspace al\adddot},
  nodate    = {{}o.\adddotspace D\adddot},
}

\DeclareDelimFormat[doublecite]{nameyeardelim}{\addcomma\space}

\DeclareLabeldate{%
  \field{date}
  \field{year}
  \literal{nodate}
}

\renewbibmacro*{date}{%
  \ifboolexpr{    test {\iffieldundef{year}}
              and test {\iffieldundef{endyear}}}
    {\bibstring{nodate}}
    {\printdate}}

\newbibmacro*{doublecite}{%
  \printtext[bibhyperref]{%
    \printnames{labelname}%
    \setunit{\addcomma\space}%
    \printtext[labelalphawidth]{%
      \printfield{labelprefix}%
      \printfield{labelalpha}%
      \printfield{extraalpha}%
      \ifbool{bbx:subentry}
        {\printfield{entrysetcount}}
        {}}%
    \setunit{\addcomma\space}%
    \printlabeldate}}

\DeclareCiteCommand{\doublecite}[\iffootnote\mkbibbrackets\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{doublecite}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareMultiCiteCommand{\doublecites}[\iffootnote\mkbibbrackets\mkbibfootnote]
  {\doublecite}{\multicitedelim}

\DeclareAutoCiteCommand{doublecite}{\doublecite}{\doublecites}
\ExecuteBibliographyOptions{autocite=doublecite,}


\setcounter{biburllcpenalty}{9000}
\setcounter{biburlucpenalty}{9000}

\setlength{\bibparsep}{\parskip}

\begin{filecontents}{\jobname.bib}
@online{oraclevarianten,
  author  = {Oracle},
  title   = {Oracle Database Editions},
  url     = {https://docs.oracle.com/cd/B28359_01/license.111/b28287/editions.htm#DBLIC109},
  urldate = {2020-07-30},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}


\begin{document}
Lorem \autocite[Vgl.][380]{sigfridsson}
ipsum \autocite{oraclevarianten}
\printbibliography
\end{document}

相关内容