요소가 압축된 경우 BibLaTeX의 \cite에서 마지막 블록/요소 앞에 "and"가 표시됩니다.

요소가 압축된 경우 BibLaTeX의 \cite에서 마지막 블록/요소 앞에 "and"가 표시됩니다.

\textciteBibLaTeX를 사용하여 [1-3, 5]를 표시하는 대신 Refs를 표시하는 숫자 구성 요소 스타일을 기반으로 명령을 생성하고 싶습니다 . 1-3 및 5, [1-3, 5-7] 대신 Refs를 제공합니다. 1-3 및 5-7.

다음 MWE에서는 전자를 달성할 수 있었지만 후자는 달성할 수 없었습니다.

\documentclass{article}
\usepackage{filecontents}
\usepackage[style=numeric-comp]{biblatex}

% Cite without square brackets - with Ref./Refs.
\NewBibliographyString{refname}
\NewBibliographyString{refsname}
\DefineBibliographyStrings{english}{%
    refname = {Ref\adddot},
    refsname = {Refs\adddot}
}
\DeclareCiteCommand{\textcite}
{%
    \ifnum\thecitetotal=1
    \bibstring{refname}%
    \else%
    \bibstring{refsname}%
    \fi%
    \addnbspace%
    \usebibmacro{cite:init}%
    \usebibmacro{prenote}%
    \renewcommand*{\multicitedelim}{\iflastcitekey{\addspace\bibstring{and}\addspace}{\addcomma\addspace}}%
}
{\usebibmacro{citeindex}\usebibmacro{cite:comp}}
{}
{\usebibmacro{cite:dump}\usebibmacro{postnote}}


\begin{filecontents*}{\jobname.bib}
@book{A,
    title = {A Bla},
    author = {A Foo}
}

@book{B,
    title = {B Bla},
    author = {B Foo}
}

@book{C,
    title = {C Bla},
    author = {C Foo}
}

@book{D,
    title = {D Bla},
    author = {D Foo}
}

@book{E,
    title = {E Bla},
    author = {E Foo}
}

@book{F,
    title = {F Bla},
    author = {F Foo}
}

@book{G,
    title = {G Bla},
    author = {G Foo}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
    \nocite{*}
    
    Cite commands should stay like this (i.e. no and): \cite{A,B,C,E,F,G}

    These textcites work: \textcite{A,C,E,G} ; \textcite{A,B,C,E}
    
    This textcite misses the final and: \textcite{A,C,E,F,G}
    
    This textcite has two ands: \textcite{A,C,D,F}
    
    \printbibliography
\end{document}

MWE의 출력:

MWE의 출력

문제는 인용이 압축될 때 마지막 citekey가 압축된 간격 내에 있기 때문에 인용 목록 구분 기호가 전혀 인쇄되지 않는다는 것입니다. 마지막 citekey 이전이 아니더라도 실제로 인쇄된 마지막 구분 기호가 무엇인지 확인하는 데 사용할 수 있는 테스트가 있습니까? 또한 마지막 예에는 두 개의 'and'가 있다는 점에 유의하세요. 문제는 이것이 \iflastcitekey실제로 예상대로 작동하지 않는다는 것입니다.

관련 정보