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:
Mis preguntas:
¿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?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{}{\thefield{entrytype}}\finentry}
No. 2se puede resolver con la locallabelwidth
opción (nueva en biblatex
3.11). Si la opción está configurada en true
solo 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 biblatex
internas 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}