私の質問はこの議論に関連しています: 参考文献の略語を速記リストに取り込むにはどうすればよいでしょうか?
次のコードを考慮してください:
\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}
これは次のようになります:
私の質問:
\printbiblist
短縮バージョンではなく、略語リスト(「参考文献」の下にあるものと同じ)の完全な書誌説明を印刷するようにbiber に指示することは可能ですか?ご覧のとおり、表の略語と書誌説明の間には大きな空白があります。これは
test2
、より長い記事があるためですSHORTTITLE
。明らかにフィルターが適用されています。後biblist を処理します。この動作を回避し、実際に表示される略語に従ってテーブルをフォーマットすることは可能ですか?
ありがとう!
答え1
1位すぐに対処できる
\DeclareBibliographyDriver{shorttitle}{\usedriver{}{\thefield{entrytype}}\finentry}
2位オプションで解決できますlocallabelwidth
( biblatex
3.11 の新機能)。オプションが に設定されている場合、true
現在の参考文献 (リスト) 内のエントリのみがラベル幅の決定に使用されます。
\printbiblist[title={Abbreviations of Important Publications}, keyword=important, locallabelwidth]{shorttitle}
その後、希望する出力が得られます。
答え2
OK。 ではこれを実行しなかったことに気付きましたbiblatex-sbl
(複数のフィールドの略語を組み合わせたリストが必要でした)。しかし、biblatex
の内部からいくつかのマクロを変更することで、問題の解決策が見つかったと思います。副作用はないと思いますが、これは一般的なものではなく、質問にかなり特化しています。これを試してください:
\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}