ドキュメント内の BibTex 番号付けをカスタマイズするにはどうすればよいですか?

ドキュメント内の BibTex 番号付けをカスタマイズするにはどうすればよいですか?

いくつかの BibTeX 参照を含む単純な LaTeX ドキュメントがあります。

\documentclass[12pt]{article}
\begin{document}
 
\section{First section}
 
This document is an example of \texttt{thebibliography} environment using 
in bibliography management. Three items are cited: \textit{The \LaTeX\ Companion} 
book \cite{latexcompanion}, the Einstein journal paper \cite{einstein}, and the 
Donald Knuth's website \cite{knuthwebsite}. The \LaTeX\ related items are
\cite{latexcompanion,knuthwebsite}. 
 
\medskip
\bibliographystyle{unsrt}
\bibliography{sample}
 
\end{document}

出力は次のようになります。

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

本文中および参考文献セクション内の参照番号を、私が選択した特定の番号のセットに変更したいと思います。どうすればできますか?

たとえば、次のようなものを希望するとします。

1 第1セクション

この文書は、参考文献管理にthebibliography環境を使用する例です。3つの項目が引用されています:LATEX Companionブック[11]、アインシュタインジャーナル論文[22]、ドナルド・クヌースのウェブサイト[33]。LATEX関連の項目は[11、33]です。

参考文献

[11] ミシェル・グーセンス、フランク・ミッテルバッハ、アレクサンダー・サマリン『LATEXコンパニオン』アディソン・ウェズリー、マサチューセッツ州レディング、1993年。

[22] アルバート・アインシュタイン電気動力ボディ用。 (ドイツ語)[運動体の電気力学について]アンナレン・デア・フィジック、322(10):891{921、1905年。

[33] ドナルド・クヌース。クヌース:コンピュータとタイプセッティング。

LaTeX と BibTeX でこれを行うことはできますか?

答え1

まず、通常の方法で参考文献を準備します。次に、以下に示すように、%%STARTとの間にコードを追加して、希望する番号を設定できます%%END

このfilecontents環境は例としてのみ使用されるため、独自のデータベースを使用してください。

\begin{filecontents}{\jobname.bib}
@book{Knuth1984texbook,
    Author = {Knuth, D.E.},
    Title = {The \TeX book, volume A of Computers and typesetting},
    Publisher = {Addison-Wesley},
    Year = {1984},
}
@book{Chomsky1957,
    Address = {The Hague},
    Author = {Noam Chomsky},
    Publisher = {Mouton},
    Title = {Syntactic Structures},
    Year = {1957},
}
@book{Chomsky1965,
    Address = {Cambridge Mass.},
    Author = {Noam Chomsky},
    Publisher = {MIT Press},
    Title = {Aspects of the Theory of Syntax},
    Year = {1965},
}
\end{filecontents}

\documentclass{article}
\usepackage{xpatch} % also loads expl3

%%START
\makeatletter
\xpatchcmd{\@bibitem}
  {\item}
  {\item[\@biblabel{\changekey{#1}}]}
  {}{}
\xpatchcmd{\@bibitem}
  {\the\value{\@listctr}}
  {\changekey{#1}}
  {}{}
\makeatother

\ExplSyntaxOn
\cs_new:Npn \changekey #1
 {
  \str_case:nVF {#1} \g_changekey_list_tl { ?? }
 }
\cs_new_protected:Npn \setchangekey #1 #2
 {
  \tl_gput_right:Nn \g_changekey_list_tl { {#1}{#2} }
 }
\tl_new:N \g_changekey_list_tl
\cs_generate_variant:Nn \str_case:nnF { nV }
\ExplSyntaxOff

\setchangekey{Knuth1984texbook}{9}
\setchangekey{Chomsky1957}{3}
\setchangekey{Chomsky1965}{7}
%%END

\begin{document}
\section{First section}

This document is an example of \texttt{thebibliography} environment using 
 bibliography management. Three items are cited: \emph{Syntactic Structures} 
book \cite{Chomsky1957}, \emph{Aspects} \cite{Chomsky1965}, and  
Donald Knuth's \TeX book \cite{Knuth1984texbook}.

\bibliographystyle{plain}
\bibliography{\jobname}

\end{document}

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

怠惰のため、Alan Munn と同じデータを使用しました。

答え2

ここに、私が提案したソリューションのバージョンを示します。このソリューションの使用は限られているため、ソリューションをさらに複雑にする価値はおそらくありません。参照の基本的な構文は次のとおりです。

\mycite{<number>}{<bib-key>}

すでに使用されている引用( で導入\mycite)を参照したい場合は、 を使用するだけです\ref{<bib=key}

次に、各項目を使用して実際の参考文献項目を入力します\mybib。これらは、コマンドで使用した番号とともに\mycite、環境に入力した順序で表示されますitemize

\begin{filecontents}{\jobname.bib}

@book{Knuth1984texbook,
    Author = {Knuth, D.E.},
    Title = {The TEXbook, volume A of Computers and typesetting},
    Year = {1984}}

@book{Chomsky1957,
    Address = {The Hague},
    Author = {Noam Chomsky},
    Publisher = {Mouton},
    Title = {Syntactic Structures},
    Year = {1957}}

@book{Chomsky1965,
    Address = {Cambridge Mass.},
    Author = {Noam Chomsky},
    Publisher = {{MIT} Press},
    Title = {Aspects of the Theory of Syntax},
    Year = {1965}}
\end{filecontents}
\documentclass[12pt]{article}
\usepackage{natbib}
\usepackage{calc}
\usepackage{etoolbox}
\usepackage{bibentry}
\usepackage{enumitem}
\SetLabelAlign{bibright}{\hss\llap{[#1]}}
\newcounter{mynum}
\newcommand\mycite[2]{[#1]\setcounter{mynum}{0}\addtocounter{mynum}{#1-1}\refstepcounter{mynum}\label{#2}}
\newcommand\mybib[1]{\item[\ref{#1}]\bibentry{#1}}

\begin{document}
\section{First section}

This document is an example of \texttt{thebibliography} environment using 
 bibliography management. Three items are cited: \emph{Syntactic Structures} 
book \mycite{6}{Chomsky1957}, \emph{Aspects} \mycite{4}{Chomsky1965}, and  
Donald Knuth's TeXBook \mycite{10}{Knuth1984texbook}. The Linguistics related items are
[\ref{Chomsky1965},\ref{Chomsky1957}].
\medskip
\bibliographystyle{unsrtnat}
\nobibliography{\jobname}
\begin{itemize}[labelwidth=!,labelsep=1em,align=bibright]
\mybib{Chomsky1957}
\mybib{Chomsky1965}
\mybib{Knuth1984texbook}
\end{itemize}
\end{document}

コードの出力

答え3

あなたのコメントを読んだ後、もっと簡単な方法があると思います。 という素晴らしいパッケージがありxcite、これを使用すると他のドキュメントから引用をインポートでき、数字を気にする必要がありません (次の例では、他のドキュメントが と呼ばれていると想定していますdocument.tex)。

\documentclass{article}

\usepackage{xcite}
\externalcitedocument{document}

\begin{document}

\cite{knuth}


\end{document}

答え4

質問はbibデータベースのエントリにカスタムラベルを使用する方法に関するものなので、Biblatexでこれを行う標準的な方法があることを付け加えておきたいと思います。データフィールドを使用するだけです。速記は、データベース内のそのエントリのみの標準のショートカットを上書きします。次の最小限の動作例では文字をいくつか入力しましたが、もちろん数字や好きなものを入力することもできまます。

\begin{filecontents}{thebib.bib}
@article{Boll,
author = {Boll, Grodan},
title = {Frogs now and then},
year = 1995,
journal = {Allers},
volume = 3,
shorthand = {FN\&T}
}
\end{filecontents}
\documentclass{article}
\usepackage{biblatex}
\addbibresource{thebib.bib}
\begin{document}
Frogs are common, see also \cite{Boll}.
\printbibliography
\end{document}

出力は次のようになる PDFファイルからのスクリーンショット

関連情報