![略語の単一リスト(頭字語リスト + biblatex 速記リスト)](https://rvso.com/image/328824/%E7%95%A5%E8%AA%9E%E3%81%AE%E5%8D%98%E4%B8%80%E3%83%AA%E3%82%B9%E3%83%88%EF%BC%88%E9%A0%AD%E5%AD%97%E8%AA%9E%E3%83%AA%E3%82%B9%E3%83%88%20%2B%20biblatex%20%E9%80%9F%E8%A8%98%E3%83%AA%E3%82%B9%E3%83%88%EF%BC%89.png)
私の論文には、2 つの略語リストがあります。1) 特定の表現の頭字語glossaries package
(例: APR = 年間パーセンテージ レート)、2) biblatex package
.bib ファイル内の省略形を使用した法的文書の略語 (例: 消費者保護法 = CPA) です。
想定どおり、表現を入力すると\printbiblist{shorthand}
、\printglossary[type=\acronymtype,style=long]
略語のリストが 2 つ表示されます。
しかし、私は単一の(統合された)ものを望んでいます。 2 つの異なるパッケージを使用することを考慮して、それを行うことは可能ですか?
答え1
2 つの非常に異なるパッケージを連携させて、共有リストを印刷することはできないと思います。
しかし、 を使って全体を偽装することができます。と型biblatex
を実装します。 機能は の非常に限定された模倣です。@acronym
@glossary
glossaries
' 機能セット。このアイデアは確かにかなり改善できるはずなので、これは概念実証として見るべきです。
新しいデータモデルが必要です(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,
}
次に、新しい型が正しく処理されていることを確認する必要があります。
\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]
}
}
}
これらは参考文献には表示されませんが、 が付与されるshorthand
ため、 のリストに追加されますshorthand
。
出力は次のように制御されます
\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}
ムウェ
\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}