Helm-Bibtex: Ivy-Bibtex:
يتيح لك Helm-Bibtex و Ivy-Bibtex البحث وإدارة Bibtex Bibliography. يشترك كلاهما في نفس الواجهة الخلفية العامة ، والكاملة bibtex ، ولكن أحدهما يستخدم إطار إكمال Helm والآخر اللبلاب كواجهة أمامية.
bibtex-completion-watch-bibliography . يمكن استخدامها لإلغاء تنشيط إعادة التحميل التلقائي للببليوغرافيا.ivy-bitex . انظر هنا.helm-bibtex-with-local-bibliography و ivy-bibtex-with-local-bibliography الآن محليًا ومحددًا عالميًا في ملفات ORG. هذه هي ببليوغرافيا محددة باستخدام #+BIBLIOGRAPHY: الكلمة الرئيسية وتلك الموجودة في المتغير org-cite-global-bibliography .bibtex-completion-format-citation-org-cite (للاستخدام في التكوين المتغير bibtex-completion-format-citation-functions )=has-pdf= و =has-note= .helm-bibtex-with-notes و ivy-bibtex-with-noted للبحث في الإدخالات التي تحتوي على ملاحظات.author-or-editor APA الافتراضي للاستخدام في قوالب الملاحظات.@string .انظر News.org للحصول على الأخبار القديمة.
تعد نقاط البيع الرئيسية في Helm-Bibtex و Ivy-Bibtex بحثًا فعالًا في ببليوغرافيا كبيرة باستخدام تعبيرات بحث قوية وتكامل ضيق في سير عمل EMACS الخاص بك. يمكن كلاهما تنفيذ الإجراءات التالية على الإدخالات التي تطابق تعبير البحث: افتح PDF المرتبط بإدخال أو عنوان URL أو DOI ، أو إدراج استشهاد بهذا الإدخال ، أو مفتاح bibtex ، أو إدخال bibtex ، أو مرجع نص عادي ، أو إرفاق PDF إلى بريد إلكتروني ، أو تدوين الملاحظات ، أو إدخال bibtex. يمكن تكوين العديد من الجوانب لتناسب التفضيلات الشخصية.
فيما يلي لقطة شاشة تُظهر بحثًا عن Helm-Bibtex عن الإدخالات التي تحتوي على تعبير "تتبع العين".

Expression eye.?tracking يتيح البحث عن تهجئة مختلفة ("تتبع العين" ، "تتبع العين" ، "EyeTracking"). يشير رمز مربع محلق (⌘) بجوار الإدخال إلى أن PDF متاح. رمز القلم (✎) يعني أن هناك ملاحظات مرتبطة بهذا الإدخال. في الأسفل ، هناك إدخالات يمكن استخدامها للبحث في قواعد البيانات عبر الإنترنت.
أسهل طريقة لتثبيت Helm-Bibtex أو Ivy-Bibtex هي من خلال MELPA. بدلاً من ذلك ، ضع الملفات bibtex-completion.el وإما helm-bibtex.el أو ivy-bibtex.el في دليل مضمن في مسار التحميل الخاص بك وأضف السطر التالي إلى ملف بدء التشغيل الخاص بك (عادة init.el ):
( autoload 'helm-bibtex " helm-bibtex " " " t )أو
( autoload 'ivy-bibtex " ivy-bibtex " " " t )
; ; ivy-bibtex requires ivy's `ivy--regex-ignore-order` regex builder, which
; ; ignores the order of regexp tokens when searching for matching candidates.
; ; Add something like this to your init file:
( setq ivy-re-builders-alist
'((ivy-bibtex . ivy--regex-ignore-order)
( t . ivy--regex-plus)))يعتمد Helm-Bibtex و Ivy-Bibtex على عدد من الحزم التي سيتم تثبيتها تلقائيًا إذا كنت تستخدم MELPA.
عند استخدام Helm-Bibtex أو Ivy-Bibtex ، تأكد من تكوين Helm أو Ivy بشكل صحيح (انظر وثائق Helm أو وثائق Ivy).
يتضمن تكوين الحد الأدنى إخبار Bibtex-Cofment حيث يمكن العثور على ببليوغرافيك:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/bibtex-file-2.bib " )) يمكن لمستخدمي org-bibtex أيضًا تحديد ملفات المراجع org-mode ، وفي هذه الحالة ، سيتم افتراض وجود ملف bibtex بنفس الاسم والمسيرة التمديد بدلاً من ORG. إذا كان ملف المريلة يحتوي على اسم مختلف ، فاستخدم خلية Cons ("orgfile.org" . “bibfile.bib") بدلاً من ذلك:
( setq bibtex-completion-bibliography
'( " /path/to/bibtex-file-1.bib "
" /path/to/org-bibtex-file.org "
( " /path/to/org-bibtex-file2.org " . " /path/to/bibtex-file.bib " )))حدد أين يمكن العثور على ملفات PDF:
( setq bibtex-completion-library-path '( " /path1/to/pdfs " " /path2/to/pdfs " )) يفترض Bibtex-Completion أن اسم PDF يتكون من مفتاح bibtex المتبع بالإضافة إلى لاحقة محددة من قبل المستخدم ( .pdf بشكل افتراضي). على سبيل المثال ، إذا كان إدخال Bibtex يحتوي على مفتاح Darwin1859 ، يبحث Bibtex-Completion عن Darwin1859.pdf .
إذا كانت إدخالات bibtex تحتوي على حقل يحدد المسار الكامل إلى PDFs ، فيمكن أيضًا استخدام هذا الحقل. على سبيل المثال ، تخزين Jabref و Zotero موقع PDFs في حقل يسمى File :
( setq bibtex-completion-pdf-field " File " ) إذا كان bibtex-completion-pdf-field غير NIL ، فسيحاول إكمال Bibtex أولاً استرداد الملف المحدد في هذا الحقل. إذا لم يتم تعيين الحقل لإدخال أو إذا لم يكن الملف المحدد موجودًا ، فإن Bibtex-Completion يعود إلى الطريقة الموضحة أعلاه (البحث عن المفتاح + .pdf في الدلائل المدرجة في bibtex-completion-library-path ).
يمكن أن تكون مواصفات الملفات مسارات عارية أو تتبع التنسيق الذي يستخدمه Jabref و Zotero و Caliber و Mendeley. يسمح هذا التنسيق أيضًا بمواصفات ملفات متعددة (على سبيل المثال ، الورقة الرئيسية والمواد التكميلية). أمثلة:
File = {/path/to/article.pdf}File = {:/path/to/article.pdf:PDF}File = {:/path/to/article.pdf:PDF;:/path/to/supplementary_materials.pdf:PDF} يدعم Bibtex-Completion طريقتين لتخزين الملاحظات. يمكن إما تخزين جميع الملاحظات في ملف واحد أو تخزين الملاحظات في ملفات متعددة ، ملف واحد لكل منشور. في الحالة الأولى ، يجب تعيين bibtex-completion-notes-path على المسار الكامل لملف الملاحظات:
( setq bibtex-completion-notes-path " /path/to/notes.org " ) إذا تم تفضيل ملف واحد لكل منشور ، فيجب أن يشير bibtex-completion-notes-path إلى الدليل المستخدم لتخزين ملفات الملاحظات:
( setq bibtex-completion-notes-path " /path/to/notes " ) تتكون أسماء هذه الملفات من مفتاح bibtex بالإضافة إلى لاحقة محددة من قبل المستخدم ( .org بشكل افتراضي).
في هذه المرحلة ، سيكون معظم الناس مستعدين للذهاب. تخطي إلى الاستخدام أدناه لمعرفة كيفية استخدام Helm-Bibtex و Ivy-Bibtex.
إن استدعاء helm-bibtex أو ivy-bibtex عندما تكون النقطة على استشهاد بوضع org سيختار تلقائيًا هذا المفتاح. ومع ذلك ، فإن org-open-at-point على الاقتباس org سوف يأخذك إلى إدخال المراجع المقابل. سوف يغير الرمز التالي هذا السلوك لفتح helm-bibtex-follow عند اتباع الاقتباس من خلال إدخال RET أو النقر عليه:
( setq org-cite-follow-processor 'helm-bibtex-org-cite-follow ) ملاحظة في حالة استشهاد org مع مفاتيح متعددة ، لن يتم تحديد الرمز أعلاه أي إدخال عند تحديد [cite: Part. انظر هنا للبديل اللبلاب.
يمكن استخدام bibtex-completion-display-formats المتغيرة لتخصيص كيفية تقديم نتائج البحث على أساس من النوع. الافتراضي هو
'(( t . " ${author:36} ${title:*} ${year:4} ${=has-pdf=:1}${=has-note=:1} ${=type=:7} " )) مما يعني أنه يتم تقديم جميع أنواع الدخول بنفس الطريقة: المؤلفين ، العنوان ، السنة ، ... في سلسلة التنسيق هذه ، تشير الأرقام إلى مقدار المساحة المخصصة للحقل المعني. إذا كان هناك * بدلاً من رقم يعني أن هذا الحقل يحصل على أي مساحة تبقى. فيما يلي إعداد يستخدم تصميمًا مختلفًا لأنواع الإدخال المختلفة:
( setq bibtex-completion-display-formats
'((article . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${journal:40} " )
(inbook . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} Chapter ${chapter:32} " )
(incollection . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
(inproceedings . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} ${booktitle:40} " )
( t . " ${=has-pdf=:1}${=has-note=:1} ${=type=:3} ${year:4} ${author:36} ${title:*} " ))) لكي ينجح هذا ، يجب عليك إضافة journal و booktitle إلى bibtex-completion-additional-search-fields . انظر القسم التالي.
الحقول الافتراضية المستخدمة للبحث هي: المؤلف ، العنوان ، السنة ، مفتاح bibtex ، نوع الدخول (المقالة ، inprocedings ، ...). يمكن استخدام bibtex-completion-addition-search-fields لتمديد هذه القائمة. مثال:
( setq bibtex-completion-additional-search-fields '(keywords))( setq bibtex-completion-pdf-symbol " ⌘ " )
( setq bibtex-completion-notes-symbol " ✎ " ) إذا كانت ملفات PDFS تتبع مخطط تسمية مختلف عن مفتاح Bibtex + .pdf ، يمكن تعديل الدالة bibtex-completion-find-pdf-in-library لاستيعاب ذلك.
بشكل افتراضي ، يتم استخدام EMACs لفتح ملفات PDF. هذا يعني أنه يتم استخدام إما DocView ، أو ، إذا تم تثبيته ، امتداد PDF Tools المتفوق الذي يوفر ميزات مثل البحث الإضافي في ملفات PDF وإنشاء وتعديل التعليقات التوضيحية المتوافقة مع التعليقات التوضيحية التي تم إنشاؤها بواسطة برنامج Adobe.
لتكوين عارض PDF آخر ، يمكن استخدام متغير التخصيص bibtex-completion-pdf-open-function . فيما يلي تكوين مثال لـ OS X PDF Viewer Skim:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " open " nil 0 nil " -a " " /Applications/Skim.app " fpath)))فيما يلي مثال آخر لمشاهد Linux PDF Evince:
( setq bibtex-completion-pdf-open-function
( lambda ( fpath )
( call-process " evince " nil 0 nil fpath))) من المستحسن في بعض الأحيان أن يكون لديك كلا الخيارين (Emacs نفسها والمشاهد الخارجي) لفتح PDF. يضيف ما يلي إجراءً مع Evince كمشاهد خارجي ملزم بـ P ، بالإضافة إلى عارض EMACs العادي مع p يعمل العمل مع Ivy-Bibtex ؛ يجب تعديله لـ Helm-Bibtex (قم بتغيير المسار إلى عارض آخر إذا لزم الأمر):
( defun bibtex-completion-open-pdf-external ( keys &optional fallback-action )
( let ((bibtex-completion-pdf-open-function
( lambda ( fpath ) ( start-process " evince " " *helm-bibtex-evince* " " /usr/bin/evince " fpath))))
(bibtex-completion-open-pdf keys fallback-action)))
(ivy-bibtex-ivify-action bibtex-completion-open-pdf-external ivy-bibtex-open-pdf-external)
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-pdf-external " Open PDF file in external viewer (if present) " ))) يمكنك تخزين ملفات PDF إضافية لإدخال معين ، مثل نسخة مشروحة من PDF الأصلي ، أو ملف يحتوي على مواد تكميلية ، أو ملفات الفصل. إذا تم استخدام حقل file لربط PDFs بالإدخالات (انظر ملفات PDF القسم) ، يمكن ببساطة إضافة ملفات PDF الإضافية هذه إلى هذا الحقل. إذا تم تشغيل الإجراء "Open PDF File" ، فسيتم مطالبتك بفتح الملف.
إذا لم يتم استخدام حقل file ولكن بدلاً من ذلك ، فإن مخطط التسمية bibtex-key + .pdf (مرة أخرى انظر ملفات PDF) ، يمكنك الحصول على نفس السلوك مع:
( setq bibtex-completion-find-additional-pdfs t )جميع الملفات التي تبدأ اسمها بمفتاح bibtex سيتم ربطها بعد ذلك بإدخال. بعد ذلك يكفي تسمية ملفاتك وفقًا لذلك (على سبيل المثال مع أداة إعادة تسمية). أمثلة:
bibtex-key-annotated.pdfbibtex-key-supplemental.pdfbibtex-key-chapter1.pdf لاحظ أنه لأسباب الأداء ، يتم اكتشاف هذه الملفات الإضافية فقط عند تشغيل إجراء ، مثل "Open PDF File". عندما يتم تحميل المراجع بأكملها ، يتم اكتشاف فقط pdf bibtex-key.pdf .
إذا تمت الإشارة إلى المستندات عبر مخطط التسمية bibtex-key.pdf ولكنك تقوم بتخزين الملفات بتنسيق مختلف عن PDF ، يمكنك تعيين متغير bibtex-completion-pdf-extension وفقًا لذلك. مثال:
( setq bibtex-completion-pdf-extension " .djvu " )إذا قمت بتخزين الملفات بتنسيقات مختلفة ، فيمكنك تحديد قائمة بدلاً من نوع ملف واحد:
( setq bibtex-completion-pdf-extension '( " .pdf " " .djvu " , " .jpg " ))ثم تتم تجربة الامتدادات في هذه القائمة بالتتابع حتى يتم العثور على ملف. احذر من أن هذا يمكن أن يقلل من الأداء للببليوغرافيا الكبيرة.
بشكل افتراضي ، يستخدم Bibtex-Completion كل ما هو افتراضي Emacs. ومع ذلك ، هناك مجموعة متنوعة من البدائل (راجع وثائق bibtex-completion-browser-function للحصول على قائمة كاملة). مثال:
( setq bibtex-completion-browser-function 'browser-url-chromium )يمكن استخدام الوظائف المعرفة من قبل المستخدم أيضًا:
( setq bibtex-completion-browser-function
( lambda ( url _ ) ( start-process " firefox " " *firefox* " " firefox " url))) يمكن تكوين إعادة التحميل التلقائي باستخدام bibtex-completion-watch-bibliography .
يخلق اكتمال Bibtex اقتباسات بناءً على الوضع الرئيسي الذي يتم فيه إدراج الاقتباس:
يمكن تمديد قائمة الأوضاع ويمكن تغيير وظائف الاقتباس باستخدام bibtex-completion-format-citation-functions . على سبيل المثال ، قد يفضل الأشخاص الذين لا يستخدمون EBIB روابط إلى PDFs بدلاً من روابط eBib في ملفات وضع ORG:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default))) عندما ترغب في إنشاء قائمة قراءة في وضع Org-Mode ، يمكنك Pireding باستخدام عنوان ملف PDF في الرابط. لتحقيق هذا الهدف ، يمكنك تعديل bibtex-completion-format-citation-functions باستخدام مقتطف الكود التالي:
( setq bibtex-completion-format-citation-functions
'(( org-mode . bibtex-completion-format-citation-org-title-link-to-PDF)
( latex-mode . bibtex-completion-format-citation-cite)
( markdown-mode . bibtex-completion-format-citation-pandoc-citeproc)
( default . bibtex-completion-format-citation-default)))يجب أن تقبل وظيفة الاقتباس قائمة بالمفاتيح كمدخلات وإرجاع سلسلة تحتوي على الاستشهادات. انظر وظائف الاقتباس المحددة مسبقا للأمثلة.
يطالب Bibtex-Completion بأمر استشهاد من LaTeX عند إدخال الاستشهادات في مستندات اللاتكس. يمكن تعريف قائمة الأوامر المتاحة لإكمال تلقائي باستخدام bibtex-completion-cite-commands .
يتضمن الإعداد الافتراضي جميع أوامر CITE المحددة في Biblatex (باستثناء الأوامر المتعددة و volcite et al.). إذا لم يتم إدخال أي أمر ، يتم استخدام أمر افتراضي يمكن تكوينه باستخدام bibtex-completion-cite-default-command . القيمة الافتراضية للأمر الافتراضي هي cite . يتحكم المتغير bibtex-completion-cite-default-as-initial-input في كيفية استخدام الأمر الافتراضي. إذا تم إدراج t في MiniBuffer قبل قراءة الإدخال من المستخدم. إذا nil يتم إدراجها في Minibuffer ولكنها تستخدم كإعداد افتراضي إذا لم يدخل المستخدم أي شيء.
بشكل افتراضي ، يطالب Bibtex-Completion أيضًا بالتخلي عن الاستبداد. يمكن إيقاف تشغيل ذلك عن طريق تعيين المتغيرات المتغيرة bibtex-completion-cite-prompt-for-optional-arguments إلى nil .
انظر أيضًا القسم إدراج أوامر Cite Latex أدناه.
يمكن تكوين قواعد البيانات عبر الإنترنت باستخدام bibtex-completion-fallback-options . يحتوي هذا المتغير على Alist حيث يكون العنصر الأول من كل إدخال هو اسم قاعدة البيانات والعنصر الثاني هو إما عنوان URL أو وظيفة. يجب أن يحتوي عنوان URL على %s في الموضع الذي يجب إدراج تعبير البحث الحالي. إذا تم استخدام وظيفة ، يجب أن تأخذ هذه الوظيفة تعبير البحث هذا كوسيطة واحدة.
للوصول السريع إلى المراجع ، قم بربط أمر البحث ، helm-bibtex أو ivy-bibtex ، بمفتاح مناسب.
Helm-Bibtex : أستخدم مفتاح القائمة كمفتاح بادئة لجميع أوامر Helm وربط helm-bibtex To b يمكن بعد ذلك بدء تشغيل Helm-Bibtex باستخدام <menu> b . من المفيد أيضًا ربط helm-resume بـ <menu> في helm-command-map . باستخدام هذا الربط ، يمكن استخدام <menu> <menu> لإعادة فتح آخر بحث عن HALD.
( global - set - key ( kbd " <menu> " ) ' helm-command-prefix)
(define-key helm-command-map "b" ' helm - bibtex )
( define - key helm - command - map " B " ' helm-bibtex-with-local-bibliography)
(define-key helm-command-map "n" ' helm - bibtex - with - notes )
( define - key helm - command - map ( kbd " <menu> " ) ' helm-resume) Ivy-Bibtex : يمكنك ربط ivy-bibtex بالمثل إلى <menu> b و ivy-resume to <menu> <menu> .
للراحة ، يمكن التقاط عمليات البحث المتكررة في الأوامر وترتبط بمجموعات رئيسية. فيما يلي مثال رمز يحدد البحث عن المنشورات التي قام بها "Jane Doe" وربط أمر البحث بـ Cx p .
Helm-Bibtex :
( defun helm-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
(helm-bibtex arg nil " Jane Doe " ))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'helm-bibtex-my-publications )Ivy-Bibtex :
( defun ivy-bibtex-my-publications ( &optional arg )
" Search BibTeX entries authored by “Jane Doe”.
With a prefix ARG, the cache is invalidated and the bibliography reread. "
( interactive " P " )
( when arg
(bibtex-completion-clear-cache))
(bibtex-completion-init)
(ivy-read " BibTeX Items: "
(bibtex-completion-candidates)
:initial-input " Jane Doe "
:caller 'ivy-bibtex
:action ivy-bibtex-default-action))
; ; Bind this search function to Ctrl-x p:
( global-set-key ( kbd " C-x p " ) 'ivy-bibtex-my-publications ) يؤدي الضغط على <enter> في المنشور إلى "الإجراء الافتراضي" الذي يفتح ملف PDF المرتبط بالنشر ، إن كان موجودًا ، أو عنوان URL أو DOI على خلاف ذلك. يعرض الضغط على <tab> في Helm-Bibtex أو Mo في Ivy-Bibtex بدلاً من ذلك قائمة إجراء يسرد الإجراءات المتاحة. فيما يلي قائمة بجميع الإجراءات المتاحة جنبًا إلى جنب مع وظائفها (هذه هي وظائف الإجراء العام ، للهدوء-بيبتيكس ، تبدأ أسماء الوظائف بـ helm-bibtex- بدلاً من bibtex-completion- ، وللبلاب-بيبتيكس ، تبدأ مع ivy-bibtex- بدلاً من ذلك):
bibtex-completion-open-anybibtex-completion-open-pdfbibtex-completion-open-url-or-doibibtex-completion-insert-citationbibtex-completion-insert-referencebibtex-completion-insert-keybibtex-completion-insert-bibtexbibtex-completion-add-PDF-attachmentbibtex-completion-edit-notesbibtex-completion-show-entrybibtex-completion-add-pdf-to-library Helm-Bibtex : يمكن تعديل قائمة الإجراءات من خلال الأوامر من خلال helm-add-action-to-source و helm-delete-action-from-source . على سبيل المثال ، يضيف ما يلي مجموعة جديدة helm-bibtex-open-annotated-pdf (انظر أعلاه) مباشرة بعد العنصر الأول في القائمة أعلاه:
(helm-add-action-to-source
" Open annotated PDF (if present) " 'helm-bibtex-open-annotated-pdf
helm-source-bibtex 1 ) إذا تم حذف الوسيطة العددية الأخيرة في helm-add-action-to-source ، يتم إضافة الإجراء الجديد في نهاية القائمة. نظرًا لأن الإجراء الافتراضي هو ببساطة الإدخال الأول في قائمة الإجراءات ، يمكن تغيير الإجراء الافتراضي عن طريق حذف الإجراء وإعادة إدخاله في الجزء العلوي من القائمة. فيما يلي مثال يوضح كيفية جعل "إدراج مفتاح bibtex" الإجراء الافتراضي:
(helm-delete-action-from-source " Insert BibTeX key " helm-source-bibtex)
(helm-add-action-to-source " Insert BibTeX key " 'helm-bibtex-insert-key helm-source-bibtex 0 ) Ivy-Bibtex : يتم تعيين الإجراء الافتراضي والإجراءات الإضافية المتاحة بشكل منفصل. يتم التحكم في الإجراء الافتراضي بواسطة المتغيرات ivy-bibtex-default-action و ivy-bibtex-default-multi-action ، مع وجود الأخير لقوائم الإدخالات الملحوظة (انظر تطبيق الإجراءات على إدخالات متعددة). على سبيل المثال ، يغير الرمز التالي الإجراء الافتراضي إلى "إدراج مفتاح Bibtex":
( setq ivy-bibtex-default-action 'ivy-bibtex-insert-key )بالطريقة نفسها ، يعين الكود التالي الإجراء الافتراضي لقوائم الإدخالات المميزة لـ "إدراج مفتاح Bibtex" والتي ستعمل على إدراج قائمة مفاتيح مفصولة لطيفة مفصولة:
( setq ivy-bibtex-default-multi-action 'ivy-bibtex-insert-key ) يتم تعيين الإجراءات الإضافية عن طريق تمرير قائمة الإجراءات المطلوبة إلى أمرين ivy-set-actions . على سبيل المثال ، تحتفظ الرموز التالية فقط بإجراءين متاحين بالإضافة إلى الإرسال الافتراضي:
(ivy-set-actions
'ivy-bibtex
'(( " p " ivy-bibtex-open-any " Open PDF, URL, or DOI " ivy-bibtex-open-any)
( " e " ivy-bibtex-edit-notes " Edit notes " ivy-bibtex-edit-notes))) الرسائل p و e هما الروابط الرئيسية للإجراءين في قائمة الإجراءات. يتم حجز الربط المفتاح o للإجراء الافتراضي. ينبه المظهر الثاني للإجراء في هذا الرمز ivy بأن الإجراء يمكنه التعامل مع قوائم الإدخالات المميزة. يمكن حذفه بأمان إذا كان الشيء الصحيح الذي يجب القيام به هو ببساطة تطبيق الإجراء على كل إدخال بدوره.
إذا كنت ترغب فقط في إضافة إجراءات جديدة في نهاية قائمة الإجراءات ، فيمكنك بدلاً من ذلك استخدام أمر ivy-add-actions . على سبيل المثال ، يضيف ما يلي عملية عمل جديدة ivy-bibtex-open-annotated-pdf (انظر أعلاه) في نهاية قائمة الإجراءات:
(ivy-add-actions
'ivy-bibtex
'(( " P " ivy-bibtex-open-annotated-pdf " Open annotated PDF (if present) " ivy-bibtex-open-annotated-pdf)))يمكن إنشاء إجراء جديد لـ Helm-Bibtex أو Ivy-Bibtex في ثلاث خطوات. على سبيل المثال ، انظر الإجراء لفتح ملفات PDF المذكورة أعلاه.
الخطوة الأولى والرائعة هي إنشاء وظيفة عمل عام bibtex-completion-<action> (مثل bibtex-completion-open-annotated-pdf ). يجب أن تأخذ هذه الوظيفة كوسيطة واحدة قائمة بمفاتيح bibtex وتنفيذ الإجراء على إدخالات bibtex المقابلة.
والخطوة الثانية هي تخصيص وظيفة الإجراء العام لـ Helm-Bibtex أو Ivy-Bibtex ، بحيث يتم تشغيلها في المخزن المؤقت الصحيح واستلام مفاتيح الإدخالات المحددة).
Helm-Bibtex : يتم ذلك ببساطة مع:
(helm-bibtex-helmify-action bibtex-completion-<action > helm-bibtex-<action > )Ivy-Bibtex : يتم ذلك ببساطة مع:
(ivy-bibtex-ivify-action bibtex-completion-<action > ivy-bibtex-<action > ) الخطوة الثالثة والأخيرة هي جعل وظيفة الإجراء المصممة خصيصًا helm-bibtex-<action> أو ivy-bibtex-<action> متوفرة في Helm-Bibtex أو Ivy-Bibtex عن طريق إضافتها إلى قائمة الإجراءات. انظر تغيير الإجراءات المتاحة.
Helm-Bibtex : بشكل افتراضي يستخدم helm-bibtex الإطار بأكمله لعرض المراجع. يمكن تغيير ذلك عن طريق ضبط إطار helm-bibtex-full-frame المتغير إلى nil ، وفي هذه الحالة يتم استخدام معيار Helm (عادةً تقسيم رأسي ، مع عرض البحث عن الدلالة في النافذة السفلية).
Ivy-Bibtex : يعرض Ivy-Bibtex دائمًا المراجع في الحافلة الصغيرة. يتحكم متغير ivy-height في عدد الخطوط الخاصة بنافذة MiniBuffer في جميع أوامر IVY.
Bibtex-Completion يملأ ملاحظات جديدة مع بعض المعلومات الأساسية حول المنشور. في حالة ملف ملاحظة واحد فقط لجميع المنشورات ، تبدو الإدخالات الجديدة مثل المثال التالي:
Gigerenzer ، G. (1998): نحن بحاجة إلى التفكير الإحصائي ، وليس الطقوس الإحصائية :ملكيات: : Custom_id: Gigerenzer1998 :نهاية:
يتكون عنوان القسم الجديد من أسماء المؤلفين ، والعام ، وعنوان المنشور. تحدد Property Custom_ID مفتاح Bibtex للإدخال (تم تسميته Custom_ID للتوافق مع ORG-REF).
في حالة ملف واحد لكل منشور ، يحتوي ملف ملاحظات جديد على عنوان بالتنسيق التالي:
#+العنوان: ملاحظات على: Gigerenzer ، G. (1998): نحن بحاجة إلى التفكير الإحصائي ، وليس الطقوس الإحصائية
إذا كانت التنسيقات الأخرى مطلوبة ، فيمكن تغيير قوالب ملاحظات جديدة باستخدام متغيرات التخصيص bibtex-completion-notes-template-one-file و bibtex-completion-notes-template-multiple-files .
افتراضيًا ، يفترض إكمال bibtex أن ملفات الملاحظات بتنسيق وضع org. ومع ذلك ، يمكن استخدام أي تنسيق آخر كذلك. في حالة ملف ملاحظات واحد فقط ، يكفي تعيين bibtex-completion-notes-path للإشارة إلى الملف المطلوب. في حالة ملفات الملاحظات المتعددة ، يمكن تحديد نوع الملفات باستخدام تمديد التخصيص bibtex-completion-notes-extension . على سبيل المثال ، إذا كان Markdown هو نوع الملف المطلوب:
( setq bibtex-completion-notes-path " /path/to/notes " )
( setq bibtex-completion-notes-extension " .md " )إذا تم تعيين نوع الملف على شيء آخر غير وضع ORG ، فيجب تعديل قوالب ملفات الملاحظات الجديدة أيضًا. انظر القسم أعلاه للحصول على التفاصيل.
Bibtex-Completion يعيد إعادة تحميل المراجع تلقائيًا عند تغيير ملف .bib على القرص. ومع ذلك ، لا يشاهد Bibtex-Completion PDFs والملاحظات. وبالتالي ، عند إضافة PDF جديد أو ملاحظة ، يجب إعادة تحميل المراجع يدويًا لعرض رموز PDF ولاحظ بشكل صحيح (عبر وسيطة البادئة ، مثل Cu Mx helm-bibtex ). لسوء الحظ ، فإن تنفيذ إعادة التحميل التلقائي لـ PDFs والملاحظات ليس واضحًا تمامًا لأن الانتهاء من Bibtex مرن تمامًا في كيفية معالجة PDFs والملاحظات. ولكن بالنسبة للإعدادات البسيطة ، هناك حل سهل: ما عليك سوى مشاهدة دلائل bibtex-completion-library-path و bibtex-completion-notes-path وإعادة تحميل الببليوغرافيا عندما تتغير. مثال على دليل PDF:
( setq tmalsburg-pdf-watch
( file-notify-add-watch bibtex-completion-library-path
'(change)
( lambda ( event ) (bibtex-completion-candidates)))) استخدم Mx helm-bibtex أو Mx ivy-bibtex لبدء بحث جديد. الحقول الافتراضية للبحث هي: المؤلف ، العنوان ، السنة ، مفتاح bibtex ، ونوع الدخول. يمكن استخدام التعبيرات العادية. مثال عمليات البحث:
كل ما نشرته جانيت فودور:
جانيت فودور
جميع أطروحات الدكتوراه:
دكتوراه
أطروحة دكتوراه لين فريزر:
دكتوراه فرايزر
منشورات حول تتبع العين. يتم استخدام تعبير منتظم لمطابقة الهجايا المختلفة ("Eyetracking" ، "تتبع العين" ، "تتبع العين"):
العين
عروض المؤتمرات في عام 2013:
2013 inprocedings
منشورات من 2010 و 2011:
(2010 | 2011 )
مقالات شارك في تأليفها ديفيد كابلان وجلوريا ووترز:
مقال مياه كابلان
ابحث عن مقالات ديفيد كابلان التي لم تشارك في تأليفها غلوريا ووترز:
مقال كابلان! المياه
استخدم helm-bibtex-with-local-bibliography أو ivy-bibtex-with-local-bibliography لبدء البحث في "المراجع المحلية" للمخزن المؤقت الحالي ، بدلاً من "المراجع العالمية" التي حددها bibtex-completion-bibliography . إذا كان الملف الحالي عبارة عن ملف bibtex ، فسيتم استخدام هذا المراجع. إذا كان الملف الحالي عبارة عن ملف LateX ، فسيتم استخدام RefTex لتحديد المراجع المحلية من أوامر المراجع Latex القياسية bibliography و addbibresource . إذا كان الملف هو ملف ORG ، فسيتم استخدام المراجع المحلية و/أو العالمية (كما هو محدد باستخدام #+BIBLIOGRAPHY: الكلمة الرئيسية والمتغير org-cite-global-bibliography ). إذا لم يكن من الممكن العثور على ببليوغرافيا محلية ، فسيتم استخدام المراجع العالمية ( bibtex-completion-bibliography ).
استخدم helm-bibtex-with-notes أو ivy-bibtex-with-notes للبحث فقط بين الإدخالات التي تحتوي على ملاحظات. مفيد بشكل خاص مع ~ org-roam-bibtex.el ~.
حالة الاستخدام الشائعة هي المكان الذي يتم فيه كتابة مصطلح البحث في مستند (على سبيل المثال في مخطوطة اللاتكس) وتريد البحث عنه في المراجع الخاصة بك. في هذه الحالة ، ما عليك سوى بدء تشغيل Helm-Bibtex أو Ivy-Bibtex وأدخل Mn . هذا يدرج الكلمة تحت المؤشر كمصطلح البحث. (هذه ميزة Helm / Ivy ويمكن استخدامها في جميع أوامر Helm / IVY ، وليس فقط Helm-Bibtex / Ivy-Bibtex.) لاحظ أنه من الممكن أيضًا استخدام مفاتيح Bibtex للبحث. لذا ، إذا كان المؤشر الخاص بك على مفتاح bibtex (على سبيل المثال ، في أمر استشهاد من Latex) ، يمكنك بدء تشغيل Helm-Bibtex أو Ivy-Bibtex ، واضغط على Mn وشاهد الإدخال المرتبط بمفتاح Bibtex هذا. الحالة الخاصة: تريد فتح PDF المرتبط بمفتاح Bibtex تحت المؤشر: Mx helm-bibtex Mn RET أو Mx ivy-bibtex Mn RET . هذا هو بالطبع أقصر إذا قمت بربط helm-bibtex أو ivy-bibtex بمفتاح مناسب (انظر Bindings).
الإجراءات المتاحة هي:
Helm-Bibtex : حدد إدخالًا واضغط على <return> لتنفيذ الإجراء الافتراضي. بدلاً من ذلك ، اضغط على TAB (Tabulator) لمشاهدة قائمة بجميع الإجراءات المتاحة ، وقم بتنفيذ أحدها وخروج Helm-Bibtex.
Ivy-Bibtex : حدد إدخالًا واضغط على <return> لتنفيذ الإجراء الافتراضي. بدلاً من ذلك ، اضغط على Mo لمشاهدة قائمة بجميع الإجراءات المتاحة ، وقم بتنفيذ واحدة منها والخروج من Ivy-Bibtex.
Helm-Bibtex : ابدأ Helm-Bibtex ، أدخل تعبير البحث ، وانقل المؤشر إلى إدخال المطابقة وأدخل C-<space> (Control + Vace Bar) لتمييز هذا الإدخال ، وتغيير تعبير البحث بشكل اختياري ، وتمييز المزيد من الإدخالات ، واضغط أخيرًا على <return> أو <tab> لتنفيذ إجراء لجميع الإدخالات المحددة في Helm-Bibtex.
Ivy-Bibtex : ابدأ Ivy-Bibtex ، أدخل تعبير البحث ، وانقل المؤشر إلى إدخال المطابقة وأدخل C-<space> (Control + Vace Bar) لتمييز هذا الإدخال ، وتغيير تعبير البحث بشكل اختياري ، أو وضع علامة على المزيد من الإدخالات ، واضغط أخيرًا على <return> لتنفيذ الإجراء الافتراضي على جميع الإدخالات المحددة أو Mo لاختيار إجراء آخر. اضغط على S-<space> (Shift + Space Bar) لإدخال إدخال ملحوظ.
Helm-Bibtex : ابدأ رسالة بريد إلكتروني إلى زميلك ( Cx m ) وتنفيذ helm-bibtex . ابحث عن منشوراتك الجديدة ووضع علامة عليها باستخدام C-<space> ، ثم اضغط على <f7> لتنفيذ الإجراء "إرفاق PDF للبريد الإلكتروني". ثم Mx helm-resume (لا تزال المنشورات محددة) واضغط على <f6> لتنفيذ الإجراء "إدخال إدخال Bibtex". إدراج المزيد من المراجع القابلة للقراءة البشرية بشكل اختياري باستخدام Mx helm-resume و <f4> لتنفيذ الإجراء "إدراج مرجع". إرسال البريد الإلكتروني ( Cc Cc ). منتهي. هذا يستغرق أقل من 10 ثوان.
Ivy-Bibtex : ابدأ رسالة بريد إلكتروني إلى زميلك ( Cx m ) وتنفيذ ivy-bibtex . ابحث عن منشوراتك الجديدة ووضع علامة عليها مع C-<space> ، ثم اضغط على CMo a لتنفيذ الإجراء "إرفاق PDF للبريد الإلكتروني" مع إبقاء Ivy مفتوحًا. ثم اضغط على Mo b لتنفيذ الإجراء "إدخال إدخال Bibtex" أو إدراج المزيد من المراجع القابلة للقراءة البشرية باستخدام Mo r لتنفيذ الإجراء "إدراج مرجع". إرسال البريد الإلكتروني ( Cc Cc ). منتهي. هذا يستغرق أقل من 10 ثوان.
بالطبع ، يفترض هذا أنك ترسل بريدًا إلكترونيًا من Emacs ، على سبيل المثال عبر Mu4e.
لدى Helm-Bibtex و Ivy-Bibtex إمكانيات بحث قوية ولكن لا يمكن إجراء بعض عمليات البحث الشائعة ببساطة لأن المعلومات ذات الصلة عادة لا يتم تمثيلها في ملفات Bibtex. على سبيل المثال ، لا يعرف اكتمال Bibtex ما إذا كان عرض المؤتمر بمثابة حديث أو ملصق لأنه يتم تمثيل كلاهما على أنهما inproceedings . لذا ، إذا كنت ترغب في تجميع قائمة بمحادثات المؤتمر الخاصة بك (على سبيل المثال ، لسيدهة سيرتك الذاتية) ، فهذا غير ممكن - لا يخلو من بعض الأعمال الإضافية. حل واحد هو "علامة" المنشورات. العلامات مثل الكلمات الرئيسية إلا أنها لا تمثل محتوى المنشورات ولكن بيانات التعريف. مثال:
@inproceedings { BibtexKey2015 ,
author = { Jane Doe and Monika Mustermann } ,
title = { This is the title } ,
crossref = { XYZ-conference-2015 } ,
keywords = { keyword1, keyword2 } ,
pages = { 10 } ,
tags = { poster } ,
} نظرًا لأن tags ليست حقلًا قياسيًا bibtex ، فإن اكتمال bibtex بشكل افتراضي لا يعتبره عند البحث. من أجل أن نكون قادرين على البحث عن العلامات ، يجب أن نخبر Bibtex-Completion أن حقل tags مناسب أيضًا:
(SetQ Bibtex-Completion-Additional-Search Fields '(Tags))
هناك العديد من الطرق الأخرى التي يمكن من خلالها استخدام العلامات. على سبيل المثال ، يمكن استخدامها لتمييز المقالات التي تخطط لقراءتها أو مقالات أو مخطوطات مهمة قيد التقدم ، وما إلى ذلك.
يطالب الإجراء بإدخال أمر اقتباس في مستند LaTeX لأمر الاقتباس ، وإذا كان ذلك ممكنًا ، في وسيطات ما قبل وما بعدها. يحتوي موجه لأمر الاقتباس على تاريخ Minibuffer الخاص به ، مما يعني أنه يمكن الوصول إلى المدخلات السابقة عن طريق الضغط على مفتاح <up> لـ Helm-Bibtex أو Mp لـ Ivy-Bibtex. من خلال الضغط على <down> ، من الممكن أيضًا الوصول إلى قائمة جميع أوامر الاقتباس المحددة في Biblatex (باستثناء الأوامر متعددة الأزهار و Volcite et al. والتي لها هياكل وسيطة مختلفة). يدعم المطالبة أيضًا الإكمال التلقائي عبر مفتاح tab . إذا لم يتم إدخال أي أمر ، يتم استخدام الأمر الافتراضي. يتم تعريف الأمر الافتراضي في متغير التخصيص bibtex-completion-cite-default-command . بشكل افتراضي ، موجه Helm-Bibtex و Ivy-Bibtex لمرحلة ما قبل وما بعدها للاستشهاد. يمكن إيقاف تشغيل ذلك عن طريق تعيين المتغيرات المتغيرة bibtex-completion-cite-prompt-for-optional-arguments إلى nil .
Bibtex-Completion يخبّر ببليوغرافيا لمنع إعادة قراءة مكلفة عند بدء استعلام جديد. ومع ذلك ، لا تتحقق إكمال bibtex ما إذا كانت PDFs الجديدة أو الملاحظات تمت إضافةها منذ آخر قراءة ، وبالتالي قد تكون الرموز التي تشير إلى وجود أو عدم وجود هذه العناصر غير صحيحة. يمكن إجبار إعادة القراءة باستخدام وسيطة بادئة.
Helm-Bibtex : إما Do Cu Mx helm-bibtex أو Cu متبوعًا بأي مفتاح ملزم تستخدمه لاستدعاء Helm-Bibtex.
Ivy-Bibtex : إما أن تفعل Cu Mx ivy-bibtex أو Cu متبوعًا بأي مفتاح ملزم تستخدمه لاستدعاء Ivy-Bibtex.
Helm-Bibtex : ابدأ Helm-Bibtex وأدخل مصطلحات البحث. ثم حدد "CrossRef" في القسم بعنوان "خيارات العودة". (يمكنك استخدام مفاتيح الأسهم اليسرى واليسرى للتبديل بين الأقسام.)
Ivy-Bibtex : ابدأ Ivy-Bibtex وأدخل مصطلحات البحث. ثم اضغط على Mo f لمشاهدة قائمة خيارات العودة وحدد "CrossRef".
سيستخدم هذا biblio.el للبحث في قاعدة بيانات CrossRef. في قائمة النتائج ، ضع المؤشر عند إدخال الاهتمام واضغط على c لنسخ bibtex لهذا الإدخال أو i لإدراجه عند نقطة. اضغط على q لإغلاق المخزن المؤقت مع نتائج البحث. راجع وثائق Biblio.el للحصول على التفاصيل.
في بعض الأحيان ، لن ينتج عن مصطلح البحث النتائج المطلوبة على مصدر الاحتياطي الأول المحدد وقد ترغب في اختيار خيار احتياطي آخر بنفس مصطلح البحث. لهذا يمكنك استخدام helm-resume (أو ivy-resume ) للعودة إلى قائمة Helm (IVY) الأولية مع آخر مصطلح البحث مسبقًا مما يسمح لك باختيار خيار آخر بكفاءة.
أدناه ، أقدم رمزًا مفيدًا لي أو لمستخدمين آخرين. لاحظ أن هذا الرمز قد يجعل افتراضات لا تمسك في الإعداد الخاص بك. اقرأ الرمز بعناية قبل تنفيذه وإجراء تغييرات حسب الحاجة.
يقرأ الرمز أدناه جميع ملفات الملاحظة في bibtex-completion-notes-path وإنشاء ملف ملاحظات جديد يحتوي على قسم لكل منشور. يفترض هذا الرمز أن إكمال bibtex لا يزال يتم تكوينه لملفات الملاحظات المتعددة وأنك تريد تخزين الملاحظات في ملف notes.org في bibtex-completion-notes-path . يضيف الرمز أيضًا مستوى إلى جميع عناوين ORG الموجودة في ملفات الملاحظات الفردية (نظرًا لأن العناوين ذات المستوى الأعلى تستخدم للمنشورات في ملف NOTES الجديد). إذا لم يكن لملف ملاحظة إدخال مقابل في المراجع ، يتم تجاهله.
( let ((note-files ( directory-files bibtex-completion-notes-path t " ^[^.]+ \ .org$ " ))
(bibtex-completion-notes-path (f-join bibtex-completion-notes-path " notes.org " )))
( cl-loop
for note-file in note-files
for key = (f-no-ext (f-filename note-file))
do ( condition-case nil
( progn
(bibtex-completion-edit-notes key)
( insert ( with-temp-buffer
( insert-file-contents note-file)
( replace-regexp " ^* " " ** " )
( buffer-string ))))
( error nil ))))لنفترض أنك تريد إنشاء ملف bibtex يحتوي على إدخالات فقط استشهدت بها في مقال ما ، ثم يمكنك استخدام الكود التالي لملء ملف bibtex الجديد مع الإدخالات:
( progn
( switch-to-buffer ( generate-new-buffer " my_new_bibliography.bib " ))
(--map ( insert (bibtex-completion-make-bibtex it)) (-distinct '( " Key1 " " Key2 " ))))If LaTeX is used to write the article, grep and sed can be used to extract the cited keys:
grep ' entry{ ' manuscript.bbl | sed ' s/^.*entry{([^}]*)}.*$/1/ ' This can be useful if you'd like to transfer all your PDFs to another directory or similar.
(flatten-tree
( mapcar
( lambda ( entry ) (bibtex-completion-find-pdf entry))
(bibtex-completion-candidates)))Helm-bibtex and ivy-bibtex display entries in the order in which they appear in the BibTeX file reversed. This way, entries that were added at the bottom of the BibTeX file show up at the top when searching. There is currently no support for sorting but if you want to reverse the order of entries you can use the code below:
( advice-add 'bibtex-completion-candidates
:filter-return 'reverse )ivy-bibtex as an org-cite-follow-processor As mentioned here, the default org-open-at-point on a org citation will take you to the corresponding bibliography entry. The following code will change this behavior to instead open ivy-bibtex when following an org citation by entering RET or clicking on it:
(org-cite-register-processor 'my-ivy-bibtex-org-cite-follow
:follow ( lambda ( _ _ ) (ivy-bibtex)))
( setq org-cite-follow-processor 'my-ivy-bibtex-org-cite-follow )This usually happens when a BibTeX file isn't well-formed. Common problems are opening quotes or parentheses that don't have matching counterparts. Unfortunately, Helm swallows the error message that is generated in these cases and just shows an empty buffer.
One way to diagnose the problem is to call the function for reading BibTeX directly and to see what error message it produces:
(bibtex-completion-candidates)If you see
forward-sexp: Scan error: "Unbalanced parentheses", 181009, 512282
this means that there is an unmatched opening parenthesis at the position 181009. To find this parenthesis, open the BibTeX file and do M-: (goto-char 181009) RET . You can also use the command Mx bibtex-validate RET to check for errors. Fix any problems and try again.