يوفر Citar واجهة أمامية completing-read
وقابلة للتكوين بدرجة عالية لتصفح البيانات الببليوغرافية BibTeX وBibLaTeX وCSL JSON والتعامل معها، ودعم تحرير LaTeX وmarkdown وorg-cite.
citar-embark
، توفر إجراءات سياقية في المخزن المؤقت الصغير، وأيضًا عند النقطة في المخازن المؤقتة org، وmarkdown، وLaTeX.org-roam
و denote
و zk
فيما يلي لقطة شاشة تحتوي على تخصيص الرأس والرمز المذكور أدناه.
وهنا citar-capf
في مخزن تخفيض السعر.
لرؤية تطبيق citar أثناء العمل باستخدام org-cite، يمكنك مشاهدة العرض التقديمي لـ Emacs Conf 2021 الذي قدمه أحمد خالد.
هناك عدة طرق لتثبيت السيتار:
vertico
.emacs-citar
.بالإضافة إلى ذلك، يوصى بشدة بالحزم التالية للحصول على أفضل تجربة.
على وجه الخصوص، إذا كنت تريد تضييق نطاق بحثك باستخدام المؤلفين والعناوين وما إلى ذلك (أي ليس فقط مفاتيح الاقتباس)، فأنت بحاجة إلى استخدام أسلوب إكمال مستقل عن الترتيب؛ على سبيل المثال، بدون ترتيب مع تعيين completion-styles
على (orderless basic)
(راجع مثال التكوين).
نوصي أيضًا بـ Emacs 28 أو الأحدث.
هذا هو الحد الأدنى من التكوين، وسيعمل مع أي واجهة مستخدم للإكمال الرأسي المتوافقة مع إكمال القراءة، مثل Vertico، أو icomplete-vertical المدمج، مع الإجراءات المتاحة عبر أوامر 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
.
عند استخدام Embark، تكون إجراءات Citar عامة، وتعمل بنفس الطريقة عبر أوضاع المؤسسة، وتخفيض السعر، واللاتكس.
( use-package citar-embark
:after citar embark
:no-require
:config (citar-embark-mode))
يوضح هذا الإجراءات العازلة التي أتاحها citar-embark
:
إذا كنت تريد استخدام Citar فقط في Org-Mode، فهذا هو الخيار الأفضل.
( 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-cite-insert
، المرتبط بـ Cc Cx C-@
في المخازن المؤقتة Org-Mode. يمنح الأمر :bind
الاختياري أعلاه أيضًا رابط Cc b
الأقصر.
إذا كنت تفضل فتح قائمة Embark باستخدام org-open-at-point
، فيجب عليك تعيين هذا المتغير.
( setq citar-at-point-function 'embark-act )
يمكنك استدعاء كل من embark-act
و embark-dwim
بشكل مستقل عن org-at-point
وفي أوضاع أخرى مثل latex-mode
.
يتضمن 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
، والذي سيفتح الملف الببليوغرافي ذي الصلة وينقل النقطة إلى الإدخال. الخيار الآخر المضمن هو citar-open-entry-in-zotero
، والذي سيحدد العنصر في Zotero. لاحظ أن الوظيفة تعتمد على Better BibTeX (الذي يجب أن تستخدمه على أي حال!).
هناك ثلاثة أقسام لواجهة مستخدم التصفح.
يمكنك البحث في جميع المحتويات المذكورة أعلاه. بالنسبة للبادئة، يمكنك تصفية الملفات أو الملاحظات المرتبطة باستخدام 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
، وقيمته عبارة عن قائمة من الوظائف والوسائط الاختيارية. لاحظ أنه إذا قمت بتضمين ذلك، وإذا قمت أيضًا بتضمين مواصفات العرض، فيجب أن تأتي بعد العرض.تتضمن واجهة المستخدم مؤشرات قابلة للتكوين. بشكل افتراضي، يتضمن مؤشرات نصية عادية، يشير كل منها إلى وجود موارد مختلفة مرتبطة بالمرجع:
للحصول على مؤشرات أخرى، راجع ويكي.
إليك لقطة شاشة باستخدام هذا التكوين، الذي يزيل مؤشر الارتباطات، ويمزج النص العادي ومؤشر الأيقونة باستخدام 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 " ))
ومع ذلك، ضع في اعتبارك أن الوظائف الأصلية المضمنة يجب أن يتم تحسين أدائها، نظرًا لأن واجهة مستخدم الإكمال تقوم بتشغيلها على مكتبتك بأكملها في كل مرة تفتحها.
Nerd-icons.el هي مكتبة لسهولة استخدام أيقونات 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
. للقيام بذلك، ما عليك سوى تشغيل ./run.sh
من دليل test
.
يتمتع citar
بوظيفة مشابهة لوظيفة البحث المحددة مسبقًا في helm-bibtex
و ivy-bibtex
، ولكن مع تطبيق مختلف. بدلاً من إنشاء أمر جديد باستخدام مصطلحات البحث كوسيطة، ما عليك سوى تعيين متغير citar-presets
وإضافة السلاسل التي تريد الوصول إليها:
( setq citar-presets '( " one search string " " another search string " ))
لديك بعد ذلك طريقتان للوصول إلى هذه السلاسل من موجه الإكمال:
Mn
من الموجه، والذي سوف يتنقل عبر السلاسلcitar-insert-preset
باستخدام رابط المفتاح، ثم تحديد السلسلة يحتفظ citar
أيضًا بسجل اختياراتك (انظر التحذير أدناه حول الاختيار المتعدد للمرشحين)، والتي يمكن الوصول إليها أيضًا في واجهة المستخدم الخاصة بالإكمال، ولكن باستخدام Mp
. يمكنك حفظ هذا السجل عبر الجلسات عن طريق إضافة citar-history
إلى savehist-additional-variables
.
يستخدم Citar ذاكرة تخزين مؤقت لتسريع عرض المكتبة. إذا تغير ملف بيبلوغرافي، فسيتم تحديث ذاكرة التخزين المؤقت تلقائيًا في المرة التالية التي تقوم فيها بتشغيل أمر Citar.
لاحظ أن مرشحي إكمال البيانات المخزنة مؤقتًا المنسقة مسبقًا يتم تعقبهم بشكل مستقل عن طريق الملف. لذلك، على سبيل المثال، إذا كان لديك ملف ببليوغرافيا كبير جدًا يتغير كثيرًا، فقد تفكر في تقسيمه إلى ملف واحد كبير أكثر استقرارًا، وملف واحد أو أكثر أصغر حجمًا يتغير بشكل متكرر.
تقدم Citar إمكانية تدوين الملاحظات وتكامل الوصول بشكل قابل للتكوين. يقوم المتغير citar-notes-sources
بتكوين الواجهات الخلفية للملاحظات، ويقوم citar-notes-source
بتنشيط الواجهة الخلفية التي اخترتها.
تحدد الواجهة الخلفية بشكل أساسي وظائف تحديث شاشة Citar، وإنشاء مرشحات الإكمال، وفتح الملاحظات الحالية والجديدة. راجع مستندات citar-notes-sources
للحصول على التفاصيل، ووظائف citar-register-notes-source
و citar-remove-notes-source
الملائمة.
إذا قمت بتعيين citar-library-paths
، فستبحث الأوامر المفتوحة ذات الصلة في تلك الدلائل عن أسماء ملفات CITEKEY.EXTENSION
. سيقومون أيضًا بتحليل محتويات حقل الملف. يتحكم متغير citar-file-parser-functions
في أي المحللين سيتم استخدامه، وهناك نوعان من المحللين اللغويين المتضمنين:
citar-file-parser-default
مع قوائم بسيطة بنقطتين أو بفواصل منقوطة لمسارات الملفات، كما هو الحال في Zotero.citar-file-parser-triplet
مع Mendeley وCalibre، اللذين يمثلان الملفات باستخدام تنسيق مثل :/path/file.pdf:PDF
.إذا كان لديك مزيج من الإدخالات التي تم إنشاؤها باستخدام Zotero وCalibre، فيمكنك ضبطه على هذا النحو وسيقوم بتحليل كليهما:
( setq citar-file-parser-functions
'(citar-file-parser-default
citar-file-parser-triplet))
يتحكم المتغير citar-library-file-extensions
في امتدادات الملفات التي ستتعرف عليها الأوامر المفتوحة؛ عند `لا شيء`، سوف يتعرف على جميع الامتدادات. يحدد المتغير 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-open-functions
المحدد في citar-file.el
.
عند استخدامها مع البدء والاستشارة، سيكون لديك مجموعة من الإجراءات البديلة المتاحة للمرشحين.
بالنسبة لإدخالات BibTeX التي تحتوي على حقل "المرجع المتقاطع"، سيقوم Citar بربط مفتاح الإدخال بالموارد (الملفات والملاحظات والروابط) المرتبطة بالإدخال المرجعي الترافقي.
على سبيل المثال: فكر في إدخال "Baym1965" الذي يحتوي على حقل "crossref" "Meyers1999". عند استدعاء citar-open واختيار "Baym1965"، سيقوم المخزن المؤقت الصغير بإدراج جميع الملفات والملاحظات والروابط المرتبطة بكل من "Baym1965" و"Meyers1999". سيتم أيضًا إدراج البادئات المناسبة، التي تشير إلى ملف أو ملاحظة أو رابط مرتبط، مع كل مرشح في المخزن المؤقت الصغير.
ملاحظة: لكي تعمل ميزة BibTeX crossref بشكل صحيح، يجب أن يأتي الإدخال مع الحقل "crossref" قبل الإدخال المرجعي الترافقي في الملف البيبلي. (هذا أحد متطلبات BibTeX، وليس Citar على وجه التحديد.) في المثال أعلاه، إذن، يجب أن يأتي إدخال "Baym1965" قبل إدخال "Meyers1999".
لديك عدة طرق مختلفة لاستخدام السيتار.
يشتمل Citar على معالج org-cite citar
، مع إمكانيات "إدراج" و"تنشيط" و"متابعة". عند الحديث عن org-cite، تشير الاستشهادات إلى مجموعة من واحد أو أكثر من المراجع (مراجع الاقتباس) ، كل منها قد يحتوي على نص يسبقه (بادئة) ونص يسبقه (لاحقة). لمعرفة المزيد حول org-cite، تفضل بزيارة صفحة الاقتباسات في دليل المؤسسة.
يستخدم "معالج الإدخال" citar-select-refs
لتصفح مكتبتك لإدراج وتحرير الاستشهادات ومراجع الاستشهادات باستخدام الأمر org-cite-insert
. الأمر مدرك للسياق، لذلك يعتمد سلوكه على موقع النقطة في الاقتباس . على سبيل المثال، إذا كانت النقطة:
يقوم "تنشيط المعالج" بتشغيل قائمة الوظائف في citar-org-activation-functions
، والتي تستخدم بشكل افتراضي citar-org-cite-basic-activate
، وهو إصدار من المعالج basic
من oc-basic
لتوفير Fontification الذي يعزز أداء citar التخزين المؤقت، بالإضافة إلى وظيفة صغيرة تضيف خريطة مفاتيح ( citar-org-citation-map
) لتحرير الاستشهادات عند النقطة. تشتمل خريطة المفاتيح citar-org-citation-map
على الارتباطات التالية التي توفر خيارات تحرير إضافية للاقتباسات ومراجع الاستشهادات.
مفتاح | ملزم | وصف |
---|---|---|
نسخة Cx ديل | citar-org-حذف الاقتباس | حذف الاقتباس أو مرجع الاقتباس في هذه النقطة |
نسخة سم مكعب ك | السيتار-org-قتل-الاقتباس | قتل الاقتباس أو مرجع الاقتباس عند هذه النقطة |
س-<يسار> | citar-org-shift-reference-left | انقل مرجع الاقتباس إلى النقطة اليسرى |
س-<يمين> | citar-org-shift-reference-right | انقل مرجع الاقتباس إلى النقطة اليمنى |
النائب | citar-org-update-prefix-suffix | بادئة التحديث واللاحقة المرجعية عند النقطة، أو، |
عند الاتصال بالبادئة arg، قم بتحديث الكل | ||
مراجع الاقتباس في الاقتباس عند النقطة | ||
<الماوس-1> | سيتار دويم | استدعاء قيمة citar-at-point-function عند النقطة |
<الماوس-3> | الشروع في العمل | استدعاء embark-act عند النقطة |
يوفر "معالج المتابعة" وظيفة عند النقطة يمكن الوصول إليها عبر الأمر org-open-at-point
. افتراضيًا، في الوضع org-mode مع دعم org-cite، عندما تكون النقطة في اقتباس أو مرجع اقتباس، وتقوم باستدعاء org-open-at-point
، سيتم تشغيل مجموعة الأوامر في citar-at-point-function
، وهو citar-open
بشكل افتراضي. سيؤدي تغيير قيمة citar-at-point-function
إلى embark-act
مع تثبيت البدء وتكوينه إلى توفير الوصول إلى أوامر citar القياسية عند النقطة.
تتضمن اقتباسات Org-cite "أنماط" و"متغيرات" اختيارية لتعديل عرض الاقتباس محليًا. عند إدراج اقتباس جديد، فإن استدعاء org-cite-insert
مع البادئة arg سيطالبك بتحديد نمط. لتحرير نمط اقتباس موجود، تأكد فقط من وجود نقطة على بادئة الاقتباس قبل تشغيل org-cite-insert
، وستحصل على قائمة بالأنماط المتاحة. تعتمد هذه القائمة على التكوين الخاص بك؛ إذا قمت بتكوين معالجات oc-natbib
و oc-csl
، على سبيل المثال، فستتضمن القائمة الأنماط والمتغيرات المتوفرة في هذين المعالجين. تتضمن المتغيرات المضمنة في المعالجات المجمعة ما يلي، مع الاختصارات بين قوسين:
bare
( b
): بدون علامات الترقيم المحيطة بهاcaps
( c
): فرض الكتابة بالأحرف الكبيرةfull
( f
): تجاهل وآخرون تقصير أسماء المؤلفين بشكل عام، لا ينبغي أن تحتاج إلى هذه الأشياء، ولكنها قد تكون مفيدة في ظروف معينة. إذا كان معالج التصدير لا يدعم متغيرًا محددًا لنمط معين، فيجب عليه الرجوع إلى النمط الأساسي. على سبيل المثال، إذا قمت بتحديد text/f
، وكان معالج التصدير الذي تستخدمه لا يدعم المتغير f
هناك، فيجب أن يتم الإخراج كما لو قمت بتحديد text
.
Mx
ما عليك سوى إجراء Mx
وتحديد الأمر الذي تريده، وإدخال الشروط للعثور على العنصر الذي تبحث عنه، ثم الضغط على "رجوع". يؤدي هذا إلى تشغيل الإجراء الافتراضي: الأمر الذي قمت باستدعاءه.
embark-act
إذا كنت تفضل بدلاً من ذلك تحرير هذا السجل أثناء التصفح، وقد قمت بالبدء في التثبيت والتكوين، فهذا هو المكان الذي يأتي فيه embark-act
. ما عليك سوى إدخال رابط المفتاح الخاص بـ embark-act
(في حالتي Co
)، وتحديد الإجراء البديل.
embark-collect-snapshot
هناك خيار أخير يمكن أن يكون مفيدًا: قم بتشغيل embark-collect-snapshot
( S
) من embark-act
. سيؤدي هذا إلى تحديد المجموعة الفرعية المرشحة، وفتحها في مخزن مؤقت منفصل. من هناك، يمكنك تشغيل نفس الخيارات التي تمت مناقشتها أعلاه باستخدام embark-act
(والتي ترتبط أيضًا بـ a
في المخزن المؤقت للتجميع).
لذلك، على سبيل المثال، لنفترض أنك تعمل على ورقة. أنت تحتفظ بالمجموعة الفائقة الكاملة من العناصر التي ترغب في الاستشهاد بها في مرحلة ما في هذا المخزن المؤقت. ومن هناك، يمكنك تشغيل إجراءات مختلفة على المرشحين حسب الرغبة، بدلاً من البحث بشكل فردي عن كل عنصر تريد الاستشهاد به.
citar-dwim
سيقوم Mx citar-dwim
بتشغيل الإجراء الافتراضي على مفاتيح الاقتباس الموجودة عند النقطة مباشرة. إذا كنت قد قمت بتثبيت embark
، يمكنك استخدام يمكنك embark-dwim
بدلاً من ذلك لنفس السلوك، embark-act
لإجراءات إضافية عند النقطة.
إذا لم يتم العثور على مفتاح الاقتباس، فسيتم فتح المخزن المؤقت الصغير للاختيار. يمكنك تعطيل هذا السلوك عن طريق ضبط citar-at-point-fallback
على القيمة nil.
الحزم التالية توسع أو تعزز السيتار.
توفر هذه الحزم الصغيرة مصادر ملاحظات السيتار، وبالتالي تكاملًا أكثر إحكامًا مع حزم إدارة الملاحظات المعنية.
لفهم كيفية مقارنة citar بالحزم الأخرى مثل org-ref
و ivy-bibtex
و helm-bibtex
(والبرامج bibtex-completion
ذات الصلة)، راجع صفحة المقارنات على الويكي.
تم تطوير الأفكار في هذا المشروع في البداية من خلال محادثة مع ماكسيم تريكا ودانييل ميندلر. ساعدنا دانيال، مؤلف كتاب Consult and هامشيا، على فهم إمكانيات المجموعة الجديدة من حزم القراءة الكاملة، بينما توصل ماكسيم إلى نموذج أولي.
يأخذ هذا الكود هذه الأفكار ويعيد تنفيذها لملء مجموعة الميزات، وكذلك تحسين وضوح الكود والأداء.