Citar는 BibTeX, BibLaTeX 및 CSL JSON 서지 데이터와 LaTeX, 마크다운 및 조직 인용 편집 지원을 찾아보고 작업할 수 있도록 고도로 구성 가능한 completing-read
프런트 엔드를 제공합니다.
citar-embark
동반 패키지입니다.org-roam
, denote
및 zk
에 사용할 수 있는 외부 패키지 포함다음은 아래에 언급된 버티코 및 기호 사용자 정의가 포함된 스크린샷입니다.
그리고 여기 마크다운 버퍼에 있는 citar-capf
있습니다.
org-cite에서 citar가 작동하는 모습을 보려면 Ahmed Khaled의 Emacs Conf 2021 프레젠테이션을 시청하세요.
citar를 설치하는 방법에는 여러 가지가 있습니다.
vertico
완성 모듈과 함께 Doom Emacs biblio 모듈을 사용하는 것입니다.emacs-citar
패키지를 제공합니다.또한 최상의 경험을 위해서는 다음 패키지를 적극 권장합니다.
특히, 저자, 제목 등(즉, 인용 키뿐만 아니라)을 사용하여 검색 범위를 좁히려면 순서 독립적인 완성 스타일을 사용해야 합니다. 예를 들어 completion-styles
(orderless basic)
으로 설정된 Orderless입니다(예제 구성 참조).
또한 Emacs 28 이상을 권장합니다.
이는 최소 구성이며 Vertico 또는 내장된 icomplete-vertical과 같은 완료-읽기 호환 수직 완료 UI에서 작동하며 Mx
명령을 통해 사용할 수 있는 작업이 있습니다.
( use-package citar
:custom
(citar-bibliography '( " ~/bib/references.bib " )))
citar-capf
이 패키지에는 버퍼에서 인용 키를 완성 completion-at-point
기능이 포함되어 있으며 다음과 같이 구성할 수 있습니다.
( use-package citar
:custom
(citar-bibliography '( " ~/bib/references.bib " ))
:hook
( LaTeX-mode . citar-capf-setup)
( org-mode . citar-capf-setup))
citar-embark
패키지는 citar-embark-mode
마이너 모드를 통해 미니버퍼와 at-point에 상황별 액세스 작업을 추가합니다.
Embark를 사용할 때 Citar 작업은 일반적이며 조직, 마크다운 및 라텍스 모드에서 동일하게 작동합니다.
( use-package citar-embark
:after citar embark
:no-require
:config (citar-embark-mode))
이는 citar-embark
에서 사용할 수 있는 버퍼 작업을 보여줍니다.
Org-Mode에서만 Citar를 사용하고 싶다면 이것이 최선의 선택입니다.
( use-package citar
:no-require
:custom
(org-cite-global-bibliography '( " ~/bib/references.bib " ))
(org-cite-insert-processor 'citar )
(org-cite-follow-processor 'citar )
(org-cite-activate-processor 'citar )
(citar-bibliography org-cite-global-bibliography)
; ; optional: org-cite-insert is also bound to C-c C-x C-@
:bind
( :map org-mode-map :package org ( " C-c b " . # 'org-cite-insert )))
Org-Mode 버퍼의 Cc Cx C-@
에 바인딩된 org-cite-insert
명령을 사용하여 인용을 삽입할 수 있습니다. 위의 선택적 :bind
명령은 또한 더 짧은 Cc b
바인딩을 제공합니다.
org-open-at-point
사용하여 Embark 메뉴를 열려면 이 변수를 설정해야 합니다.
( setq citar-at-point-function 'embark-act )
그러나 org-at-point
와 독립적으로 그리고 latex-mode
와 같은 다른 모드에서 embark-act
및 embark-dwim
모두 호출할 수 있습니다.
Citar에는 주요 모드별 편집 통합을 가능하게 하는 어댑터 프레임워크가 포함되어 있습니다. 이러한 어댑터는 citar-major-mode-functions
목록으로 구성할 수 있는 다음 기능을 제공할 수 있습니다.
insert-keys
: 인용 키를 삽입합니다(이것은 사라질 수 있습니다).insert-citation
: 인용문을 삽입합니다.insert-edit
: 인용을 삽입하거나 해당 지점을 편집합니다.local-bib-files
: 버퍼와 관련된 참고문헌 파일을 찾습니다.key-at-point
: 포인트의 인용 키를 반환합니다.citation-at-point
: 해당 지점에서 인용의 키 목록을 반환합니다.Citar에는 현재 다음과 같은 어댑터가 포함되어 있습니다.
citar-org
: 기본적으로 org-cite
만 지원하지만 다른 형식으로 구성할 수 있습니다.citar-latex
: 구성 가능한 bibtex, natbib 및 biblatex 지원(AUCTeX 필요)citar-markdown
: 기본적으로 pandoc
인용 구문만 지원합니다.이들 중 어느 것도 구성이 필요하지 않으며 필요에 따라 로드되어야 합니다.
citar-open-entry
명령은 소스 데이터 항목을 엽니다. citar-open-entry-function
사용하여 이를 구성할 수 있습니다. 기본적으로 이는 관련 참고문헌 파일을 열고 해당 항목으로 지점을 이동하는 citar-open-entry-in-file
사용합니다. 포함된 다른 옵션은 Zotero에서 항목을 선택하는 citar-open-entry-in-zotero
입니다. 기능은 Better BibTeX(어쨌든 사용해야 합니다!)에 따라 다릅니다.
탐색 UI에는 세 가지 섹션이 있습니다.
위의 모든 콘텐츠를 검색할 수 있습니다. 접두어의 경우 has:file
또는 has:notes
각각 사용하여 관련 파일이나 메모를 필터링할 수 있습니다(적어도 orderless
, 심지어 :p
또는 :n
약칭도 사용).
citar-templates
변수는 이러한 섹션의 형식과 기본 노트 기능을 구성합니다. 기본값은 다음과 같습니다.
( setq citar-templates
'((main . " ${author editor:30%sn} ${date year issued:4} ${title:48} " )
(suffix . " ${=key= id:15} ${=type=:12} ${tags keywords:*} " )
(preview . " ${author editor:%etal} (${year issued date}) ${title}, ${journal journaltitle publisher container-title collection-title}. n " )
(note . " Notes on ${author editor:%etal}, ${title} " )))
메모:
%
문자는 citar-display-transform-functions
에서 키로 정의된 토큰 앞에 옵니다. 해당 값은 함수 및 선택적 인수 목록입니다. 이를 포함하는 경우 너비 사양도 포함하는 경우 너비 뒤에 와야 합니다.UI에는 구성 가능한 표시기가 포함되어 있습니다. 기본적으로 여기에는 참조와 관련된 다양한 리소스의 존재를 나타내는 일반 텍스트 표시기가 포함되어 있습니다.
다른 지표에 대해서는 위키를 참조하세요.
다음은 링크 표시기를 제거하고 all-the-icons
사용하여 일반 텍스트와 아이콘 표시기를 혼합하는 이 구성을 사용한 스크린샷입니다.
( setq citar-indicators
( list citar-indicator-files ; plain text
citar-indicator-notes-icons)) ; icon
물론 자신만의 지표를 만들 수도 있습니다. 다음은 아이콘을 통합한 표시기 정의의 예입니다.
( defvar citar-indicator-notes-icons
(citar-indicator-create
:symbol (all-the-icons-material
" speaker_notes "
:face 'all-the-icons-blue
:v-adjust -0.3 )
:function # 'citar-has-notes
:padding " "
:tag " has:notes " ))
그러나 포함된 조건자 함수는 성능이 최적화되어야 한다는 점을 명심하세요. 완성 UI는 사용자가 라이브러리를 열 때마다 전체 라이브러리에서 해당 함수를 실행하기 때문입니다.
Nerd-icons.el은 All-the-icons의 대안인 Nerd Font 아이콘을 Emacs 내에서 쉽게 사용하기 위한 라이브러리로, Doom Emacs에 이미 포함되어 있는 아이콘 패키지입니다. 비슷한 모양을 얻는 예는 다음과 같습니다.
( defvar citar-indicator-notes-icons
(citar-indicator-create
:symbol (nerd-icons-mdicon
" nf-md-notebook "
:face 'nerd-icons-blue
:v-adjust -0.3 )
:function # 'citar-has-notes
:padding " "
:tag " has:notes " ))
( defvar citar-indicator-links-icons
(citar-indicator-create
:symbol (nerd-icons-octicon
" nf-oct-link "
:face 'nerd-icons-orange
:v-adjust -0.1 )
:function # 'citar-has-links
:padding " "
:tag " has:links " ))
( defvar citar-indicator-files-icons
(citar-indicator-create
:symbol (nerd-icons-faicon
" nf-fa-file "
:face 'nerd-icons-green
:v-adjust -0.1 )
:function # 'citar-has-files
:padding " "
:tag " has:files " ))
( setq citar-indicators
( list citar-indicator-files-icons
citar-indicator-notes-icons
citar-indicator-links-icons))
저장소 test
디렉토리에는 emacs -Q
샌드박스에서 이 패키지와 관련 패키지를 실행하는 데 사용할 수 있는 스크립트도 포함되어 있습니다. 그렇게 하려면 test
디렉터리에서 ./run.sh
실행하면 됩니다.
citar
helm-bibtex
및 ivy-bibtex
의 사전 정의된 검색 기능과 유사한 기능이 있지만 구현 방식이 다릅니다. 검색어를 인수로 사용하여 새 명령을 생성하는 대신 citar-presets
변수를 설정하고 액세스하려는 문자열을 추가하면 됩니다.
( setq citar-presets '( " one search string " " another search string " ))
그런 다음 완료 프롬프트에서 이러한 문자열에 액세스하는 두 가지 방법이 있습니다.
Mn
사용하면 문자열이 순환됩니다.citar-insert-preset
호출한 다음 문자열을 선택하여 citar
또한 선택 내역을 보존합니다(다중 후보 선택에 대한 아래 주의 사항 참조). 이는 완료 UI에서도 액세스할 수 있지만 Mp
사용하여 가능합니다. savehist-additional-variables
에 citar-history
추가하여 세션 전반에 걸쳐 이 기록을 저장할 수 있습니다.
Citar는 캐시를 사용하여 라이브러리 표시 속도를 높입니다. bib 파일이 변경되면 다음에 Citar 명령을 실행할 때 캐시가 자동으로 업데이트됩니다.
캐시된 데이터 형식이 미리 지정된 완성 후보는 파일별로 독립적으로 추적됩니다. 예를 들어, 많이 변경되는 매우 큰 참고 문헌 파일이 하나 있는 경우 더 안정적인 하나의 큰 파일과 더 자주 변경되는 하나 이상의 작은 파일로 분할하는 것을 고려할 수 있습니다.
Citar는 구성 가능한 메모 작성 및 액세스 통합을 제공합니다. citar-notes-sources
변수는 노트 백엔드를 구성하고 citar-notes-source
선택한 백엔드를 활성화합니다.
백엔드는 주로 Citar 디스플레이를 업데이트하고, 완성 후보를 생성하고, 기존 및 새 노트를 여는 기능을 지정합니다. 자세한 내용은 citar-notes-sources
문서 문자열과 citar-register-notes-source
및 citar-remove-notes-source
편의 함수를 참조하세요.
citar-library-paths
설정된 경우 관련 open 명령은 해당 디렉터리에서 CITEKEY.EXTENSION
파일 이름을 찾습니다. 또한 파일 필드의 내용을 구문 분석합니다. citar-file-parser-functions
변수는 사용할 파서를 제어하며 두 개의 파서가 포함되어 있습니다.
citar-file-parser-default
파서는 Zotero에서와 같이 간단한 콜론 또는 세미콜론으로 구분된 파일 경로 목록에 대해 작동합니다.citar-file-parser-triplet
:/path/file.pdf:PDF
같은 형식을 사용하여 파일을 나타내는 Mendeley 및 Calibre에서 작동합니다.Zotero와 Calibre로 생성된 항목이 혼합되어 있는 경우 다음과 같이 설정하면 두 항목을 모두 구문 분석합니다.
( setq citar-file-parser-functions
'(citar-file-parser-default
citar-file-parser-triplet))
citar-library-file-extensions
변수는 open 명령이 인식할 파일 확장자를 제어합니다. 'nil'이면 모든 확장자를 인식합니다. citar-file-additional-files-separator
변수는 citar가 동일한 참조 키에 대해 여러 라이브러리 파일에 대해 식별해야 하는 패턴을 정의합니다. 다음은 pdf 및 jpg 확장자만 인식하고 test-1.jpg
형식의 추가 파일 이름을 인식하는 예입니다.
( setq citar-library-file-extensions ( list " pdf " " jpg " )
citar-file-additional-files-separator " - " )
citar가 특정 확장자를 가진 파일을 여는 방법을 변경하려면 citar-file.el
에 정의된 citar-file-open-functions
변수를 사용자 정의하세요.
착수 및 협의와 함께 사용하면 후보자가 다양한 대체 작업을 수행할 수 있습니다.
'crossref' 필드가 있는 BibTeX 항목의 경우 Citar는 항목의 키를 상호 참조 항목과 연결된 리소스(파일, 메모, 링크)와 연결합니다.
예를 들어 'crossref' 필드 "Meyers1999"가 있는 "Baym1965"에 대한 항목을 생각해 보세요. citar-open이 호출되고 "Baym1965"가 선택되면 미니버퍼는 "Baym1965" 및 "Meyers1999"와 관련된 모든 파일, 메모 및 링크를 나열합니다. 관련 파일, 메모 또는 링크를 나타내는 적절한 접두사도 미니버퍼의 각 후보와 함께 나열됩니다.
참고: BibTeX 상호 참조 기능이 제대로 작동하려면 'crossref' 필드가 있는 항목이 bib 파일의 상호 참조 항목 앞에 와야 합니다. (이것은 특히 Citar가 아닌 BibTeX의 요구 사항입니다.) 위의 예에서 "Baym1965" 항목은 "Meyers1999" 항목 앞에 와야 합니다.
시타르를 사용하는 방법에는 몇 가지가 있습니다.
Citar에는 "삽입", "활성화" 및 "팔로우" 기능을 갖춘 org-cite citar
프로세서가 포함되어 있습니다. org-cite에 대해 말할 때 인용은 하나 이상의 참조 집합(citation-references) 을 참조하며, 각 참조에는 앞에 오는 텍스트(접두사)와 뒤에 오는 텍스트(접미사)가 있을 수 있습니다. org-cite에 대해 자세히 알아보려면 Org 매뉴얼의 인용 페이지를 방문하세요.
"삽입 프로세서"는 citar-select-refs
사용하여 라이브러리를 탐색하고 org-cite-insert
명령을 사용하여 인용 및 인용 참조를 삽입하고 편집합니다. 이 명령은 상황을 인식하므로 해당 동작은 인용문의 점 위치에 따라 달라집니다 . 예를 들어, 다음과 같은 경우:
"활성화 프로세서"는 citar-org-activation-functions
의 기능 목록을 실행합니다. 이 목록은 기본적으로 oc-basic
의 basic
프로세서 버전인 citar-org-cite-basic-activate
사용하여 citar의 성능을 활용하는 글꼴을 제공합니다. 캐싱뿐만 아니라 특정 지점에서 인용 편집을 위한 키맵( citar-org-citation-map
)을 추가하는 작은 기능도 있습니다. citar-org-citation-map
키맵에는 추가 인용 및 인용 참조 편집 옵션을 제공하는 다음 바인딩이 포함되어 있습니다.
열쇠 | 제본 | 설명 |
---|---|---|
참조 Cx DEL | citar-org-삭제-인용 | 해당 지점에서 인용 또는 인용 참조 삭제 |
참조 Cx k | citar-org-kill-인용 | 해당 지점에서 인용 또는 인용 참조를 종료합니다. |
S-<왼쪽> | citar-org-shift-reference-left | 인용 참조를 왼쪽 지점으로 이동 |
S-<오른쪽> | citar-org-shift-reference-right | 인용 참조를 오른쪽 지점으로 이동 |
mp | citar-org-update-prefix-접미사 | 해당 지점에서 참조의 접두사와 접미사를 업데이트합니다. |
접두사 arg를 사용하여 호출하면 모두 업데이트됩니다. | ||
해당 지점에서 인용의 인용-참조 | ||
<마우스-1> | 시타르딤 | 포인트에서 citar-at-point-function 의 값을 호출합니다. |
<마우스-3> | 착수 행위 | 해당 지점에서 embark-act 호출합니다. |
"follow processor"는 org-open-at-point
명령을 통해 액세스할 수 있는 at-point 기능을 제공합니다. 기본적으로 org-cite를 지원하는 org-mode에서 포인트가 인용 또는 인용 참조에 있고 org-open-at-point
호출하면 citar-at-point-function
에 설정된 명령이 실행됩니다. 기본적으로 citar-open
입니다. citar-at-point-function
의 값을 embark가 설치 및 구성된 embark-act
로 변경하면 해당 지점에서 표준 citar 명령에 대한 액세스가 제공됩니다.
조직 인용 인용에는 인용 렌더링을 로컬에서 수정하기 위한 선택적 "스타일" 및 "변형"이 포함됩니다. 새 인용문을 삽입할 때 접두사 arg를 사용하여 org-cite-insert
호출하면 스타일을 선택하라는 메시지가 표시됩니다. 기존 인용 스타일을 편집하려면 org-cite-insert
실행하기 전에 인용 접두어에 점이 있는지 확인하세요. 그러면 사용 가능한 스타일 목록이 표시됩니다. 해당 목록은 구성을 기반으로 합니다. 예를 들어 oc-natbib
및 oc-csl
프로세서가 구성되어 있는 경우 목록에는 해당 두 프로세서에서 사용할 수 있는 스타일과 변형이 포함됩니다. 번들 프로세서에 포함된 변형에는 다음이 포함되며 괄호 안의 단축키는 다음과 같습니다.
bare
( b
): 주변 구두점 없음caps
( c
): 초기 대문자화를 강제합니다.full
( f
): 저자 이름에 대한 et al 단축을 무시합니다. 일반적으로 이러한 기능은 필요하지 않지만 특정 상황에서는 유용할 수 있습니다. 내보내기 프로세서가 특정 스타일에 대한 특정 변형을 지원하지 않는 경우 기본 스타일로 대체해야 합니다. 예를 들어 text/f
지정했는데 사용하는 내보내기 프로세서가 f
변형을 지원하지 않는 경우 text
지정한 것처럼 출력되어야 합니다.
Mx
간단히 Mx
실행하고 원하는 명령을 선택한 다음, 찾고 있는 항목을 찾기 위한 용어를 입력하고 Return 키를 누르십시오. 그러면 기본 작업인 호출한 명령이 실행됩니다.
embark-act
를 통해 대체 작업에 액세스 검색하는 동안 해당 레코드를 편집하고 embark를 설치하고 구성한 경우 여기에서 embark-act
시작됩니다. 간단히 embark-act
에 대한 키 바인딩(제 경우에는 Co
)을 입력하고 대체 작업을 선택하세요.
embark-collect-snapshot
사용 유용할 수 있는 마지막 옵션은 embark-act
에서 embark-collect-snapshot
( S
)을 실행하는 것입니다. 그러면 후보 하위 집합이 선택되어 별도의 버퍼에서 열립니다. 여기에서 embark-act
(수집 버퍼의 a
에도 바인딩됨)를 사용하여 위에서 설명한 것과 동일한 옵션을 실행할 수 있습니다.
예를 들어, 당신이 논문 작업을 하고 있다고 가정해 보겠습니다. 해당 버퍼의 어느 시점에서 인용하고 싶은 항목의 전체 슈퍼 세트를 보유합니다. 여기에서 인용하려는 각 항목을 개별적으로 검색하는 대신 원하는 대로 후보자에 대해 다양한 작업을 실행할 수 있습니다.
citar-dwim
사용 Mx citar-dwim
해당 지점에서 직접 발견된 인용 키에 대해 기본 작업을 실행합니다. embark
설치한 경우 동일한 동작에 대해 대신 embark-dwim
사용하고, 추가 작업에 대해서는 embark-act
사용할 수 있습니다.
인용 키가 발견되지 않으면 선택을 위해 미니버퍼가 열립니다. citar-at-point-fallback
nil로 설정하여 이 동작을 비활성화할 수 있습니다.
다음 패키지는 citar를 확장하거나 향상시킵니다.
이 작은 패키지는 시타르 노트 소스를 제공하므로 각 노트 관리 패키지와 더욱 긴밀하게 통합됩니다.
citar가 org-ref
, ivy-bibtex
및 helm-bibtex
(및 관련 bibtex-completion
)와 같은 다른 패키지와 어떻게 비교되는지 이해하려면 위키의 비교 페이지를 참조하세요.
이 프로젝트의 아이디어는 처음에는 Maxime Tréca 및 Daniel Mendler와의 대화를 통해 구체화되었습니다. Consult 및 marginalia의 저자인 Daniel은 새로운 완성 읽기 패키지 제품군의 가능성을 이해하는 데 도움을 주었고 Maxime은 초기 프로토타입을 제시했습니다.
이 코드는 이러한 아이디어를 가져와 다시 구현하여 기능 세트를 채우고 코드 명확성과 성능을 최적화합니다.