biblatex は著者とタイトルの後に改行を追加します

biblatex は著者とタイトルの後に改行を追加します

私はbiblatex+biberを使っていて、著者が印刷された後に新しい行が始まり、次にタイトルが印刷され、再び新しい行が始まり、残りは通常どおり印刷されるようにしたいと考えています。解決私の問題に近づいていますが、デフォルトのスタイルを使用しており、タイトルはまだ別の行に表示されていません。

ここに例があります

Author1, Author2, and Author3. Title. In: Proceedings. Ed. John Doe. World. 2017

そしてそれはどのように見えるべきか

Author1, Author2, and Author3.
Title.
In: Proceedings. Ed. John Doe. World. 2017

以下は最小限の動作例です。

\documentclass{scrartcl}

\usepackage{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@inproceedings{inProc,
  author    = {Author11 and Author12 and Author13},
  editor    = {Editor1},
  title     = {Title1},
  booktitle = {Booktitle1},
  year      = {2017},
  pages     = {50--67},
  publisher = {Publisher1}
}
@article{article,
  author  = {Author21 and Author22},
  title   = {Title2},
  journal = {Journal2},
  year    = {2007},
  volume  = {29},
  number  = {5},
  pages   = {29:1--29:27}
}
@book{book,
  author    = {Author31},
  title     = {Title3},
  year      = {1970},
  publisher = {Publisher3}
}
@incollection{inCollection,
   author    = {Author4},
   title     = {Title4},
   booktitle = {Booktitle4},
   pages     = {843--993},
   editor    = {Editor4},
   chapter   = {15},
   volume    = {B},
   series    = {Series4},
   publisher = {Publisher4},
   year      = {1990}
}
@techreport{techreport,
  author      = {Author5},
  institution = {Institution5},
  number      = {Number5},
  pages       = {Pages5},
  title       = {Title5},
  year        = {5}
}
@phdthesis{phdthesis,
  author    = {Author6},
  title     = {Title6},
  school    = {School6},
  month     = {Month6},
  publisher = {Publisher6},
  address   = {Address6},
  year      = {6}
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

答え1

最初のステップは

\DeclareDelimFormat[bib]{nametitledelim}{\newline\bibsentence}

名前の後に新しい行を追加します。

次に、タイトルの後の行にジャンプするための何かが必要です。残念ながら、ここで再定義できる標準的な区切り文字はありません。すべてのエントリタイプで機能する最も簡単な方法は次のとおりです。

\usepackage{xpatch}
\makeatletter
\def\do#1{
  \ifcsdef{blx@bbx@#1}
    {\xpatchbibdriver{#1}
       {\printlist{language}%
        \newunit\newblock}
       {\printlist{language}%
        \printunit{\newline\bibsentence}}
       {}{}}
    {}} 
\abx@doentrytypes
\makeatother

これにより、言語の後に改行が追加されます。これは、すべての標準ドライバーではタイトルの直後に続きます。xpatchパッケージを使用して参考文献ドライバーを変更し、ループを使用してすべてのドライバーに変更を適用します (\abx@doentrytypesはすべてをループする内部マクロです)。

ムウェ

\documentclass{scrartcl}

\usepackage{biblatex}
\usepackage{filecontents}

\DeclareDelimFormat[bib]{nametitledelim}{\newline\bibsentence}

\usepackage{xpatch}
\makeatletter
\def\do#1{
  \ifcsdef{blx@bbx@#1}
    {\xpatchbibdriver{#1}
       {\printlist{language}%
        \newunit\newblock}
       {\printlist{language}%
        \printunit{\newline\bibsentence}}
       {}{}}
    {}} 
\abx@doentrytypes
\makeatother

\begin{filecontents*}{\jobname.bib}
@inproceedings{inProc,
  author    = {Author11 and Author12 and Author13},
  editor    = {Editor1},
  title     = {Title1},
  booktitle = {Booktitle1},
  year      = {2017},
  pages     = {50--67},
  publisher = {Publisher1}
}
@article{article,
  author  = {Author21 and Author22},
  title   = {Title2},
  journal = {Journal2},
  year    = {2007},
  volume  = {29},
  number  = {5},
  pages   = {29:1--29:27}
}
@book{book,
  author    = {Author31},
  title     = {Title3},
  year      = {1970},
  publisher = {Publisher3}
}
@incollection{inCollection,
   author    = {Author4},
   title     = {Title4},
   booktitle = {Booktitle4},
   pages     = {843--993},
   editor    = {Editor4},
   chapter   = {15},
   volume    = {B},
   series    = {Series4},
   publisher = {Publisher4},
   year      = {1990}
}
@techreport{techreport,
  author      = {Author5},
  institution = {Institution5},
  number      = {Number5},
  pages       = {Pages5},
  title       = {Title5},
  year        = {5}
}
@phdthesis{phdthesis,
  author    = {Author6},
  title     = {Title6},
  school    = {School6},
  month     = {6},
  publisher = {Publisher6},
  address   = {Address6},
  year      = {6}
}
\end{filecontents*}
\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

出力例


このような緩い参考文献の代替案block=parについては、BibTeX+Beamer に似た BibLaTeX の参考文献スタイル

答え2

次の解決策は、すべてのエントリに「In:」がある場合にのみ目的の結果をもたらします。たとえば、ジャーナルのない記事の場合は、新しい行は表示されません。

\documentclass{article}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@article{Neu93,
  author = {John von Neumann},
  title = {First Draft of a Report on the EDVAC},
  journaltitle = {IEEE Ann. Hist. Comput. },
  date = {1993},
  volume = {15},
  number = {4},
  pages = {27--75},
}
\end{filecontents*}
\usepackage{biblatex}

\renewcommand*{\labelnamepunct}{\newunitpunct\par}
\renewbibmacro{in:}{\newline In:}


\addbibresource{\jobname.bib}

\begin{document}

\nocite{*}

\printbibliography

\end{document} 

ここに画像の説明を入力してください

関連情報