ソート順序を変更して、オンライン URL 参照を参考文献の最後に配置するにはどうすればよいでしょうか?

ソート順序を変更して、オンライン URL 参照を参考文献の最後に配置するにはどうすればよいでしょうか?

参考文献の @misc エントリを学術会議の出版物の後の最後に移動して、それらのエントリの重みを下げたいと思っています。それ以外の点では、abbrvnat が参考文献項目を表示する方法が気に入っています。また、引用番号と圧縮を取得するために natbib も使用しています。

デフォルトでは、引用は著者名で並べ替えられます (これは問題ありません)。著者名が利用できない場合は、参考文献の並べ替えフィールドとして何か他のもの (タイトルなど) が使用されているようです。

相対的な順序を維持しながら、すべての @misc 参照をドキュメントの最後に送信する最も簡単な方法は何ですか?

サンプルドキュメント:

\documentclass[11pt]{article}
\usepackage[hyphens]{url}
\usepackage[numbers,sort&compress]{natbib}

\begin{document}

Articles: \cite{bogus, greenwade93}

Website: \cite{example}

\bibliographystyle{abbrvnat}
\bibliography{biblio}

\end{document}

\bibliographystyle{myabbrvnat}
\bibliography{biblio}

例の文献:

@misc{example,
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

@article{bogus,
  aurhor =  {Bogus Redwade},
  title = {A Bogus Article},
  year = {1993},
}

@article{greenwade93,
  author  = {George D. Greenwade},
  title   = {The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})},
  year    = {1993},
  journal = {TUGBoat},
  volume  = {14},
  number  = {3},
  pages   = {342--351}
}

この例では、Web サイトをリストの最後に移動したいと思います。Web サイトが複数ある場合は、それらの相対的な順序を維持する必要があります。

スクリーンショット

答え1

参考文献ファイルを変更しても構わないのであれば、よく知られた\noopsort回避策を使うことができます(https://tex.stackexchange.com/search?q=noopsort) を使用して、その他のエントリを残りのエントリの後に並べ替えます。並べ替えは作成者に基づいて実行されるため、その他のエントリのタイトル フィールドも作成者に変更する必要があります。このソリューションでは、.bst-file を変更する必要はありません。

例:

@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }

@misc{example,
  author = {{\noopsort{zzz-example}}{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

結果:

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

あるいは、biblatex参考文献ファイルを変更せずに、タイプごとに別々の参考文献セクションを印刷することで、これを使用することもできます。https://tex.stackexchange.com/a/6966:

\printbibliography[nottype=misc,title={References}]
\vspace{-6mm}
\printbibliography[heading=none,type=misc]

ここでの小さな問題は、2 番目の参考文献セクションでは、見出しがなくても、削除する必要がある余分なスペースが導入されることです (たとえば、負の を使用vspace)。

答え2

1 つの方法を見つけましたが、BST ファイルを編集する必要があります。やりすぎのように感じます。ただし、bst ファイルはソートを担当しているようです。

まず、エントリのキーと思われるものを変更してみましたが、たとえば@misc{foo,...}に変更してみました@misc{z-foo,...}が、まったく効果がなかったので、さらに深く調べました。

ステップ1. bstファイルを編集する

  1. abbrvnat.bstをプロジェクトディレクトリ($ cp /usr/share/texlive/texmf-dist/bibtex/bst/natbib/abbrvnat.bst ./myabbrtnat.bst)にコピーします
  2. ファイルの先頭に、「著者と出版年が同一の作品は、自然な順序を保つために引用キーでさらにソートされます」と書かれていることに注目してください。Abbrvnat はまず著者でソートします。これはおそらく、タプルでソートすることを意味します(author(s), year, key)

  3. コピーしたファイルを編集します。

    1. セクションでENTRY、 の後に、独自の行でkeyという新しいフィールドを追加します。sortkey
    2. author.sort 関数があります。これを変更して、author フィールドを上書きするために 'sortkey' フィールドを処理しました。

(引用の種類によっては、著者による並べ替えを行わないものもあります (編集者による並べ替えなど)。そのため、参考文献によっては、他の場所でもこれを再現する必要がある場合があります)

FUNCTION {author.sort}
{ sortkey empty$
    { author empty$
      { key empty$
          { "to sort, need author or key in " cite$ * warning$
          ""
          }
          { key sortify }
    if$
      }
      { author sort.format.names }
      if$
    }
    { sortkey sortify }
  if$
}

ステップ2.修正したBSTを使用する

  1. メインのLaTeXファイルで、次のように変更します。\bibliographystyle{myabbrvnat}

  2. 順序を変更する必要がある参考文献項目ごとに、sortkey順序を決定するために使用する新しい値を持つフィールドを追加します。最後に送信したい場合は、エントリの名前の前に「zz-」を付けます

テキストで:

...
Website: F~\cite{example-f}, E~\cite{example-e}, A~\cite{example-a}
...

そして書誌:

@misc{example-a,
  sortkey = {axample}, % will go before others - starts with 'a'
  title = {{Axample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-e,
  sortkey = {zzz-example},     % send to the back. prefix with 'zzz-'
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-f,
  sortkey = {zzz-fxample},     % send to the back. prefix with 'zzz-'
  title = {{Fxample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

生産:

結果

関連情報