編集

編集

私は、biblatex を使用して 2 つの異なる参考文献を作成しようとしています。最初の参考文献には、テキスト内の出現順に並べられ、特別な接頭辞が付けられた私の論文のみが含まれます。2 番目の参考文献には、一般的な参考文献が、別の順序 (名前、タイトル、年など) で並べられ、特別な接頭辞が付けられずに含まれます。

2 つの書誌が交差していない (つまり、共通のエントリがない) ことに注意してください。

私は次のMTWを使用します:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{ref.bib}
@ARTICLE{Pub1,
  author = {A. R},
  title = {My best paper},
  year = {2013},
  journal = C,
  keywords = {publication}
}

@ARTICLE{Pub2,
  author = {A. R},
  title = {My second best paper},
  year = {2013},
  journal = C,
  keywords = {publication}
}

@ARTICLE{Nopub1,
  author = {A. R},
  title = {Not my paper 1},
  year = {2012},
  journal = I,
  keywords = {general}
}

@ARTICLE{Nopub2,
  author = {A. R},
  title = {Not my paper 2},
  year = {2012},
  journal = I,
  keywords = {general}
}

\end{filecontents}

\usepackage[style=numeric, sorting=none, defernumbers=true, backend=biber]{biblatex}


\addbibresource{ref.bib}

\pagestyle{empty}

\begin{document}

This is my first publication : \cite{Pub1}

These are not my publications: \cite{Nopub1,Nopub2}

This is my second publication: \cite{Pub2}


\printbibliography[keyword=publication, prefixnumbers=R, title=My papers]

\begin{refcontext}[sorting=nty]
\printbibliography[notkeyword=publication, prefixnumbers=, title=Not my papers]
\end{refcontext}

\end{document}

出力(pdflatex + biber + pdflatex + pdflatex の実行後):

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

両方の参考文献は正しく印刷され、順序も整っていますが、2 番目の参考文献を参照するテキスト引用が間違っています (すべて [0] です)。他の関連する投稿も確認してみましたが、誰もこの特定の問題について言及していませんでした。

ありがとう!

答え1

現時点では良い解決策があるとは思いません。しかし、背景を説明してみます。あなたの例では、2 つの参考文献が重複していないため、必要な出力は明らかです。しかし、そうである必要はありません。異なる refcontexts では、エントリを繰り返すことができます。それでは、フィルターを削除するとどうなるか見てみましょう。

\documentclass{article}

\usepackage[style=numeric, sorting=none,   backend=biber]{biblatex}

\addbibresource{ref.bib}

\pagestyle{empty}

\begin{document}

This is my first publication : \cite{Pub1}

These are not my publications: \cite{Nopub1,Nopub2}

This is my second publication: \cite{Pub2}

\printbibliography[title=Not my papers]

\newrefcontext[sorting=nty]
This is my first publication: \cite{Pub1}

These are not my publications: \cite{Nopub1,Nopub2}

This is my second publication: \cite{Pub2}

\printbibliography[prefixnumbers=R,title=My papers]

\end{document}

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

ご覧のとおり、すべての bibentry には 2 つのラベルがあり、biblatex はどちらを使用するかを選択する必要があります。賢明なことに、最初の cites ブロックには最初の (デフォルトの) refcontext からのラベルを使用し、2 番目のブロックには 2 番目のブロックからのラベルを使用します。

これは、ゼロが返される理由を説明しています。最初のブロックでは、引用元にラベルがなく、biblatex には、フォールバックとして別の refcontext からのラベルが必要であることを推測する機会がありません。結局のところ、適切なラベルが複数存在する可能性があります。

biblatexがciteに使用するラベルは、の現在の値に依存します\blx@refcontext@sorting。そのため、次のようにすることで、biblatexに別のrefcontextのラベルを使用するようにローカルに強制することができます。

{
 \makeatletter\def\blx@refcontext@sorting{nty}
 These are not my publications: \cite{Nopub1,Nopub2}
} 

すると、次のようなものが得られます。

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

しかし、この解決策は、のような混合都市には機能しません\cite{Nopub1,pub1}。そして、「論理的な」解決策は

 \AtEveryCitekey{\ifkeyword{puplication}{}{\def\blx@refcontext@sorting{nty}}}

refcontext のコードが \AtEveryCitekey が機能する前に実行されるため、これも機能しません。そのため、おそらく機能リクエストを行う必要があるでしょう...

編集

これを試すこともできます。ただし、注意してください。これはハックであり、biblatex を混乱させる可能性があります。そのため、より多くのデータを使用して慎重にテストして確認してください。

\documentclass{article}

\usepackage[style=numeric, sorting=none, defernumbers,  backend=biber]{biblatex}

\addbibresource{ref.bib}

\pagestyle{empty}

\makeatletter
\AtEveryCitekey{\ifkeyword{publication}{}{\def\blx@refcontext@sorting{nty}%
   \csname blx@data@\the \c@refsection @\blx@refcontext@sorting @\abx@field@entrykey\endcsname}}
\makeatother
\begin{document}

This is my first publication : \cite{Pub1}

These are not my publications: \cite{Nopub1,Nopub2}

This is my second publication: \cite{Pub2}


\printbibliography[keyword=publication, prefixnumbers=R, title=My papers]

\begin{refcontext}[sorting=nty]
\printbibliography[notkeyword=publication, prefixnumbers=, title=Not my papers]
\end{refcontext}

\end{document}

答え2

refcontext はこのようなことのために導入されました。refcontext 内の引用コマンドはコンテキストを共有するため、「これらは私の出版物ではありません:」という引用を同じ refcontext 内に配置します。

\assignrefcontextentries[sorting=nty]{Nopub1,Nopub2}
\begin{document}

This is my first publication: \cite{Pub1}
These are not my publications: \cite{Nopub1,Nopub2}
This is my second publication: \cite{Pub2}

\printbibliography[keyword=publication, prefixnumbers=R, title=My papers]

\begin{refcontext}[sorting=nty]
\printbibliography[notkeyword=publication, title=Not my papers]
\end{refcontext}

\end{document}

これにはbiblatex 3.3が必要です

答え3

問題は、異なる を使用することから生じますrefcontext。2refcontext番目の の周囲の環境を削除するとprintbibliography、目的の出力が得られます。

関連情報