![Lista única de abreviaturas (lista de siglas + lista abreviada de biblatex)](https://rvso.com/image/328824/Lista%20%C3%BAnica%20de%20abreviaturas%20(lista%20de%20siglas%20%2B%20lista%20abreviada%20de%20biblatex).png)
En mi artículo tengo dos listas de abreviaturas: 1) Acrónimos de ciertas expresiones mediante glossaries package
(por ejemplo, APR = Tasa de porcentaje anual) y 2) Abreviaturas de documentos legales mediante biblatex package
taquigrafías dentro del archivo .bib (por ejemplo, Ley de protección al consumidor = CPA) .
Como se supone que debe ser, si pongo las expresiones \printbiblist{shorthand}
obtendré \printglossary[type=\acronymtype,style=long]
dos listas de abreviaturas.
Sin embargo, quiero tener uno único (unificado). ¿Es posible hacer eso teniendo en cuenta que uso dos paquetes diferentes?
Respuesta1
No creo que puedas hacer que dos paquetes muy diferentes funcionen juntos de manera que puedan imprimir una lista compartida.
Pero podemos fingir todo con biblatex
. Implementaremos un @acronym
y un @glossary
tipo. La funcionalidad es una copia muy limitada deglossaries
' conjunto de características. Sin duda, la idea se puede mejorar bastante, por lo que esto debería considerarse como una prueba de concepto.
Necesitamos un nuevo modelo de datos (ver¿Cómo puedo crear tipos de datos completamente nuevos con BibLaTeX/Biber?)
\ProvidesFile{fakeglossaries.dbx}[2016/02/24\space fake basic functionalities of the glossaries package using biblatex]
\DeclareDatamodelEntrytypes{glossary}
\DeclareDatamodelEntrytypes{acronym}
\DeclareDatamodelFields[type=field,datatype=literal]{
name,
plural,
description,
short,
shortplural,
long,
longplural,
}
\DeclareDatamodelEntryfields[glossary]{
name,
plural,
description,
}
\DeclareDatamodelEntryfields[acronym]{
short,
shortplural,
long,
longplural,
}
Luego debemos asegurarnos de que nuestros nuevos tipos se manejen correctamente. Con
\ExecuteBibliographyOptions[glossary,acronym]{skipbib=true}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{acronym}
\step[fieldsource=short]
\step[fieldset=shorthand, origfieldval]
}
\map{
\pertype{glossary}
\step[fieldsource=name]
\step[fieldset=shorthand, origfieldval]
}
}
}
no aparecen en la bibliografía pero obtienen un shorthand
por lo que van a la lista de shorthand
s.
La salida se controla con
\DeclareFieldFormat[glossary]{name}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[glossary]{plural}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[glossary]{description}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[acronym]{short}{\mkbibacro{#1}}
\DeclareFieldFormat[acronym]{long}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[acronym]{longplural}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareBibliographyDriver{acronym}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printfield{long}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{glossary}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printfield{description}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\newbibmacro{fakegls}{%
\ifentrytype{glossary}
{\printfield{name}}
{\ifentrytype{acronym}
{\ifciteseen
{\printfield{short}}
{\printfield{long}}}}}
\newbibmacro{fakeglspl}{%
\ifentrytype{glossary}
{\iffieldundef{plural}
{\printfield{name}s}
{\printfield{plural}}}
{\ifentrytype{acronym}
{\ifciteseen
{\iffieldundef{shortplural}
{\printfield{short}s}
{\printfield{shortplural}}}
{\iffieldundef{longplural}
{\printfield{long}s}
{\printfield{longplural}}}}}}
Y finalmente se implementan los comandos de nivel superior.
\DeclareCiteCommand{\fakegls}
{\usebibmacro{prenote}}
{\usebibmacro{fakegls}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\fakeglspl}
{\usebibmacro{prenote}}
{\usebibmacro{fakeglspl}}
{\multicitedelim}
{\usebibmacro{postnote}}
\newrobustcmd*{\Fakegls}{\bibsentence\fakegls}
\newrobustcmd*{\Fakeglspl}{\bibsentence\fakeglspl}
MWE
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\begin{filecontents}{fakeglossaries.dbx}
\ProvidesFile{fakeglossaries.dbx}[2016/02/24\space fake basic functionalities of the glossaries package using biblatex]
\DeclareDatamodelEntrytypes{glossary}
\DeclareDatamodelEntrytypes{acronym}
\DeclareDatamodelFields[type=field,datatype=literal]{
name,
plural,
description,
short,
shortplural,
long,
longplural,
}
\DeclareDatamodelEntryfields[glossary]{
name,
plural,
description,
}
\DeclareDatamodelEntryfields[acronym]{
short,
shortplural,
long,
longplural,
}
\end{filecontents}
\usepackage[style=authoryear,backend=biber,citetracker,datamodel=fakeglossaries]{biblatex}
\begin{filecontents}{\jobname.bib}
@glossary{potato,
name = {potato},
plural = {potatoes},
description = {starchy tuber},
}
@glossary{cauliflower,
name = {cauliflower},
description = {Cabbage with a College Education},
}
@acronym{dm,
short = {DM},
long = {diagonal matrix},
longplural = {diagonal matrices},
}
@acronym{lkw,
short = {LKW},
shortplural= {LKW},
long = {Lastkraftwagen},
longplural = {Lastkraftwagen},
}
\end{filecontents}
\addbibresource{biblatex-examples.bib}
\addbibresource{\jobname.bib}
\ExecuteBibliographyOptions[glossary,acronym]{skipbib=true}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{acronym}
\step[fieldsource=short]
\step[fieldset=shorthand, origfieldval]
}
\map{
\pertype{glossary}
\step[fieldsource=name]
\step[fieldset=shorthand, origfieldval]
}
}
}
\DeclareFieldFormat[glossary]{name}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[glossary]{plural}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[glossary]{description}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[acronym]{short}{\mkbibacro{#1}}
\DeclareFieldFormat[acronym]{long}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareFieldFormat[acronym]{longplural}{\ifcapital{\MakeCapital{#1}}{#1}}
\DeclareBibliographyDriver{acronym}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printfield{long}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{glossary}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printfield{description}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\newbibmacro{fakegls}{%
\ifentrytype{glossary}
{\printfield{name}}
{\ifentrytype{acronym}
{\ifciteseen
{\printfield{short}}
{\printfield{long}}}}}
\newbibmacro{fakeglspl}{%
\ifentrytype{glossary}
{\iffieldundef{plural}
{\printfield{name}s}
{\printfield{plural}}}
{\ifentrytype{acronym}
{\ifciteseen
{\iffieldundef{shortplural}
{\printfield{short}s}
{\printfield{shortplural}}}
{\iffieldundef{longplural}
{\printfield{long}s}
{\printfield{longplural}}}}}}
\DeclareCiteCommand{\fakegls}
{\usebibmacro{prenote}}
{\usebibmacro{fakegls}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand{\fakeglspl}
{\usebibmacro{prenote}}
{\usebibmacro{fakeglspl}}
{\multicitedelim}
{\usebibmacro{postnote}}
\newrobustcmd*{\Fakegls}{\bibsentence\fakegls}
\newrobustcmd*{\Fakeglspl}{\bibsentence\fakeglspl}
\begin{document}
Lorem\footcite{sigfridsson,kant:kpv} ipsum
\Fakegls{potato}, \fakegls{dm}, \fakegls{dm}, \fakegls{lkw}, \fakegls{lkw}
\citereset \Fakeglspl{potato}, \fakeglspl{dm}, \fakeglspl{dm}, \fakeglspl{lkw}, \fakeglspl{lkw}
\printbiblist{shorthand}
\printbibliography
\end{document}