どのように使用すればいいですか引用スタイル言語(CSL) を LaTeX 文献目録に使用していますか? 素晴らしいですね。現在 2,803 の引用スタイルがあります。Zotero スタイル リポジトリ。
引用スタイル言語 (CSL) は、本文中の引用、注釈、参考文献の書式を記述するための XML 形式です。CSL には次の機能があります。
- あらゆるアプリケーションで使用できるオープンフォーマット
- コンパクトで堅牢なスタイルを書く能力
- スタイル要件の広範なサポート
- 自動スタイルローカリゼーション
- スタイルの配布と更新が簡単
- 何千もの無料で利用できるスタイルを備えた急速に成長しているライブラリ
答え1
実際に、LaTeX ドキュメントをコンパイルするときに CSL を使用するツールが存在します。パンドック引数を受け入れ--csl=<csl file>
、指定された CSL スタイルを使用して参考文献をフォーマットします。
例えば:
pandoc --bibliography=refs.bib --csl=mystyle.csl -o out.pdf doc.tex
ソース からout.pdf
bibtex ファイルrefs.bib
と CSL ファイルを使用して LaTeX 経由でファイルを生成します。おそらく、そのソースには またはいくつかの引用がどこかに含まれているはずです。mystyle.csl
doc.tex
\thebibliography
答え2
一言で言えば、いいえ。
CSLのオリジナルの作者であるブルース・ダーカスは、LaTeX用のCSLの実装を見たいと繰り返し述べており(より正確に言うと、彼はLuaLaTeXについてよく話していました)、理論的にはそのようなことを実現するのはそれほど難しくないだろうとも述べています(これそして、次の投稿もその例です) が、今のところ、誰もそれに興味を示していません (私がリンクした投稿は 2008 年のものです)。
私の意見では、LaTeX 用の CSL は非常に便利です。CSL はますます注目を集めており (現在、実装は 6 つほどあります)、それほど強力ではありませんがbiblatex
(しかし、何が強力でしょうか?)、非常に用途が広く、最も重要なことは、完全にシステムに依存しないことです。
これは、LaTeX とさまざまなワードプロセッサで同様に機能し、複雑なスタイルを実際に処理できる参考文献スタイルを提供する最初のソリューションになります。
答え3
編集:
citeproc-lua独自のLaTeXパッケージが含まれ、BibTeXファイルのサポートが追加され、通常のLaTeX引用コマンドが使用されるようになりました。CTANなので、 を使用してインストールできますtlmgr
。
以下も参照例を実行する方法の説明:
\documentclass{article}
\usepackage{citation-style-language}
\cslsetup{style = apa}
\addbibresource{example.bib}
\begin{document}
Foo \cite{ITEM-1} bar \cite{ITEM-1, ITEM-2} baz.
\printbibliography
\end{document}
結果:
元の回答:
今では完全なCiteproc の Lua バージョンまだ TeX インターフェースは含まれていませんが、これを使用する LuaLaTeX のシンプルなパッケージは次のようになりますciteproc.sty
。
\ProvidesPackage{citeproc}
\RequirePackage{luacode}
% Basic initialization of Citeproc.lua
\begin{luacode*}
require("lualibs")
-- global object for functions defined in this
CSL = {}
local dom = require("luaxml-domobject")
local formats = require("citeproc.citeproc-formats")
local CiteProc = require("citeproc")
local function read_file(path)
local file = io.open(path, "r")
if not file then return nil end
local content = file:read("*a")
file:close()
return content
end
function CSL.load_style(filename)
CSL.style = read_file(filename)
end
function CSL.load_json(filename)
CSL.bib = CSL.bib or {}
local items = utilities.json.tolua(read_file(filename))
if not items then
return nil, "JSON file cannot be loaded: " .. filename
end
for _, item in ipairs(items) do
CSL.bib[item["id"]] = item
end
end
function CSL.load_lang(lang)
CSL.lang= lang
end
function CSL.load_style(style)
CSL.style = read_file(style)
end
function make_citeproc_sys(bib)
local bib = bib
local citeproc_sys = {
retrieveLocale = function (self, lang)
local locale_name_format = CSL.locale_name_format or "locales-%s.xml"
local filename = string.format(locale_name_format, lang)
local content = read_file(filename)
if content then
return dom.parse(content)
else
return nil
end
end,
retrieveItem = function (self, id)
return bib[id]
end
}
return citeproc_sys
end
function CSL.init()
CSL.bib = CSL.bib or {}
local citeproc_sys = make_citeproc_sys(CSL.bib)
CSL.citeproc = CiteProc:new(citeproc_sys, CSL.style)
CSL.citeproc.formatter = formats.latex
end
function CSL.cite(citation)
local cite_items = {}
for item in string.gmatch(citation, "([^,]+)") do
cite_items[#cite_items+1] = {id = item}
end
local result = CSL.citeproc:makeCitationCluster(cite_items)
tex.print(result)
end
function CSL.bibliography()
local params, result = CSL.citeproc:makeBibliography()
tex.print("\\begin{thebibliography}{}")
for _,bibitem in pairs(result) do
bibitem = bibitem:gsub("bibitem%[.-%]","bibitem")
tex.print(bibitem)
end
tex.print("\\end{thebibliography}")
end
\end{luacode*}
\newcommand\cslstyle[1]{%
\luaexec{CSL.load_style("#1")}
}
\newcommand\csljson[1]{%
\luaexec{CSL.load_json("#1")}
}
\newcommand\cslinit{%
\luaexec{CSL.init()}
}
\newcommand\cslcite[1]{%
\luaexec{CSL.cite("\luaescapestring{#1}")}
}
\newcommand\cslbibliography{\luaexec{CSL.bibliography()}}
% initialize citeproc
\AtBeginDocument{%
\cslinit%
}
\endinput
BibTeXファイルはサポートされていません。現時点ではJSONが必要です。次の例を実行するにはbib.json
、、、simple.csl
をlocales-en-US.xml
Citeproc-lua サンプルディレクトリ。
ファイルsample.tex
:
\documentclass{article}
\usepackage{citeproc}
\cslstyle{simple.csl}
\csljson{bib.json}
\begin{document}
hello world \cslcite{ITEM-1,ITEM-2}
\cslbibliography
\end{document}
LuaLaTeX を使用してコンパイルできます。結果は次のとおりです。
答え4
RMarkdown で LaTeX ドキュメントを作成する場合、ファイルのヘッダー (つまり、YAML ヘッダー) に csl パラメータを設定できます。これは非常に簡単で、RMarkdown の YAML ヘッダーの例を次に示します。
---
output:
pdf_document
title: 'Title of document'
author:
name: "My Name"
bibliography: references.bib
csl: biblio_style.csl
---
Text [@reference].
# References