Biber e \printbiblist{shorttitle}: um problema com filtros e descrições bibliográficas abreviadas

Biber e \printbiblist{shorttitle}: um problema com filtros e descrições bibliográficas abreviadas

Minha pergunta está relacionada a esta discussão: Como colocar abreviações da bibliografia na lista de taquigrafias?

Por favor, leve este código em consideração:

\documentclass{article}
\usepackage{fontspec}
\usepackage[style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@ARTICLE{test1,
    AUTHOR = {John Smith},
    TITLE = {A Tremendously Interesting Opinion},
    SHORTTITLE = {TIP},
    JOURNALTITLE = {Journal of Tremendously Interesting Opinions},
    SHORTJOURNAL = {JTIO},
    VOLUME = {1},
    NUMBER = {1},
    YEAR = {1950},
    KEYWORDS = {important},
}
@ARTICLE{test2,
    AUTHOR = {John Tumble},
    TITLE = {A Tremendously Interesting Idea},
    SHORTTITLE = {ABITLONGERSHORTTITLE},
    JOURNALTITLE = {Journal of Tremendously Interesting Ideas},
    VOLUME = {1},
    NUMBER = {1},
    YEAR = {1960},
}
@BOOK{book1,
    AUTHOR = {Peter Johnson},
    TITLE = {A Tremendously Interesting Title of Book One},
    SHORTTITLE = {ATIT},
    TRANSLATOR = {John Smith},
    ORIGLANGUAGE = {german},
    VOLUME = {1},
    LOCATION = {London},
    PUBLISHER = {Publisher},
    YEAR = {1950},
    KEYWORDS = {important},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}

%\printbiblist[title={Abbreviations}]{shorttitle}
\printbiblist[title={Abbreviations of Important Publications},keyword=important]{shorttitle}
\printbibliography
\end{document}

que produz isso:

insira a descrição da imagem aqui

Minhas perguntas:

  1. É possível dizer aos biber \printbiblist para imprimir as descrições bibliográficas completas na lista de abreviações (iguais às de "Referências"), e não as versões abreviadas?

  2. Como você pode ver, há um grande espaço em branco na tabela entre as abreviações e as descrições bibliográficas. Isso ocorre por causa do artigo test2, que tem um comprimento mais longo SHORTTITLE. Obviamente o filtro é aplicadodepoisprocessando o biblista. É possível evitar este comportamento e formatar a tabela de acordo com as abreviaturas realmente apresentadas?

Obrigado!

Responder1

Nº 1pode ser resolvido rapidamente com

\DeclareBibliographyDriver{shorttitle}{\usedriver{}{\thefiel‌​d{entrytype}}\finent‌​ry}

Nº 2pode ser resolvido com a locallabelwidthopção (novo no biblatex3.11). Se a opção estiver definida como truesomente as entradas da bibliografia atual (lista) serão usadas para determinar a largura da etiqueta.

\printbiblist[title={Abbreviations of Important Publications}, keyword=important, locallabelwidth]{shorttitle}

Em seguida, fornece a saída desejada.

Responder2

OK. Sei que não fiz isso biblatex-sbl(queria uma lista combinada de abreviações de vários campos). Mas acho que ainda encontrei uma solução para o seu problema modificando algumas macros biblatexinternas do . Não creio que haja efeitos colaterais, mas é bastante específico para a sua pergunta, em vez de ser genérico. Experimente isto:

\documentclass{article}
\usepackage[style=authoryear]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@ARTICLE{test1,
    AUTHOR = {John Smith},
    TITLE = {A Tremendously Interesting Opinion},
    SHORTTITLE = {TIP},
    JOURNALTITLE = {Journal of Tremendously Interesting Opinions},
    SHORTJOURNAL = {JTIO},
    VOLUME = {1},
    NUMBER = {1},
    YEAR = {1950},
    KEYWORDS = {important},
}
@ARTICLE{test2,
    AUTHOR = {John Tumble},
    TITLE = {A Tremendously Interesting Idea},
    SHORTTITLE = {ABITLONGERSHORTTITLE},
    JOURNALTITLE = {Journal of Tremendously Interesting Ideas},
    VOLUME = {1},
    NUMBER = {1},
    YEAR = {1960},
}
@BOOK{book1,
    AUTHOR = {Peter Johnson},
    TITLE = {A Tremendously Interesting Title of Book One},
    SHORTTITLE = {ATIT},
    TRANSLATOR = {John Smith},
    ORIGLANGUAGE = {german},
    VOLUME = {1},
    LOCATION = {London},
    PUBLISHER = {Publisher},
    YEAR = {1950},
    KEYWORDS = {important},
}
\end{filecontents}

\addbibresource{\jobname.bib}
\pagestyle{empty}

% Print complete bibliographic information in list of abbreviations
\DeclareBibliographyDriver{shorttitle}{\usedriver{}{\thefield{entrytype}}\finentry}

\makeatletter
% Make new importantlabelwidth lengths
\def\do#1{\expandafter\newlength\expandafter{\csname important#1width\endcsname}}
\abx@dolabelfields

% Redefine \blx@bbl@labelfields to also calculate important widths
\def\blx@bbl@labelfields{%
  \def\do##1{%
    \ifcsundef{abx@field@##1}
      {}
      {% calculate label widths
       \blx@setlabwidth{\csname ##1width\endcsname}{%
         \csuse{abx@ffd@*@##1width}{\csname abx@field@##1\endcsname}}%
       % calculate important label widths
       \ifkeyword{important}
         {\blx@setlabwidth{\csname important##1width\endcsname}{%
           \csuse{abx@ffd@*@important##1width}{\csname abx@field@##1\endcsname}}}
         {}}}%
  \abx@dolabelfields}
\makeatother

% New bibliography environment to print the important shorttitles
% This is modified from the standard shorthand bibenvironment
\defbibenvironment{importantshorttitle}
  {\list
     {\printfield[shorthandwidth]{shorttitle}}
     {\setlength{\labelwidth}{\importantshorttitlewidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}%
      \renewcommand*{\makelabel}[1]{##1\hss}}}
  {\endlist}
  {\item}

\begin{document}
\nocite{*}

\printbiblist[title={Abbreviations}]{shorttitle}
\printbiblist[title={Abbreviations of Important
Publications},keyword=important,env=importantshorttitle]{shorttitle}
\printbibliography
\end{document}

MWE

informação relacionada