어떻게 사용할 수 있나요?인용 스타일 언어LaTeX 참고문헌의 (CSL)? 정말 환상적이네요. 현재 2,803개의 인용 스타일이 있습니다.Zotero 스타일 저장소.
CSL(Citation Style Language)은 텍스트 내 인용, 메모 및 참고문헌의 형식을 설명하기 위한 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의 창시자인 Bruce D'Arcus는 LaTeX용 CSL 구현을 보고 싶다고(더 정확하게 말하면 LuaLaTeX에 대해 자주 이야기함) 그런 일이 그리 어렵지 않을 것이라고 반복해서 말했습니다. 이론적으로 달성(참조이것예를 들어 다음 게시물), 하지만 지금까지 아무도 이 작업에 관심이 없었습니다(내가 링크한 게시물은 2008년으로 거슬러 올라갑니다!).
제 생각에는 LaTeX용 CSL이 매우 유용할 것 같습니다. CSL은 점점 더 많은 관심을 받고 있으며(ATM 구현이 약 6개 있음) CSL만큼 강력하지는 않지만 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