我使用 postnote 选项来指定页码。但是,我的引用样式要求我对任何具有排序页码的在线来源使用 {prenote}{name + title}[Page number]{URL}。
我已经知道我也可以在 .bbx 文件中使用 bibmacro“cite:postnote”。但如果 postnote 已经在 url 之前打印,我就不知道如何不打印它了。
完整测试样本
\documentclass[paper=A4,DIV=calc,headinclude=true,bibliography=totoc,oneside]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{scrpage2}
\begin{filecontents}{testing.bib}
@Online{test,
author = {Oliver Jake},
title = {Book about Books},
URL = {https://example.com/},
year = {2018},
urlyear = {2019},
urlmonth = {12},
urlday = {20}
}
@Online{test1,
author = {Harry Callum},
title = {Testing Books},
URL = {http://google.com/},
year = {2017},
urlyear = {2020},
urlmonth = {01},
urlday = {05}
}
\end{filecontents}
\begin{filecontents}{vwa.cbx}
\ProvidesFile{vwa.cbx}
[\abx@cbxid]
\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}}
\DeclareFieldFormat{bibhyperlink}{%
\bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
\DeclareFieldFormat{bibhypertarget}{%
\bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
\newcommand*{\cbx@resetcount}{0}
\providecommand*{\mkibid}[1]{#1}
\renewcommand*{\iffinalcitedelim}{%
\ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
\newtoggle{cbx:loccit}
\newbibmacro*{cite:citepages}{}
\newbibmacro*{cite:full:citepages}{}
\newbibmacro*{cite:postnote}{}
\DeclareBibliographyOption[boolean]{ibidpage}[true]{%
\ifstrequal{#1}{true}
{\ExecuteBibliographyOptions{loccittracker=constrict}}
{\ExecuteBibliographyOptions{loccittracker=false}}}
\DeclareBibliographyOption[string]{citepages}[permit]{%
\ifcsdef{cbx@opt@citepages@#1}
{\csuse{cbx@opt@citepages@#1}}
{\PackageError{biblatex}
{Invalid option 'citepages=#1'}
{Valid values are 'permit', 'suppress', 'omit', 'separate'.}}}
\providebibmacro*{cite:citepages}{}
\providebibmacro*{cite:full:citepages}{}
\providebibmacro*{cite:postnote}{}
\def\cbx@opt@citepages@permit{%
\renewbibmacro*{cite:citepages}{}%
\renewbibmacro*{cite:full:citepages}{}%
\renewbibmacro*{cite:postnote}{\usebibmacro{postnote}}}
\def\cbx@opt@citepages@suppress{%
\renewbibmacro*{cite:citepages}{}%
\renewbibmacro*{cite:full:citepages}{%
\clearfield{pages}%
\clearfield{pagetotal}}%
\renewbibmacro*{cite:postnote}{\usebibmacro{postnote}}}
\def\cbx@opt@citepages@omit{%
\renewbibmacro*{cite:citepages}{}%
\renewbibmacro*{cite:full:citepages}{%
\ifboolexpr{
test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
and
test {\iffieldpages{postnote}}
}
{\clearfield{pages}%
\clearfield{pagetotal}}
{}}%
\renewbibmacro*{cite:postnote}{\usebibmacro{postnote}}}
\def\cbx@opt@citepages@separate{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
togl {cbx:fullcite}
and
test {\iffieldpages{postnote}}
and
test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
and
(
not test {\iffieldundef{pages}}
or
not test {\iffieldundef{pagetotal}}
)
}
{\usebibmacro{cite:postnote:pages}}
{\usebibmacro{postnote}}}
\providebibmacro*{cite:postnote:pages}{%
\setunit{\postnotedelim}%
\bibstring{thiscite}%
\setunit{\addspace}%
\printfield{postnote}}}
\ExecuteBibliographyOptions{citetracker=context,ibidtracker=constrict,
pagetracker,autocite=footnote,citepages=permit}
\newbibmacro*{cite}
{%
\usebibmacro{cite:citepages}%
\global\togglefalse{cbx:loccit}%
\ifciteseen
{
\iffieldundef{shorthand}
{
\ifboolexpr
{
test {\ifciteibid}
and
not test {\iffirstonpage}
}
{\usebibmacro{cite:ibid}}
{\usebibmacro{cite:short}}
}
{\usebibmacro{cite:shorthand}}
}
{\usebibmacro{cite:full}}
}
\newbibmacro*{cite:full}{%
\usebibmacro{cite:full:citepages}%
\printtext[bibhypertarget]{%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}%
\usebibmacro{shorthandintro}}
\newbibmacro*{cite:short}{%
\printnames{author}%
\setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield{labeltitle}}}
\newbibmacro*{cite:ibid}{%
\printtext[bibhyperlink]{\bibstring[\mkibid]{ibidem}}%
\ifloccit
{\global\toggletrue{cbx:loccit}}
{}}
\newbibmacro*{cite:shorthand}{%
\printtext[bibhyperlink]{%
\printfield{shorthand}}}
\newbibmacro*{cite:postnote:ibidpage}{%
\iftoggle{cbx:loccit}
{}
{\usebibmacro{postnote}}}
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\addspace\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\onlinecite}[\mkbibfoornote]
{\addspace\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibparens\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\newbibmacro*{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}{}}}{}{}
\endinput
\end{filecontents}
\begin{filecontents}{vwa.bbx}
\ProvidesFile{vwa.bbx}
[\abx@bbxid]
\RequireBibliographyStyle{standard}
\renewcommand\mkbibnamefamily[1]{\textsc{#1}}
\DeclareNameAlias{author}{given-family}
\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}
\DeclareFieldFormat{title}{\textnormal{#1}}
\renewbibmacro*{url+urldate}{%
\textnormal{\usebibmacro{url}}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}
\newunit
\printfield{titleaddon}}
\newbibmacro*{bookdate}{%
\iffieldundef{labelyear}
{}
{\printlabeldateextra}
}
\newbibmacro*{fulldate}{%
\iffieldundef{labelyear}
{}
{%
\iflabeldateisdate
{\printfield{issue}%
\setunit*{\addspace}%
\printdateextra}
{\printlabeldateextra}}
}%
\newbibmacro*{onlineauthor}{%
{\printnames{author}%
\printunit{\space}}
}
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\usebibmacro{bbx:savehash}%
\printnames{author}%
\iffieldundef{authortype}
{\setunit{\printdelim{nameyeardelim}}}
{\setunit{\printdelim{authortypedelim}}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
\setunit{\printdelim{nameyeardelim}}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
% \usebibmacro{date+extradate}
}
\newbibmacro*{publisher}{%
\printlist{publisher}%
}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
}
\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{onlineauthor}%
\setunit{\printdelim{nametitledelim}}\newblock
\newunit\newblock
\usebibmacro{date+extradate}%
\addcolon
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
% \usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}
}
\DeclareBibliographyOption[boolean]{dashed}[true]{%
\ifstrequal{#1}{true}
{\ExecuteBibliographyOptions{pagetracker}%
\renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}}
{\renewbibmacro*{bbx:savehash}{}}}
\DeclareBibliographyOption[boolean]{mergedate}[true]{%
\ifcsdef{bbx@opt@mergedate@#1}
{\csuse{bbx@opt@mergedate@#1}}
{\PackageError{biblatex}
{Invalid option 'mergedate=#1'}
{Valid values are 'maximum', 'compact', 'basic', 'minimum',\MessageBreak
'true' (=compact), and 'false'.}}}
\providebibmacro*{date+extradate}{}
\providebibmacro*{date+extrayear}{%
\blx@warning{bibmacro 'date+extrayear' is deprecated.\MessageBreak
Please use 'date+extradate'.\MessageBreak
Using 'date+extradate' instead}%
\usebibmacro{date+extradate}}
\newbibmacro*{bbx:ifmergeddate}{\@secondoftwo}
\renewbibmacro*{date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printdate}}%
\def\bbx@opt@mergedate@true{\bbx@opt@mergedate@compact}
% merge date/issue with date label
\def\bbx@opt@mergedate@maximum{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printfield{issue}%
\setunit*{\addspace}%
\printdateextra}
{\printlabeldateextra}}}}%
\renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
\renewbibmacro*{issue+date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}}}
% merge date with date label
\def\bbx@opt@mergedate@compact{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}%
\renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{bbx:ifmergeddate}
{}
{\printdate}}}%
\newunit}}
% merge year-only date with date label
\def\bbx@opt@mergedate@basic{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{%
\ifboolexpr{
test {\iflabeldateisdate}
and
not test {\ifdateshavedifferentprecision{label}{}}
}%
}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{
test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}
}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}%
\newunit}}
% merge year-only date with year-only date label
\def\bbx@opt@mergedate@minimum{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{%
\ifboolexpr{
test {\iflabeldateisdate}
and
not test {\ifdateshavedifferentprecision{label}{}}
and
test {\iffieldundef{extradate}}
}%
}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{
test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}
}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}%
\newunit}}
% don't merge date/issue with date label
\def\bbx@opt@mergedate@false{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%
\renewbibmacro*{issue+date}{%
\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%
\newunit}}
\ExecuteBibliographyOptions{labeldateparts,sorting=nyt,pagetracker,mergedate}
\DeclareFieldFormat{shorthandwidth}{#1}
\setlength{\bibitemsep}{0pt}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}
\DeclareNameWrapperAlias{author}{sortname}
\DeclareNameWrapperAlias{editor}{sortname}
\DeclareNameWrapperAlias{translator}{sortname}
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
\defbibenvironment{shorthand}
{\list
{\printfield[shorthandwidth]{shorthand}}
{\setlength{\labelwidth}{\shorthandwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}}}
{\endlist}
{\item}
\InitializeBibliographyStyle{\global\undef\bbx@lasthash}
\newbibmacro*{bbx:savehash}{%
\savefield{fullhash}{\bbx@lasthash}}
\newbool{bbx@inset}
\DeclareBibliographyDriver{set}{%
\booltrue{bbx@inset}%
\entryset{}{}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
\renewbibmacro*{begrelated}{%
\booltrue{bbx@inset}}
\renewbibmacro*{endrelated}{%
\usebibmacro*{bbx:savehash}}
\renewbibmacro*{editor}{%
\usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
\usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{editor}%
\setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extradate}}
\renewbibmacro*{translator}{%
\usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
\usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{translator}%
\setunit{\printdelim{translatortypedelim}}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{translator}%
\setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extradate}}
\newbibmacro*{bbx:dashcheck}[2]{%
\ifboolexpr{
test {\iffieldequals{fullhash}{\bbx@lasthash}}
and
not test \iffirstonpage
and
(
not bool {bbx@inset}
or
test {\iffieldequalstr{entrysetcount}{1}}
)
}
{#1}
{#2}}
\newbibmacro*{labeltitle}{%
\iffieldundef{label}
{\iffieldundef{shorttitle}
{\printfield{title}%
\clearfield{title}}
{\printfield[title]{shorttitle}}}
{\printfield{label}}}
\endinput
\renewc
\end{filecontents}
\usepackage[backend=biber,style=vwa,dashed=false,backref=true,natbib=true,hyperref=true,]{biblatex}
\addbibresource{testing.bib}
\begin{document}
This a test sentence and the following is lorem ipsum.\\
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\footcite[S. 67]{test}\\
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\footcite[S. 100]{test1}\\
\end{document}
感谢您的任何帮助!
当前显示:
Oliver Jake (2018): Book about Books. url: https://example.com/ [Aufgerufen am: 20. 12. 2019], S. 67.
通缉:
Oliver Jake (2018): Book about Books, S. 67., url: https://example.com/ [Aufgerufen am: 20. 12. 2019]
答案1
您必须添加一些代码才能将postnote
字段打印到@online
驱动程序。
\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{onlineauthor}%
\setunit{\printdelim{nametitledelim}}\newblock
\newunit\newblock
\usebibmacro{date+extradate}%
\addcolon
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\ifcitation
{\iffieldpages{postnote}
{\setunit{\printdelim{postnotedelim}}%
\printfield{postnote}}
{}}
{}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
% \usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}%
}
然后,您将必须修改后记打印命令,以便在您有条目的完整引用时跳过后记@online
。
\def\cbx@opt@citepages@permit{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
togl {cbx:fullcite}
and test {\ifentrytype{online}}
and test {\iffieldpages{postnote}}}
{}
{\usebibmacro{postnote}}}}
完整版(并进行了一些调整,以抑制虚假的空白)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\begin{filecontents}[force]{\jobname.bib}
@Online{test,
author = {Oliver Jake},
title = {Book about Books},
URL = {https://example.com/},
year = {2018},
urldate = {2019-12-20},
}
@Online{test1,
author = {Harry Callum},
title = {Testing Books},
URL = {http://google.com/},
year = {2017},
urdate = {2020-01-05},
}
\end{filecontents}
\begin{filecontents}[force]{vwa.cbx}
\ProvidesFile{vwa.cbx}
[\abx@cbxid]
\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}}
\DeclareFieldFormat{bibhyperlink}{%
\bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
\DeclareFieldFormat{bibhypertarget}{%
\bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}}
\newcommand*{\cbx@resetcount}{0}
\providecommand*{\mkibid}[1]{#1}
\renewcommand*{\iffinalcitedelim}{%
\ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
\newtoggle{cbx:loccit}
\newbibmacro*{cite:citepages}{}
\newbibmacro*{cite:full:citepages}{}
\newbibmacro*{cite:postnote}{}
\DeclareBibliographyOption[boolean]{ibidpage}[true]{%
\ifstrequal{#1}{true}
{\ExecuteBibliographyOptions{loccittracker=constrict}}
{\ExecuteBibliographyOptions{loccittracker=false}}}
\DeclareBibliographyOption[string]{citepages}[permit]{%
\ifcsdef{cbx@opt@citepages@#1}
{\csuse{cbx@opt@citepages@#1}}
{\PackageError{biblatex}
{Invalid option 'citepages=#1'}
{Valid values are 'permit', 'suppress', 'omit', 'separate'.}}}
\providebibmacro*{cite:citepages}{}
\providebibmacro*{cite:full:citepages}{}
\providebibmacro*{cite:postnote}{}
\def\cbx@opt@citepages@permit{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
togl {cbx:fullcite}
and test {\ifentrytype{online}}
and test {\iffieldpages{postnote}}}
{}
{\usebibmacro{postnote}}}}
\def\cbx@opt@citepages@suppress{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}%
\clearfield{pages}%
\clearfield{pagetotal}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
test {\ifentrytype{online}}
and test {\iffieldpages{postnote}}}
{}
{\usebibmacro{postnote}}}}
\def\cbx@opt@citepages@omit{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}%
\ifboolexpr{
test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
and
test {\iffieldpages{postnote}}
}
{\clearfield{pages}%
\clearfield{pagetotal}}
{}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
test {\ifentrytype{online}}
and test {\iffieldpages{postnote}}}
{}
{\usebibmacro{postnote}}}}
\def\cbx@opt@citepages@separate{%
\providetoggle{cbx:fullcite}%
\renewbibmacro*{cite:citepages}{%
\global\togglefalse{cbx:fullcite}}%
\renewbibmacro*{cite:full:citepages}{%
\global\toggletrue{cbx:fullcite}}%
\renewbibmacro*{cite:postnote}{%
\ifboolexpr{
togl {cbx:fullcite}
and
test {\iffieldpages{postnote}}
and
test {\ifnumequal{\value{citecount}}{\value{citetotal}}}
and
(
not test {\iffieldundef{pages}}
or
not test {\iffieldundef{pagetotal}}
)
}
{\usebibmacro{cite:postnote:pages}}
{\usebibmacro{postnote}}}
\providebibmacro*{cite:postnote:pages}{%
\setunit{\postnotedelim}%
\bibstring{thiscite}%
\setunit{\addspace}%
\printfield{postnote}}}
\ExecuteBibliographyOptions{citetracker=context,ibidtracker=constrict,
pagetracker,autocite=footnote,citepages=permit}
\newbibmacro*{cite}
{%
\usebibmacro{cite:citepages}%
\global\togglefalse{cbx:loccit}%
\ifciteseen
{%
\iffieldundef{shorthand}
{%
\ifboolexpr
{%
test {\ifciteibid}
and
not test {\iffirstonpage}
}
{\usebibmacro{cite:ibid}}
{\usebibmacro{cite:short}}%
}
{\usebibmacro{cite:shorthand}}%
}
{\usebibmacro{cite:full}}%
}
\newbibmacro*{cite:full}{%
\usebibmacro{cite:full:citepages}%
\printtext[bibhypertarget]{%
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}%
\usebibmacro{shorthandintro}}
\newbibmacro*{cite:short}{%
\printnames{author}%
\setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield{labeltitle}}}
\newbibmacro*{cite:ibid}{%
\printtext[bibhyperlink]{\bibstring[\mkibid]{ibidem}}%
\ifloccit
{\global\toggletrue{cbx:loccit}}
{}}
\newbibmacro*{cite:shorthand}{%
\printtext[bibhyperlink]{%
\printfield{shorthand}}}
\newbibmacro*{cite:postnote:ibidpage}{%
\iftoggle{cbx:loccit}
{}
{\usebibmacro{postnote}}}
\DeclareCiteCommand{\cite}
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\parencite}[\mkbibparens]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\onlinecite}[\mkbibfoornote]
{\addspace\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibparens\mkbibfootnote]
{\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\usebibmacro{cite}}
{\multicitedelim}
{\usebibmacro{cite:postnote}}
\newbibmacro*{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}{}}}{}{}
\endinput
\end{filecontents}
\begin{filecontents}[force]{vwa.bbx}
\ProvidesFile{vwa.bbx}
[\abx@bbxid]
\RequireBibliographyStyle{standard}
\renewcommand\mkbibnamefamily[1]{\textsc{#1}}
\DeclareNameAlias{author}{given-family}
\DeclareDelimFormat[bib]{nametitledelim}{\addcolon\space}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\bibstring{urlseen}\space#1}}
\DeclareFieldFormat{title}{#1}
\renewbibmacro*{url+urldate}{%
\textnormal{\usebibmacro{url}}%
\iffieldundef{urlyear}
{}
{\setunit*{\addspace}%
\usebibmacro{urldate}}}
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}%
\newunit}%
\printfield{titleaddon}}
\newbibmacro*{bookdate}{%
\iffieldundef{labelyear}
{}
{\printlabeldateextra}%
}
\newbibmacro*{fulldate}{%
\iffieldundef{labelyear}
{}
{\iflabeldateisdate
{\printfield{issue}%
\setunit*{\addspace}%
\printdateextra}
{\printlabeldateextra}}%
}
\newbibmacro*{onlineauthor}{%
\printnames{author}%
\printunit{\space}%
}
\renewbibmacro*{author}{%
\ifboolexpr{
test \ifuseauthor
and
not test {\ifnameundef{author}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\usebibmacro{bbx:savehash}%
\printnames{author}%
\iffieldundef{authortype}
{\setunit{\printdelim{nameyeardelim}}}
{\setunit{\printdelim{authortypedelim}}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
\setunit{\printdelim{nameyeardelim}}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
% \usebibmacro{date+extradate}%
}
\newbibmacro*{publisher}{%
\printlist{publisher}%
}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\iflistundef{publisher}
{\setunit*{\addcomma\space}}
{\setunit*{\addcolon\space}}%
\printlist{publisher}%
}
\DeclareBibliographyDriver{online}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{onlineauthor}%
\setunit{\printdelim{nametitledelim}}\newblock
\newunit\newblock
\usebibmacro{date+extradate}%
\addcolon
\newunit\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{version}%
\newunit
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\ifcitation
{\iffieldpages{postnote}
{\setunit{\printdelim{postnotedelim}}%
\printfield{postnote}}
{}}
{}%
\newunit\newblock
\iftoggle{bbx:eprint}
{\usebibmacro{eprint}}
{}%
\newunit\newblock
\usebibmacro{url+urldate}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
% \usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}%
}
\DeclareBibliographyOption[boolean]{dashed}[true]{%
\ifstrequal{#1}{true}
{\ExecuteBibliographyOptions{pagetracker}%
\renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}}
{\renewbibmacro*{bbx:savehash}{}}}
\DeclareBibliographyOption[boolean]{mergedate}[true]{%
\ifcsdef{bbx@opt@mergedate@#1}
{\csuse{bbx@opt@mergedate@#1}}
{\PackageError{biblatex}
{Invalid option 'mergedate=#1'}
{Valid values are 'maximum', 'compact', 'basic', 'minimum',\MessageBreak
'true' (=compact), and 'false'.}}}
\providebibmacro*{date+extradate}{}
\providebibmacro*{date+extrayear}{%
\blx@warning{bibmacro 'date+extrayear' is deprecated.\MessageBreak
Please use 'date+extradate'.\MessageBreak
Using 'date+extradate' instead}%
\usebibmacro{date+extradate}}
\newbibmacro*{bbx:ifmergeddate}{\@secondoftwo}
\renewbibmacro*{date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printdate}}%
\def\bbx@opt@mergedate@true{\bbx@opt@mergedate@compact}
% merge date/issue with date label
\def\bbx@opt@mergedate@maximum{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printfield{issue}%
\setunit*{\addspace}%
\printdateextra}
{\printlabeldateextra}}}}%
\renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
\renewbibmacro*{issue+date}{%
\usebibmacro{bbx:ifmergeddate}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}}}
% merge date with date label
\def\bbx@opt@mergedate@compact{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}%
\renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{bbx:ifmergeddate}
{}
{\printdate}}}%
\newunit}}
% merge year-only date with date label
\def\bbx@opt@mergedate@basic{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{%
\ifboolexpr{
test {\iflabeldateisdate}
and
not test {\ifdateshavedifferentprecision{label}{}}
}%
}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{
test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}
}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}%
\newunit}}
% merge year-only date with year-only date label
\def\bbx@opt@mergedate@minimum{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{%
\ifboolexpr{
test {\iflabeldateisdate}
and
not test {\ifdateshavedifferentprecision{label}{}}
and
test {\iffieldundef{extradate}}
}%
}%
\renewbibmacro*{issue+date}{%
\ifboolexpr{
test {\usebibmacro{bbx:ifmergeddate}}
and
test {\iffieldundef{issue}}
}
{}
{\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\printdate}}%
\newunit}}
% don't merge date/issue with date label
\def\bbx@opt@mergedate@false{%
\renewbibmacro*{date+extradate}{%
\iffieldundef{labelyear}
{}
{\printtext[parens]{\printlabeldateextra}}}%
\renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%
\renewbibmacro*{issue+date}{%
\printtext[parens]{%
\printfield{issue}%
\setunit*{\addspace}%
\usebibmacro{date}}%
\newunit}}
\ExecuteBibliographyOptions{labeldateparts,sorting=nyt,pagetracker,mergedate}
\DeclareFieldFormat{shorthandwidth}{#1}
\setlength{\bibitemsep}{0pt}
\DeclareNameAlias{editor}{sortname}
\DeclareNameAlias{translator}{sortname}
\DeclareNameWrapperAlias{author}{sortname}
\DeclareNameWrapperAlias{editor}{sortname}
\DeclareNameWrapperAlias{translator}{sortname}
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
\defbibenvironment{shorthand}
{\list
{\printfield[shorthandwidth]{shorthand}}
{\setlength{\labelwidth}{\shorthandwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\addtolength{\leftmargin}{\labelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}}}
{\endlist}
{\item}
\InitializeBibliographyStyle{\global\undef\bbx@lasthash}
\newbibmacro*{bbx:savehash}{%
\savefield{fullhash}{\bbx@lasthash}}
\newbool{bbx@inset}
\DeclareBibliographyDriver{set}{%
\booltrue{bbx@inset}%
\entryset{}{}%
\newunit\newblock
\usebibmacro{setpageref}%
\finentry}
\renewbibmacro*{begrelated}{%
\booltrue{bbx@inset}}
\renewbibmacro*{endrelated}{%
\usebibmacro*{bbx:savehash}}
\renewbibmacro*{editor}{%
\usebibmacro{bbx:editor}{editorstrg}}
\renewbibmacro*{editor+others}{%
\usebibmacro{bbx:editor}{editor+othersstrg}}
\newbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{editor}%
\setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extradate}}
\renewbibmacro*{translator}{%
\usebibmacro{bbx:translator}{translatorstrg}}
\renewbibmacro*{translator+others}{%
\usebibmacro{bbx:translator}{translator+othersstrg}}
\newbibmacro*{bbx:translator}[1]{%
\ifboolexpr{
test \ifusetranslator
and
not test {\ifnameundef{translator}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{translator}%
\setunit{\printdelim{translatortypedelim}}%
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{translator}%
\setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
\setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extradate}}
\newbibmacro*{bbx:dashcheck}[2]{%
\ifboolexpr{
test {\iffieldequals{fullhash}{\bbx@lasthash}}
and
not test \iffirstonpage
and
(
not bool {bbx@inset}
or
test {\iffieldequalstr{entrysetcount}{1}}
)
}
{#1}
{#2}}
\newbibmacro*{labeltitle}{%
\iffieldundef{label}
{\iffieldundef{shorttitle}
{\printfield{title}%
\clearfield{title}}
{\printfield[title]{shorttitle}}}
{\printfield{label}}}
\endinput
\end{filecontents}
\usepackage[backend=biber,style=vwa,dashed=false,backref=true,natbib=true]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Lorem ipsum dolor sit amet.\footcite[67]{test}
Lorem ipsum.\footcite[100]{test1}
Lorem ipsum.\footcite[100]{test1}
Amet.\footcite[67]{test}
\printbibliography
\end{document}