التعليم والبحث العلمي الأدلة التقنية

أي مدير مراجع Reference Manager يناسب بحثك؟

مقارنة Zotero وMendeley وJabRef في الترخيص والسعر والمزامنة، مع تجربة حقيقية لمراجع عربية وإنجليزية بنمط APA وتصدير BibTeX.

أي مدير مراجع Reference Manager يناسب بحثك؟

يكتب طالب الدراسات العليا قائمة مراجع رسالته يدوياً في Word، مئة مرجع أو أكثر بنمط APA، ثم يطلب منه المشرف قبل التسليم بأسبوع أن يحذف عشرين مرجعاً ويضيف عشرة، أو ترفض المجلة البحث المستخرج من الرسالة لأن نمطها IEEE بالأرقام وليس APA بالأسماء، فيقضي أياماً في إعادة ترتيب القائمة وتعديل كل استشهاد في النص، ويفوته مرجع ذكره في النص ونسيه في القائمة، وهذا أول ما يلاحظه المحكم. وهذا العمل كله تقوم به أداة مجانية اسمها مدير المراجع Reference Manager. وهذا المقال موجه لطالب الدراسات العليا الذي يبدأ رسالته، وللباحث وعضو هيئة التدريس الذي يكتب مع فريق، وللمحكم ومحرر المجلة الذي يراجع قوائم المراجع ويريد أن يفهم من أين تأتي أخطاؤها.

في هذا المقال سوف نتناول:

  • ماذا يفعل مدير المراجع، ولماذا لا تكفي ميزة المراجع المدمجة في Word.
  • مقارنة Zotero وMendeley وJabRef في الترخيص License والسعر والمزامنة Sync والتكامل مع برامج الكتابة، مع نقاط القوة ونقاط الضعف لكل واحد.
  • مختبر عملي: نجمع مراجع عربية وإنجليزية بالمعرف الرقمي DOI والرقم الدولي ISBN من خلال محرك Zotero نفسه، ونصدرها بصيغة BibTeX، ثم نخرجها بنمط APA ونمط معدل للأسماء العربية بلغة الأنماط Citation Style Language، ونرى بالأرقام أين تخطئ الأدوات مع المراجع العربية.
  • كيف تختار، والأخطاء الشائعة.

وإذا كنت في بداية الطريق فابدأ بمقال كيف يصل البحث العلمي من الفكرة إلى النشر لترى أين تقع الكتابة والتوثيق في دورة البحث كلها.

ماذا يفعل مدير المراجع Reference Manager؟

مدير المراجع برنامج يحفظ كل مرجع تقرؤه مرة واحدة في مكتبة Library منظمة، مع بياناته الوصفية Metadata مثل المؤلفين والسنة والمجلة والمجلد والصفحات والمعرف الرقمي DOI، ومع ملف PDF وملاحظاتك عليه، ثم يضيف الاستشهاد Citation في النص وقائمة المراجع References في آخر الملف تلقائياً بأي نمط تختاره. والفكرة الأساسية أن المرجع يدخل مرة واحدة ويخرج بأي شكل، فالنمط ليس جزءاً من المرجع، وإنما قالب Style يطبق عليه عند الإخراج، والصورة التالية تبين المسار الكامل:

مخطط من خمس مراحل: الالتقاط من زر المتصفح أو DOI أو ISBN أو ملف PDF، ثم المكتبة التي تحفظ البيانات الوصفية وملف PDF والملاحظات مع تنبيه بمراجعة البيانات قبل الاستشهاد، ثم المزامنة عبر سحابة المنتج أو WebDAV أو قاعدة مشتركة، ثم الاستشهاد في Word أو LibreOffice أو Google Docs بنمط CSL، والتصدير بصيغ BibTeX وBibLaTeX وRIS وCSL JSON إلى LaTeX وQuarto، وفي النهاية قائمة المراجع التي تتولد تلقائياً
المرجع يدخل مرة واحدة، والنمط يطبق عند الإخراج، لذلك يتغير شكل القائمة كلها بنقرة

وقد يتساءل البعض: لماذا لا أستخدم ميزة المراجع المدمجة في Word؟ والإجابة أنها تصلح لبحث صغير، ولكنها لا تجلب بيانات المرجع من DOI، ولا تحفظ ملف PDF وملاحظاتك، ولا تتشارك المكتبة مع فريقك، وأنماطها محدودة، ولا تصدر BibTeX إذا انتقلت إلى LaTeX. أما مدير المراجع فيستخدم في الغالب لغة الأنماط Citation Style Language واختصاراً CSL، وهي صيغة مفتوحة مكتوبة بـ XML تصف النمط، ومستودع أنماط Zotero فيه أكثر من عشرة آلاف نمط لمجلات وجامعات بعينها (10868 مدخلاً في ملف المستودع يوم 23 أكتوبر 2026، وأغلبها أنماط تابعة Dependent تعيد استخدام نمط أساسي مثل APA أو IEEE). وبالتالي فإن النمط الذي يكتبه مجتمع CSL مرة واحدة يعمل في Zotero وMendeley وJabRef وفي Quarto وPandoc.

ثلاث أدوات بثلاث فلسفات

الأدوات الثلاث مجانية في استخدامها الأساسي، ولكنها تختلف في من يملكها وأين تحفظ بياناتك وفي البيئة التي صممت لها، وفيما يلي كل واحدة من صفحاتها الرسمية التي قرأناها يوم 23 أكتوبر 2026.

Zotero: المفتوح المصدر الذي يحتفظ ببياناتك على جهازك

Zotero برنامج مفتوح المصدر بترخيص AGPLv3 بحسب ملف الترخيص في مستودعه، تطوره مؤسسة غير ربحية هي Corporation for Digital Scholarship، وآخر إصدار يوم كتابة المقال هو 10.0.6 الصادر في 7 أكتوبر 2026 بحسب سجل التغييرات. ويحفظ مكتبتك في قاعدة بيانات محلية على جهازك، ويزامنها مع خوادمه إذا أردت.

نقاط القوة:

  • مزامنة البيانات Data Sync مجانية وبلا حد، أي المراجع والملاحظات والوسوم، وصفحة المزامنة تفصل بينها وبين مزامنة الملفات File Sync أي ملفات PDF.
  • يمكنك أن تزامن ملفات PDF عبر خادم WebDAV خاص بك أو بجامعتك بدلاً من التخزين المدفوع، وذلك للمكتبة الشخصية فقط وليس لمكتبات المجموعات Group Libraries.
  • إضافة للمتصفح Zotero Connector تلتقط المرجع من صفحة المجلة بنقرة، وإضافات للاستشهاد في Word وLibreOffice بحسب صفحة التكامل، وفي Google Docs أيضاً.
  • محرك جلب البيانات مفتوح ومنشور كخدمة مستقلة اسمها translation-server، وهو الذي نستخدمه في المختبر، وله واجهة برمجية Web API للمكتبات المتزامنة.
  • إضافة Better BibTeX المجتمعية تجعله مناسباً لمستخدمي LaTeX، وسوف ترى في المختبر لماذا تحتاج إليها.

نقاط الضعف:

  • التخزين المجاني للملفات 300 ميجابايت فقط، وهذا يمتلئ بنحو مئة إلى مئتي ملف PDF، والخطط المدفوعة بحسب صفحة التخزين: 2 جيجابايت بـ 20 دولاراً في السنة، و6 جيجابايت بـ 60 دولاراً، وبلا حد بـ 120 دولاراً.
  • البيانات التي يجلبها للمراجع العربية تحتاج إلى مراجعة يدوية، وهذا ما سوف نقيسه في المختبر.

Mendeley: مجاني من Elsevier ومكتبته في السحابة

Mendeley برنامج مغلق المصدر تملكه Elsevier، وهي من أكبر ناشري المجلات العلمية. والإصدار الحالي اسمه Mendeley Reference Manager، وتقول صفحة الدعم الرسمية إن مكتبته سحابية Cloud-based، وإن له إضافة منفصلة للاستشهاد في Word اسمها Mendeley Cite. أما البرنامج القديم Mendeley Desktop فتقول صفحة أخرى محدثة في أبريل 2026 إنه ما زال متاحاً بالإصدار 1.19.8، ولكن لن تصدر له تحديثات، ولا يضمن توافقه مع أنظمة التشغيل القادمة، وإن الشركة سوف توقف تنزيله وتسجيل الدخول إليه بعد أن يغطي البرنامج الجديد الميزات الأساسية.

نقاط القوة:

  • مجاني، وصفحة المنتج تعرض 2 جيجابايت من التخزين مجاناً، وهي أكبر من مساحة Zotero المجانية.
  • واجهة بسيطة وقارئ PDF مدمج، ومألوف في جامعات كثيرة.

نقاط الضعف:

  • بياناتك عند ناشر تجاري، والبرنامج الجديد لا يحتفظ بقاعدة بيانات محلية حقيقية. وصفحة الاستيراد في Zotero توثق أن Elsevier شفرت قاعدة البيانات المحلية لـ Mendeley Desktop في الإصدار 1.19 سنة 2018، فأصبحت غير مقروءة لأدوات قواعد البيانات ولـ Zotero، وأصبح نقل المكتبة يمر عبر خوادم Mendeley فقط. والدرس هنا أن تختار أداة تستطيع أن تخرج منها بكل بياناتك في أي يوم.
  • لا توجد صفحة أسعار رسمية للخطط الفردية المدفوعة على موقع المنتج يوم كتابة المقال، لذلك إذا احتجت مساحة أكبر فاسأل مكتبة جامعتك عن الاشتراك المؤسسي.

JabRef: ملف BibTeX نصي تملكه بالكامل

JabRef برنامج مفتوح المصدر بترخيص MIT، مكتوب بـ Java ويعمل على Windows وmacOS وLinux، وصيغته الأصلية هي ملف BibTeX أو BibLaTeX النصي نفسه، أي أن المكتبة ملف .bib يقرؤه LaTeX مباشرة. وآخر إصدار مستقر في صفحة الإصدارات هو 5.15 الصادر في يوليو 2024، والإصدار 6.0 ما زال تجريبياً (6.0-beta.1 في 21 سبتمبر 2026).

نقاط القوة:

  • المكتبة ملف نصي، فتضعه في Git مع ملفات LaTeX وترى كل تعديل على المراجع، وهذا مناسب جداً لفرق الحاسب والهندسة والرياضيات.
  • للعمل الجماعي يدعم قاعدة بيانات مشتركة على PostgreSQL أو MySQL، يدفع إليها كل عضو تعديلاته تلقائياً، ومختبر على PostgreSQL بحسب التوثيق.
  • لا يوجد حساب ولا سحابة ولا حد للتخزين.

نقاط الضعف:

  • لا توجد إضافة لـ Microsoft Word، فالتكامل الرسمي بحسب صفحة التوثيق مع LibreOffice وOpenOffice فقط، ويحذر التوثيق من أن الحفظ بصيغة Word يفقد علامات الاستشهاد.
  • آخر إصدار مستقر عمره أكثر من سنتين، والإصدار الجديد ما زال تجريبياً.

المقارنة في جدول واحد

ZoteroMendeleyJabRef
الترخيص Licenseمفتوح AGPLv3مغلق، Elsevierمفتوح MIT
السعرمجاني، والتخزين الإضافي من 20 دولاراً في السنةمجانيمجاني
تخزين PDF المجاني300 ميجابايت، أو WebDAV خاص بك2 جيجابايتعلى جهازك أو مجلد مشترك
مكان المكتبةقاعدة محلية مع مزامنة اختياريةسحابة Elsevierملف .bib نصي
العمل الجماعيمكتبات المجموعات Group Librariesمجموعات خاصةقاعدة PostgreSQL مشتركة أو Git
الاستشهاد في Wordنعم، وLibreOffice وGoogle Docsنعم، Mendeley Citeلا، LibreOffice فقط
BibTeXتصدير، وأفضل مع Better BibTeXتصديرالصيغة الأصلية
الخروج ببياناتكسهل، والقاعدة محليةعبر الخادم فقطالملف ملكك أصلاً

وماذا عن EndNote؟

EndNote برنامج تجاري من Clarivate، وكثير من الجامعات تشتري له ترخيصاً مؤسسياً، ودليل كتابة الرسائل العلمية في عمادة الدراسات العليا بجامعة الطائف ينصح باستخدام برامج إدارة المراجع والتوثيق الآلي «مثل برنامج EndNote وغيرها». لذلك إذا وفرته جامعتك فهو خيار جيد ما دمت فيها، ولكن تذكر أن الترخيص ينتهي عادة بتخرجك أو بانتقالك، فاسأل نفسك قبل أن تبني عليه مكتبة عشر سنوات: هل أستطيع أن أصدرها كاملة إلى أداة أخرى؟ والإجابة نعم بصيغة RIS، ولكن جربها مبكراً.

مختبر: مراجع عربية وإنجليزية من DOI إلى قائمة APA

المقارنة على الورق لا تكفي لأن مشكلة الباحث العربي الحقيقية تظهر عند الإخراج، لذلك سوف نشغل محرك Zotero الذي يجلب بيانات المراجع، وهو translation-server، في Docker، ونعطيه ثلاثة أبحاث عربية مسجلة في Crossref وبحثين إنجليزيين وكتاباً بالرقم الدولي ISBN، ثم نصدر النتيجة بصيغ BibTeX وRIS وCSL JSON، ثم نخرجها بمحرك citeproc-js، وهو المحرك نفسه الذي يخرج به Zotero الاستشهادات داخل Word. والمختبر لا يحتاج إلى أي مفتاح أو حساب، ولا يفتح أي منفذ Port على جهازك.

تجهيز translation-server

عند سحب الـ Image الرسمية zotero/translation-server:2.0.6 من Docker Hub على جهاز Windows بمعالج x86 سوف تجد التحذير التالي:

WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested

والسبب أن الوسم 2.0.6 منشور لمعمارية arm64 فقط، وأن طلب --platform linux/amd64 لا يغير ذلك، فيعمل الـ Container بالمحاكاة Emulation ببطء. لذلك بنينا الـ Image من المصدر عند commit محدد بالملف التالي:

# Zotero translation-server built from source at a pinned commit (the Docker Hub tag 2.0.6 is arm64 only)
FROM node:24.22.1-bookworm
ARG TS_COMMIT=672d4f3b62
RUN git clone --recursive https://github.com/zotero/translation-server.git /app \
 && cd /app && git checkout ${TS_COMMIT} && git submodule update --init --recursive
WORKDIR /app
RUN npm install --omit=dev \
 && git -C /app/modules/translators log -1 --format='translators %h %cd' > /app/TRANSLATORS_VERSION
EXPOSE 1969
ENTRYPOINT ["./docker-entrypoint.sh"]

ثم نبني الـ Image وننشئ شبكة Docker داخلية ونشغل الخدمة عليها بدون نشر أي منفذ:

docker build -t translation-server:672d4f3b62 -f Dockerfile.translation-server .
docker network create refs-net
docker run -d --name zotero-ts --network refs-net translation-server:672d4f3b62
docker logs zotero-ts

والمخرج سوف يكون كما يلي:

-> Updating zotero translators
From https://github.com/zotero/translators
...
(3)(+0000000): Translators initialized with 752 loaded
(3)(+0000003): Listening on 0.0.0.0:1969

لاحظ أن الخدمة تحدث مجموعة المترجمات Translators من GitHub عند كل تشغيل، وهي سكربتات تعرف كيف تقرأ بيانات كل ناشر وكل قاعدة، ووصل عددها إلى 752 مترجماً. والطلب الأبسط لها هو إرسال DOI كنص إلى المسار /search، وقد جربناه من داخل الـ Container:

docker exec zotero-ts curl -s -d '10.1136/bmj.n71' -H 'Content-Type: text/plain' http://127.0.0.1:1969/search

والمخرج مصفوفة JSON بصيغة Zotero نفسها، وهذه بدايتها:

[{"key":"2I7CEM5J","version":0,"itemType":"journalArticle","creators":[{"firstName":"Matthew J","lastName":"Page","creatorType":"author"},{"firstName":"Joanne E","lastName":"McKenzie","creatorType":"author"},...

جمع المراجع وتصديرها

السكربت التالي بلغة Python ومكتبتها القياسية فقط، يرسل كل معرف إلى /search، ويطبع ما رجع، ثم يرسل المراجع كلها إلى /export بأربع صيغ:

"""Collect references through the Zotero translation-server, then export them (stdlib only).
Usage: python fetch.py http://ts:1969 out/"""
import json, sys, time, urllib.request, os

TS, OUT = sys.argv[1].rstrip('/'), sys.argv[2]
os.makedirs(OUT, exist_ok=True)

IDS = [
    '10.36715/0328-060-999-003',   # Arabic, Saudi journal (Public Administration)
    '10.33948/1640-000-020-005',   # Arabic, Saudi Journal of Special Education
    '10.21608/ssj.2020.244250',    # Arabic, Egyptian journal on EKB
    '10.1038/s41598-023-41032-5',  # English, Scientific Reports
    '10.1136/bmj.n71',             # English, BMJ (PRISMA 2020)
    '978-0-226-82667-7',           # English book by ISBN
]

def post(path, body, ctype='text/plain'):
    data = body if isinstance(body, bytes) else body.encode('utf-8')
    req = urllib.request.Request(TS + path, data=data, headers={'Content-Type': ctype})
    t = time.time()
    try:
        with urllib.request.urlopen(req, timeout=60) as r:
            return r.status, r.read().decode('utf-8'), time.time() - t
    except urllib.error.HTTPError as e:
        return e.code, e.read().decode('utf-8', 'replace'), time.time() - t

items = []
for i in IDS:
    status, text, secs = post('/search', i)
    if status != 200:
        print(f'{i:32} HTTP {status} in {secs:.1f}s  {text[:80]!r}')
        continue
    got = json.loads(text)
    for it in got:
        creators = '; '.join(f"{c.get('lastName', c.get('name', ''))}, {c.get('firstName', '')}" for c in it.get('creators', []))
        print(f"{i:32} HTTP 200 in {secs:.1f}s  {it['itemType']:16} lang={it.get('language', '-')!s:6} {it.get('date', '-')!s:12} {creators[:70]}")
        print(f"{'':32}   title: {it.get('title', '')[:100]}")
    items += got

json.dump(items, open(f'{OUT}/zotero-items.json', 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
print(f'\n{len(items)} items saved')

for fmt, ext in [('bibtex', 'bib'), ('biblatex', 'bib2'), ('ris', 'ris'), ('csljson', 'csl.json')]:
    status, text, secs = post(f'/export?format={fmt}', json.dumps(items), 'application/json')
    open(f'{OUT}/refs.{ext}', 'w', encoding='utf-8').write(text)
    print(f'export {fmt:9} HTTP {status} in {secs:.1f}s  {len(text.encode("utf-8")):6} bytes')

نشغله في Container من Python على الشبكة نفسها:

docker run --rm --network refs-net -v "$PWD:/lab" -w /lab python:3.13.17-slim python -X utf8 fetch.py http://zotero-ts:1969 out

والمخرج سوف يكون كما يلي:

10.36715/0328-060-999-003        HTTP 200 in 3.2s  journalArticle   lang=-      2020         الجار الله, سليمان بن ناصر; الخريجى, عبدالله بن إبراهيم عبدالله
                                   title: استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة توي
10.33948/1640-000-020-005        HTTP 200 in 1.3s  journalArticle   lang=-      2022         الغامدي, عبدالله أحمد
                                   title: التحديات التي تواجه معلمي التلاميذ ذوي صعوبات التعلم أثناء استخدام التعلم الإلكتروني في ظل جائحة كور
10.21608/ssj.2020.244250         HTTP 200 in 0.6s  journalArticle   lang=ar     2020-07-16   العنزي, د عبدالله قريطان
                                   title: تطوير الصدق البنائي لأبعاد مقياس التعلم الافتراضي في الجامعات السعودية.
10.1038/s41598-023-41032-5       HTTP 200 in 0.7s  journalArticle   lang=en     2023-09-07   Walters, William H.; Wilder, Esther Isabelle
                                   title: Fabrication and errors in the bibliographic citations generated by ChatGPT
10.1136/bmj.n71                  HTTP 200 in 0.6s  journalArticle   lang=en     2021-03-29   Page, Matthew J; McKenzie, Joanne E; Bossuyt, Patrick M; Boutron, Isab
                                   title: The PRISMA 2020 statement: an updated guideline for reporting systematic reviews
978-0-226-82667-7                HTTP 200 in 1.7s  book             lang=-      2024         Booth, Wayne C.; Colomb, Gregory G.; Williams, Joseph M.; Bizup, Josep
                                   title: The craft of research
978-0-226-82667-7                HTTP 200 in 1.7s  note             lang=-      -
                                   title:

7 items saved
export bibtex    HTTP 200 in 0.1s    6008 bytes
export biblatex  HTTP 200 in 0.0s    6181 bytes
export ris       HTTP 200 in 0.1s    6122 bytes
export csljson   HTTP 200 in 0.0s    8816 bytes

كل المعرفات الستة رجعت في أقل من 4 ثوان لكل واحد، ولكن في المخرج أعلاه لاحظ التالي:

  • البحثان المسجلان من خلال قاعدة المنظومة (المعرفان اللذان يبدآن بـ 10.36715 و10.33948) رجعا بدون حقل اللغة lang=-، وبدون مجلد وعدد، وبرقم الصفحة الأولى فقط (873 و115)، ورابطهما إلى صفحة القاعدة وليس إلى المجلة. والسبب ليس Zotero، وإنما ما سجله الناشر في Crossref، وهذا يعني أنك سوف تكمل هذه الحقول يدوياً من ملف البحث نفسه.
  • البحث الثالث سجل فيه اسم المؤلف الأول «د عبدالله قريطان»، أي أن اللقب العلمي «د» دخل في الاسم الأول، وسوف يظهر في قائمة المراجع كأنه حرف من الاسم.
  • الكتاب بالرقم الدولي ISBN رجع ومعه عنصر ثان نوعه note، وهو ملاحظة فيها فهرس الكتاب جلبها المترجم مع البيانات. وفي Zotero المكتبي تظهر هذه الملاحظة تحت الكتاب ولا تدخل قائمة المراجع، ولكن إذا صدرت المراجع آلياً كما فعلنا فسوف تدخل القائمة كمرجع غريب، وسوف تراه بعد قليل.
  • المرجعان الإنجليزيان رجعا كاملين بالمجلد والعدد والصفحات واللغة en، وهذا هو الفرق الذي يجب أن تتوقعه بين بيانات الناشرين الكبار وبيانات كثير من المجلات العربية.

ملف BibTeX ومشكلة المفاتيح العربية

المفتاح Citation Key هو الاسم الذي تكتبه في LaTeX لتستشهد بالمرجع، مثل \cite{walters_fabrication_2023}. وهذه بداية المراجع الثلاثة العربية في الملف الذي صدره Zotero:

@article{___2020,
	title = {استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة تويتر في ظل جائحة كورونا كوفيد-19},
...
@article{__2022,
	title = {التحديات التي تواجه معلمي التلاميذ ذوي صعوبات التعلم أثناء استخدام التعلم الإلكتروني في ظل جائحة كورونا "كوفيد-19"},
...
@article{__2020,
	title = {تطوير الصدق البنائي لأبعاد مقياس التعلم الافتراضي في الجامعات السعودية.},
...
@article{walters_fabrication_2023,
...
@article{page_prisma_2021,
...
@book{booth_craft_2024,

لاحظ أن المفاتيح الإنجليزية مقروءة (اسم المؤلف ثم أول كلمة مهمة من العنوان ثم السنة)، أما العربية فأصبحت شرطات وسنة فقط، لأن مولد المفاتيح الافتراضي يحذف الحروف غير اللاتينية. ومع رسالة فيها خمسون مرجعاً عربياً من سنة 2020 سوف تجد مفاتيح لا تميز بينها، وقد تتكرر. لذلك إذا كنت تكتب بـ LaTeX فلا تعتمد على المفاتيح الافتراضية، وعليك بإضافة Better BibTeX لتثبيت مفتاح لكل مرجع بصيغة تختارها، أو اكتب المفتاح بنفسك بحروف لاتينية مثل aljarallah2020sustainability.

إخراج القائمة بنمط APA

الآن نخرج المراجع بنمط APA الإصدار السابع من مستودع الأنماط الرسمي، وملفات اللغة Locales منه أيضاً، بالسكربت التالي الذي يستخدم citeproc-js:

// Render a CSL-JSON file with citeproc-js (the engine inside Zotero) in a given style and locale.
// Usage: node render.js out/refs.csl.json csl/apa.csl en-US [ids-filter]
const fs = require('fs');
const CSL = require('citeproc');
const [file, stylePath, lang, filter] = process.argv.slice(2);
let items = JSON.parse(fs.readFileSync(file, 'utf8'));
if (filter === 'ar') items = items.filter(i => /[؀-ۿ]/.test(i.title));
if (filter === 'en') items = items.filter(i => !/[؀-ۿ]/.test(i.title));
const byId = Object.fromEntries(items.map(i => [i.id, i]));
const sys = {
  retrieveLocale: (l) => fs.readFileSync(`csl/locales-${l}.xml`, 'utf8'),
  retrieveItem: (id) => byId[id],
};
const engine = new CSL.Engine(sys, fs.readFileSync(stylePath, 'utf8'), lang, true);
engine.setOutputFormat('text');
const ids = items.map(i => i.id);
engine.updateItems(ids);
// in-text citation for every item, then a citation with all the items together
for (const id of ids) console.log('cite:', engine.makeCitationCluster([{ id }]));
const [, entries] = engine.makeBibliography();
console.log('--- bibliography');
for (const e of entries) console.log(e.trim());

نحمل النمط وملفي اللغة العربية والإنجليزية عند commit محدد من مستودعات CSL، ونثبت citeproc بالإصدار 2.4.63، ثم نشغل السكربت في Container من Node.js:

mkdir -p csl
curl -sfo csl/apa.csl https://raw.githubusercontent.com/citation-style-language/styles/b6f9ca47b2/apa.csl
curl -sfo csl/ieee.csl https://raw.githubusercontent.com/citation-style-language/styles/b6f9ca47b2/ieee.csl
curl -sfo csl/locales-en-US.xml https://raw.githubusercontent.com/citation-style-language/locales/8bef426f89/locales-en-US.xml
curl -sfo csl/locales-ar.xml https://raw.githubusercontent.com/citation-style-language/locales/8bef426f89/locales-ar.xml
echo '{ "private": true, "dependencies": { "citeproc": "2.4.63" } }' > package.json
docker run --rm -v "$PWD:/lab" -w /lab node:24-alpine sh -c 'npm install --silent && node render.js out/refs.csl.json csl/apa.csl en-US'

والمخرج سوف يكون كما يلي:

cite: (الجار الله & الخريجى, 2020)
cite: (الغامدي, 2022)
cite: (العنزي, 2020)
cite: (Walters & Wilder, 2023)
cite: (Page et al., 2021)
cite: (Booth et al., 2024)
cite: (Preface : The Aims of This Edition -- Introduction : Your Research and Your Audience -- Asking Questions, Seeking Answer, n.d.)
--- bibliography
Booth, W. C., Colomb, G. G., Williams, J. M., Bizup, J., & FitzGerald, W. T. (2024). The craft of research (Fifth edition). The University of Chicago Press.
Page, M. J., McKenzie, J. E., Bossuyt, P. M., Boutron, I., Hoffmann, T. C., Mulrow, C. D., Shamseer, L., Tetzlaff, J. M., Akl, E. A., Brennan, S. E., Chou, R., Glanville, J., Grimshaw, J. M., Hróbjartsson, A., Lalu, M. M., Li, T., Loder, E. W., Mayo-Wilson, E., McDonald, S., … Moher, D. (2021). The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. BMJ, n71. https://doi.org/10.1136/bmj.n71
Preface : the aims of this edition -- Introduction : your research and your audience -- Asking questions, seeking answer. (n.d.).
Walters, W. H., & Wilder, E. I. (2023). Fabrication and errors in the bibliographic citations generated by ChatGPT. Scientific Reports, 13(1), 14045. https://doi.org/10.1038/s41598-023-41032-5
الجار الله, س. ب. ن., & الخريجى, ع. ب. إ. ع. (2020). استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة تويتر في ظل جائحة كورونا كوفيد-19. الإدارة العامة, 873. https://doi.org/10.36715/0328-060-999-003
العنزي, د. ع. ق. (2020). تطوير الصدق البنائي لأبعاد مقياس التعلم الافتراضي في الجامعات السعودية. العلوم التربوية, 28(3), 323–354. https://doi.org/10.21608/ssj.2020.244250
الغامدي, ع. أ. (2022). التحديات التي تواجه معلمي التلاميذ ذوي صعوبات التعلم أثناء استخدام التعلم الإلكتروني في ظل جائحة كورونا “كوفيد-19.” المجلة السعودية للتربية الخاصة, 115. https://doi.org/10.33948/1640-000-020-005

المراجع الإنجليزية خرجت صحيحة بنمط APA، ومنها اختصار قائمة المؤلفين الطويلة في بحث PRISMA إلى 19 مؤلفاً ثم «…» ثم الأخير كما يطلب الإصدار السابع. أما العربية ففيها المشكلات التالية:

  • الاسم الأول تحول إلى حروف أولى Initials كما يفعل APA بالأسماء الإنجليزية، فأصبح «سليمان بن ناصر» «س. ب. ن.»، وكلمة «بن» أصبحت حرفاً، واللقب «د» أصبح «د.» كأنه بداية اسم.
  • الرمز «&» والفاصلة الإنجليزية «,» بين الكلمات العربية.
  • علامات التنصيص الإنجليزية في عنوان البحث الثاني، ورقم الصفحة الأولى فقط في البحثين الأولين.
  • ملاحظة فهرس الكتاب دخلت القائمة كمرجع بلا مؤلف وبلا تاريخ (n.d.)، وظهرت كاستشهاد في النص.

وقد يتساءل البعض: ألا يحل اختيار اللغة العربية في إعدادات النمط هذه المشكلة؟ جربنا ذلك بتشغيل الأمر نفسه مع ar بدلاً من en-US، فأصبح «et al.» «وآخرون» و«n.d.» «د.ت»، ولكن الحروف الأولى والرمز «&» بقيت كما هي، لأن نمط APA يطلب الرمز صراحة، وظهرت مشكلة جديدة هي أن المراجع الإنجليزية أصبحت «Page وآخرون». لذلك تغيير اللغة وحده لا يكفي.

نمط للأسماء العربية

ماذا تطلب الجامعة؟ دليل جامعة الطائف مثال واضح، فهو يطلب نمط APA، وترتيب المراجع أبجدياً بحسب اسم المؤلف «سواء المراجع العربية أو الأجنبية»، «مع فارق أن الاسم العربي يكتب كاملاً بدءاً بالاسم الأول ثم الأوسط ثم اللقب»، أما الاسم الإنجليزي فبالاسم الأخير ثم الحروف الأولى. وأدلة الجامعات والأقسام تختلف في التفاصيل، لذلك اقرأ دليل جامعتك أولاً، ثم اجعل الأداة تطابقه. وقد جربنا طريقتين:

الطريقة الأولى: نسخة معدلة من النمط. ملف CSL نص XML يمكنك تعديله، فأنشأنا نسخة باسم apa-ar.csl تلغي الحروف الأولى وتستخدم الكلمة «و» بدلاً من «&» والفاصلة العربية بين الاسم واللقب، بالأمر التالي:

sed -e '2s/initialize-with=". "/default-locale="ar" initialize="false" name-delimiter="، " sort-separator="، "/' \
    -e 's/and="symbol"/and="text"/g' \
    -e 's#<id>http://www.zotero.org/styles/apa</id>#<id>https://example.com/styles/apa-arabic-names</id>#' \
    -e 's#<title>APA Style 7th edition</title>#<title>APA 7th edition, Arabic names (local variant)</title>#' \
    csl/apa.csl > csl/apa-ar.csl

وقبل الإخراج نظفنا البيانات كما يفعل الباحث في مكتبته: حذفنا الملاحظة، وحذفنا اللقب «د» من الاسم، وأضفنا اللغة ar للمراجع العربية، وحذفنا النقطة الزائدة من آخر عنوان. ثم أخرجنا المراجع العربية بالنمط المعدل والإنجليزية بنمط APA الأصلي، والمخرج سوف يكون كما يلي:

### Arabic list: apa-ar.csl + ar
cite: (الجار الله و الخريجى, 2020)
cite: (الغامدي, 2022)
cite: (العنزي, 2020)
--- bibliography
الجار الله، سليمان بن ناصر، و الخريجى، عبدالله بن إبراهيم عبدالله. (2020). استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة تويتر في ظل جائحة كورونا كوفيد-19. الإدارة العامة, 873. https://doi.org/10.36715/0328-060-999-003
العنزي، عبدالله قريطان. (2020). تطوير الصدق البنائي لأبعاد مقياس التعلم الافتراضي في الجامعات السعودية. العلوم التربوية, 28(3), 323–354. https://doi.org/10.21608/ssj.2020.244250
الغامدي، عبدالله أحمد. (2022). التحديات التي تواجه معلمي التلاميذ ذوي صعوبات التعلم أثناء استخدام التعلم الإلكتروني في ظل جائحة كورونا "كوفيد-19". المجلة السعودية للتربية الخاصة, 115. https://doi.org/10.33948/1640-000-020-005
### English list: apa.csl + en-US
cite: (Walters & Wilder, 2023)
cite: (Page et al., 2021)
cite: (Booth et al., 2024)

الأسماء كاملة والرابط «و» عربي، ولكن لاحظ أن النمط يضع مسافة بعد «و» فتظهر «و الخريجى» منفصلة، وأن الفواصل بين أجزاء المرجع ما زالت إنجليزية، لأنها مكتوبة داخل قالب النمط نفسه وليست في ملف اللغة. وإصلاحها ممكن بتعديل أعمق للنمط، وأسهل طريقة لذلك هي محرر الأنماط المرئي Visual CSL Editor. وهذه الطريقة تعطيك قائمتين منفصلتين، وهي مناسبة إذا كان قسمك يطلب المراجع العربية أولاً ثم الأجنبية.

الطريقة الثانية: الاسم في حقل واحد. في Zotero يمكنك أن تحول اسم المؤلف من حقلين (الاسم الأول واللقب) إلى حقل واحد Single Field، فيحفظ الاسم كما تكتبه ولا يحوله النمط إلى حروف أولى ولا يقلبه. وفي CSL JSON يصبح الاسم {"literal": "سليمان بن ناصر الجار الله"}. أخرجنا القائمة كاملة بنمط APA الأصلي بعد هذا التعديل، والمخرج سوف يكون كما يلي:

cite: (سليمان بن ناصر الجار الله & عبدالله بن إبراهيم عبدالله الخريجى, 2020)
cite: (عبدالله أحمد الغامدي, 2022)
cite: (عبدالله قريطان العنزي, 2020)
cite: (Walters & Wilder, 2023)
cite: (Page et al., 2021)
cite: (Booth et al., 2024)
--- bibliography
Booth, W. C., Colomb, G. G., Williams, J. M., Bizup, J., & FitzGerald, W. T. (2024). The craft of research (Fifth edition). The University of Chicago Press.
Page, M. J., McKenzie, J. E., Bossuyt, P. M., Boutron, I., Hoffmann, T. C., Mulrow, C. D., Shamseer, L., Tetzlaff, J. M., Akl, E. A., Brennan, S. E., Chou, R., Glanville, J., Grimshaw, J. M., Hróbjartsson, A., Lalu, M. M., Li, T., Loder, E. W., Mayo-Wilson, E., McDonald, S., … Moher, D. (2021). The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. BMJ, n71. https://doi.org/10.1136/bmj.n71
Walters, W. H., & Wilder, E. I. (2023). Fabrication and errors in the bibliographic citations generated by ChatGPT. Scientific Reports, 13(1), 14045. https://doi.org/10.1038/s41598-023-41032-5
سليمان بن ناصر الجار الله & عبدالله بن إبراهيم عبدالله الخريجى. (2020). استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة تويتر في ظل جائحة كورونا كوفيد-19. الإدارة العامة, 873. https://doi.org/10.36715/0328-060-999-003
عبدالله أحمد الغامدي. (2022). التحديات التي تواجه معلمي التلاميذ ذوي صعوبات التعلم أثناء استخدام التعلم الإلكتروني في ظل جائحة كورونا “كوفيد-19.” المجلة السعودية للتربية الخاصة, 115. https://doi.org/10.33948/1640-000-020-005
عبدالله قريطان العنزي. (2020). تطوير الصدق البنائي لأبعاد مقياس التعلم الافتراضي في الجامعات السعودية. العلوم التربوية, 28(3), 323–354. https://doi.org/10.21608/ssj.2020.244250

هذه القائمة الواحدة أقرب ما وصلنا إليه لما يطلبه دليل جامعة الطائف: الاسم العربي كاملاً بترتيبه الطبيعي، والإنجليزي باللقب والحروف الأولى، والترتيب أبجدي في قائمة واحدة. والصورة التالية تلخص الطرق الثلاث:

مقارنة إخراج مرجع عربي واحد بثلاث طرق: نمط APA كما هو يحول الاسم إلى حروف أولى س. ب. ن. ويضع الرمز &، والنسخة المعدلة apa-ar.csl تكتب الاسم كاملاً مع الفاصلة العربية والواو، والاسم في حقل واحد يحفظ الاسم بترتيبه الطبيعي كما يطلب دليل جامعة الطائف وتبقى & لتعدل يدوياً
الاسم في حقل واحد أقرب طريقة لما تطلبه أدلة الجامعات، ويبقى عليك تعديل «&» في المراجع العربية متعددة المؤلفين

ولكنها ليست كاملة، فالرمز «&» بقي بين المؤلفين العربيين، والاستشهاد في النص أصبح بالاسم الكامل، والسبب أن معيار CSL الحالي لا يغير شكل الأسماء والروابط بحسب لغة كل مرجع في القائمة الواحدة. لذلك الحل العملي هو أن تثبت النمط والأسماء بإحدى الطريقتين في بداية الرسالة، ثم تراجع المراجع العربية متعددة المؤلفين يدوياً في النسخة النهائية فقط، وهي في الغالب قليلة.

💡
إذا كانت المجلة تطلب كتابة المراجع العربية بالحروف اللاتينية Transliteration أو ترجمة عناوينها إلى الإنجليزية، وهذا شائع في المجلات المفهرسة في Scopus، فأضف العنوان الإنجليزي في حقل العنوان المختصر أو الإضافي في مكتبتك من البداية، لأن إضافته لخمسين مرجعاً في آخر يوم قبل الإرسال عمل طويل ومصدر أخطاء.

والنمط الرقمي IEEE؟

مع نمط IEEE الرقمي الذي تطلبه أغلب مجلات الهندسة والحاسب تتكرر المشكلة نفسها، فالمرجع العربي الأول خرج كما يلي:

[1] س. ب. ن. الجار الله and ع. ب. إ. ع. الخريجى, “استدامة نظام التعلم الإلكتروني في المملكة العربية السعودية من خلال تحليل آراء المستفيدين في منصة تويتر في ظل جائحة كورونا كوفيد-19,” الإدارة العامة, p. 873, 2020, doi: 10.36715/0328-060-999-003.

والحل هو نفسه: الاسم في حقل واحد، ومراجعة الكلمة «and» يدوياً. وبعد أن تنتهي من الاختبار احذف ما أنشأته:

docker rm -f zotero-ts
docker network rm refs-net
docker rmi translation-server:672d4f3b62

مشكلات شائعة وحلولها

  • الخدمة ترجع HTTP 501 مع الرسالة No items returned from any translator: هذا ما رجع عندما أرسلنا DOI غير موجود 10.1038/s41598-099-99999-9، ورجع الرمز نفسه لنص ليس معرفاً أصلاً، لذلك تأكد من المعرف في صفحة البحث قبل أن تشك في الخدمة.
  • الـ Container يعمل ببطء شديد أو يظهر تحذير المعمارية: أنت تشغل Image لمعمارية arm64 على جهاز x86، فابنها من المصدر كما فعلنا.
  • مرجع بلا مؤلف وبلا تاريخ في القائمة: في الغالب ملاحظة أو مرفق صدر مع المراجع، فاحذف العناصر من نوع note وattachment قبل التصدير.

كيف تختار؟

  • تكتب في Word أو Google Docs، وحدك أو مع مشرفك: Zotero، لأنه مفتوح ومكتبته على جهازك ومزامنة بياناته مجانية، وإذا امتلأت مساحة الملفات فاستخدم WebDAV أو اشترك في خطة 2 جيجابايت بـ 20 دولاراً في السنة.
  • تكتب في LaTeX أو Overleaf أو Quarto: JabRef إذا كان فريقك يعمل بملفات نصية وGit، أو Zotero مع Better BibTeX إذا أردت التقاط المراجع من المتصفح وتصديرها تلقائياً إلى ملف .bib.
  • جامعتك توفر EndNote أو مكتبتك الحالية في Mendeley: يمكنك أن تبقى عليه، ولكن صدر مكتبتك بصيغة RIS مرة كل فصل دراسي، وجرب استيرادها في Zotero، لتعرف أن الخروج ممكن قبل أن تحتاج إليه.
  • فريق بحثي كبير: مكتبة مجموعة Group Library في Zotero، أو قاعدة JabRef مشتركة على PostgreSQL إذا كان الفريق كله على LaTeX.

وللمحكم ومحرر المجلة: عندما ترى في بحث وصلك مراجع عربية بحروف أولى مثل «س. ب. ن.» أو بالرمز «&»، فهذا في الغالب أثر أداة إدارة مراجع وليس إهمالاً من الباحث، فاطلب التعديل بحسب دليل المجلة وحدد له المثال الصحيح. أما المرجع الذي لا يوجد له DOI ولا يظهر في أي قاعدة فهو موضوع آخر، وسوف نتناوله في مقال الذكاء الاصطناعي والكتابة الأكاديمية في هذه المرحلة.

أخطاء شائعة

  • الوثوق بالبيانات المستوردة دون مراجعة: في المختبر رجع بحثان عربيان من ثلاثة بدون مجلد وعدد وبالصفحة الأولى فقط، ورجع ثالث باللقب داخل الاسم.
  • البدء بمدير المراجع في آخر الرسالة: نقل مئة مرجع مكتوبة يدوياً إلى الأداة عمل يوم كامل، أما إضافة كل مرجع عند قراءته فدقيقة واحدة.
  • تعديل قائمة المراجع يدوياً في Word قبل التسليم النهائي: أي تعديل يدوي يمسحه البرنامج عند أول تحديث للقائمة، لذلك عدل في المكتبة أو في النمط، واجعل التعديل اليدوي آخر خطوة بعد فصل الاستشهادات عن البرنامج.
  • الاعتماد على مفاتيح BibTeX الافتراضية للمراجع العربية: رأينا أنها تصبح شرطات وسنة فقط.
  • مكتبة لا تستطيع أن تخرج منها: جرب التصدير الكامل في الأسبوع الأول وليس في يوم تخرجك.

الخلاصة

  • مدير المراجع يحفظ المرجع مرة واحدة ويخرجه بأي نمط، والأنماط بصيغة CSL المفتوحة تعمل في كل الأدوات.
  • Zotero مفتوح ومكتبته محلية ومزامنة بياناته مجانية، وتخزينه المجاني للملفات 300 ميجابايت، وهو الخيار الأنسب لأغلب الباحثين.
  • Mendeley مجاني بمساحة 2 جيجابايت، ولكن بياناتك في سحابة Elsevier والبرنامج القديم بلا تحديثات.
  • JabRef مفتوح بترخيص MIT ومكتبته ملف BibTeX، وهو مناسب لـ LaTeX وغير مناسب لمن يكتب في Word.
  • بيانات المراجع العربية في Crossref ناقصة في الغالب، والأنماط تحول الأسماء العربية إلى حروف أولى، والحل الأقرب لأدلة الجامعات هو الاسم في حقل واحد مع مراجعة يدوية أخيرة.

وفي المقال التالي بإذن الله سوف ننتقل من المراجع إلى بيئة الكتابة نفسها: Word أم LaTeX أم Quarto للبحث والرسالة، وكيف يدعم كل منها اللغة العربية.

تدريب عملي

  • ثبت Zotero، وأضف خمسة مراجع من رسالتك بالمعرف الرقمي DOI من خلال زر «Add Item by Identifier»، ثم قارن بيانات كل مرجع عربي بالصفحة الأولى من البحث نفسه، وسجل كم حقلاً أكملته يدوياً.
  • افتح دليل كتابة الرسائل في جامعتك، واكتب مثالاً لمرجع عربي بمؤلفين كما يطلبه، ثم حاول أن تصل إليه في Zotero بإحدى الطريقتين في هذا المقال.

سجل التحديثات

أكتوبر 2026: كتابة المقال وتشغيل المختبر على translation-server عند commit رقم 672d4f3b62 ومحرك citeproc-js 2.4.63، بتاريخ 23 أكتوبر 2026.

Could not load content
نشرة عرب رووت | ArabRoot

معرفة تستحق مكاناً في بريدك.

مقالات مختارة وأدوات مفيدة وأفكار لمشروعك القادم، في رسالة واحدة كل أسبوع.

يمكنك إلغاء الاشتراك متى شئت. الخصوصية

تم استلام طلبك. افتح بريدك واضغط رابط التأكيد لإتمام الاشتراك.