Biber y \printbiblist{shorttitle}: un problema con los filtros y las descripciones bibliográficas abreviadas

Biber y \printbiblist{shorttitle}: un problema con los filtros y las descripciones bibliográficas abreviadas

Mi pregunta está relacionada con esta discusión: ¿Cómo incluir abreviaturas de la bibliografía en la lista de taquigrafías?

Por favor tenga en cuenta este código:

\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 produce esto:

ingrese la descripción de la imagen aquí

Mis preguntas:

  1. ¿Es posible decirle a Biber's \printbiblist que imprima las descripciones bibliográficas completas en la lista de abreviaturas (iguales a las de "Referencias"), no las versiones abreviadas?

  2. Como puedes ver, hay un gran espacio en blanco en la tabla entre abreviaturas y descripciones bibliográficas. Esto se debe al artículo test2, que tiene una duración más larga.SHORTTITLE . Obviamente se aplica el filtro.despuésprocesando al biblista. ¿Es posible evitar este comportamiento y formatear la tabla de acuerdo con las abreviaturas que realmente se muestran?

¡Gracias!

Respuesta1

No. 1se puede abordar con bastante rapidez con

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

No. 2se puede resolver con la locallabelwidthopción (nueva en biblatex3.11). Si la opción está configurada en truesolo se utilizan las entradas de la bibliografía actual (lista) para determinar el ancho de la etiqueta.

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

Luego da el resultado deseado.

Respuesta2

DE ACUERDO. Me doy cuenta de que no hice esto biblatex-sbl(quería una lista combinada de abreviaturas de varios campos). Pero creo que aún así encontré una solución a su problema modificando un par de macros biblatexinternas de. No creo que haya efectos secundarios, pero es bastante específico para su pregunta, en lugar de ser genérico. Prueba esto:

\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

información relacionada