Jak łączyć powtarzające się wpisy bibliograficzne podczas korzystania z footcite?

Dec 10 2020

Jeśli cytuję to samo źródło kilka razy pod rząd, powstaje lista bibliograficzna składająca się z identycznych pozycji:


  1. autor, tytuł
  2. autor, tytuł
\begin{filecontents}{database.bib}
@Misc{key,
    author      = {author},
    title       = {title},
}
\end{filecontents}

\documentclass{article}
\usepackage[autocite=footnote,style=authortitle]{biblatex}
\bibliography{database.bib}
\begin{document}
\begin{itemize}
\item one point\autocite{key}
\item another one\autocite{key}
\end{itemize}
\end{document}

Jak skompresować listę w przypisie, aby wyglądała następująco:


1,2 autor, tytuł

Odpowiedzi

1 R.N Dec 18 2020 at 21:36

Proponuję rozwiązanie, które nie kompresuje listy przypisów, ale drukuje przypis tylko raz na stronę.

Chodzi o to, aby przedefiniować polecenie cytowania o nazwie \footcite. Następnie, aby zaakceptować autociteopcję biblatex, umieszczam go w biblatex.cfgpliku zgodnie z tym pytaniem i nadam mu nazwę myfootnote.

A \footcitepo wywołaniu zawsze tworzy a \footnotemarkprzy użyciu numeru etykiety klucza. Następnie, zgodnie z tym pytaniem , jeśli \footcitezostanie wywołany po raz pierwszy na tej stronie, utworzy również plik \footnotetext.

Oto wynikowy MWE:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{biblatex.cfg}
    \ProvidesFile{biblatex.cfg}
    \DeclareCiteCommand{\footcite}%
    {\usebibmacro{prenote}}% 
    {%
        %   \renewcommand{\thefootnote}{\arabic{footnote}}% Switch to footnote with numbers
        \footnotemark[\thefield{labelnumber}]% Add the mark corresponding to the number entry% 
        \iffirstonpage{
            \footnotetext[\thefield{labelnumber}]{% Add the footnote text with same number entry.
                %\printfield{labelnumber}
                \printnames{labelname}% The name 
                \setunit{\printdelim{nametitledelim}}% separator
                \printfield[citetitle]{labeltitle}% The title
                \setunit{\addperiod\space}% separator
                \printfield{year}% The year
        }
        }{}% if not first on page
        %   \renewcommand{\thefootnote}{\alph{footnote}}% Switch back to footnote with letters.
    }%
    {\multicitedelim}
    {\usebibmacro{postnote}}
    \DeclareAutoCiteCommand{myfootnote}{\footcite}{\footcite}
    \endinput
\end{filecontents}

\begin{filecontents}{database.bib}
    @Misc{key,
        author      = {author},
        title       = {title},
    }
\end{filecontents}

\usepackage[autocite=myfootnote, style=numeric, pagetracker=true, backend=biber]{biblatex}
\bibliography{database.bib}
\begin{document}
\begin{itemize}
    \item one point\autocite{key}
    \item another one\autocite{key}
\end{itemize}
\newpage
\begin{itemize}
    \item one point\autocite{key}
    \item another one\autocite{key}
\end{itemize}
\end{document}

Jedynym możliwym ulepszeniem, którego nie wiem, byłoby uczynienie tego hacka kompatybilnym z innymi stylami bib. Rzeczywiście, jeśli ktoś przełącznik styl alphabeticna przykład dostanie błąd kompilacji: missing number; ponieważ footnotemarktestament nie otrzymał numeru, ale tekst nadany przez \thefield{labelnumber}.