добавить URL для цитирования apa biblatex

добавить URL для цитирования apa biblatex

Мне нужно добавить URL в цитаты в сносках для каждого источника, который имеет URL. Это должно выглядеть как сноскиаибв выводе MWE. Я нашел это:Добавьте поле URL в сноски, используя style=authortitle-icompно принятое решение у меня не работает, и я не могу изменить его так, чтобы оно работало правильно (я прокомментировал это в MWE).

Я использую biblatex, biber, APA style, italian. Я редактирую на Sharelatex.com.

МВЭ:

\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}    
\usepackage[italian]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=apa,backend=biber]{biblatex}         
\DeclareLanguageMapping{italian}{italian-apa}

\defbibfilter{online}{
    type=online
}

\defbibfilter{offline}{
    type=book or
    type=article or
    type=report
}

%\renewbibmacro*{cite:title}{%
%\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}
%\iffieldundef{url}{}{\nametitledelim\printfield{url}}}}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}

@online{cit1,
  title = {Title},
  url = {http://www.website.com},
  timestamp = {2013-04-11T17:20:44Z},
  titleaddon = {Example},
  urldate = {2013-04-10},
  date = {2004}
}

@report{cit2,
  author = {BBBAuthor, Name},
  title = {Title Title Title},
  url = {http://www.example.com},
  timestamp = {2013-04-11T17:20:44Z},
  titleaddon = {Website Name},
  urldate = {2013-04-10},
  date = {2004}
}

@book{cit3,
  location = {Location},
  title = {Title Title},
  timestamp = {2016-02-01T21:50:03Z},
  langid = {english},
  publisher = {Publisher},
  author = {Author, Name},
  date = {2001}
}

\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}

\begin{minipage}{\textwidth}

Bla bla\footnote{\cite[]{cit1}, \url{http://www.website.com}}.
Bla\footnote{\cite[]{cit2}, \url{http://www.example.com}}.
BLA BLA\footcite[]{cit1}
Blaaa blaa bla\footcite[]{cit3}.

\printbibliography[heading=bibintoc,filter=offline,title={Bibliography}] 
\printbibliography[title={Online},filter=online,heading=subbibliography]

\end{minipage}

\end{document}

Выход:

выход

решение1

Поскольку нам необходимо изменить команды цитирования, решение во многом зависит от стиля, а biblatex-apaмакросы цитирования существенно отличаются от стандартных authortitle, поэтому ваша попытка не сработала.

Вероятно, проще всего изменить citeмакрос прямо здесь (изменить можно, cite:plabelyear+extrayearно это может помешать выполнению других команд)

\makeatletter
\renewbibmacro*{cite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \setunit{\nameyeardelim}%
       \usebibmacro{cite:plabelyear+extrayear}%
       \savefield{namehash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \setunit{\nameyeardelim}%
      \usebibmacro{cite:plabelyear+extrayear}%
      \savefield{namehash}{\cbx@lasthash}}}%
   \setunit{\addcomma\space}%<-- this is new
   \printfield[citeurl]{url}%<--- and so is this
   \setunit{\multicitedelim}}
\makeatother

представляет собой копию определения apa.cbxс двумя добавленными ближе к концу строками.

МВЭ

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}    
\usepackage[italian]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=apa,backend=biber]{biblatex}         
\DeclareLanguageMapping{italian}{italian-apa}

%\renewbibmacro*{cite:title}{%
%\printtext[bibhyperref]{\printfield[citetitle]{labeltitle}
%\iffieldundef{url}{}{\nametitledelim\printfield{url}}}}

\makeatletter
\renewbibmacro*{cite}{%
  \iffieldequals{namehash}{\cbx@lasthash}
% Multiple cites in one command
   {\setunit{\compcitedelim}%
    \usebibmacro{cite:plabelyear+extrayear}}%
% Single cite
   {\ifthenelse{\ifnameundef{labelname}\OR\iffieldequalstr{entrytype}{patent}}
% No author/editor
     {\usebibmacro{cite:noname}%
       \setunit{\nameyeardelim}%
       \usebibmacro{cite:plabelyear+extrayear}%
       \savefield{namehash}{\cbx@lasthash}}
% Normal cite
     {\ifnameundef{shortauthor}
        {\printnames[labelname][-\value{listtotal}]{labelname}}%
        {\cbx@apa@ifnamesaved
          {\printnames{shortauthor}}
          {\printnames[labelname][-\value{listtotal}]{author}\addspace\printnames[sabrackets]{shortauthor}}}%
      \setunit{\nameyeardelim}%
      \usebibmacro{cite:plabelyear+extrayear}%
      \savefield{namehash}{\cbx@lasthash}}}%
   \setunit{\addcomma\space}%<-- this is new
   \printfield[citeurl]{url}%<--- and so is this
   \setunit{\multicitedelim}}
\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@online{cit1,
  title = {Title},
  url = {http://www.website.com},
  titleaddon = {Example},
  urldate = {2013-04-10},
  date = {2004}
}

@report{cit2,
  author = {BBBAuthor, Name},
  title = {Title Title Title},
  url = {http://www.example.com},
  titleaddon = {Website Name},
  urldate = {2013-04-10},
  date = {2004}
}

@book{cit3,
  location = {Location},
  title = {Title Title},
  langid = {english},
  publisher = {Publisher},
  author = {Author, Name},
  date = {2001}
}

\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
Bla bla\footcite[]{cit1}.
Bla\footcite[]{cit2}
BLA BLA\footcite[]{cit1}
Blaaa blaa bla\footcite[]{cit3}.

\printbibliography[heading=bibintoc,nottype=online,title={Bibliography}] 
\printbibliography[title={Online},type=online,heading=subbibliography]
\end{document}

пример вывода

Связанный контент