访问 bibtex 条目的字段(gerplain.bst 和 \citeauthor)?

访问 bibtex 条目的字段(gerplain.bst 和 \citeauthor)?

我像这样创建我的参考资料

\documentclass[12pt,a4paper]{scrreprt}
\usepackage[ngerman]{babel} 
\usepackage{bibgerm}  % literatur deutsch

\begin{filecontents*}{reffile.bib} 
@article{doe:1996,
    author = {John Doe and Jane McDoe},
    title = {my bibtex example},
    journal = {Journal of Testing},
    year = {1996},
    volume = {15},
    number = {2},
    pages = {22--44}
}
\end{filecontents*} 

\begin{document}    
Some Text with a reference~\cite{doe:1996},
but additionally I need something like
"`citet"' (natbib) or "`textcite"' (biblatex) working with "`gerplain.bst"'.

\bibliographystyle{gerplain}
\bibliography{reffile}

\end{document}

我仍然非常喜欢这种风格(并且不得不使用它)。但现在我需要一个引用,例如

Doe and McDoe [1] 

所以我必须访问作者姓名。我可以通过natbiboderbiblatex使用\citet{doe:1996)或来处理这个问题,\textcite{doe:1996}但之后我就不能再使用了gerplain.bst

是否有可能直接访问 bibtex 字段?或者一起使用natbibgerplain.bst?或者将“转换”bibtex-bstbiblatex-bbx

答案1

重做gerplain当然biblatex是一种方法,而且可能更适合未来。另一种方法是添加gerplain.bst使其与 兼容所需的小改动natbib。这些大多是从 复制而来plainnat.bst。所以这里是gerplainnat.bst

答案2

到目前为止,这就是我所做的 - 以防有人需要类似的东西

\documentclass[12pt,a4paper]{scrreprt}
\usepackage[ngerman]{babel} 

\begin{filecontents*}{reffile.bib} 
@article{doe:1996,
    author = {John Doe and Jane McDoe},
    title = {my bibtex example},
    journal = {Journal of Testing},
    year = {1996},
    volume = {15},
    number = {2},
    pages = {22--44}
}

@inproceedings{jacobs:2005,
    author = {Jacobs, Katrien and Nahmias, Jean-Daniel and Angus, Cameron and Reche, Alex and Loscos, Celine and Steed, Anthony},
    title = {Automatic generation of consistent shadows for augmented reality},
    booktitle = {Proceedings of Graphics Interface 2005},
    series = {GI '05},
    year = {2005},
    isbn = {1-56881-265-5},
    location = {Victoria, British Columbia},
    pages = {113--120},
    numpages = {8},
    acmid = {1089527},
    publisher = {Canadian Human-Computer Communications Society},
    address = {School of Computer Science, University of Waterloo, Waterloo, Ontario, Canada},
}


@proceedings{obrien:2009,
    editor = {O`Brien, W.J. and Formoso, C.T. and Vrijhoef, R. and London, K.A.},
    title  = {Construction Supply Chain Management - HANDBOOK},
    year = {2009},
    publisher = {CRC Press}
}

@inproceedings{formoso:2009,
    author = {Formoso, C.T. and Isatto, E.L.},
    pages = {181--193},
    title = {Production Planning and Control and the Coordination of Project Supply    Chains},
    crossref = {obrien:2009}
}
\end{filecontents*} 

\usepackage{csquotes}
\usepackage[style=numeric,
    backend=biber,maxbibnames=12,   
    maxcitenames=2,isbn=false,doi=false,
    firstinits,abbreviate=false]{biblatex}
\addbibresource{reffile.bib}

% change some names
\DefineBibliographyStrings{ngerman}{%
    bibliography = {Literaturverzeichnis},
    andothers = {\textsc{et\,al\adddot}},       
    phdthesis ={Dissertation},
    byeditor = {\addspace\mkbibparens {Herausgeber}},
    editor = {\addspace\mkbibparens {Herausgeber}},
    editor = {\addspace\mkbibparens {Herausgeber}}              
}               

\renewcommand*{\finalnamedelim}{\addsemicolon\space}

% authors in small caps
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand*{\mkbibnamefirst}[1]{\textsc{#1}}
\renewcommand*{\mkbibnameprefix}[1]{\textsc{#1}}
\renewcommand*{\mkbibnameaffix}[1]{\textsc{#1}}

% small caps for the "and"
\renewcommand*{\finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\textsc{\bibstring{and}}\space}

\AtBeginBibliography{%
% no small caps for "and" in references
\renewcommand*{\finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}

  \DeclareNameAlias{default}{last-first/first-last}%
    \renewcommand{\labelnamepunct}{\addcolon\space} % colon after authors
    \DeclareFieldFormat{title}{\emph{#1\isdot}}
    \DeclareFieldFormat[book]{title}{\emph{#1}\isdot}         % no quotes
    \DeclareFieldFormat[incollection]{title}{\emph{#1}\isdot}         % no quotes
    \DeclareFieldFormat[thesis]{title}{\emph{#1}\isdot}         % no quotes
    \DeclareFieldFormat[inproceedings]{title}{\emph{#1}\isdot}         % no quotes
    \DeclareFieldFormat{journaltitle}{#1}         % Journal-Titel not italic
    \DeclareFieldFormat{pages}{S.\ppspace#1} 
    \DeclareFieldFormat[article]{pages}{#1}
    \DeclareFieldFormat[article]{title}{\emph{#1}\isdot}      % no quotes
}


\newbibmacro*{article:note+pages}{%
  \printfield{note}%
    \iffieldundef{number}{\setunit{\addcomma\space S.\ppspace}}{\setunit{\addcolon}}%
  \printfield{pages}%
  \newunit}

\renewbibmacro*{journal+issuetitle}{%         % change order
  \usebibmacro{journal}%
  \setunit*{\addperiod\space}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \printfield{volume}%
  \setunit*{}%
  \printfield[parens]{number}%
  \setunit{\addcomma\space}%
  \printfield{eid}%
  \setunit{\addspace}%
  \usebibmacro{issue}%
  \newunit}

\renewbibmacro*{issue+date}{%
  \printtext[]{%                  % remove parens
    \iffieldundef{issue}
      {\printdate}
      {\printfield{issue}%
       \setunit{\addspace}%
       \printfield{year}}}%         
  \newunit}

%%%article
\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  %\printlist{language}%               % remove language
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  %\usebibmacro{in:}%               %  remove 'In:'
  \usebibmacro{journal+issuetitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \usebibmacro{article:note+pages}%
  \newunit\newblock
    \usebibmacro{issue+date} % <<< moved it here
    \newunit\newblock % <<< moved it here
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \newunit\newblock
  \usebibmacro{pageref}%
  \usebibmacro{finentry}}


\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {
     \setunit{\addspace}%
     \printnames[byeditor]{editor}%
     \clearname{editor}%
         \usebibmacro{byeditor+othersstrg}% <<< moved it here
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}

\DeclareBibliographyDriver{inproceedings}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\labelnamepunct}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
     \usebibmacro{byeditor+others}% <<< moved it here
  \newunit\newblock % <<< moved it here
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  %\iftoggle{bbx:related}
    %{\usebibmacro{related:init}%
     %\usebibmacro{related}}
    %{}%
  \usebibmacro{finentry}}

\begin{document}    
Some Text with references~\cite{doe:1996,formoso:2009,jacobs:2005}.
Also \textcite{doe:1996} and \textcite{jacobs:2005} are now able to use "`textcite"'.

\printbibliography
\end{document}  

欢迎提出意见和改进。

相关内容