| pandoc(1) | راهنمای کاربر Pandoc | pandoc(1) |
نام (NAME)
pandoc - تبدیلکننده عمومی زبانهای نشانهگذاری
خلاصه دستور (SYNOPSIS)
pandoc [options] [input-file]...
توضیحات (DESCRIPTION)
برنامهٔ Pandoc یک کتابخانهٔ Haskell برای تبدیل یک قالب نشانهگذاری به قالبی دیگر، و یک ابزار خط فرمانی است که از این کتابخانه استفاده میکند.
Pandoc میتواند میان قالبهای متعددی از نشانهگذاری و واژهپردازی تبدیل انجام دهد، از جمله و نهمحدود به، گونههای مختلف Markdown، HTML، LaTeX و Word docx. برای فهرست کامل قالبهای ورودی و خروجی، گزینههای --from و --to را در زیر ببینید. همچنین Pandoc میتواند خروجی PDF تولید کند: بخش «ساخت PDF» در زیر را ببینید.
نسخهٔ ارتقایافتهٔ Markdown در Pandoc شامل ساختار دستوری برای جدولها، فهرستهای تعاریف، بلوکهای فراداده، پاورقیها، ارجاعات، عبارات ریاضی و موارد بسیار بیشتری است. بخش «Markdown در Pandoc» را در زیر ببینید.
Pandoc طراحی مدولار دارد: از مجموعهای از خوانندهها (readers) تشکیل شده است که متن را در یک قالب مشخص تجزیه کرده و یک نمایش بومی از سند (یک abstract syntax tree یا AST) تولید میکنند، و مجموعهای از نویسندهها (writers) که این نمایش بومی را به قالب هدف تبدیل میکنند. بنابراین، افزودن یک قالب ورودی یا خروجی تنها مستلزم اضافه کردن یک reader یا writer است. کاربران همچنین میتوانند فیلترهای سفارشی pandoc را برای تغییر دادن AST میانی اجرا کنند.
از آنجا که نمایش میانی یک سند در pandoc نسبت به بسیاری از قالبهایی که میانشان تبدیل انجام میدهد قدرت بیان کمتری دارد، نباید انتظار تبدیل بینقص میان هر قالبی با قالب دیگر را داشت. Pandoc تلاش میکند عناصر ساختاری یک سند را حفظ کند، اما جزئیات قالببندی نظیر اندازهٔ حاشیه را حفظ نمیکند. همچنین برخی از عناصر سند، مانند جدولهای پیچیده، ممکن است در مدل سادهٔ سند در pandoc نگنجند. در حالی که تبدیل از نسخهٔ Markdown در pandoc به تمام قالبها هدفش بینقص بودن است، میتوان انتظار داشت تبدیل از قالبهایی با قدرت بیان بیشتر از Markdown در pandoc همراه با افت داده یا جزئیات (lossy) باشد.
استفاده از pandoc
اگر هیچ input-files مشخص نشده باشد، ورودی از stdin خوانده میشود. خروجی بهطور پیشفرض به stdout هدایت میشود. برای نوشتن خروجی در یک فایل، از گزینهٔ -o/--output استفاده کنید:
-
pandoc -o output.html input.txt
بهطور پیشفرض، pandoc یک قطعهسند (fragment) تولید میکند. برای تولید یک سند کامل و مستقل (برای نمونه، یک فایل معتبر HTML شامل <head> و <body>)، از پرچم -s یا --standalone استفاده کنید:
-
pandoc -s -o output.html input.txt
برای اطلاعات بیشتر در مورد چگونگی تولید اسناد مستقل، بخش «الگوها (Templates)» در زیر را ببینید.
اگر چندین فایل ورودی داده شود، pandoc پیش از تجزیه، همهٔ آنها را (با خطوط خالی میانشان) به هم پیوند میدهد. (از --file-scope برای تجزیهٔ فایلها بهصورت جداگانه استفاده کنید.)
مشخص کردن قالبها
قالب ورودی و خروجی را میتوان با استفاده از گزینههای خط فرمان بهطور صریح مشخص کرد. قالب ورودی را میتوان با گزینهٔ -f/--from و قالب خروجی را با گزینهٔ -t/--to تعیین کرد. بنابراین، برای تبدیل hello.txt از Markdown به LaTeX، میتوانید دستور زیر را وارد کنید:
-
pandoc -f markdown -t latex hello.txt
برای تبدیل hello.html از HTML به Markdown:
-
pandoc -f html -t markdown hello.html
قالبهای ورودی و خروجی پشتیبانیشده در زیر در بخش «گزینهها» فهرست شدهاند (برای قالبهای ورودی به -f و برای قالبهای خروجی به -t مراجعه کنید). همچنین میتوانید از pandoc --list-input-formats و pandoc --list-output-formats برای چاپ فهرست قالبهای پشتیبانیشده استفاده کنید.
اگر قالب ورودی یا خروجی بهطور صریح مشخص نشود، pandoc تلاش خواهد کرد آن را از روی پسوند نام فایلها حدس بزند. بنابراین، برای نمونه،
-
pandoc -o hello.tex hello.txt
فایل hello.txt را از Markdown به LaTeX تبدیل میکند. اگر هیچ فایل خروجیای مشخص نشود (بهطوری که خروجی به stdout برود)، یا اگر پسوند فایل خروجی ناشناخته باشد، قالب خروجی بهطور پیشفرض HTML خواهد بود. اگر هیچ فایل ورودیای مشخص نشود (بهطوری که ورودی از stdin بیاید)، یا اگر پسوندهای فایلهای ورودی ناشناخته باشند، قالب ورودی Markdown در نظر گرفته خواهد شد.
کدگذاری نویسهها
برنامهٔ Pandoc از کدگذاری نویسهای UTF-8 برای هر دو ورودی و خروجی استفاده میکند. اگر کدگذاری نویسهای محلی شما UTF-8 نیست، باید ورودی و خروجی را از طریق iconv لولهکشی کنید:
-
iconv -t utf-8 input.txt | pandoc | iconv -f utf-8
توجه داشته باشید که در برخی قالبهای خروجی (مانند HTML، LaTeX، ConTeXt، RTF، OPML، DocBook، و Texinfo)، اطلاعات مربوط به کدگذاری نویسهها در سرآیند سند گنجانده میشود که این اطلاعات تنها در صورت استفاده از گزینهٔ -s/--standalone قرار خواهند گرفت.
ساخت PDF
برای تولید یک PDF، فایلی با پسوند .pdf را به عنوان خروجی مشخص کنید:
-
pandoc test.txt -o test.pdf
بهطور پیشفرض، pandoc از LaTeX برای ایجاد PDF استفاده میکند که مستلزم نصب بودن یک موتور LaTeX است (به --pdf-engine در زیر مراجعه کنید). از سوی دیگر، pandoc میتواند از ConTeXt، roff ms یا HTML به عنوان یک قالب میانی استفاده کند. برای این کار، مانند قبل یک فایل خروجی با پسوند .pdf مشخص کنید، اما گزینهٔ --pdf-engine یا -t context، -t html، یا -t ms را به خط فرمان اضافه کنید. ابزاری که برای تولید PDF از قالب میانی استفاده میشود را میتوان با استفاده از --pdf-engine تعیین کرد.
بسته به قالب میانیِ استفادهشده، میتوانید سبک PDF را با متغیرها کنترل کنید: بخشهای متغیرها برای LaTeX، متغیرها برای ConTeXt، متغیرها برای wkhtmltopdf، و متغیرها برای ms را ببینید. هنگامی که HTML به عنوان قالب میانی استفاده میشود، میتوان خروجی را با استفاده از --css سبکدهی کرد.
برای اشکالزدایی در فرایند ساخت PDF، بررسی نمایش میانی میتواند مفید باشد: به جای -o test.pdf، برای نمونه از -s -o test.tex برای خروجی دادن LaTeX تولیدشده استفاده کنید. سپس میتوانید آن را با pdflatex test.tex بیازمایید.
هنگام استفاده از LaTeX، بستههای زیر باید در دسترس باشند (آنها در تمامی نسخههای اخیر TeX Live گنجانده شدهاند): amsfonts، amsmath، lm، unicode-math، iftex، listings (اگر از گزینهٔ --listings استفاده شود)، fancyvrb، longtable، caption، booktabs، multirow (اگر سند حاوی جدولی با سلولهایی باشد که چندین سطر را در بر میگیرند)، graphicx (اگر سند حاوی تصاویر باشد)، bookmark، xcolor، soul، geometry (با تنظیم متغیر geometry)، setspace (با linestretch)، و babel (با lang). اگر CJKmainfont تنظیم شده باشد، در صورت استفاده از xelatex به xeCJK نیاز است؛ در غیر این صورت اگر از lualatex استفاده شود به luatexja نیاز خواهد بود. اگر کدها در طرحی برجستهسازی شوند که از پسزمینهٔ رنگی استفاده میکند، بستهٔ framed مورد نیاز است. استفاده از xelatex یا lualatex به عنوان موتور PDF، نیازمند fontspec است. lualatex از selnolig و lua-ul استفاده میکند. xelatex از bidi (با تنظیم متغیر dir) استفاده میکند. اگر متغیر mathspec تنظیم شده باشد، xelatex به جای unicode-math از mathspec استفاده خواهد کرد. اگر متغیر یا فیلد فرادادهٔ csquotes روی یک مقدار درست (true) تنظیم شده باشد، بستهٔ csquotes برای تایپوگرافی استفاده خواهد شد. بستههای natbib، biblatex، bibtex، و biber میتوانند بهصورت اختیاری برای رندر کردن ارجاعات استفاده شوند. اگر ریاضیات با \cancel، \bcancel، یا \xcancel استفاده شده باشد، بستهٔ cancel مورد نیاز است. بستههای زیر در صورت موجود بودن، برای بهبود کیفیت خروجی استفاده خواهند شد، اما وجود آنها توسط pandoc الزامی نیست: upquote (برای نقلقولهای مستقیم در محیطهای verbatim)، microtype (برای تنظیم بهتر فاصلهگذاری)، parskip (برای فواصل بهتر میانپاراگرافی)، xurl (برای شکست خطوط بهتر در نشانیهای اینترنتی)، و footnotehyper یا footnote (برای امکانپذیر کردن پاورقیها در جدولها)..SS خواندن از وب (Reading from the Web) بهجای یک فایل ورودی، میتوان یک URI مطلق ارائه داد. در این حالت pandoc محتوا را با استفاده از HTTP واکشی خواهد کرد:
-
pandoc -f html -t markdown https://www.fsf.org
هنگام درخواست سند از یک URL، ارسال یک رشته سفارشی User-Agent یا دیگر سرآیندها امکانپذیر است:
-
pandoc -f html -t markdown --request-header User-Agent:"Mozilla/5.0" \ https://www.fsf.org
گزینهها (OPTIONS)
گزینههای عمومی (General options)
- -f FORMAT, -r FORMAT, --from=FORMAT, --read=FORMAT
- قالب ورودی را مشخص میکند. FORMAT میتواند یکی از موارد زیر باشد:
- asciidoc (نشانهگذاری AsciiDoc)
- bibtex (کتابشناسی BibTeX)
- biblatex (کتابشناسی BibLaTeX)
- bits (BITS XML، نام مستعار برای jats)
- commonmark (مارکداون CommonMark)
- commonmark_x (مارکداون CommonMark بههمراه افزونهها)
- creole (Creole 1.0)
- csljson (کتابشناسی CSL JSON)
- csv (جدول CSV)
- tsv (جدول TSV)
- djot (نشانهگذاری Djot)
- docbook (DocBook)
- docx (Word docx)
- dokuwiki (نشانهگذاری DokuWiki)
- endnotexml (کتابشناسی EndNote XML)
- epub (EPUB)
- fb2 (کتاب الکترونیکی FictionBook2)
- gfm (مارکداون اختصاصی گیتهاب - GitHub-Flavored Markdown)، یا نگارش منسوخ و با دقت کمتر markdown_github؛ تنها زمانی از markdown_github استفاده کنید که به افزونههایی نیاز دارید که در gfm پشتیبانی نمیشوند.
- haddock (نشانهگذاری Haddock)
- html (HTML)
- ipynb (دفترچه Jupyter)
- jats (JATS XML)
- jira (نشانهگذاری ویکی Jira/Confluence)
- json (نسخه JSON از AST بومی)
- latex (LaTeX)
- markdown (مارکداون Pandoc)
- markdown_mmd (MultiMarkdown)
- markdown_phpextra (PHP Markdown Extra)
- markdown_strict (مارکداون اصلیِ بدون افزونه)
- mediawiki (نشانهگذاری MediaWiki)
- man (roff man)
- mdoc (نشانهگذاری صفحه راهنمای mdoc)
- muse (Muse)
- native (Haskell بومی)
- odt (سند متنی OpenDocument)
- opml (OPML)
- org (حالت Emacs Org)
- pod (Plain Old Documentation متعلق به Perl)
- pptx (PowerPoint)
- ris (کتابشناسی RIS)
- rtf (Rich Text Format)
- rst (reStructuredText)
- t2t (txt2tags)
- textile (Textile)
- tikiwiki (نشانهگذاری TikiWiki)
- twiki (نشانهگذاری TWiki)
- typst (typst)
- vimwiki (Vimwiki)
- xlsx (صفحهگسترده Excel)
- xml (نسخه XML از AST بومی)
- مسیر یک خواننده سفارشی Lua؛ بخش «خوانندهها و نویسندههای سفارشی» در ادامه را ببینید
افزونهها میتوانند با افزودن +EXTENSION یا -EXTENSION به انتهای نام قالب، بهصورت جداگانه فعال یا غیرفعال شوند. برای فهرستی از افزونهها و نامهای آنها، بخش «افزونهها» در ادامه را ببینید. همچنین گزینههای --list-input-formats و --list-extensions در ادامه را بررسی کنید.
- -t FORMAT, -w FORMAT, --to=FORMAT, --write=FORMAT
- قالب خروجی را مشخص میکند. FORMAT میتواند یکی از موارد زیر باشد:
- ansi (متن حاوی کدهای گریز ANSI، جهت نمایش در ترمینال)
- asciidoc (نگارش نوین AsciiDoc بر اساس تفسیر Asciidoctor)
- asciidoc_legacy (AsciiDoc بر اساس تفسیر asciidoc-py).
- asciidoctor (مترادف منسوخشده برای asciidoc)
- bbcode BBCode
- bbcode_fluxbb BBCode (FluxBB)
- bbcode_phpbb BBCode (phpBB)
- bbcode_steam BBCode (Steam)
- bbcode_hubzilla BBCode (Hubzilla)
- bbcode_xenforo BBCode (xenForo)
- beamer (اسلایدشوی نمایشی LaTeX beamer)
- bibtex (کتابشناسی BibTeX)
- biblatex (کتابشناسی BibLaTeX)
- chunkedhtml (آرشیو zip حاوی چندین فایل HTML پیوندیافته)
- commonmark (مارکداون CommonMark)
- commonmark_x (مارکداون CommonMark بههمراه افزونهها)
- context (ConTeXt)
- csljson (کتابشناسی CSL JSON)
- djot (نشانهگذاری Djot)
- docbook یا docbook4 (DocBook 4)
- docbook5 (DocBook 5)
- docx (Word docx)
- dokuwiki (نشانهگذاری DokuWiki)
- epub یا epub3 (کتاب EPUB v3)
- epub2 (EPUB v2)
- fb2 (کتاب الکترونیکی FictionBook2)
- gfm (مارکداون اختصاصی گیتهاب - GitHub-Flavored Markdown)، یا نگارش منسوخ و با دقت کمتر markdown_github؛ تنها زمانی از markdown_github استفاده کنید که به افزونههایی نیاز دارید که در gfm پشتیبانی نمیشوند.
- haddock (نشانهگذاری Haddock)
- html یا html5 (HTML، یعنی نشانهگذاری چندزبانه HTML5/XHTML).IP • 2 html4 (XHTML 1.0 Transitional)
- icml (InDesign ICML)
- ipynb (دفترچه یادداشت Jupyter)
- jats_archiving (JATS XML، مجموعه برچسبهای بایگانی و تبادل)
- jats_articleauthoring (JATS XML، مجموعه برچسبهای نگارش مقاله)
- jats_publishing (JATS XML، مجموعه برچسبهای انتشار نشریه)
- jats (نام مستعار برای jats_archiving)
- jira (نشانهگذاری ویکی Jira/Confluence)
- json (نسخه JSON از AST بومی)
- latex (LaTeX)
- man (roff man)
- markdown (مارکداون pandoc)
- markdown_mmd (MultiMarkdown)
- markdown_phpextra (PHP Markdown Extra)
- markdown_strict (مارکداون اولیه و بدون افزونه)
- markua (Markua)
- mediawiki (نشانهگذاری MediaWiki)
- ms (roff ms)
- muse (Muse)
- native (Haskell بومی)
- odt (سند متنی OpenDocument)
- opml (OPML)
- opendocument (OpenDocument XML)
- org (حالت Emacs Org)
- pdf (PDF)
- plain (متن ساده)
- pptx (اسلایدشوی PowerPoint)
- rst (reStructuredText)
- rtf (Rich Text Format)
- texinfo (GNU Texinfo)
- textile (Textile)
- t2t (txt2tags)
- slideous (اسلایدشوی HTML و JavaScript موسوم به Slideous)
- slidy (اسلایدشوی HTML و JavaScript موسوم به Slidy)
- dzslides (اسلایدشوی HTML5 + JavaScript موسوم به DZSlides)
- revealjs (اسلایدشوی HTML5 + JavaScript موسوم به reveal.js)
- s5 (اسلایدشوی HTML و JavaScript موسوم به S5)
- tei (TEI Simple)
- typst (typst)
- vimdoc (Vimdoc)
- xml (نسخه XML از AST بومی)
- xwiki (نشانهگذاری XWiki)
- zimwiki (نشانهگذاری ZimWiki)
- مسیر یک writer سفارشی Lua؛ بخش «Custom readers and writers» در زیر را ببینید
توجه داشته باشید که خروجیهای odt، docx، epub و pdf به stdout هدایت نخواهند شد مگر اینکه با -o - اجبار شوند.
افزونهها میتوانند با پیوست کردن +EXTENSION یا -EXTENSION به نام قالب، بهصورت جداگانه فعال یا غیرفعال شوند. برای فهرستی از افزونهها و نامهای آنها، بخش Extensions در زیر را ببینید. همچنین بخشهای --list-output-formats و --list-extensions در زیر را ببینید.
- -o FILE, --output=FILE
- نوشتن خروجی در FILE بهجای stdout. اگر FILE برابر با - باشد، خروجی به stdout ارسال خواهد شد، حتی اگر یک قالب غیرمتنی (docx، odt، epub2، epub3) مشخص شده باشد. اگر قالب خروجی chunkedhtml باشد و FILE پسوند نداشته باشد، آنگاه pandoc بهجای تولید یک فایل .zip، دایرکتوری FILE را ایجاد کرده و محتوای بایگانی zip را در آنجا استخراج میکند (مگر اینکه FILE از قبل وجود داشته باشد، که در این حالت یک خطا رخ خواهد داد).
- --data-dir=DIRECTORY
- مشخص کردن دایرکتوری دادههای کاربر برای جستجوی فایلهای داده pandoc. اگر این گزینه مشخص نشود، دایرکتوری پیشفرض دادههای کاربر استفاده خواهد شد. در سیستمهای *nix و macOS این مسیر زیردایرکتوری pandoc از دایرکتوری داده XDG خواهد بود (بهطور پیشفرض، $HOME/.local/share، که با تنظیم متغیر محیطی XDG_DATA_HOME قابل لغو است). اگر آن دایرکتوری وجود نداشته باشد و $HOME/.pandoc موجود باشد، از آن استفاده خواهد شد (برای سازگاری با نسخههای پیشین). در ویندوز دایرکتوری پیشفرض دادههای کاربر %APPDATA%\pandoc است. شما میتوانید دایرکتوری پیشفرض دادههای کاربر در سیستم خود را با نگاه کردن به خروجی دستور pandoc --version پیدا کنید. فایلهای داده قرار گرفته در این دایرکتوری (برای نمونه، reference.odt، reference.docx، epub.css، templates) بر مقادیر پیشفرض عادی pandoc تقدم خواهند داشت. (توجه داشته باشید که دایرکتوری دادههای کاربر توسط pandoc ایجاد نمیشود، بنابراین در صورت تمایل به استفاده از آن، باید خودتان آن را بسازید.)
- -d FILE, --defaults=FILE
- تعیین مجموعهای از تنظیمات پیشفرض گزینهها. FILE یک فایل YAML یا JSON است که فیلدهای آن متناظر با تنظیمات گزینههای خط فرمان هستند. تمامی گزینههای مربوط به تبدیل سند، از جمله فایلهای ورودی و خروجی، را میتوان با استفاده از یک فایل تنظیمات پیشفرض تعیین کرد. برای یافتن این فایل، ابتدا دایرکتوری جاری و سپس زیردایرکتوری defaults از دایرکتوری دادههای کاربر (ببینید --data-dir) جستجو خواهد شد. اگر FILE فاقد پسوند باشد و فایل پیدا نشود، pandoc افزودن پسوند .yaml را نیز امتحان خواهد کرد. برای اطلاعات بیشتر درباره قالب این فایل، بخش Defaults files را ببینید. تنظیمات فایل پیشفرض ممکن است توسط گزینههای بعدی در خط فرمان بازنویسی یا گسترش یابند.
- --bash-completion
- تولید یک اسکریپت تکمیل خودکار bash. برای فعالسازی تکمیل خودکار bash برای pandoc، این خط را به .bashrc خود بیفزایید:
-
eval "$(pandoc --bash-completion)"
- --sandbox[=true|false]
- اجرای pandoc در یک جعبهشنی (sandbox)، جهت محدود کردن عملیات IO در readerها و writerها به خواندن صرف فایلهای مشخصشده در خط فرمان. توجه داشته باشید که این گزینه عملیات IO توسط فیلترها یا در حین تولید اسناد PDF را محدود نمیکند. اما این ویژگی امنیتی را در برابر خطراتی همچون افشای محتوای فایلها از طریق دستورالعملهای include فراهم میسازد. هر کسی که pandoc را بر روی ورودیهای نامعتمد کاربران اجرا میکند باید از این گزینه استفاده نماید.
نکته: برخی از readerها و writerها (مانند docx) نیازمند دسترسی به فایلهای داده هستند. اگر این فایلها روی سیستمفایل ذخیره شده باشند، pandoc هنگام اجرا در حالت --sandbox قادر به یافتن آنها نخواهد بود و خطایی صادر میکند. برای این منظور، پیشنهاد میکنیم از باینری pandoc که با گزینه embed_data_files کامپایل شده است استفاده کنید؛ این گزینه سبب میشود تا فایلهای داده بهجای ذخیره در سیستمفایل، درون خود فایل باینری گنجانده شوند.
- --verbose
- ارائه خروجی اشکالزدایی پرگو (مشروح).
- --quiet
- فرونشاندن و جلوگیری از نمایش پیامهای هشدار.
- --fail-if-warnings[=true|false]
- خروج با وضعیت خطا در صورت وجود هرگونه هشدار.
- --log=FILE
- نوشتن پیامهای گزارش در قالب ماشینخوان JSON در FILE. تمام پیامهای بالاتر از سطح DEBUG، فارغ از تنظیمات پرگویی (--verbose، --quiet)، نوشته خواهند شد.
- --list-input-formats
- فهرست کردن قالبهای ورودی پشتیبانیشده، هر کدام در یک سطر.
- --list-output-formats
- فهرست کردن قالبهای خروجی پشتیبانیشده، هر کدام در یک سطر.
- --list-extensions[=FORMAT]
- فهرست کردن افزونههای پشتیبانیشده برای FORMAT، هر کدام در یک سطر، با پیشوند + یا - که نشاندهنده فعال بودن یا نبودن آن بهطور پیشفرض در FORMAT است. اگر FORMAT مشخص نشود، پیشفرضهای مارکداون pandoc نمایش داده میشوند..TP --list-highlight-languages فهرست کردن زبانهای پشتیبانیشده برای برجستهسازی نحو، یک مورد در هر خط.
- --list-highlight-styles
- فهرست کردن شیوههای پشتیبانیشده برای برجستهسازی نحو، یک مورد در هر خط. --syntax-highlighting را ببینید.
- -v, --version
- چاپ نسخه.
- -h, --help
- نمایش پیام راهنمای استفاده.
گزینههای خواننده (Reader options)
- --shift-heading-level-by=NUMBER
- تغییر سطح سربرگها به اندازه یک عدد صحیح مثبت یا منفی. به عنوان مثال، با --shift-heading-level-by=-1، سربرگهای سطح ۲ به سربرگهای سطح ۱، و سربرگهای سطح ۳ به سربرگهای سطح ۲ تبدیل میشوند. سطح سربرگها نمیتواند کمتر از ۱ باشد، بنابراین سربرگی که به زیر سطح ۱ منتقل شود، به یک پاراگراف عادی تبدیل خواهد شد. استثنا: با تغییر به میزان -N، یک سربرگ در سطح N در ابتدای سند جایگزین عنوانِ فراداده (metadata title) میشود. گزینه --shift-heading-level-by=-1 هنگام تبدیل اسناد HTML یا Markdown که از یک سربرگ اولیه سطح ۱ برای عنوان سند و سربرگهای سطح ۲ به بالا برای بخشها استفاده میکنند، انتخاب مناسبی است. گزینه --shift-heading-level-by=1 ممکن است انتخاب مناسبی برای تبدیل اسناد Markdown باشد که از سربرگهای سطح ۱ برای بخشها به HTML استفاده میکنند، چرا که pandoc از یک سربرگ سطح ۱ برای نمایش عنوان سند استفاده میکند.
- --base-header-level=NUMBER
- منسوخ شده. به جای آن از --shift-heading-level-by=X استفاده کنید، که در آن X = NUMBER - 1 است. تعیین سطح پایه برای سربرگها (پیشفرض ۱ است).
- --indented-code-classes=CLASSES
- مشخص کردن کلاسهای مورد استفاده برای بلوکهای کد دارای تورفتگی—برای نمونه، perl,numberLines یا haskell. کلاسهای چندگانه را میتوان با فاصله یا ویرگول انگلیسی از یکدیگر جدا کرد.
- --default-image-extension=EXTENSION
- تعیین یک پسوند پیشفرض برای استفاده در مواردی که مسیرها یا URLهای تصاویر فاقد پسوند هستند. این امکان به شما اجازه میدهد تا از یک منبع یکسان برای قالبهایی که نیازمند انواع متفاوتی از تصاویر هستند استفاده کنید. در حال حاضر این گزینه فقط بر خوانندههای Markdown و LaTeX اثر میگذارد.
- --file-scope[=true|false]
- تجزیه هر فایل به صورت مجزا پیش از ترکیب آنها برای اسناد چندفایلی. این قابلیت به پاورقیها در فایلهای مختلف که دارای شناسههای یکسانی هستند اجازه میدهد مطابق انتظار کار کنند. در صورت فعال بودن این گزینه، پاورقیها و پیوندها بین فایلهای مختلف کار نخواهند کرد. خواندن فایلهای باینری (docx، odt، epub) مستلزم استفاده از --file-scope است.
اگر دو یا چند فایل با استفاده از --file-scope پردازش شوند، پیشوندهایی بر پایه نام فایلها به شناسهها اضافه میشود تا ابهامزدایی شوند، و پیوندهای داخلی نیز بر همین اساس تنظیم خواهند شد. برای نمونه، سربرگی با شناسه foo در subdir/file1.txt، شناسه آن به subdir__file1.txt__foo تغییر خواهد کرد.
- -F PROGRAM, --filter=PROGRAM
- مشخص کردن یک فایل اجرایی برای استفاده به عنوان فیلتر جهت تبدیل AST در pandoc پس از تجزیه ورودی و پیش از نگارش خروجی. برنامه اجرایی باید JSON را از stdin خوانده و JSON را در stdout بنویسد. قالببندی JSON باید همانند ورودی و خروجی JSON خود pandoc باشد. نام قالب خروجی به عنوان اولین آرگومان به فیلتر ارسال خواهد شد. بنابراین،
-
pandoc --filter ./caps.py -t latex
معادل است با:
-
pandoc -t json | ./caps.py latex | pandoc -f json -t latex
شکل دوم ممکن است برای اشکالزدایی فیلترها مفید باشد.
فیلترها را میتوان به هر زبانی نوشت. ماژول Text.Pandoc.JSON تابع toJSONFilter را برای تسهیل نگارش فیلترها در Haskell ارائه میدهد. کسانی که ترجیح میدهند فیلترها را در python بنویسند میتوانند از ماژول pandocfilters، قابل نصب از طریق PyPI، استفاده کنند. همچنین کتابخانههای فیلتر pandoc در PHP، perl و JavaScript/node.js وجود دارند.
به ترتیب اولویت، pandoc فیلترها را در مکانهای زیر جستجو میکند:
- 1.
- یک مسیر کامل یا نسبی مشخصشده (اجرایی یا غیر اجرایی)،
- 2.
- مسیر $DATADIR/filters (اجرایی یا غیر اجرایی) که در آن $DATADIR دایرکتوری دادههای کاربر است (به --data-dir در بالا مراجعه کنید)،
- 3.
- مسیر $PATH (فقط فایلهای اجرایی).
فیلترها، فیلترهای Lua و پردازش citeproc به ترتیبی که در خط فرمان مشخص شدهاند، اعمال میشوند.
- -L SCRIPT, --lua-filter=SCRIPT
- تبدیل سند به شیوهای مشابه فیلترهای JSON (به --filter مراجعه کنید)، اما با استفاده از سامانه فیلترسازی توکار Lua در pandoc. انتظار میرود اسکریپت Lua ارائهشده فهرستی از فیلترهای Lua را برگرداند که به ترتیب اعمال خواهند شد. هر فیلتر Lua باید شامل توابع تبدیلکننده عناصر باشد که با نام عنصر AST مورد نظری که تابع فیلتر باید روی آن اعمال شود نمایه شدهاند.
ماژول Lua با نام pandoc توابع کمکی را برای ایجاد عناصر فراهم میکند. این ماژول همواره در محیط Lua اسکریپت بارگذاری میشود.
برای جزئیات بیشتر به مستندات فیلترهای Lua مراجعه کنید.
به ترتیب اولویت، pandoc فیلترهای Lua را در مکانهای زیر جستجو میکند:
- 1.
- یک مسیر کامل یا نسبی مشخصشده،
- 2.
- مسیر $DATADIR/filters که در آن $DATADIR دایرکتوری دادههای کاربر است (به --data-dir در بالا مراجعه کنید).
فیلترها، فیلترهای Lua و پردازش citeproc به ترتیبی که در خط فرمان مشخص شدهاند اعمال میشوند.
- -M KEY[=VAL], --metadata=KEY[:VAL]
- تنظیم فیلد فراداده KEY به مقدار VAL. مقداری که در خط فرمان مشخص شود، بر مقداری که در سند با استفاده از بلوکهای فراداده YAML مشخص شده اولویت دارد. مقادیر به عنوان مقادیر بولی یا رشتهای YAML تجزیه خواهند شد. اگر مقداری مشخص نشود، با مقدار به عنوان Boolean true رفتار میشود. همانند --variable، گزینه --metadata باعث تنظیم متغیرهای الگو میشود. اما بر خلاف --variable، گزینه --metadata بر فرادادههای سند اصلی تأثیر میگذارد (که از طریق فیلترها قابل دسترسی است و ممکن است در برخی قالبهای خروجی چاپ شود) و هنگام درج مقادیر فراداده در الگو، کاراکترهای آنها گریز داده میشوند.
- --metadata-file=FILE
- خواندن فراداده از فایل YAML (یا JSON) دادهشده. این گزینه را میتوان برای تمام قالبهای ورودی استفاده کرد، اما مقادیر اسکالر رشتهای در فایل فراداده همواره به صورت Markdown تجزیه خواهند شد. (اگر قالب ورودی Markdown یا یکی از گونههای آن باشد، از همان گونه برای تجزیه فایل فراداده استفاده میشود؛ در صورتی که قالبی غیر از Markdown باشد، افزونههای پیشفرض Markdown در pandoc به کار گرفته خواهند شد.) این گزینه را میتوان به دفعات برای گنجاندن چندین فایل فراداده به کار برد؛ مقادیر موجود در فایلهایی که دیرتر در خط فرمان مشخص شدهاند بر مقادیر فایلهای قبلی اولویت خواهند داشت. مقادیر فراداده مشخصشده درون سند یا با استفاده از -M، مقادیر تعیینشده با این گزینه را بازنویسی میکنند. فایل ابتدا در دایرکتوری کاری و سپس در زیردایرکتوری metadata از دایرکتوری دادههای کاربر جستجو خواهد شد (به --data-dir مراجعه کنید).
- -p, --preserve-tabs[=true|false]
- حفظ تبها (tabs) به جای تبدیل آنها به فاصلهها (spaces). (به صورت پیشفرض، pandoc تبها را پیش از تجزیه ورودی به فاصله تبدیل میکند.) توجه داشته باشید که این گزینه فقط بر تبهای موجود در محدودههای کد لفظی (literal code spans) و بلوکهای کد اثر میگذارد. با تبها در متن معمولی همواره مانند فاصله برخورد میشود.
- --tab-stop=NUMBER
- تعیین تعداد فاصلهها برای هر تب (پیشفرض ۴ است).
- --track-changes=accept|reject|all
- مشخص میکند با موارد اضافهشده، حذفشده و دیدگاههای تولیدشده توسط ویژگی “Track Changes” در MS Word چه برخوردی صورت گیرد. مقدار accept (پیشفرض) تمام موارد اضافهشده و حذفشده را پردازش میکند. مقدار reject آنها را نادیده میگیرد. هر دو مقدار accept و reject دیدگاهها را نادیده میگیرند. مقدار all تمام موارد درج، حذف و دیدگاهها را که به ترتیب در spanهایی با کلاسهای insertion، deletion، comment-start و comment-end قرار گرفتهاند، شامل میشود. نویسنده و زمان اعمال تغییرات نیز گنجانده میشود. گزینه all برای اسکریپتنویسی مفید است: به عنوان مثال، پذیرش تغییرات تنها از یک بازبین خاص، یا قبل از یک تاریخ معین. اگر یک پاراگراف درج یا حذف شود، track-changes=all یک span با کلاس paragraph-insertion/paragraph-deletion پیش از انتهای پاراگراف متأثر تولید میکند. این گزینه فقط بر خواننده docx اثر میگذارد.
- --extract-media=DIR|FILE.zip
- استخراج تصاویر و رسانههای دیگر موجود در سند مبدأ یا پیوند داده شده از آن به مسیر DIR، در صورت لزوم ایجاد این مسیر، و تصحیح مراجع تصاویر در سند تا به فایلهای استخراجشده اشاره کنند. رسانهها بر حسب نیاز بارگیری میشوند، از فایلسیستم خوانده میشوند، یا از یک کانتینر باینری (مانند docx) استخراج میگردند. در صورتی که مسیرهای اصلی فایل، نسبی بوده و فاقد .. باشند، از همان مسیرها استفاده میشود. در غیر این صورت، نام فایلها بر پایه درهمساز SHA1 از محتوای آنها ساخته میشود. اگر مسیر دادهشده به .zip ختم شود، pandoc بهجای ایجاد یک دایرکتوری، یک بایگانی zip حاوی فایلهای چندرسانهای ایجاد خواهد کرد.
- --abbreviations=FILE
- یک فایل اختصارات سفارشی را مشخص میکند، بهطوری که در هر خط یک اختصار قرار دارد. اگر این گزینه مشخص نشود، pandoc فایل دادهٔ abbreviations را از دایرکتوری دادههای کاربر میخواند یا به مقدار پیشفرض سیستم بازمیگردد. برای مشاهدهٔ پیشفرض سیستم، از pandoc --print-default-data-file=abbreviations استفاده کنید. تنها کاربرد این فهرست برای pandoc در خوانندهٔ Markdown است. رشتههای موجود در این فهرست با یک فاصلهٔ نشکستنی (nonbreaking space) دنبال میشوند و نقطه در قالبهایی مانند LaTeX فاصلهٔ پایان جمله ایجاد نخواهد کرد. این رشتهها نباید حاوی فاصله باشند.
- --typst-input=KEY[=VAL]
- مقدار پارامتری را تنظیم میکند که مانند --input در خط فرمان typst، در sys.inputs در دسترس تجزیهکنندهٔ typst قرار خواهد گرفت. برای جداسازی KEY از VAL میتوان از : یا = استفاده کرد. مقادیری که حاوی فاصله هستند باید داخل گیومه قرار گیرند.
- --trace[=true|false]
- خروجی عیبیابی مربوط به ردگیری پیشرفت تجزیهکننده را در stderr چاپ میکند. این گزینه برای استفادهٔ توسعهدهندگان جهت تشخیص مشکلات کارایی در نظر گرفته شده است.
گزینههای عمومی نویسنده (General writer options)
- -s, --standalone
- تولید خروجی با سربرگ و پانویس مناسب (بهعنوان مثال، یک فایل مستقل HTML، LaTeX، TEI یا RTF، نه فقط یک قطعه از سند). این گزینه برای خروجیهای pdf، epub، epub3، fb2، docx و odt بهطور خودکار تنظیم میشود. برای خروجی native، این گزینه باعث گنجانده شدن متاداده میشود؛ در غیر این صورت، متاداده حذف میگردد.
- --template=FILE|URL
- استفاده از فایل مشخصشده بهعنوان قالب سفارشی برای سند تولیدشده. این گزینه متضمن --standalone است. برای شرح نحو قالب، بخش «قالبها» (Templates) را در ادامه ببینید. اگر قالب یافت نشود، pandoc آن را در زیردایرکتوری templates دایرکتوری دادههای کاربر جستجو میکند (به --data-dir مراجعه کنید). اگر پسوندی مشخص نشده باشد و قالبی بدون پسوند پیدا نشود، pandoc بهدنبال قالبی با پسوند متناظر با نویسنده (writer) میگردد، بهطوری که --template=special برای خروجی HTML بهدنبال special.html میگردد. اگر از این گزینه استفاده نشود، یک قالب پیشفرض متناسب با قالب خروجی استفاده خواهد شد (به -D/--print-default-template مراجعه کنید).
- -V KEY[=VAL], --variable=KEY[=VAL]
- هنگام پردازش سند در حالت مستقل (standalone)، متغیر قالب KEY را با مقدار رشتهای VAL تنظیم میکند. برای جداسازی KEY از VAL میتوان از : یا = استفاده کرد. اگر هیچ VALای مشخص نشود، به کلید مقدار true داده میشود. مقادیر ساختاریافته (فهرستها، نگاشتها) با استفاده از این گزینه قابل انتساب نیستند، اما میتوان آنها را در بخش variables یک فایل مقادیر پیشفرض یا با استفاده از گزینهٔ --variable-json مقداردهی کرد. اگر متغیر از قبل دارای مقدار list باشد، این مقدار به فهرست اضافه خواهد شد. اگر متغیر نوع مقدار دیگری داشته باشد، به فهرستی شامل مقدار قبلی و مقدار جدید تبدیل میشود. بهعنوان مثال، -V author=Joe -V author=Sue باعث میشود author حاوی فهرستی از رشتهها باشد: Joe و Sue.
- --variable-json=KEY[=JSON]
- متغیر قالب KEY را به مقدار مشخصشده توسط یک رشتهٔ JSON تنظیم میکند (این مقدار میتواند بولین، رشته، فهرست یا یک نگاشت باشد؛ با عدد مانند یک رشته برخورد خواهد شد). بهعنوان مثال، --variable-json foo=false به foo مقدار بولی false میدهد، در حالی که --variable-json foo='"false"' مقدار رشتهای "false" را به آن میدهد. برای جداسازی KEY از VAL میتوان از : یا = استفاده کرد. اگر متغیر از قبل مقداری داشته باشد، آن مقدار جایگزین خواهد شد.
- -D FORMAT, --print-default-template=FORMAT
- قالب پیشفرض سیستم را برای یک FORMAT خروجی چاپ میکند. (برای فهرستی از FORMATهای ممکن به -t مراجعه کنید.) قالبهای موجود در دایرکتوری دادههای کاربر نادیده گرفته میشوند. این گزینه میتواند همراه با -o/--output برای تغییر مسیر خروجی به یک فایل استفاده شود، اما -o/--output باید قبل از --print-default-template در خط فرمان بیاید.
توجه داشته باشید که برخی از قالبهای پیشفرض از قطعهها (partials) استفاده میکنند، مانند styles.html. برای چاپ این قطعهها، از --print-default-data-file استفاده کنید: بهعنوان مثال، --print-default-data-file=templates/styles.html.
- --print-default-data-file=FILE
- یک فایل دادهٔ پیشفرض سیستم را چاپ میکند. فایلهای موجود در دایرکتوری دادههای کاربر نادیده گرفته میشوند. این گزینه میتواند همراه با -o/--output برای تغییر مسیر خروجی به یک فایل استفاده شود، اما -o/--output باید قبل از --print-default-data-file در خط فرمان بیاید.
- --eol=crlf|lf|native
- پایان خطوط را بهصورت دستی مشخص میکند: crlf (ویندوز)، lf (مکاواس/لینوکس/یونیکس)، یا native (پایان خطوط مناسب با سیستمعاملی که pandoc روی آن اجرا میشود). پیشفرض native است.
- --dpi=NUMBER
- مقدار پیشفرض dpi (نقطه در اینچ) را برای تبدیل از پیکسل به اینچ/سانتیمتر و برعکس مشخص میکند. (از نظر فنی، اصطلاح صحیحتر ppi است: پیکسل در اینچ). پیشفرض 96dpi است. هنگامی که تصویرها در درون خود حاوی اطلاعات مربوط به dpi باشند، بهجای مقدار پیشفرض مشخصشده توسط این گزینه، از همان مقدار کدگذاریشده استفاده میشود.
- --wrap=auto|none|preserve
- نحوهٔ شکستن سطرها (wrap) را در خروجی تعیین میکند (در کد منبع، نه در نسخهٔ ارائهشده نهایی). با مقدار auto (پیشفرض)، pandoc تلاش میکند تا خطوط را بر اساس عرض ستون تعیینشده توسط --columns بپیچد (پیشفرض 72). با مقدار none، pandoc اصلاً خطوط را نمیشکند. با مقدار preserve، pandoc سعی میکند شکستگی سطرهای سند مبدأ را حفظ کند (یعنی هر جا که در منبع خطوط جدید غیرمعنایی وجود داشته باشد، در خروجی نیز خطوط جدید غیرمعنایی وجود خواهد داشت). در خروجی ipynb، این گزینه بر شکستن خطوط محتوای سلولهای Markdown تأثیر میگذارد.
- --columns=NUMBER
- طول خطوط را بر حسب نویسهها مشخص میکند. این گزینه بر شکستن متن در کد منبع تولیدشده تأثیر میگذارد (به --wrap مراجعه کنید). همچنین بر محاسبهٔ پهنای ستونها برای جدولهای متنی ساده تأثیر دارد (به «جدولها» در ادامه مراجعه کنید).
- --toc[=true|false], --table-of-contents[=true|false]
- شامل کردن یک فهرست مطالب بهطور خودکار تولیدشده (یا در مورد latex، context، docx، odt، opendocument، rst یا ms، یک دستورالعمل برای ایجاد آن) در سند خروجی. این گزینه هیچ تأثیری ندارد مگر اینکه از -s/--standalone استفاده شود، و هیچ تأثیری بر خروجیهای man، docbook4، docbook5 یا jats ندارد.
توجه داشته باشید که اگر در حال تولید PDF از طریق ms و استفاده از groff (پیشفرض) بهعنوان --pdf-engine هستید، فهرست مطالب در پایان سند ظاهر خواهد شد. اگر ترجیح میدهید در ابتدای سند و پیش از عنوان قرار گیرد، میتوانید از --pdf-engine=pdfroff استفاده کنید.
از آنجا که مدخلهای فهرست مطالب برای پیوند دادن به شناسههای عنوان نیاز دارند، این گزینه پسوند auto_identifiers را برای قالب ورودی فعال میکند، حتی زمانی که بهطور پیشفرض غیرفعال باشد (مانند typst).
- --toc-depth=NUMBER
- تعداد سطوح بخشها را برای گنجاندن در فهرست مطالب مشخص میکند. پیشفرض 3 است (بدین معنی که عنوانهای سطح ۱، ۲ و ۳ در فهرست ذکر خواهند شد).
- --lof[=true|false], --list-of-figures[=true|false]
- شامل کردن یک فهرست اشکالِ بهطور خودکار تولیدشده (یا در برخی قالبها، دستورالعملی برای ایجاد آن) در سند خروجی. این گزینه هیچ تأثیری ندارد مگر اینکه از -s/--standalone استفاده شود، و تنها بر خروجیهای latex، context و docx تأثیر میگذارد.
- --lot[=true|false], --list-of-tables[=true|false]
- شامل کردن یک فهرست جداولِ بهطور خودکار تولیدشده (یا در برخی قالبها، دستورالعملی برای ایجاد آن) در سند خروجی. این گزینه هیچ تأثیری ندارد مگر اینکه از -s/--standalone استفاده شود، و تنها بر خروجیهای latex، context و docx تأثیر میگذارد.
- --strip-comments[=true|false]
- کامنتهای HTML را از منبع Markdown یا Textile حذف میکند، بهجای اینکه آنها را بهصورت HTML خام به خروجی Markdown، Textile یا HTML بفرستد. هنگامی که پسوند markdown_in_html_blocks فعال نباشد، این گزینه شامل کامنتهای HTML درون بلوکهای خام HTML نمیشود.
- --syntax-highlighting=default|none|idiomatic|STYLE|FILE
- روشی که برای برجستهسازی نحو (syntax highlighting) کد استفاده میشود. تنظیم یک STYLE خاص باعث میشود که برجستهسازی با موتور برجستهسازی داخلی، با استفاده از تعاریف نحو و سبکهای KDE انجام شود. روش idiomatic از یک برجستهساز خاص آن قالب (در صورت وجود) یا سبک پیشفرض (اگر قالب مقصد روش برجستهسازی اصطلاحی اختصاصی نداشته باشد) استفاده میکند. تنظیم این گزینه روی none تمام برجستهسازیهای نحو را غیرفعال میکند. روش default از پیشفرض خاص هر قالب استفاده میکند. پیشفرض برای خروجیهای HTML، EPUB، Docx، Ms، Man و LaTeX استفاده از برجستهساز درونی با سبک پیشفرض است؛ برای Typst استفاده از سامانهٔ برجستهسازی نحو خود Typst است.
گزینههای سبک عبارتند از pygments (پیشفرض)، kate، monochrome، breezeDark، espresso، zenburn، haddock و tango. برای اطلاعات بیشتر دربارهٔ برجستهسازی نحو در pandoc، بخش برجستهسازی نحو را در ادامه ببینید. همچنین ببینید: --list-highlight-styles.
به جای یک نام STYLE، میتوان یک فایل JSON با پسوند .theme ارائه کرد. این فایل به عنوان یک تم برجستهسازی نحو KDE تجزیه شده و (در صورت معتبر بودن) به عنوان سبک برجستهسازی استفاده خواهد شد.
برای
تولید
نسخهٔ JSON از
یک سبک
موجود، از
--print-highlight-style
استفاده
کنید.
- --no-highlight
- منسوخ شده است، به جای آن از --syntax-highlighting=none استفاده کنید.
برجستهسازی نحو را برای بلوکهای کد و کدهای درونخطی غیرفعال میکند، حتی زمانی که ویژگی زبان مشخص شده باشد.
- --highlight-style=STYLE|FILE
- منسوخ شده است، به جای آن از --syntax-highlighting=STYLE|FILE استفاده کنید.
سبک رنگآمیزی مورد استفاده در کد منبع برجستهشده را مشخص میکند.
- --print-highlight-style=STYLE|FILE
- یک نسخهٔ JSON از یک سبک برجستهسازی را چاپ میکند، که میتوان آن را تغییر داد، با پسوند .theme ذخیره کرد، و با --syntax-highlighting به کار برد. این گزینه میتواند همراه با -o/--output برای هدایت خروجی به یک فایل استفاده شود، اما -o/--output باید در خط فرمان پیش از --print-highlight-style قرار گیرد.
- --syntax-definition=FILE
- به pandoc دستور میدهد تا یک فایل تعریف نحو KDE XML را بارگیری کند، که برای برجستهسازی نحو بلوکهای کد نشانهگذاریشده بهکار خواهد رفت. این گزینه میتواند برای افزودن پشتیبانی از زبانهای جدید یا بهکارگیری تعاریف نحو تغییریافته برای زبانهای موجود استفاده شود. این گزینه میتواند برای افزودن چندین تعریف نحو تکرار شود.
- -H FILE, --include-in-header=FILE|URL
- محتویات FILE را به طور عینی (verbatim) در انتهای هدر (سرآیند) میگنجاند. به عنوان مثال، این گزینه میتواند برای گنجاندن CSS یا JavaScript خاص در اسناد HTML استفاده شود. این گزینه میتواند مکرراً برای گنجاندن چندین فایل در هدر استفاده شود. آنها به ترتیبی که مشخص شدهاند گنجانده خواهند شد. مستلزم --standalone است.
- -B FILE, --include-before-body=FILE|URL
- محتویات FILE را به طور عینی در آغاز بدنهٔ سند میگنجاند (مثلاً پس از تگ <body> در HTML، یا دستور \begin{document} در LaTeX). این گزینه میتواند برای گنجاندن نوارهای ناوبری یا بنرها در اسناد HTML استفاده شود. این گزینه میتواند مکرراً برای گنجاندن چندین فایل استفاده شود. آنها به ترتیبی که مشخص شدهاند گنجانده خواهند شد. مستلزم --standalone است. توجه داشته باشید که اگر قالب خروجی odt باشد، این فایل باید در قالب OpenDocument XML مناسب برای درج در بدنهٔ سند باشد، و اگر خروجی docx باشد، این فایل باید در قالب OpenXML مناسب باشد.
- -A FILE, --include-after-body=FILE|URL
- محتویات FILE را به طور عینی در انتهای بدنهٔ سند میگنجاند (پیش از تگ </body> در HTML، یا دستور \end{document} در LaTeX). این گزینه میتواند مکرراً برای گنجاندن چندین فایل استفاده شود. آنها به ترتیبی که مشخص شدهاند گنجانده خواهند شد. مستلزم --standalone است. توجه داشته باشید که اگر قالب خروجی odt باشد، این فایل باید در قالب OpenDocument XML مناسب برای درج در بدنهٔ سند باشد، و اگر خروجی docx باشد، این فایل باید در قالب OpenXML مناسب باشد.
- --resource-path=SEARCHPATH
- فهرستی از مسیرها برای جستجوی تصاویر و دیگر منابع. مسیرها در سیستمهای Linux، UNIX و macOS باید با : و در Windows با ; از هم جدا شوند. اگر --resource-path مشخص نشود، مسیر پیشفرض منابع دایرکتوری کاری است. توجه داشته باشید که در صورت مشخص کردن --resource-path، دایرکتوری کاری باید به طور صریح درج شود، در غیر این صورت جستجو نخواهد شد. برای مثال: --resource-path=.:test دایرکتوری کاری و زیردایرکتوری test را به همین ترتیب جستجو خواهد کرد. این گزینه میتواند مکرراً استفاده شود. بخشهایی از مسیر جستجو که در خط فرمان دیرتر میآیند، پیش از بخشهایی که زودتر آمدهاند جستجو خواهند شد؛ بنابراین --resource-path foo:bar --resource-path baz:bim معادل --resource-path baz:bim:foo:bar است. توجه داشته باشید که این گزینه فقط زمانی تأثیر دارد که خود pandoc نیاز به یافتن یک تصویر داشته باشد (مثلاً هنگام تولید PDF یا docx، یا زمانی که --embed-resources استفاده میشود). این گزینه در موارد دیگر (مانند زمانی که pandoc در حال تولید LaTeX یا HTML است) موجب بازنویسی مسیر تصاویر نخواهد شد.
- --request-header=NAME:VAL
- هنگام برقراری درخواستهای HTTP (برای مثال، هنگامی که یک URL در خط فرمان داده شده است، یا زمانی که منابع استفادهشده در سند باید بارگیری شوند)، هدر درخواست NAME را روی مقدار VAL تنظیم میکند. اگر پشت یک پراکسی قرار دارید، همچنین باید متغیر محیطی http_proxy را روی http://... تنظیم کنید.
- --no-check-certificate[=true|false]
- اعتبارسنجی گواهی را غیرفعال میکند تا دسترسی به منابع ناامن HTTP امکانپذیر شود (برای مثال زمانی که گواهی دیگر معتبر نیست یا به صورت خودامضا است)..SS گزینههای مؤثر بر نویسندههای خاص
- --self-contained[=true|false]
- مترادف منسوخشده برای --embed-resources --standalone.
- --embed-resources[=true|false]
- تولید یک فایل HTML مستقل (standalone) بدون وابستگیهای خارجی، با استفاده از URIهای data: برای گنجاندن محتوای اسکریپتها، شیوهنامهها، تصاویر و ویدیوهای پیوندشده. فایل حاصل باید “خودبسنده” (self-contained) باشد، به این معنی که برای نمایش صحیح توسط مرورگر نیازی به فایلهای خارجی و دسترسی به شبکه ندارد. این گزینه تنها با قالبهای خروجی HTML کار میکند، از جمله html4، html5، html+lhs، html5+lhs، s5، slidy، slideous، dzslides و revealjs. اسکریپتها، تصاویر و شیوهنامههای دارای URLهای مطلق بارگیری خواهند شد؛ موارد دارای URLهای نسبی، نسبت به دایرکتوری کاری (اگر اولین فایل مبدأ محلی باشد) یا نسبت به URL پایه (اگر اولین فایل مبدأ دوردست باشد) جستجو میشوند. عناصری با صفت data-external="1" دستنخورده باقی میمانند؛ اسنادی که به آنها پیوند میدهند در سند گنجانده نخواهند شد. محدودیت: منابعی که بهطور پویا از طریق JavaScript بارگذاری میشوند، قابل گنجاندن نیستند؛ در نتیجه، هنگام استفاده از --mathjax ممکن است قلمها مفقود شوند، و برخی ویژگیهای پیشرفته (مانند بزرگنمایی یا یادداشتهای ارائهدهنده) ممکن است در یک نمایش اسلاید آفلاین و “خودبسنده” با reveal.js کار نکنند.
برای تصاویر SVG، از برچسبهای img به همراه URIهای data: استفاده میشود، مگر اینکه تصویر کلاس inline-svg را داشته باشد، که در این صورت یک عنصر درونخطی SVG درج میشود. این رویکرد زمانی توصیه میشود که تکرارهای زیادی از یک SVG یکسان در یک سند وجود داشته باشد، زیرا از عناصر <use> برای کاهش افزونگی استفاده خواهد شد.
- --link-images[=true|false]
- گنجاندن پیوندها به تصاویر به جای جاسازی تصاویر در ODT. (این گزینه در حال حاضر تنها بر خروجی ODT تأثیر میگذارد.)
- --html-q-tags[=true|false]
- استفاده از برچسبهای <q> برای نقلقولها در HTML. (این گزینه تنها زمانی تأثیر دارد که افزونهٔ smart برای قالب ورودی مورد استفاده فعال باشد.)
- --ascii[=true|false]
- استفادهٔ انحصاری از نویسههای ASCII در خروجی. در حال حاضر برای قالبهای XML و HTML (که در صورت انتخاب این گزینه، به جای UTF-8 از نهادها استفاده میکنند)، CommonMark، gfm و Markdown (که از نهادها استفاده میکنند)، roff man و ms (که از گریزهای هگزادسیمال استفاده میکنند)، و تا حدی محدود LaTeX (که در صورت امکان از دستورهای استاندارد برای نویسههای اعرابدار استفاده میکند) پشتیبانی میشود.
- --reference-links[=true|false]
- استفاده از پیوندهای سبک مرجع (reference-style) به جای پیوندهای درونخطی، در نوشتن Markdown یا reStructuredText. بهطور پیشفرض از پیوندهای درونخطی استفاده میشود. محل قرارگیری مراجع پیوند تحت تأثیر گزینهٔ --reference-location قرار میگیرد.
- --reference-location=block|section|document
- مشخص کردن اینکه پانویسها (و مراجع، در صورت تنظیم reference-links) در انتهای بلوک فعلی (سطح بالا)، بخش فعلی، یا سند قرار گیرند. پیشفرض document است. در حال حاضر این گزینه تنها بر نویسندههای markdown، muse، html، epub، slidy، s5، slideous، dzslides و revealjs تأثیر دارد. در قالبهای اسلاید، مشخص کردن --reference-location=section باعث رندر شدن یادداشتها در پایین یک اسلاید میشود.
- --figure-caption-position=above|below
- مشخص کردن اینکه عنوان شکلها در بالا یا پایین شکلها قرار گیرد (پیشفرض below است). این گزینه تنها بر خروجی HTML، LaTeX، Docx، ODT و Typst تأثیر میگذارد.
- --table-caption-position=above|below
- مشخص کردن اینکه عنوان جدولها در بالا یا پایین جدولها قرار گیرد (پیشفرض above است). این گزینه تنها بر خروجی HTML، LaTeX، Docx، ODT و Typst تأثیر میگذارد.
- --markdown-headings=setext|atx
- مشخص کردن استفاده از سرآیندهای سبک ATX (با پیشوند #) یا سبک Setext (خطکشیدهشده در زیر) برای سرآیندهای سطح ۱ و ۲ در خروجی Markdown. (پیشفرض atx است.) سرآیندهای سبک ATX همیشه برای سطوح ۳ به بالا استفاده میشوند. این گزینه همچنین بر سلولهای Markdown در خروجی ipynb تأثیر میگذارد.
- --list-tables[=true|false]
- رندر کردن جدولها به عنوان جدولهای فهرستی (list tables) در خروجی RST.
- --top-level-division=default|section|chapter|part
- در نظر گرفتن سرآیندهای بالاترین سطح به عنوان نوع تقسیمبندی دادهشده در خروجی LaTeX، ConTeXt، DocBook و TEI. ترتیب سلسلهمراتب عبارت است از part، chapter، سپس section؛ تمام سرآیندها به نحوی جابهجا میشوند که بالاترین سرآیند به نوع مشخصشده تبدیل شود. رفتار پیشفرض، تعیین بهترین نوع تقسیمبندی از طریق روشهای مکاشفهای (heuristics) است: مگر اینکه شرایط دیگری اعمال شود، section انتخاب میشود. هنگامی که متغیر documentclass بر روی report، book یا memoir تنظیم شده باشد (مگر اینکه گزینهٔ article مشخص شده باشد)، chapter به عنوان تنظیم این گزینه در نظر گرفته میشود. اگر beamer قالب خروجی باشد، تعیین هر یک از chapter یا part باعث تبدیل سرآیندهای بالاترین سطح به \part{..} میشود، در حالی که سرآیندهای سطح دوم به عنوان نوع پیشفرض خود باقی میمانند.
در خروجی Docx، این گزینه در صورت انتخاب chapter، شکست بخش (section break) را قبل از سرآیندهای سطح اول و در صورت انتخاب part، قبل از سرآیندهای سطح اول و دوم اضافه میکند. شماره پانویسها با هر شکست بخش از نو آغاز میشوند، مگر اینکه سند مرجع این مورد را تغییر دهد.
- -N, --number-sections=[true|false]
- شمارهگذاری سرآیندهای بخشها در خروجی LaTeX، ConTeXt، HTML، Docx، ms یا EPUB. بهطور پیشفرض، بخشها شمارهگذاری نمیشوند. بخشهای دارای کلاس unnumbered هرگز شمارهگذاری نخواهند شد، حتی اگر --number-sections مشخص شده باشد.
- --number-offset=NUMBER[,NUMBER,...]
- میزان جابهجایی (افست) برای شمارههای سرآیند بخشها. عدد اول به شمارهٔ بخش برای سرآیندهای سطح ۱ اضافه میشود، عدد دوم برای سرآیندهای سطح ۲ و به همین ترتیب. بنابراین، به عنوان مثال، اگر میخواهید اولین سرآیند سطح ۱ در سند شما به جای “1” دارای شمارهٔ “6” باشد، --number-offset=5 را مشخص کنید. اگر سند شما با یک سرآیند سطح ۲ شروع میشود که میخواهید دارای شمارهٔ “1.5” باشد، --number-offset=1,4 را تعیین کنید. --number-offset تنها بهطور مستقیم بر شمارهٔ اولین سرآیند بخش در یک سند تأثیر میگذارد؛ شمارههای بعدی به روش معمول افزایش مییابند. مستلزم --number-sections است. در حال حاضر این ویژگی تنها بر خروجی HTML و Docx تأثیر میگذارد.
- --listings[=true|false]
- *منسوخشده، به جای آن از --syntax-highlighting=idiomatic یا --syntax-highlighting=default استفاده کنید.
استفاده از بستهٔ listings برای بلوکهای کد LaTeX. این بسته از کدگذاری چندبایتی برای کد منبع پشتیبانی نمیکند. برای پشتیبانی از UTF-8 باید از یک الگوی سفارشی استفاده کنید. این مشکل بهطور کامل در اینجا مستند شده است: Encoding issue with the listings package.
- -i, --incremental[=true|false]
- نمایش گامبهگام (یکی پس از دیگری) آیتمهای فهرست در نمایشهای اسلاید. پیشفرض این است که فهرستها بهطور یکجا نمایش داده شوند.
- --slide-level=NUMBER
- مشخص میکند که سرآیندهای با سطح تعیینشده، اسلاید ایجاد کنند (برای beamer، revealjs، pptx، s5، slidy، slideous، dzslides). سرآیندهای بالاتر از این سطح در سلسلهمراتب برای تقسیم نمایش اسلاید به بخشها استفاده میشوند؛ سرآیندهای پایینتر از این سطح، زیرعنوانهایی را درون یک اسلاید میسازند. مقدارهای معتبر 0-6 هستند. اگر سطح اسلاید 0 مشخص شود، اسلایدها بهطور خودکار روی سرآیندها تقسیم نمیشوند و برای مشخص کردن مرزهای اسلاید باید از خطوط افقی استفاده شود. اگر سطح اسلاید بهطور صریح مشخص نشود، سطح اسلاید بهطور خودکار بر اساس محتوای سند تنظیم خواهد شد؛ بخش Structuring the slide show را ببینید.
- --section-divs[=true|false]
- قراردادن بخشها درون برچسبهای <section> (یا برچسبهای <div> برای html4)، و الصاق شناسهها به <section> (یا <div>) دربرگیرنده به جای خود سرآیند (بخش Heading identifiers را در زیر ببینید). این گزینه تنها بر خروجی HTML تأثیر دارد (و بر قالبهای اسلاید HTML تأثیر ندارد).
- --email-obfuscation=none|javascript|references
- تعیین یک روش برای مبهمسازی پیوندهای mailto: در اسناد HTML. مقدار none پیوندهای mailto: را دستنخورده باقی میگذارد. مقدار javascript آنها را با استفاده از JavaScript مبهم میکند. مقدار references آنها را با چاپ حروفشان به عنوان ارجاعهای نویسهای دهدهی یا هگزادسیمال مبهم میکند. پیشفرض none است.
- --id-prefix=STRING
- تعیین یک پیشوند برای اضافه شدن به تمامی شناسهها و پیوندهای داخلی در خروجی HTML و DocBook، و به شمارههای پانویس در خروجی Markdown و Haddock. این گزینه برای جلوگیری از شناسههای تکراری هنگام تولید قطعههایی که قرار است در صفحات دیگر گنجانده شوند، مفید است.
- -T STRING, --title-prefix=STRING
- تعیین STRING به عنوان پیشوند در ابتدای عنوانی که در سرآیند (header) اچتیامال ظاهر میشود (اما نه در عنوانی که در ابتدای بدنهٔ HTML ظاهر میشود). مستلزم --standalone است..TP -c URL, --css=URL پیوند به یک شیوهنامهٔ CSS. این گزینه میتواند برای افزودن چندین فایل بهطور مکرر استفاده شود. فایلها به همان ترتیبی که مشخص شدهاند اضافه خواهند شد. این گزینه فقط بر خروجیهای HTML (شامل اسلایدهای HTML) و EPUB اثر میگذارد. باید همراه با -s/--standalone استفاده شود، زیرا پیوند به شیوهنامه در سرایند سند قرار میگیرد.
برای ساخت EPUB وجود یک شیوهنامه الزامی است. اگر هیچ موردی با استفاده از این گزینه (یا فیلدهای فرادادهٔ css یا stylesheet) ارائه نشود، pandoc به دنبال فایل epub.css در دایرکتوری دادههای کاربر میگردد (گزینهٔ --data-dir را ببینید). اگر آنجا هم پیدا نشود، از مقادیر پیشفرض معقول استفاده خواهد شد.
- --reference-doc=FILE|URL
- استفاده از فایل مشخصشده به عنوان مرجع شیوه در تولید فایل docx یا ODT.
- Docx
- برای بهترین نتیجه، docx مرجع باید نسخهٔ اصلاحشدهای از یک فایل docx تولیدشده با pandoc باشد. محتویات docx مرجع نادیده گرفته میشوند، اما شیوهنامهها و ویژگیهای سند آن (شامل حاشیهها، اندازهٔ صفحه، سرایند و پاورقی) در docx جدید استفاده خواهند شد. اگر هیچ docx مرجعی در خط فرمان مشخص نشده باشد، pandoc به دنبال فایل reference.docx در دایرکتوری دادههای کاربر میگردد (گزینهٔ --data-dir را ببینید). اگر این فایل هم پیدا نشود، از مقادیر پیشفرض معقول استفاده خواهد شد.
برای ساخت یک reference.docx سفارشی، ابتدا یک نسخه از reference.docx پیشفرض را دریافت کنید: pandoc -o custom-reference.docx --print-default-data-file reference.docx. سپس custom-reference.docx را در Word یا LibreOffice باز کرده، شیوهها را مطابق میل خود تغییر دهید و فایل را ذخیره کنید. برای بهترین نتیجه، تغییری جز اصلاح شیوههای مورد استفادهٔ pandoc در این فایل اعمال نکنید:
شیوههای پاراگراف:
- Normal
- Body Text
- First Paragraph
- Compact
- Title
- Subtitle
- Author
- Date
- Abstract
- AbstractTitle
- Bibliography
- Heading 1
- Heading 2
- Heading 3
- Heading 4
- Heading 5
- Heading 6
- Heading 7
- Heading 8
- Heading 9
- Block Text [برای نقلقولهای بلوکی]
- Footnote Block Text [برای نقلقولهای بلوکی در پاورقی]
- Source Code
- Footnote Text
- Definition Term
- Definition
- Caption
- Table Caption
- Image Caption
- Figure
- Captioned Figure
- TOC Heading
شیوههای نویسه:
- Default Paragraph Font
- Verbatim Char
- Footnote Reference
- Hyperlink
- Section Number
شیوهٔ جدول:
- •
- Table
- ODT
- برای بهترین نتیجه، ODT مرجع باید نسخهٔ اصلاحشدهای از یک ODT تولیدشده با pandoc باشد. محتویات ODT مرجع نادیده گرفته میشوند، اما شیوهنامههای آن در ODT جدید استفاده خواهند شد. اگر هیچ ODT مرجعی در خط فرمان مشخص نشده باشد، pandoc به دنبال فایل reference.odt در دایرکتوری دادههای کاربر میگردد (گزینهٔ --data-dir را ببینید). اگر این فایل هم پیدا نشود، از مقادیر پیشفرض معقول استفاده خواهد شد.
برای ساخت یک reference.odt سفارشی، ابتدا یک نسخه از reference.odt پیشفرض را دریافت کنید: pandoc -o custom-reference.odt --print-default-data-file reference.odt. سپس custom-reference.odt را در LibreOffice باز کرده، شیوهها را مطابق میل خود تغییر دهید و فایل را ذخیره کنید.
- PowerPoint
- الگوهای ارائه شده همراه Microsoft PowerPoint 2013 (چه با پسوند .pptx یا .potx) و بیشتر الگوهای مشتقشده از آنها کارایی دارند.
شرط خاص این است که الگو باید شامل طرحبندیهایی با نامهای زیر باشد (همانطور که در PowerPoint دیده میشوند):
- Title Slide
- Title and Content
- Section Header
- Two Content
- Comparison
- Content with Caption
- Blank
برای هر نام، نخستین طرحبندی یافتشده با آن نام به کار خواهد رفت. اگر طرحبندی با یکی از این نامها پیدا نشود، pandoc یک هشدار نمایش داده و در عوض از طرحبندی با همان نام از سند مرجع پیشفرض استفاده خواهد کرد. (نحوهٔ استفاده از این طرحبندیها در بخش PowerPoint layout choice شرح داده شده است.)
تمام الگوهای همراه نسخههای اخیر MS PowerPoint دارای این مشخصات هستند. (برای بررسی میتوانید زیر منوی Home روی Layout کلیک کنید.)
همچنین میتوانید reference.pptx پیشفرض را اصلاح کنید: ابتدا دستور pandoc -o custom-reference.pptx --print-default-data-file reference.pptx را اجرا کرده و سپس custom-reference.pptx را در MS PowerPoint تغییر دهید (pandoc از طرحبندیهایی با نامهای ذکرشده در بالا استفاده خواهد کرد).
- --split-level=NUMBER
- سطح عنوانی را مشخص میکند که در آن یک سند EPUB یا chunked HTML به فایلهای مجزا تقسیم میشود. حالت پیشفرض، تقسیم به فصلها در عناوین سطح ۱ است. در مورد EPUB، این گزینه فقط بر ساختار داخلی EPUB تأثیر میگذارد، نه نحوهٔ نمایش فصلها و بخشها برای کاربران. برخی دستگاههای کتابخوان در صورت بزرگ بودن فایلهای فصل ممکن است کند شوند، بنابراین برای اسناد بزرگی با عناوین سطح ۱ اندک، ممکن است ترجیح دهید از سطح فصل ۲ یا ۳ استفاده کنید. برای chunked HTML، این گزینه تعیین میکند چه مقدار محتوا در هر “تکه” قرار میگیرد.
- --chunk-template=PATHTEMPLATE
- الگویی برای نام فایلها در یک سند chunkedhtml مشخص میکند. در این الگو، %n با شمارهٔ تکه (با صفرهای پیشین تا ۳ رقم تکمیل میشود)، %s با شمارهٔ بخشِ تکه، %h با متن عنوان (بدون قالببندی) و %i با شناسهٔ بخش جایگزین خواهد شد. برای نمونه، section-%s-%i.html ممکن است به section-1.1-introduction.html تبدیل شود. نویسههای / و \ در الگوهای تکه مجاز نیستند و نادیده گرفته خواهند شد. حالت پیشفرض %s-%i.html است..TP --epub-chapter-level=NUMBER مترادف منسوخشده برای --split-level.
- --epub-cover-image=FILE
- استفاده از تصویر مشخصشده به عنوان جلد EPUB. توصیه میشود عرض و ارتفاع تصویر کمتر از 1000px باشد. توجه داشته باشید که در یک سند مبدأ Markdown میتوانید cover-image را در یک بلوک فراداده YAML نیز تعیین کنید (بخش «فراداده EPUB» در زیر را ببینید).
- --epub-title-page=true|false
- مشخص میکند که آیا صفحه عنوان در EPUB گنجانده شود یا خیر (پیشفرض true است).
- --epub-metadata=FILE
- جستجو در فایل XML مشخصشده برای فراداده EPUB. این فایل باید شامل مجموعهای از عناصر Dublin Core باشد. برای مثال:
-
<dc:rights>Creative Commons</dc:rights> <dc:language>es-AR</dc:language>
بهطور پیشفرض، pandoc عناصر فراداده زیر را میگنجاند: <dc:title> (از عنوان سند)، <dc:creator> (از نویسندگان سند)، <dc:date> (از تاریخ سند که باید در قالب ISO 8601 باشد)، <dc:language> (از متغیر lang، یا در صورت تنظیم نبودن، محلیسازی سیستم)، و <dc:identifier id="BookId"> (یک UUID بهصورت تصادفی تولیدشده). هر یک از این موارد میتواند توسط عناصر موجود در فایل فراداده رونویسی شود.
نکته: اگر سند مبدأ Markdown باشد، میتوان به جای آن از یک بلوک فراداده YAML در سند استفاده کرد. بخش «فراداده EPUB» در زیر را ببینید.
- --epub-embed-font=FILE
- جاسازی فونت مشخصشده در EPUB. این گزینه را میتوان برای جاسازی چندین فونت تکرار کرد. همچنین میتوان از نویسههای عمومی (wildcards) استفاده کرد: برای مثال، DejaVuSans-*.ttf. با این حال، اگر در خط فرمان از نویسههای عمومی استفاده میکنید، برای جلوگیری از تفسیر آنها توسط پوسته، مطمئن شوید که آنها را با escape مشخص کرده یا کل نام فایل را در نقلقول تکی (single quotes) قرار دهید. برای استفاده از فونتهای جاسازیشده، باید اعلانهایی مانند نمونه زیر را به CSS خود اضافه کنید (گزینه --css را ببینید):
-
@font-face { font-family: DejaVuSans; font-style: normal; font-weight: normal; src:url("../fonts/DejaVuSans-Regular.ttf"); } @font-face { font-family: DejaVuSans; font-style: normal; font-weight: bold; src:url("../fonts/DejaVuSans-Bold.ttf"); } @font-face { font-family: DejaVuSans; font-style: italic; font-weight: normal; src:url("../fonts/DejaVuSans-Oblique.ttf"); } @font-face { font-family: DejaVuSans; font-style: italic; font-weight: bold; src:url("../fonts/DejaVuSans-BoldOblique.ttf"); } body { font-family: "DejaVuSans"; }
- --epub-subdirectory=DIRNAME
- مشخص کردن زیردایرکتوری در ظرف OCF که باید محتوای مخصوص EPUB را در خود نگهداری کند. پیشفرض EPUB است. برای قرار دادن محتویات EPUB در بالاترین سطح، از یک رشته خالی استفاده کنید.
- --ipynb-output=all|none|best
- نحوه رفتار با سلولهای خروجی ipynb را تعیین میکند. مقدار all یعنی تمام قالبهای داده موجود در فایل اصلی حفظ شوند. مقدار none یعنی محتوای سلولهای داده حذف شوند. مقدار best باعث میشود pandoc تلاش کند غنیترین بلوک داده در هر سلول خروجی را که با قالب خروجی سازگار است انتخاب کند. پیشفرض best است.
- --pdf-engine=PROGRAM
- استفاده از موتور مشخصشده هنگام تولید خروجی PDF. مقادیر معتبر عبارتند از: pdflatex، lualatex، xelatex، latexmk، tectonic، wkhtmltopdf، weasyprint، pagedjs-cli، prince، context، groff، pdfroff و typst. اگر موتور در PATH شما نباشد، میتوان مسیر کامل آن را در اینجا مشخص کرد. اگر این گزینه مشخص نشود، pandoc بسته به قالب خروجی تعیینشده با استفاده از -t/--to، از پیشفرضهای زیر استفاده میکند:
- -t latex یا هیچکدام: pdflatex (گزینههای دیگر: xelatex، lualatex، tectonic، latexmk)
- -t context: context
- -t html: weasyprint (گزینههای دیگر: prince، wkhtmltopdf، pagedjs-cli؛ برای مقدمهای مناسب در مورد تولید PDF از HTML/CSS وبگاه print-css.rocks را ببینید)
- -t ms: groff
- -t typst: typst
این گزینه معمولاً برای زمانی در نظر گرفته شده است که یک فایل PDF به عنوان -o/--output مشخص شده باشد. با این حال، ممکن است هنگام درخواست سایر قالبهای خروجی نیز اثرگذار باشد. برای مثال، خروجی ms تنها در صورتی شامل ماکروهای .pdfhref خواهد بود که یک --pdf-engine انتخاب شده باشد، و این ماکروها بسته به این که groff یا pdfroff مشخص شده باشد به شکل متفاوتی کدگذاری خواهند شد.
- --pdf-engine-opt=STRING
- استفاده از رشته دادهشده به عنوان آرگومان خط فرمان برای pdf-engine. برای مثال، جهت استفاده از دایرکتوری پایدار foo برای فایلهای کمکی latexmk، از --pdf-engine-opt=-outdir=foo استفاده کنید. توجه داشته باشید که هیچ بررسی برای گزینههای تکراری انجام نمیشود..SS بازنمایی ارجاعات
- -C, --citeproc
- ارجاعات موجود در فایل را پردازش کرده، آنها را با ارجاعات بازنماییشده جایگزین میکند و یک کتابشناسی میافزاید. پردازش ارجاعات انجام نخواهد شد مگر آنکه دادههای کتابشناختی فراهم شده باشند؛ چه از طریق یک فایل خارجی مشخصشده با استفاده از گزینهٔ --bibliography یا فیلد bibliography در فراداده، یا از طریق بخش references در فراداده شامل فهرستی از ارجاعات در قالب CSL YAML با قالببندی Markdown. شیوهنامه توسط یک شیوهنامهٔ CSL مشخصشده با استفاده از گزینهٔ --csl یا فیلد csl در فراداده کنترل میشود. (اگر هیچ شیوهنامهای تعیین نشده باشد، شیوهٔ chicago-author-date بهطور پیشفرض استفاده خواهد شد.) تبدیل پردازش ارجاع ممکن است پیش یا پس از فیلترها یا فیلترهای Lua اعمال شود (ببینید --filter، --lua-filter): این تبدیلها به همان ترتیبی که در خط فرمان ظاهر میشوند اعمال خواهند شد. برای اطلاعات بیشتر، بخش ارجاعات (Citations) را ببینید.
نکته: در صورت تعیین این گزینه، افزونهٔ citations بهطور خودکار در نویسنده (writer) غیرفعال میشود تا اطمینان حاصل شود که به جای نحو ارجاعی خودِ قالب، ارجاعات تولیدشده توسط citeproc بازنمایی میشوند.
- --bibliography=FILE
- فیلد bibliography را در فرادادهٔ سند روی FILE تنظیم میکند و هر مقداری را که در فراداده تعیین شده باشد بازنویسی مینماید. اگر این آرگومان را چندین بار ارائه دهید، هر FILE به کتابشناسی اضافه خواهد شد. اگر FILE یک نشانی URL باشد، از طریق HTTP واکشی خواهد شد. اگر FILE نسبت به دایرکتوری کاری پیدا نشود، در مسیر منبع جستجو خواهد شد (ببینید --resource-path).
- --csl=FILE
- فیلد csl را در فرادادهٔ سند روی FILE تنظیم میکند و هر مقدار تعیینشده در فراداده را بازنویسی مینماید. (این معادل --metadata csl=FILE است.) اگر FILE یک نشانی URL باشد، از طریق HTTP واکشی خواهد شد. اگر FILE نسبت به دایرکتوری کاری پیدا نشود، در مسیر منبع (ببینید --resource-path) و در نهایت در زیرپوشهٔ csl از دایرکتوری دادههای کاربر pandoc جستجو خواهد شد.
- --citation-abbreviations=FILE
- فیلد citation-abbreviations را در فرادادهٔ سند روی FILE تنظیم میکند و هر مقدار تعیینشده در فراداده را بازنویسی مینماید. (این معادل --metadata citation-abbreviations=FILE است.) اگر FILE یک نشانی URL باشد، از طریق HTTP واکشی خواهد شد. اگر FILE نسبت به دایرکتوری کاری پیدا نشود، در مسیر منبع (ببینید --resource-path) و در نهایت در زیرپوشهٔ csl از دایرکتوری دادههای کاربر pandoc جستجو خواهد شد.
- --natbib
- استفاده از natbib برای ارجاعات در خروجی LaTeX. این گزینه نباید به همراه گزینهٔ --citeproc یا با خروجی PDF استفاده شود. هدف از آن استفاده در تولید یک فایل LaTeX است که بتوان با bibtex آن را پردازش کرد.
- --biblatex
- استفاده از biblatex برای ارجاعات در خروجی LaTeX. این گزینه نباید به همراه گزینهٔ --citeproc یا با خروجی PDF استفاده شود. هدف از آن استفاده در تولید یک فایل LaTeX است که بتوان با bibtex یا biber آن را پردازش کرد.
بازنمایی ریاضی در HTML
حالت پیشفرض این است که ریاضیات TeX تا جای ممکن با استفاده از نویسههای Unicode بازنمایی شوند. فرمولها درون یک span با class="math" قرار میگیرند تا در صورت نیاز بتوان سبک آنها را متفاوت از متن اطراف قالببندی کرد. با این حال، این روش تنها برای ریاضیات پایه نتایج قابل قبولی ارائه میدهد و معمولاً مایل خواهید بود از --mathjax یا یکی دیگر از گزینههای زیر استفاده کنید.
- --mathjax[=URL]
- استفاده از MathJax برای نمایش ریاضیات تعبیهشدهٔ TeX در خروجی HTML. ریاضیات TeX بین \(...\) (برای ریاضیات درونخطی) یا \[...\] (برای ریاضیات نمایشی) قرار داده شده و درون تگهای <span> با کلاس math پیچیده میشوند. سپس جاوااسکریپت MathJax آن را بازنمایی خواهد کرد. آرگومان URL باید به اسکریپت بارگذاری MathJax.js اشاره داشته باشد. اگر URL ارائه نشود، پیوندی به Cloudflare CDN درج خواهد شد.
- --mathml
- تبدیل ریاضیات TeX به MathML (در epub3، docbook4، docbook5، jats، html4 و html5). این مورد در خروجی odt پیشفرض است. MathML بهطور بومی توسط مرورگرهای وب اصلی و برخی کتابخوانهای الکترونیکی منتخب پشتیبانی میشود.
- --webtex[=URL]
- تبدیل فرمولهای TeX به تگهای <img> که به یک اسکریپت خارجی پیوند دارند که فرمولها را به تصویر تبدیل میکند. فرمول بهصورت کدگذاری URL (URL-encode) درآمده و به نشانی URL ارائهشده الحاق میشود. بهعنوان مثال، برای تصاویر SVG میتوانید از --webtex https://latex.codecogs.com/svg.latex? استفاده کنید. اگر هیچ نشانی URL تعیین نشود، نشانی URL تولیدکنندهٔ PNG در CodeCogs استفاده خواهد شد (https://latex.codecogs.com/png.latex?). نکته: گزینهٔ --webtex علاوه بر HTML بر خروجی Markdown نیز تأثیر خواهد گذاشت که اگر نگارشی از Markdown بدون پشتیبانی بومی از ریاضیات را هدف قرار داده باشید، مفید است.
- --katex[=URL]
- استفاده از KaTeX برای نمایش ریاضیات تعبیهشدهٔ TeX در خروجی HTML. مقدار URL نشانیِ پایه برای کتابخانهٔ KaTeX است. آن دایرکتوری باید حاوی یک فایل katex.min.js و یک فایل katex.min.css باشد. اگر URL ارائه نشود، پیوندی به KaTeX CDN درج خواهد شد.
- --gladtex
- قرار دادن ریاضیات TeX درون تگهای <eq> در خروجی HTML. خروجی HTML حاصل میتواند متعاقباً توسط GladTeX پردازش شود تا تصاویر SVG از فرمولهای حروفچینیشده و یک فایل HTML شامل این تصاویرِ تعبیهشده را تولید کند.
-
pandoc -s --gladtex input.md -o myfile.htex gladtex -d image_dir myfile.htex # produces myfile.html and images in image_dir
- --dump-args[=true|false]
- اطلاعات مربوط به آرگومانهای خط فرمان را در stdout چاپ کرده و سپس خارج میشود. این گزینه در درجه اول برای استفاده در اسکریپتهای پوششی در نظر گرفته شده است. خط اول خروجی حاوی نام فایل خروجی مشخصشده با گزینهٔ -o است، یا در صورتی که فایل خروجی مشخص نشده باشد، حاوی - (برای stdout) خواهد بود. خطوط باقیمانده شامل آرگومانهای خط فرمان هستند؛ هر کدام در یک خط، و به ترتیبی که ظاهر شدهاند. این موارد شامل گزینههای معمول pandoc و آرگومانهای آنها نمیشوند، اما شامل هر گزینهای هستند که پس از جداکنندهٔ -- در انتهای خط آمده باشد.
- --ignore-args[=true|false]
- نادیده گرفتن آرگومانهای خط فرمان (برای استفاده در اسکریپتهای پوششی). گزینههای معمول pandoc نادیده گرفته نمیشوند. بنابراین، به عنوان مثال،
-
pandoc --ignore-args -o foo.html -s foo.txt -- -e latin1
معادل است با:
-
pandoc -o foo.html -s
کدهای خروج (EXIT CODES)
اگر pandoc با موفقیت به پایان برسد، کد خروج 0 را برمیگرداند. کدهای خروج غیرصفر معانی زیر را دارند:
-
Code Error ------ ------------------------------------- 1 PandocIOError 3 PandocFailOnWarningError 4 PandocAppError 5 PandocTemplateError 6 PandocOptionError 21 PandocUnknownReaderError 22 PandocUnknownWriterError 23 PandocUnsupportedExtensionError 24 PandocCiteprocError 25 PandocBibliographyError 31 PandocEpubSubdirectoryError 43 PandocPDFError 44 PandocXMLError 47 PandocPDFProgramNotFoundError 61 PandocHttpError 62 PandocShouldNeverHappenError 63 PandocSomeError 64 PandocParseError 66 PandocMakePDFError 67 PandocSyntaxMapError 83 PandocFilterError 84 PandocLuaError 89 PandocNoScriptingEngine 91 PandocMacroLoop 92 PandocUTF8DecodingError 93 PandocIpynbDecodingError 94 PandocUnsupportedCharsetError 95 PandocInputNotTextError 97 PandocCouldNotFindDataFileError 98 PandocCouldNotFindMetadataFileError 99 PandocResourceNotFound
فایلهای پیشفرض (DEFAULTS FILES)
گزینهٔ --defaults میتواند برای تعیین بستهای از گزینهها در قالب یک فایل YAML یا JSON استفاده شود. مثالهای این بخش به زبان YAML ارائه میشوند، اما شکلهای معادل در JSON نیز کار خواهند کرد.
فیلدهایی که از قلم افتادهاند، مقادیر پیشفرض معمول خود را خواهند داشت. بنابراین یک فایل پیشفرض میتواند به سادگی یک خط باشد:
-
verbosity: INFO
یا در JSON:
-
{ "verbosity": "INFO" }
در فیلدهایی که انتظار یک مسیر فایل (یا فهرستی از مسیرهای فایل) را دارند، نحو زیر میتواند برای جایگذاری متغیرهای محیطی استفاده شود:
-
csl: ${HOME}/mycsldir/special.csl
از ${USERDATA} نیز میتوان استفاده کرد؛ این عبارت، صرفنظر از مقدار متغیر محیطی USERDATA، همواره به دایرکتوری دادههای کاربر در زمان تجزیهٔ فایل پیشفرض اشاره خواهد کرد.
عبارت ${.} به دایرکتوری حاوی خودِ فایل پیشفرض اشاره خواهد کرد. این به شما امکان میدهد تا به منابع موجود در آن دایرکتوری ارجاع دهید:
-
epub-cover-image: ${.}/cover.jpg epub-metadata: ${.}/meta.xml resource-path: - . # the working directory from which pandoc is run - ${.}/images # the images subdirectory of the directory # containing this defaults file
این نحوِ جایگذاری متغیر محیطی فقط در فیلدهایی کار میکند که انتظار مسیر فایل را دارند.
فایلهای پیشفرض را میتوان در زیردایرکتوری defaults از دایرکتوری دادههای کاربر قرار داد و از هر دایرکتوریای استفاده کرد. به عنوان مثال، میتوان فایلی برای تعیین پیشفرضهای نگارش نامه ایجاد کرد، آن را به عنوان letter.yaml در زیردایرکتوری defaults از دایرکتوری دادههای کاربر ذخیره کرد و سپس این پیشفرضها را از هر دایرکتوری با استفاده از pandoc --defaults letter یا pandoc -dletter فراخوانی کرد.
هنگامی که چندین فایل پیشفرض استفاده میشوند، محتویات آنها با یکدیگر ترکیب خواهند شد.
توجه داشته باشید که در مواردی که آرگومانهای خط فرمان قابل تکرار هستند (--metadata-file، --css، --include-in-header، --include-before-body، --include-after-body، --variable، --metadata، --syntax-definition)، مقادیر مشخصشده در خط فرمان با مقادیر مشخصشده در فایل پیشفرض ترکیب میشوند، نه اینکه جایگزین آنها گردند.
جدولهای زیر نگاشت بین ورودیهای خط فرمان و فایلهای پیشفرض را نشان میدهند.
-
command line defaults file --------------------------------- ---------------------------------- foo.md input-file: foo.md foo.md bar.md input-files: - foo.md - bar.md
مقدار input-files میتواند برای نشان دادن ورودی از stdin خالی گذاشته شود، و همچنین میتواند یک توالی خالی [] برای عدم ورودی باشد..SS گزینههای عمومی (General options)
-
command line defaults file ----------------------------------- -------------------------------------- --from markdown+emoji from: markdown+emoji reader: markdown+emoji --to markdown+hard_line_breaks to: markdown+hard_line_breaks writer: markdown+hard_line_breaks --output foo.pdf output-file: foo.pdf --output - output-file: --data-dir dir data-dir: dir --defaults file defaults: - file --verbose verbosity: INFO --quiet verbosity: ERROR --fail-if-warnings fail-if-warnings: true --sandbox sandbox: true --log=FILE log-file: FILE
گزینههای مشخصشده در خود یک فایل پیشفرضها، همواره نسبت به گزینههای موجود در فایل دیگری که با مدخل defaults: گنجانده شده است، اولویت دارند.
verbosity میتواند دارای مقادیر ERROR، WARNING یا INFO باشد.
گزینههای خواننده (Reader options)
-
command line defaults file ------------------------------------- ------------------------------------ --shift-heading-level-by -1 shift-heading-level-by: -1 --indented-code-classes python indented-code-classes: - python --default-image-extension ".jpg" default-image-extension: '.jpg' --file-scope file-scope: true --citeproc \ filters: --lua-filter count-words.lua \ - citeproc --filter special.lua - count-words.lua - type: json path: special.lua --metadata key=value \ metadata: --metadata key2 key: value key2: true --metadata-file meta.yaml metadata-files: - meta.yaml metadata-file: meta.yaml --preserve-tabs preserve-tabs: true --tab-stop 8 tab-stop: 8 --track-changes accept track-changes: accept --extract-media dir extract-media: dir --abbreviations abbrevs.txt abbreviations: abbrevs.txt --typst-input foo=bar typst-inputs: foo: bar --trace trace: true
مقادیر متادیتای مشخصشده در یک فایل پیشفرضها، بهصورت متن رشتهای لفظی (literal)، و نه Markdown، تجزیه میشوند.
فیلترها در صورتی که پسوند .lua داشته باشند، فیلتر Lua و در غیر این صورت فیلتر JSON فرض میشوند. با این حال، همانطور که نشان داده شده است، نوع فیلتر میتواند بهصورت صریح نیز مشخص شود. فیلترها به همان ترتیبی که مشخص شدهاند اجرا میشوند. برای گنجاندن فیلتر توکار citeproc، از citeproc یا {type: citeproc} استفاده کنید.
گزینههای عمومی نویسنده (General writer options)
-
command line defaults file ----------------------------------- -------------------------------------- --standalone standalone: true --template letter template: letter --variable key=val \ variables: --variable key2 key: val key2: true --eol nl eol: nl --dpi 300 dpi: 300 --wrap preserve wrap: "preserve" --columns 72 columns: 72 --table-of-contents table-of-contents: true --toc toc: true --toc-depth 3 toc-depth: 3 --strip-comments strip-comments: true --no-highlight syntax-highlighting: 'none' --syntax-highlighting kate syntax-highlighting: kate --syntax-definition mylang.xml syntax-definitions: - mylang.xml syntax-definition: mylang.xml --include-in-header inc.tex include-in-header: - inc.tex --include-before-body inc.tex include-before-body: - inc.tex --include-after-body inc.tex include-after-body: - inc.tex --resource-path .:foo resource-path: ['.','foo'] --request-header foo:bar request-headers: - ["User-Agent", "Mozilla/5.0"] --no-check-certificate no-check-certificate: true
-
command line defaults file ------------------------------------- ------------------------------------ --self-contained self-contained: true --link-images link-images: true --html-q-tags html-q-tags: true --ascii ascii: true --reference-links reference-links: true --reference-location block reference-location: block --figure-caption-position=above figure-caption-position: above --table-caption-position=below table-caption-position: below --markdown-headings atx markdown-headings: atx --list-tables list-tables: true --top-level-division chapter top-level-division: chapter --number-sections number-sections: true --number-offset=1,4 number-offset: \[1,4\] --listings listings: true --list-of-figures list-of-figures: true --lof lof: true --list-of-tables list-of-tables: true --lot lot: true --incremental incremental: true --slide-level 2 slide-level: 2 --section-divs section-divs: true --email-obfuscation references email-obfuscation: references --id-prefix ch1 identifier-prefix: ch1 --title-prefix MySite title-prefix: MySite --css styles/screen.css \ css: --css styles/special.css - styles/screen.css - styles/special.css --reference-doc my.docx reference-doc: my.docx --epub-cover-image cover.jpg epub-cover-image: cover.jpg --epub-title-page=false epub-title-page: false --epub-metadata meta.xml epub-metadata: meta.xml --epub-embed-font special.otf \ epub-fonts: --epub-embed-font headline.otf - special.otf - headline.otf --split-level 2 split-level: 2 --chunk-template="%i.html" chunk-template: "%i.html" --epub-subdirectory="" epub-subdirectory: '' --ipynb-output best ipynb-output: best --pdf-engine xelatex pdf-engine: xelatex --pdf-engine-opt=--shell-escape pdf-engine-opts: - '-shell-escape' pdf-engine-opt: '-shell-escape'
رندر ارجاعات
-
command line defaults file ------------------------------------- ------------------------------------ --citeproc citeproc: true --bibliography logic.bib bibliography: logic.bib --csl ieee.csl csl: ieee.csl --citation-abbreviations ab.json citation-abbreviations: ab.json --natbib cite-method: natbib --biblatex cite-method: biblatex
مقدار cite-method میتواند citeproc، natbib یا biblatex باشد. این گزینه فقط بر خروجی LaTeX تأثیر میگذارد. اگر میخواهید از citeproc برای قالببندی ارجاعات استفاده کنید، باید `citeproc: true` را نیز تنظیم کنید.
اگر نیاز به کنترل زمان اجرای پردازش citeproc نسبت به سایر فیلترها دارید، باید در عوض از citeproc در فهرست filters استفاده کنید (گزینههای خواننده را ببینید).
رندر ریاضیات در HTML
-
command line defaults file --------------------------------- ---------------------------------- --mathjax html-math-method: method: mathjax --mathml html-math-method: method: mathml --webtex html-math-method: method: webtex --katex html-math-method: method: katex --gladtex html-math-method: method: gladtex
علاوه بر مقادیر ذکرشده در بالا، method میتواند مقدار plain را نیز داشته باشد.
اگر گزینهٔ خط فرمان یک آرگومان URL بپذیرد، میتوان یک فیلد url: را به html-math-method: افزود..SS "گزینههای اسکریپتهای لفاف (Options for wrapper scripts)"
-
command line defaults file --------------------------------- ---------------------------------- --dump-args dump-args: true --ignore-args ignore-args: true
قالبها (TEMPLATES)
هنگامی که گزینهٔ -s/--standalone استفاده میشود، pandoc از یک قالب برای افزودن محتوای سرایند و پانویس که برای یک سند مستقل لازم است، استفاده میکند. برای دیدن قالب پیشفرضی که استفاده میشود، کافی است دستور زیر را بنویسید
-
pandoc -D *FORMAT*
که در آن FORMAT نام فرمت خروجی است. یک قالب سفارشی را میتوان با استفاده از گزینهٔ --template مشخص کرد. همچنین میتوانید قالبهای پیشفرض سیستم را برای یک فرمت خروجی مشخص FORMAT با قرار دادن یک فایل templates/default.*FORMAT* در دایرکتوری دادههای کاربر (گزینهٔ --data-dir در بالا را ببینید) بازنویسی کنید. استثناها:
- برای خروجی odt، قالب default.opendocument را سفارشیسازی کنید.
- برای خروجی docx، قالب default.openxml را سفارشیسازی کنید.
- برای خروجی pdf، قالب default.latex را سفارشیسازی کنید (یا در صورت استفاده از -t context، قالب default.context، یا در صورت استفاده از -t ms، قالب default.ms، یا در صورت استفاده از -t html، قالب default.html).
- فرمت pptx هیچ قالبی ندارد.
توجه داشته باشید که خروجی docx، odt و pptx را نیز میتوان با استفاده از --reference-doc سفارشی کرد. از یک سند مرجع برای تنظیم سبکها در سند خود استفاده کنید؛ از یک قالب برای مدیریت درونیابی متغیرها و سفارشیسازی نحوه نمایش متادیتا، جایگاه فهرست مطالب، متنهای کلیشهای و غیره استفاده نمایید.
قالبها حاوی متغیرها هستند که امکان گنجاندن اطلاعات دلخواه را در هر نقطهای از فایل فراهم میکنند. آنها را میتوان در خط فرمان با استفاده از گزینهٔ -V/--variable تعیین کرد. اگر متغیری تعیین نشده باشد، pandoc به دنبال آن کلید در متادیتای سند میگردد، که میتوان آن را با بلوکهای متادیتای YAML یا با گزینهٔ -M/--metadata مشخص کرد. علاوه بر این، pandoc به برخی متغیرها مقادیر پیشفرض میدهد. برای مشاهدهٔ فهرستی از متغیرهای مورد استفاده در قالبهای پیشفرض pandoc، بخش متغیرها را در ادامه ببینید.
اگر از قالبهای سفارشی استفاده میکنید، ممکن است با تغییرات pandoc نیاز به بازنگری آنها داشته باشید. ما توصیه میکنیم تغییرات در قالبهای پیشفرض را دنبال کرده و قالبهای سفارشی خود را بر همان اساس اصلاح کنید. یک راه آسان برای انجام این کار، فورک کردن (fork) مخزن pandoc-templates و ادغام (merge) تغییرات پس از انتشار هر نسخه از pandoc است.
نحو قالب (Template syntax)
توضیحات (Comments)
هر چیزی بین توالی $-- و انتهای خط به عنوان توضیح در نظر گرفته شده و از خروجی حذف خواهد شد.
جداکنندهها (Delimiters)
برای مشخص کردن متغیرها و ساختارهای کنترلی در قالب، میتوان از $...$ یا ${...} به عنوان جداکننده استفاده کرد. این سبکها را میتوان در یک قالب به صورت ترکیبی نیز به کار برد، اما جداکنندهٔ آغازین و پایانی در هر مورد باید تطابق داشته باشند. پس از جداکنندهٔ آغازین میتواند یک یا چند فاصله یا تب بیاید که نادیده گرفته خواهند شد. پیش از جداکنندهٔ پایانی میتواند یک یا چند فاصله یا تب بیاید که نادیده گرفته خواهند شد.
برای گنجاندن یک علامت واقعی $ در سند، از $$ استفاده کنید.
متغیرهای درونیابیشده (Interpolated variables)
یک جایگاه برای متغیر درونیابیشده، نام یک متغیر احاطهشده توسط جداکنندههای منطبق است. نامهای متغیر باید با یک حرف شروع شوند و میتوانند شامل حروف، اعداد، _، - و . باشند. کلمات کلیدی it، if، else، endif، for، sep و endfor نباید به عنوان نام متغیر استفاده شوند. مثالها:
-
$foo$ $foo.bar.baz$ $foo_bar.baz-bim$ $ foo $ ${foo} ${foo.bar.baz} ${foo_bar.baz-bim} ${ foo }
نامهای متغیر دارای نقطه برای دستیابی به مقادیر متغیرهای ساختاریافته به کار میروند. بنابراین، برای مثال، employee.salary مقدار فیلد salary از شیئی را برمیگرداند که مقدار فیلد employee است.
- اگر مقدار متغیر یک مقدار ساده باشد، عیناً رندر خواهد شد. (توجه داشته باشید که هیچ گریزدهی (escaping) انجام نمیشود؛ فرض بر این است که برنامهٔ فراخواننده، رشتهها را متناسب با فرمت خروجی گریز میدهد.)
- اگر مقدار یک لیست باشد، مقادیر به هم متصل خواهند شد.
- اگر مقدار یک نگاشت (map) باشد، رشتهٔ true رندر خواهد شد.
- هر مقدار دیگری به عنوان رشتهٔ خالی رندر خواهد شد..SS "شرطها (Conditionals)" یک عبارت شرطی با if(variable) (محصور در جداکنندههای منطبق) آغاز میشود و با endif (محصور در جداکنندههای منطبق) پایان مییابد. این ساختار میتواند به صورت اختیاری شامل یک else (محصور در جداکنندههای منطبق) باشد. بخش if در صورتی استفاده میشود که variable مقداری درست (true) داشته باشد، در غیر این صورت بخش else (در صورت وجود) به کار میرود. مقادیر زیر به عنوان درست (true) در نظر گرفته میشوند:
- هر نگاشت (map)
- هر آرایه حاوی دستکم یک مقدار درست (true)
- هر رشته غیرخالی
- مقدار بولیِ True
توجه داشته باشید که در متادیتای YAML (و متادیتای مشخصشده در خط فرمان با استفاده از -M/--metadata)، مقادیر بدون نقلقولِ true و false به عنوان مقادیر بولی تفسیر میشوند. اما متغیری که در خط فرمان با استفاده از -V/--variable مشخص شود، همواره یک مقدار رشتهای دریافت خواهد کرد. بنابراین شرط if(foo) در صورت استفاده از -V foo=false فعال خواهد شد، اما اگر از -M foo=false استفاده کنید فعال نمیشود.
مثالها:
-
$if(foo)$bar$endif$ $if(foo)$ $foo$ $endif$ $if(foo)$ part one $else$ part two $endif$ ${if(foo)}bar${endif} ${if(foo)} ${foo} ${endif} ${if(foo)} ${ foo.bar } ${else} no foo! ${endif}
از کلیدواژه elseif میتوان برای سادهسازی شرطهای تودرتوی پیچیده استفاده کرد:
-
$if(foo)$ XXX $elseif(bar)$ YYY $else$ ZZZ $endif$
حلقههای For (For loops)
یک حلقه for با for(variable) (محصور در جداکنندههای منطبق) آغاز شده و با endfor (محصور در جداکنندههای منطبق) پایان مییابد.
- اگر variable یک آرایه باشد، محتوای درون حلقه مکرراً ارزیابی میشود؛ به این صورت که variable به نوبت بر روی هر مقدار از آرایه تنظیم شده و با یکدیگر الحاق (concatenate) میشوند.
- اگر variable یک نگاشت (map) باشد، محتوای درون حلقه بر روی آن نگاشت تنظیم میشود.
- اگر مقدار متغیر مربوطه یک آرایه یا نگاشت نباشد، یک تکرار منفرد بر روی مقدار آن انجام خواهد شد.
مثالها:
-
$for(foo)$$foo$$sep$, $endfor$ $for(foo)$ - $foo.last$, $foo.first$ $endfor$ ${ for(foo.bar) } - ${ foo.bar.last }, ${ foo.bar.first } ${ endfor } $for(mymap)$ $it.name$: $it.office$ $endfor$
میتوانید به صورت اختیاری با استفاده از sep (محصور در جداکنندههای منطبق)، یک جداکننده میان مقادیر متوالی تعیین کنید. محتوای میان sep و endfor همان جداکننده است.
-
${ for(foo) }${ foo }${ sep }, ${ endfor }
به جای استفاده از variable درون حلقه، میتوان از کلیدواژه ارجاعیِ (anaphoric) خاصِ it استفاده کرد.
-
${ for(foo.bar) } - ${ it.last }, ${ it.first } ${ endfor }
قالبهای جزئی (Partials)
قالبهای جزئی یا پارشالها (زیرقالبهای ذخیرهشده در فایلهای مجزا) را میتوان با استفاده از نام پارشال به همراه () در سند درج کرد؛ برای نمونه:
-
${ styles() }
پارشالها در پوشه حاوی قالب اصلی جستجو خواهند شد. اگر فایل فاقد پسوند باشد، فرض میشود که پسوندی یکسان با قالب اصلی دارد. هنگام فراخوانی پارشال، میتوان نام کامل شامل پسوند فایل را نیز به کار برد:
-
${ styles.html() }
(اگر یک پارشال در پوشه قالب پیدا نشود و مسیر قالب به عنوان یک مسیر نسبی داده شده باشد، در زیرپوشه templates از دایرکتوری دادههای کاربر نیز جستجو خواهد شد.)
پارشالها را میتوان به صورت اختیاری با استفاده از دو نقطه (:) بر روی متغیرها اعمال کرد:
-
${ date:fancy() } ${ articles:bibentry() }
اگر articles یک آرایه باشد، این دستور بر روی مقادیر آن پیمایش کرده و پارشال bibentry() را بر روی تکتک آنها اعمال میکند. بنابراین مثال دوم در بالا معادل است با:
-
${ for(articles) } ${ it:bibentry() } ${ endfor }
توجه داشته باشید که هنگام پیمایش روی پارشالها باید از کلیدواژه ارجاعی it استفاده شود. در مثالهای بالا، پارشال bibentry باید به جای articles.title حاوی it.title (و موارد مشابه) باشد.
خطوط جدید پایانی (newlines) از پارشالهای گنجاندهشده حذف میشوند.
پارشالها میتوانند شامل پارشالهای دیگر باشند.
جداکننده میان مقادیر یک آرایه را میتوان در کروشه، بلافاصله پس از نام متغیر یا پارشال مشخص کرد:
-
${months[, ]} ${articles:bibentry()[; ]}
جداکننده در این حالت لفظی (literal) است و (برخلاف sep در یک حلقه صریح for) نمیتواند شامل متغیرهای درونیابیشده یا سایر دستورالعملهای قالب باشد..SS تودرتویی (Nesting) برای اطمینان از اینکه محتوا بهصورت “تودرتو” (nested) قرار گیرد، یعنی خطوط بعدی دارای تورفتگی باشند، از دستورالعمل ^ استفاده کنید:
-
$item.number$ $^$$item.description$ ($item.price$)
در این مثال، اگر item.description دارای چند سطر باشد، همهٔ آنها بهگونهای تورفتگی پیدا میکنند که با سطر اول تراز شوند:
-
00123 A fine bottle of 18-year old Oban whiskey. ($148)
برای تودرتو کردن چند سطر در یک سطح یکسان، آنها را با دستورالعمل ^ در الگو تراز کنید. برای نمونه:
-
$item.number$ $^$$item.description$ ($item.price$) (Available til $item.sellby$.)
خروجی زیر را تولید خواهد کرد:
-
00123 A fine bottle of 18-year old Oban whiskey. ($148) (Available til March 30, 2020.)
اگر یک متغیر بهتنهایی در یک سطر بیاید، پیش از آن فاصلهٔ خالی (whitespace) باشد و در همان سطر متن یا دستورالعمل دیگری به دنبال آن نیاید، و مقدار متغیر شامل چند سطر باشد، بهطور خودکار تودرتو خواهد شد.
فاصلههای شکستپذیر (Breakable spaces)
بهطور معمول، فاصلهها در خود الگو (برخلاف مقادیر متغیرهای جایگذاریشده) شکستپذیر نیستند، اما میتوان با استفاده از کلمهٔ کلیدی ~ (که با یک ~ دیگر پایان مییابد) آنها را در بخشی از الگو شکستپذیر کرد.
-
$~$This long line may break if the document is rendered with a short line length.$~$
لولهها (Pipes)
یک لوله (pipe) مقدار یک متغیر یا پارهالگو (partial) را تبدیل میکند. لولهها با استفاده از یک ممیز (/) میان نام متغیر (یا partial) و نام لوله مشخص میشوند. مثال:
-
$for(name)$ $name/uppercase$ $endfor$ $for(metadata/pairs)$ - $it.key$: $it.value$ $endfor$ $employee:name()/uppercase$
لولهها میتوانند زنجیرهای شوند:
-
$for(employees/pairs)$ $it.key/alpha/uppercase$. $it.name$ $endfor$
برخی از لولهها پارامتر میپذیرند:
-
|----------------------|------------| $for(employee)$ $it.name.first/uppercase/left 20 "| "$$it.name.salary/right 10 " | " " |"$ $endfor$ |----------------------|------------|
در حال حاضر لولههای زیر از پیش تعریف شدهاند:
- pairs: یک نگاشت (map) یا آرایه را به آرایهای از نگاشتها تبدیل میکند که هر کدام دارای فیلدهای key و value هستند. اگر مقدار اولیه یک آرایه باشد، key شاخص آرایه خواهد بود که از 1 آغاز میشود.
- uppercase: متن را به حروف بزرگ تبدیل میکند.
- lowercase: متن را به حروف کوچک تبدیل میکند.
- length: طول مقدار را برمیگرداند: شمار نویسهها برای یک مقدار متنی، شمار عناصر برای یک نگاشت یا آرایه.
- reverse: یک مقدار متنی یا آرایه را معکوس میکند، و بر مقادیر دیگر اثری ندارد.
- first: در صورت اعمال روی یک آرایهٔ غیرخالی، نخستین مقدار آرایه را برمیگرداند؛ در غیر این صورت مقدار اصلی را برمیگرداند.
- last: در صورت اعمال روی یک آرایهٔ غیرخالی، آخرین مقدار آرایه را برمیگرداند؛ در غیر این صورت مقدار اصلی را برمیگرداند.
- rest: در صورت اعمال روی یک آرایهٔ غیرخالی، تمام مقادیر آرایه بهجز نخستین مقدار را برمیگرداند؛ در غیر این صورت مقدار اصلی را برمیگرداند.
- allbutlast: در صورت اعمال روی یک آرایهٔ غیرخالی، تمام مقادیر آرایه بهجز آخرین مقدار را برمیگرداند؛ در غیر این صورت مقدار اصلی را برمیگرداند.
- chomp: خطوط جدید پایانی (و فاصلههای شکستپذیر) را حذف میکند.
- nowrap: شکستن خطوط روی فاصلههای شکستپذیر را غیرفعال میکند.
- alpha: مقادیر متنی را که میتوان بهصورت یک عدد صحیح خواند، به نویسههای الفبایی کوچک a..z (بهپیمانهٔ ۲۶) تبدیل میکند. این قابلیت میتواند برای ایجاد شمارش الفبایی از شاخصهای آرایه استفاده شود. برای دریافت حروف بزرگ، آن را با uppercase زنجیر کنید.
- roman: مقادیر متنی را که میتوان بهصورت یک عدد صحیح خواند، به اعداد رومی کوچک تبدیل میکند. این قابلیت میتواند برای ایجاد شمارش حرفی از شاخصهای آرایه استفاده شود. برای دریافت اعداد رومی بزرگ، آن را با uppercase زنجیر کنید.
- left n "leftborder" "rightborder": یک مقدار متنی را در بلوکی به پهنای n، تراز شده به چپ، همراه با حاشیهٔ چپ و راست اختیاری نمایش میدهد. بر مقادیر دیگر اثری ندارد. این قابلیت میتواند برای تراز کردن محتوا در جدولها استفاده شود. پهنهها اعداد صحیح مثبتی هستند که نشاندهندهٔ شمار نویسهها میباشند. حاشیهها رشتههایی داخل دابلکوتیشن هستند؛ نویسههای لفظی " و \ باید با بکاسلش گریز داده شوند.
- right n "leftborder" "rightborder": یک مقدار متنی را در بلوکی به پهنای n، تراز شده به راست نمایش میدهد، و بر مقادیر دیگر اثری ندارد.
- center n "leftborder" "rightborder": یک مقدار متنی را در بلوکی به پهنای n، تراز شده در وسط نمایش میدهد، و بر مقادیر دیگر اثری ندارد..SS "متغیرها (Variables)"
متغیرهای فراداده (Metadata variables)
- title، author، date
- امکان شناسایی جنبههای اصلی سند را فراهم میکنند. از طریق LaTeX و ConTeXt در فرادادههای PDF گنجانده میشوند. این متغیرها را میتوان از طریق بلوک عنوان pandoc (که اجازه تعیین چند نویسنده را میدهد) یا از طریق یک بلوک فراداده YAML تنظیم کرد:
-
--- author: - Aristotle - Peter Abelard ...
توجه داشته باشید که اگر فقط میخواهید فرادادههای PDF یا HTML را بدون درج بلوک عنوان در خود سند تنظیم کنید، میتوانید متغیرهای title-meta، author-meta و date-meta را تعیین کنید. (بهطور پیشفرض این مقادیر بهصورت خودکار بر اساس title، author و date تنظیم میشوند.) عنوان صفحه در HTML توسط pagetitle مشخص میشود که بهطور پیشفرض برابر با title است.
- subtitle
- زیرعنوان سند، گنجاندهشده در اسناد HTML، EPUB، LaTeX، ConTeXt و docx.
- abstract
- چکیده سند، گنجاندهشده در اسناد HTML، LaTeX، ConTeXt، AsciiDoc و docx.
- abstract-title
- عنوان چکیده، در حال حاضر تنها در HTML، EPUB، docx و Typst استفاده میشود. این متغیر بسته به lang بهطور خودکار روی یک مقدار بومیسازیشده تنظیم میشود، اما میتوان آن را بهصورت دستی نیز بازنویسی کرد.
- keywords
- فهرستی از کلیدواژهها برای گنجاندن در فرادادههای HTML، PDF، ODT، pptx، docx و AsciiDoc؛ شیوه تکرار همانند author در بالا است.
- subject
- موضوع سند، گنجاندهشده در فرادادههای ODT، PDF، docx، EPUB و pptx.
- description
- توضیحات سند، گنجاندهشده در فرادادههای ODT، docx و pptx. برخی از برنامهها این مورد را بهعنوان فراداده Comments نمایش میدهند.
- category
- دستهبندی سند، گنجاندهشده در فرادادههای docx و pptx.
علاوه بر این، هر فراداده رشتهای در سطح ریشه که در فرادادههای ODT، docx یا pptx گنجانده نشده باشد، بهعنوان یک ویژگی سفارشی (custom property) اضافه میشود. برای نمونه، بلوک فراداده YAML زیر:
-
--- title: 'This is the title' subtitle: "This is the subtitle" author: - Author One - Author Two description: | This is a long description. It consists of two paragraphs ...
هنگام تبدیل به docx، ODT یا pptx، مقادیر title، author و description را بهعنوان مشخصات استاندارد سند و subtitle را بهعنوان یک ویژگی سفارشی شامل خواهد شد.
متغیرهای زبان (Language variables)
- lang
- زبان اصلی سند را با استفاده از برچسبهای زبان IETF (پیرو استاندارد BCP 47) مانند en یا en-GB مشخص میکند. ابزار Language subtag lookup میتواند برای جستجو یا اعتبارسنجی این برچسبها استفاده شود. این متغیر بر بیشتر قالبها تأثیر میگذارد و خطفاصلهگذاری (hyphenation) را در خروجی PDF هنگام استفاده از LaTeX (از طریق babel و polyglossia) یا ConTeXt کنترل میکند.
-
--- lang: en-GB ... Text in the main document language (British English). ::: {lang=fr-CA} > Cette citation est écrite en français canadien. ::: More text in English. ['Zitat auf Deutsch.']{lang=de}
- dir
- جهت نوشتار پایه، rtl (راستبهچپ) یا ltr (چپبهراست).
- document-css
- گنجاندن بخش عمدهٔ CSS موجود در قالب جزئی (partial) styles.html را فعال میکند (میتوانید با دستور pandoc --print-default-data-file=templates/styles.html آن را مشاهده کنید). مگر اینکه از --css استفاده کنید، این متغیر بهطور پیشفرض روی true تنظیم شده است. میتوانید آن را مثلاً با pandoc -M document-css=false غیرفعال کنید.
- mainfont
- ویژگی font-family در CSS را برای عنصر html تعیین میکند.
- fontsize
- ویژگی پایهٔ font-size در CSS را تعیین میکند، که معمولاً آن را مثلاً روی 20px تنظیم میکنید، اما pt را نیز میپذیرد (در بیشتر مرورگرها 12pt = 16px است).
- fontcolor
- ویژگی color در CSS را برای عنصر html تعیین میکند.
- linkcolor
- ویژگی color در CSS را برای همهٔ پیوندها تعیین میکند.
- monofont
- ویژگی font-family در CSS را برای عنصرهای code تعیین میکند.
- monobackgroundcolor
- ویژگی background-color در CSS را برای عنصرهای code تعیین کرده و فاصلهٔ درونی (padding) اضافی میافزاید.
- linestretch
- ویژگی line-height در CSS را برای عنصر html تعیین میکند، که ترجیح داده میشود بدون واحد باشد.
- maxwidth
- ویژگی max-width در CSS را تعیین میکند (پیشفرض 36em است).
- backgroundcolor
- ویژگی background-color در CSS را برای عنصر html تعیین میکند.
- margin-left, margin-right, margin-top, margin-bottom
- ویژگیهای متناظر padding در CSS را برای عنصر body تعیین میکنند.
برای بازنویسی یا گسترش برخی از CSSها فقط برای یک سند، بهعنوان مثال این مورد را درج کنید:
-
--- header-includes: | <style> blockquote { font-style: italic; } tr.even { background-color: #f0f0f0; } td, th { padding: 0.5em 2em 0.5em 0.5em; } tbody { border-bottom: none; } </style> ---
متغیرها برای ریاضیات در HTML
- classoption
- هنگام استفاده از --katex، میتوانید با استفاده از فرادادههای YAML یا با -M classoption=fleqn، معادلات ریاضی نمایشی (display math) را چپچین کنید.
متغیرها برای اسلایدهای HTML
این متغیرها بر خروجی HTML هنگام تولید ارائهها (slide shows) با pandoc تأثیر میگذارند.
- institute
- وابستگیهای سازمانی نویسنده: در صورت وجود چند نویسنده میتواند یک فهرست باشد
- revealjs-url
- نشانی وب (URL) پایه برای اسناد reveal.js (پیشفرض https://unpkg.com/reveal.js@^5 است)
- s5-url
- نشانی وب (URL) پایه برای اسناد S5 (پیشفرض s5/default است)
- slidy-url
- نشانی وب (URL) پایه برای اسناد Slidy (پیشفرض https://www.w3.org/Talks/Tools/Slidy2 است)
- slideous-url
- نشانی وب (URL) پایه برای اسناد Slideous (پیشفرض slideous است)
- title-slide-attributes
- مشخصههای اضافی برای اسلاید عنوان در ارائههای reveal.js. برای یک نمونه، بخش background در reveal.js، beamer و pptx را ببینید.
- highlightjs-theme
- پوستهٔ highlight.js برای برجستهسازی کد هنگام استفاده از --syntax-highlighting=idiomatic با reveal.js (پیشفرض monokai است). برای مشاهدهٔ پوستههای موجود، صفحهٔ پیشنمایش highlight.js را ببینید.
تمام گزینههای پیکربندی reveal.js بهعنوان متغیر در دسترس هستند. برای خاموش کردن پرچمهای بولی (boolean) که پیشفرض آنها در reveal.js مقدار true است، از 0 استفاده کنید.
متغیرها برای اسلایدهای Beamer
این متغیرها ظاهر اسلایدهای PDF با استفاده از beamer را تغییر میدهند.
- aspectratio
- نسبت تصویر اسلاید (43 برای 4:3 [پیشفرض]، 169 برای 16:9، 1610 برای 16:10، 149 برای 14:9، 141 برای 1.41:1، 54 برای 5:4، 32 برای 3:2)
- beameroption
- افزودن گزینهٔ اضافی beamer با \setbeameroption{}
- institute
- وابستگیهای سازمانی نویسنده: در صورت وجود چند نویسنده میتواند یک فهرست باشد
- logo
- تصویر نشانواره (لوگو) برای اسلایدها
- logooptions
- گزینههای تصویر نشانواره (مانند width، height)
- نمادهای ناوبری را کنترل میکند (پیشفرض برای بدون نمادهای ناوبری empty است؛ مقادیر معتبر دیگر عبارتند از frame، vertical و horizontal)
- section-titles
- “صفحههای عنوان” را برای بخشهای جدید فعال میکند (پیشفرض true است)
- theme, colortheme, fonttheme, innertheme, outertheme
- پوستههای beamer
- themeoptions, colorthemeoptions, fontthemeoptions, innerthemeoptions, outerthemeoptions
- گزینههای پوستههای LaTeX beamer (فهرستها)
- titlegraphic
- تصویر برای اسلاید عنوان: میتواند یک فهرست باشد
- titlegraphicoptions
- گزینههای تصویر اسلاید عنوان (مانند width، height)
- shorttitle, shortsubtitle, shortauthor, shortinstitute, shortdate
- برخی از پوستههای beamer از نسخههای کوتاه عنوان، زیرعنوان، نویسنده، وابستگی سازمانی، و تاریخ استفاده میکنند.SS متغیرها برای PowerPoint این متغیرها جنبههای بصری یک نمایش اسلاید را کنترل میکنند که کنترل آنها از طریق الگوها بهسادگی ممکن نیست.
- monofont
- قلم مورد استفاده برای کدها.
متغیرها برای LaTeX
پاندوک هنگام ایجاد یک PDF با موتور LaTeX از این متغیرها استفاده میکند.
صفحهبندی
- block-headings
- دستورات \paragraph و \subparagraph (سرتیترهای سطح چهارم و پنجم، یا در کلاسهای کتاب سطح پنجم و ششم) را بهجای درونخطی (run-in)، مستقل (free-standing) میسازد؛ برای تمایز آنها از \subsubsection (سرتیترهای سطح سوم یا چهارم) به قالببندی بیشتری نیاز است. بهجای استفاده از این گزینه، KOMA-Script میتواند سرتیترها را با گستردگی بیشتری تنظیم کند:
-
--- documentclass: scrartcl header-includes: | \RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\normalfont\itshape]{paragraph} \RedeclareSectionCommand[ beforeskip=-10pt plus -2pt minus -1pt, afterskip=1sp plus -1sp minus 1sp, font=\normalfont\scshape, indent=0pt]{subparagraph} ...
- classoption
- گزینهای برای کلاس سند، مانند oneside؛ برای چند گزینه تکرار کنید:
-
--- classoption: - twocolumn - landscape ...
- documentclass
- کلاس سند: معمولاً یکی از کلاسهای استاندارد، شامل article، book و report؛ معادلهای آنها در KOMA-Script یعنی scrartcl، scrbook و scrreprt که بهطور پیشفرض حاشیههای کوچکتری دارند؛ یا memoir
- geometry
- گزینهای برای بسته geometry، مانند margin=1in؛ برای چند گزینه تکرار کنید:
-
--- geometry: - top=30mm - left=20mm - heightrounded ...
- shorthands
- فعالسازی کوتاهنوشتهای ویژهی زبان هنگام بارگذاری babel. (بهطور پیشفرض، pandoc هنگام بارگذاری babel گزینه shorthands=off را قرار میدهد که کوتاهنوشتهای ویژهی زبان را غیرفعال میکند.)
- hyperrefoptions
- گزینهای برای بسته hyperref، مانند linktoc=all؛ برای چند گزینه تکرار کنید:
-
--- hyperrefoptions: - linktoc=all - pdfwindowui - pdfpagemode=FullScreen ...
- indent
- در صورت تعیین true، pandoc از تنظیمات کلاس سند برای تورفتگی استفاده خواهد کرد (در غیر این صورت، الگوی پیشفرض LaTeX تورفتگی را حذف کرده و بین پاراگرافها فاصله ایجاد میکند).
- linestretch
- تنظیم فاصله بین خطوط با استفاده از بسته setspace، مانند 1.25، 1.5
- margin-left، margin-right، margin-top، margin-bottom
- تنظیم حاشیهها در صورتی که از geometry استفاده نشده باشد (در غیر این صورت geometry بر این متغیرها اولویت خواهد داشت).
- pagestyle
- کنترل \pagestyle{}: کلاس پیشفرض article از مقادیر plain (پیشفرض)، empty (بدون سرصفحه یا شماره صفحه) و headings (عنوان بخشها در سرصفحه) پشتیبانی میکند.
- papersize
- اندازه کاغذ، مانند letter، a4
- secnumdepth
- عمق شمارهگذاری بخشها (همراه با گزینه --number-sections یا متغیر numbersections)
- beamerarticle
- تولید یک مقاله (article) از اسلایدهای Beamer. نکته: در صورت تنظیم این متغیر، باید نویسنده beamer را مشخص کنید اما از الگوی پیشفرض LaTeX استفاده نمایید: برای نمونه، pandoc -Vbeamerarticle -t beamer --template default.latex.
- handout
- تولید نسخه جزوه (handout) از اسلایدهای Beamer (با تجمیع لایهها در اسلایدهای تکی).
- csquotes
- بارگذاری بسته csquotes و استفاده از \enquote یا \enquote* برای متنهای داخل نقلقول.
- csquotesoptions
- گزینههای مورد استفاده برای بسته csquotes (برای گزینههای چندگانه تکرار شود).
- babeloptions
- گزینههایی که به بسته babel ارسال میشوند (برای گزینههای چندگانه قابل تکرار است). اگر زبان اصلی یک زبان اروپایی با خط لاتین یا سیریلیک، یا ویتنامی نباشد، مقدار پیشفرض آن provide=* خواهد بود. بیشتر کاربران نیازی به تغییر تنظیمات پیشفرض نخواهند داشت..SS "قلمها (Fonts)"
- fontenc
- امکان تعیین رمزگذاری قلم را از طریق بستهی fontenc (با pdflatex) فراهم میکند؛ مقدار پیشفرض T1 است (راهنمای رمزگذاریهای قلم LaTeX را ببینید).
- fontfamily
- بستهی قلم برای استفاده با pdflatex: مجموعهی TeX Live شامل گزینههای متعددی است که در LaTeX Font Catalogue مستند شدهاند. پیشفرض Latin Modern است.
- fontfamilyoptions
- گزینههایی برای بستهای که به عنوان fontfamily استفاده شده است؛ برای چندین گزینه تکرار کنید. برای نمونه، جهت استفاده از قلم Libertine با ارقام کوچک متناسب (old-style) از طریق بستهی libertinus:
-
--- fontfamily: libertinus fontfamilyoptions: - osf - p ...
- fontsize
- اندازهی قلم برای متن اصلی (بدنه). کلاسهای استاندارد اندازههای 10pt، 11pt و 12pt را مجاز میدانند. برای استفاده از اندازهای دیگر، documentclass را روی یکی از کلاسهای KOMA-Script مانند scrartcl یا scrbook تنظیم کنید.
- mainfont, sansfont, monofont, mathfont, CJKmainfont, CJKsansfont, CJKmonofont
- خانوادههای قلم برای استفاده با xelatex یا lualatex: با استفاده از بستهی fontspec نام هر قلم سیستمی را میپذیرند. در صورت استفاده از xelatex، گزینهی CJKmainfont از بستهی xecjk، یا اگر از lualatex استفاده شود، از بستهی luatexja بهره میبرد.
- mainfontoptions, sansfontoptions, monofontoptions, mathfontoptions, CJKoptions, luatexjapresetoptions
- گزینههایی برای استفاده به همراه mainfont، sansfont، monofont، mathfont و CJKmainfont در xelatex و lualatex. امکان استفاده از هر انتخابی که از طریق fontspec در دسترس است را فراهم میکند؛ برای چندین گزینه تکرار کنید. برای نمونه، جهت استفاده از نسخهی TeX Gyre قلم Palatino با ارقام کوچک:
-
--- mainfont: TeX Gyre Pagella mainfontoptions: - Numbers=Lowercase - Numbers=Proportional ...
- mainfontfallback, sansfontfallback, monofontfallback
- قلمهایی که اگر گلیفی به ترتیب در mainfont، sansfont یا monofont یافت نشد، امتحان میشوند. اینها بهصورت فهرست هستند. نام قلم باید با یک دونقطه و بهصورت اختیاری با مجموعهای از گزینهها همراه باشد، برای نمونه:
-
--- mainfontfallback: - "FreeSans:" - "NotoColorEmoji:mode=harf" ...
قلمهای جایگزین در حال حاضر تنها با lualatex کار میکنند.
- babelfonts
- نگاشتی از نام زبانهای Babel (مانند chinese) به قلمی که باید برای آن زبان استفاده شود:
-
--- babelfonts: chinese-hant: "Noto Serif CJK TC" russian: "Noto Serif" ...
- microtypeoptions
- گزینههایی برای ارسال به بستهی microtype
پیوندها (Links)
- colorlinks
- افزودن رنگ به متن پیوند؛ در صورتی که هر یک از linkcolor، filecolor، citecolor، urlcolor یا toccolor تنظیم شده باشند، بهطور خودکار فعال میشود.
- boxlinks
- افزودن کادر قابل مشاهده دور پیوندها (در صورت تنظیم بودن colorlinks هیچ تأثیری ندارد)
- linkcolor, filecolor, citecolor, urlcolor, toccolor
- به ترتیب رنگ برای پیوندهای داخلی، پیوندهای خارجی، پیوندهای ارجاع، URLهای پیوندشده و پیوندهای درون فهرست مطالب: از گزینههای مجاز در xcolor، از جمله فهرستهای dvipsnames، svgnames و x11names استفاده میکند.
- links-as-notes
- باعث میشود پیوندها بهصورت پاورقی چاپ شوند
- urlstyle
- سبک نمایش برای URLها (مانند tt، rm، sf و حالت پیشفرض، same)
بخش آغازین (Front matter)
- lof, lot
- گنجاندن فهرست شکلها، فهرست جدولها (همچنین با استفاده از --lof/--list-of-figures و --lot/--list-of-tables نیز قابل تنظیم است)
- thanks
- محتوای پاورقی قدردانی و سپاسگزاری پس از عنوان سند
- toc
- گنجاندن فهرست مطالب (همچنین با استفاده از --toc/--table-of-contents نیز قابل تنظیم است)
- toc-depth
- سطح بخشهایی که باید در فهرست مطالب گنجانده شوند.SS کتابنامههای BibLaTeX این متغیرها هنگام استفاده از BibLaTeX برای رندر ارجاعات کاربرد دارند.
- biblatexoptions
- فهرست گزینهها برای biblatex
- biblio-style
- سبک کتابنامه، هنگام استفاده همراه با --natbib و --biblatex
- biblio-title
- عنوان کتابنامه، هنگام استفاده همراه با --natbib و --biblatex
- bibliography
- کتابنامه مورد استفاده برای برطرفسازی ارجاعات
- natbiboptions
- فهرست گزینهها برای natbib
سایر
- pdf-trailer-id
- شناسه trailer در PDF؛ در صورت تنظیم باید دو رشته بایتی PDF باشند، که به طور معمول هر یک ۱۶ بایت دارند. برای مثال: <00112233445566778899aabbccddeeff> <00112233445566778899aabbccddeeff>.
- pdfstandard
- استاندارد(های) PDF برای سند، به عنوان مثال ua-2، a-4f. از انواع PDF/A، PDF/X و PDF/UA پشتیبانی میکند. نیازمند LuaLaTeX و LaTeX نسخه 2023+ است. برای چندین استاندارد تکرار کنید:
-
--- pdfstandard: - ua-2 - a-4f ...
متغیرهای ConTeXt
دستور Pandoc هنگام ساخت یک PDF با استفاده از ConTeXt، از این متغیرها استفاده میکند.
- fontsize
- اندازه قلم برای متن بدنه (مانند 10pt، 12pt)
- headertext, footertext
- متنی که باید در سربرگ یا پاورقی صفحه قرار گیرد (بخش سربرگها و پاورقیهای ConTeXt را ببینید)؛ برای مکانگذاریهای مختلف تا چهار بار قابل تکرار است
- indenting
- تورفتگی بندها را کنترل میکند، مانند yes,small,next (بخش تورفتگی در ConTeXt را ببینید)؛ برای گزینههای متعدد تکرارپذیر است
- interlinespace
- فاصله بین خطوط را تنظیم میکند، مانند 4ex (با استفاده از setupinterlinespace)؛ برای گزینههای متعدد تکرارپذیر است
- layout
- گزینههایی برای حاشیههای صفحه و چیدمان متن (بخش چیدمان در ConTeXt را ببینید)؛ برای گزینههای متعدد تکرارپذیر است
- linkcolor, contrastcolor
- رنگ پیوندها در بیرون و درون صفحه، مانند red، blue (بخش رنگ در ConTeXt را ببینید)
- linkstyle
- سبک تایپفیس برای پیوندها، مانند normal، bold، slanted، boldslanted، type، cap، small
- lof, lot
- گنجاندن فهرست تصاویر، فهرست جدولها
- mainfont, sansfont, monofont, mathfont
- خانوادههای قلم: نام هر قلم سیستمی را میپذیرند (بخش تعویض قلم در ConTeXt را ببینید)
- mainfontfallback, sansfontfallback, monofontfallback
- فهرست قلمهایی که اگر یک گلیف در قلم اصلی یافت نشود، به ترتیب بررسی میشوند. از نحو نام قلم سازگار با \definefallbackfamily استفاده کنید. قلمهای ایموجی پشتیبانی نمیشوند.
- margin-left, margin-right, margin-top, margin-bottom
- در صورت عدم استفاده از layout، حاشیهها را تعیین میکند (در غیر این صورت layout این مقادیر را لغو میکند)
- pagenumbering
- سبک و محل قرارگیری شماره صفحه (با استفاده از setuppagenumbering)؛ برای چندین گزینه تکرارپذیر است
- papersize
- اندازه کاغذ، مانند letter، A4، landscape (بخش تنظیمات کاغذ در ConTeXt را ببینید)؛ برای چندین گزینه تکرارپذیر است
- pdfa
- تنظیمات لازم برای تولید PDF/A از نوع مشخصشده را به دیباچه میافزاید، مانند 1a:2005، 2a. اگر نوعی مشخص نشود (یعنی مقدار با مواردی مثل --metadata=pdfa یا pdfa: true در یک بلوک فراداده YAML برابر True تعیین شده باشد)، به دلایل سازگاری با نسخههای پیشین، 1b:2005 به عنوان پیشفرض استفاده خواهد شد. استفاده از --variable=pdfa بدون مقدار مشخصشده پشتیبانی نمیشود. برای تولید موفقیتآمیز PDF/A، پروفایلهای رنگی ICC موردنیاز باید در دسترس باشند و محتوا و تمام فایلهای ضمیمهشده (مانند تصاویر) باید منطبق با استاندارد باشند. پروفایلهای ICC و قصد خروجی (output intent) میتوانند با استفاده از متغیرهای pdfaiccprofile و pdfaintent مشخص شوند. همچنین برای اطلاعات بیشتر ConTeXt PDFA را ببینید.
- pdfaiccprofile
- هنگام استفاده همراه با pdfa، پروفایل ICC مورد استفاده در PDF را مشخص میکند، مانند default.cmyk. در صورت نامشخص ماندن، sRGB.icc به عنوان پیشفرض استفاده میشود. میتواند برای افزودن چندین پروفایل تکرار شود. توجه داشته باشید که پروفایلها باید در سیستم در دسترس باشند. آنها را میتوان از ConTeXt ICC Profiles دریافت کرد.
- pdfaintent
- هنگام استفاده همراه با pdfa، قصد خروجی رنگها را مشخص میکند، مانند ISO coated v2 300\letterpercent\space (ECI). اگر نامشخص بماند، sRGB IEC61966-2.1 به عنوان پیشفرض استفاده میشود.
- toc
- گنجاندن فهرست مطالب (همچنین با استفاده از --toc/--table-of-contents قابل تنظیم است)
- urlstyle
- سبک تایپفیس برای پیوندهای فاقد متن پیوند، مانند normal، bold، slanted، boldslanted، type، cap، small
- whitespace
- فاصلهگذاری میان بندها، مانند none، small (با استفاده از setupwhitespace)
- includesource
- گنجاندن تمام اسناد منبع به عنوان پیوستهای فایل در فایل PDF.SS متغیرها برای wkhtmltopdf Pandoc هنگام ایجاد یک PDF با wkhtmltopdf از این متغیرها استفاده میکند. گزینه --css نیز بر خروجی تأثیر میگذارد.
- افزودن اطلاعات به سربرگ و پانویس
- margin-left, margin-right, margin-top, margin-bottom
- تنظیم حاشیههای صفحه
- papersize
- تنظیم اندازه کاغذ PDF
متغیرها برای صفحات man
متغیرها برای Texinfo
متغیرها برای Typst
- template
- قالب Typst برای استفاده (فقط مسیر نسبی).
- margin
- یک دیکشنری با فیلدهای تعریفشده در مستندات Typst: x، y، top، bottom، left، right.
- papersize
- اندازه کاغذ: a4، us-letter و غیره.
- mainfont
- نام قلم سیستمی مورد استفاده به عنوان قلم اصلی.
- fontsize
- اندازه قلم (برای مثال، 12pt).
- section-numbering
- طرحواره مورد استفاده برای شمارهگذاری بخشها، برای مثال 1.A.1.
- page-numbering
- طرحواره مورد استفاده برای شمارهگذاری صفحهها، برای مثال 1 یا i، یا یک رشته خالی برای صرفنظر از شمارهگذاری صفحهها.
- columns
- تعداد ستونها برای متن بدنه.
- thanks
- محتوای پانویس قدردانی پس از عنوان سند
- mathfont, codefont
- نام قلم سیستمی مورد استفاده بهترتیب برای ریاضیات و کد.
- linestretch
- تنظیم فاصله خطوط، برای مثال 1.25، 1.5
- linkcolor, filecolor, citecolor
- رنگ بهترتیب برای پیوندهای خارجی، پیوندهای داخلی و پیوندهای ارجاع: انتظار یک کد رنگ شانزدهشانزدهی (هگزادسیمال) را دارد
متغیرها برای ms
- fontfamily
- A (Avant Garde)، B (Bookman)، C (Helvetica)، HN (Helvetica Narrow)، P (Palatino)، یا T (Times New Roman). این تنظیم بر کد منبع که همواره با استفاده از Courier با عرض ثابت (monospace) نمایش داده میشود، تأثیری ندارد. این قلمهای توکار در پوشش نویسهها محدود هستند. قلمهای اضافی را میتوان با استفاده از اسکریپت install-font.sh که توسط Peter Schaffter ارائه شده و در وبگاه او بهطور مفصل مستند گردیده است، نصب کرد.
- indent
- تورفتگی بند (برای مثال 2m)
- lineheight
- ارتفاع خط (برای مثال 12p)
- pointsize
- اندازه پوینت (برای مثال 10p)
متغیرها برای RTF
- fontsize
- اندازه قلم برای متن بدنه، برای مثال 12pt یا 12.5pt.
متغیرهایی که بهطور خودکار تنظیم میشوند
Pandoc این متغیرها را بهطور خودکار در پاسخ به گزینهها یا محتویات سند تنظیم میکند؛ کاربران نیز میتوانند آنها را تغییر دهند. این متغیرها بسته به قالب خروجی متفاوت بوده و شامل موارد زیر هستند:
- body
- بدنه سند
- date-meta
- متغیر date تبدیلشده به ISO 8601 YYYY-MM-DD، گنجاندهشده در تمام قالبهای مبتنی بر HTML شامل (dzslides، epub، html، html4، html5، revealjs، s5، slideous، slidy). قالبهای شناختهشده برای date عبارتند از: mm/dd/yyyy، mm/dd/yy، yyyy-mm-dd (ISO 8601)، dd MM yyyy (برای مثال 02 Apr 2018 یا 02 April 2018)، MM dd, yyyy (برای مثال Apr. 02, 2018 یا April 02, 2018)، yyyy[mm[dd]] (برای مثال 20180402، 201804 یا 2018).
- header-includes
- محتویات مشخصشده توسط -H/--include-in-header (میتواند دارای چندین مقدار باشد)
- include-before
- محتویات مشخصشده توسط -B/--include-before-body (میتواند دارای چندین مقدار باشد)
- include-after
- محتویات مشخصشده توسط -A/--include-after-body (میتواند دارای چندین مقدار باشد)
- meta-json
- نمایش JSON از تمام فرادادههای سند. مقادیر فیلدها به قالب خروجی انتخابشده تبدیل میشوند.
- numbersections
- مقداری غیرتهی در صورتی که -N/--number-sections مشخص شده باشد
- sourcefile, outputfile
- نام فایلهای مبدأ و مقصد، همانطور که در خط فرمان مشخص شدهاند. sourcefile در صورتی که ورودی از چندین فایل باشد میتواند یک لیست باشد، یا در صورتی که ورودی از stdin باشد خالی باشد. میتوانید از قطعهکد زیر در قالب خود برای تفکیک آنها استفاده کنید:
-
$if(sourcefile)$ $for(sourcefile)$ $sourcefile$ $endfor$ $else$ (stdin) $endif$
به همین ترتیب، اگر خروجی به ترمینال هدایت شود، outputfile میتواند - باشد. اگر به مسیرهای مطلق نیاز دارید، برای مثال از $curdir$/$sourcefile$ استفاده کنید.
- pdf-engine
- نام موتور PDF در صورتی که با استفاده از --pdf-engine مشخص شده باشد، یا موتور پیشفرض برای قالب در صورتی که خروجی PDF درخواست شده باشد.
- curdir
- دایرکتوری کاری که pandoc از آن اجرا میشود.
- pandoc-version
- نسخه pandoc.
- toc
- مقداری غیرتهی در صورتی که --toc/--table-of-contents مشخص شده باشد
- toc-title
- عنوان فهرست مطالب (تنها با EPUB، HTML، revealjs، opendocument، odt، docx، pptx، beamer و LaTeX کار میکند). توجه داشته باشید که در docx و pptx یک toc-title سفارشی از فراداده استخراج میشود، اما نمیتوان آن را به عنوان یک متغیر تنظیم کرد..SH "افزونهها (EXTENSIONS)" رفتار برخی از خوانندهها و نویسندهها را میتوان با فعال یا غیرفعال کردن افزونههای مختلف تنظیم کرد.
یک افزونه میتواند با افزودن +EXTENSION به نام قالب فعال و با افزودن -EXTENSION غیرفعال شود. برای نمونه، --from markdown_strict+footnotes همان Markdown سختگیرانه با پاورقیهای فعال است، در حالی که --from markdown-footnotes-pipe_tables بیانگر Markdown پاندوک بدون پاورقی یا جدولهای لولهای (pipe tables) است.
خواننده و نویسندهٔ Markdown بیشترین استفاده را از افزونهها دارند. بنابراین افزونههایی که تنها توسط آنها استفاده میشوند در بخش Markdown پاندوک در زیر آورده شدهاند (برای commonmark و gfm، گونههای Markdown را ببینید). در ادامه، افزونههایی که برای قالبهای دیگر نیز کار میکنند توضیح داده شدهاند.
توجه داشته باشید که افزونههای Markdown اضافهشده به قالب ipynb، بر سلولهای Markdown در دفترچههای Jupyter تأثیر میگذارند (همانند گزینههای خط فرمان مانند --markdown-headings).
تایپوگرافی (Typography)
افزونه: smart
نقلقولهای مستقیم (straight quotes) را به عنوان نقلقولهای خمیده (curly quotes)، --- را به عنوان خط تیره بلند (em-dash)، -- را به عنوان خط تیره متوسط (en-dash) و ... را به عنوان نشانه تعلیق (ellipses) تفسیر میکند. فاصلههای نشکن پس از برخی اختصارات، مانند “Mr.” درج میشوند.
این افزونه را میتوان برای قالبهای زیر فعال/غیرفعال کرد:
- قالبهای ورودی
- markdown، commonmark، latex، mediawiki، org، rst، twiki، html
- قالبهای خروجی
- markdown، latex، context، org، rst
- بهطور پیشفرض فعال در
- markdown، latex، context (هم ورودی و هم خروجی)
نکته: اگر در حال نوشتن Markdown هستید، افزونهٔ smart اثر معکوس دارد: آنچه نقلقول خمیده بود، بهصورت مستقیم خارج میشود.
در LaTeX، smart به معنای استفاده از بستارهای (ligatures) استاندارد TeX برای علامتهای نقلقول (`` و '' برای نقلقولهای دوتایی، ` و ' برای نقلقولهای تکی) و خطهای تیره (-- برای en-dash و --- برای em-dash) است. اگر smart غیرفعال باشد، پاندوک هنگام خواندن LaTeX این نویسهها را بهصورت لفظی (literal) پردازش خواهد کرد. در هنگام نوشتن LaTeX، فعال کردن smart به pandoc میگوید در صورت امکان از بستارها استفاده کند؛ اگر smart غیرفعال باشد، pandoc از نویسههای یونیکدِ نقلقول و خط تیره استفاده خواهد کرد.
سرعنوانها و بخشها (Headings and sections)
افزونه: auto_identifiers
به سرعنوانی که شناسهٔ صریحاً مشخصشدهای نداشته باشد، بهطور خودکار یک شناسهٔ یکتا بر اساس متن سرعنوان اختصاص داده خواهد شد.
این افزونه را میتوان برای قالبهای زیر فعال/غیرفعال کرد:
- قالبهای ورودی
- markdown، latex، rst، mediawiki، textile، man، typst
- قالبهای خروجی
- markdown، muse
- بهطور پیشفرض فعال در
- markdown، muse، man
الگوریتم پیشفرضی که برای استخراج شناسه از متن سرعنوان استفاده میشود عبارت است از:
- حذف تمام قالببندیها، پیوندها و غیره.
- حذف تمام پاورقیها.
- حذف تمام نویسههای غیرحرفی-عددی، بهجز خط زیر (underscore)، خط تیره و نقطه.
- جایگزین کردن همهٔ فاصلهها و خطوط جدید با خط تیره.
- تبدیل تمام حروف الفبا به حروف کوچک.
- حذف همهچیز تا اولین حرف (شناسهها نباید با عدد یا علامت نگارشی آغاز شوند).
- اگر پس از این چیزی باقی نماند، استفاده از شناسهٔ section.
بنابراین، برای نمونه،
-
Heading Identifier ----------------------------- ----------------------------- Heading identifiers in HTML heading-identifiers-in-html Maître d'hôtel maître-dhôtel *Dogs*?--in *my* house? dogs--in-my-house [HTML], [S5], or [RTF]? html-s5-or-rtf 3. Applications applications 33 section
این قواعد باید در بیشتر موارد به فرد اجازه دهد تا شناسه را از روی متن سرعنوان تعیین کند. استثنا زمانی است که چندین سرعنوان متن یکسانی داشته باشند؛ در این حالت، اولی شناسهای طبق توضیحات بالا دریافت میکند؛ دومی همان شناسه را با پیوست شدن -1 دریافت خواهد کرد؛ سومی با -2؛ و به همین ترتیب.
(با این حال، در صورت فعال بودن gfm_auto_identifiers، الگوریتم متفاوتی استفاده میشود؛ به پایین مراجعه کنید.)
این شناسهها برای ایجاد مقصدهای پیوند در فهرست مطالبی که با گزینهٔ --toc|--table-of-contents تولید میشود، استفاده میشوند. آنها همچنین پیوند دادن از بخشی از سند به بخش دیگر را آسان میکنند. برای نمونه، پیوندی به این بخش ممکن است به این صورت باشد:
-
See the section on [heading identifiers](#heading-identifiers-in-html-latex-and-context).
با این حال توجه داشته باشید که این روش پیوند دادن به بخشها تنها در قالبهای HTML، LaTeX و ConTeXt کار میکند.
اگر گزینهٔ --section-divs مشخص شده باشد، هر بخش درون یک section (یا یک div، اگر html4 مشخص شده باشد) قرار میگیرد، و شناسه بهجای خودِ سرعنوان به برچسب دربرگیرندهٔ <section> (یا <div>) اختصاص مییابد. این ویژگی اجازه میدهد کل بخشها با استفاده از JavaScript دستکاری شوند یا در CSS رفتار متفاوتی با آنها صورت گیرد..SS افزونه: ascii_identifiers باعث میشود شناسههای تولیدشده توسط auto_identifiers کاملاً ASCII باشند. نشانههای اعراب از حروف لاتینِ اعرابدار حذف شده و حروف غیرلاتین نادیده گرفته میشوند.
افزونه: gfm_auto_identifiers
الگوریتم مورد استفاده توسط auto_identifiers را تغییر میدهد تا با روش GitHub منطبق شود. فاصلهها به خط تیره (-)، نویسههای بزرگ به نویسههای کوچک تبدیل شده، و نویسههای نشانهگذاری به جز - و _ حذف میشوند. ایموجیها با نامهایشان جایگزین میشوند.
ورودی ریاضی
افزونههای tex_math_dollars، tex_math_gfm، tex_math_single_backslash و tex_math_double_backslash در بخش مربوط به Pandoc’s Markdown شرح داده شدهاند.
با این حال، میتوان از آنها برای ورودی HTML نیز استفاده کرد. این قابلیت برای نمونه جهت خواندن صفحات وبی که با MathJax قالببندی شدهاند، بسیار کارآمد است.
HTML/TeX خام
افزونههای زیر با جزئیات بیشتر در بخشهای مربوط به خود در Pandoc’s Markdown توضیح داده شدهاند:
- raw_html اجازه میدهد عناصر HTML که در AST پاندوک قابل نمایش نیستند، به صورت HTML خام تجزیه شوند. بهطور پیشفرض، این قابلیت برای ورودی HTML غیرفعال است.
- raw_tex امکان گنجاندن کدهای خام LaTeX، TeX و ConTeXt را در یک سند فراهم میسازد. این افزونه را میتوان علاوه بر markdown برای قالبهای زیر نیز فعال/غیرفعال کرد:
- قالبهای ورودی
- latex، textile، html (تنها محیطها، \ref و \eqref)، ipynb
- قالبهای خروجی
- textile، commonmark
نکته: در مورد ipynb، افزونههای raw_html و raw_tex نه تنها بر TeX خام در سلولهای Markdown، بلکه بر دادههای با نوع mime به صورت text/html در سلولهای خروجی نیز اثر میگذارند. از آنجا که خوانندهٔ ipynb تلاش میکند تا در صورت وجود چند گزینه، غنیترین خروجی ممکن را حفظ کند، اگر هنگام تبدیل به قالبهایی نظیر docx (که اجازهٔ وجود html یا tex خام را نمیدهند) گزینههای raw_html و raw_tex را غیرفعال کنید، بهترین نتیجه را به دست خواهید آورد.
- native_divs باعث میشود عناصر div در HTML به عنوان بلوکهای بومی Div در pandoc تجزیه شوند. اگر میخواهید آنها به صورت HTML خام تجزیه شوند، از -f html-native_divs+raw_html استفاده کنید.
- native_spans باعث میشود عناصر span در HTML به عنوان عناصر درونخطی بومی Span در pandoc تجزیه شوند. اگر میخواهید آنها به صورت HTML خام تجزیه شوند، از -f html-native_spans+raw_html استفاده کنید. اگر مایلید هنگام تبدیل HTML به Markdown تمامی divها و spanها را حذف کنید، میتوانید از pandoc -f html-native_divs-native_spans -t markdown استفاده نمایید.
پشتیبانی از Literate Haskell
افزونه: literate_haskell
سند را به عنوان کد منبع literate Haskell در نظر میگیرد.
این افزونه را میتوان برای قالبهای زیر فعال/غیرفعال کرد:
- قالبهای ورودی
- markdown، rst، latex
- قالبهای خروجی
- markdown، rst، latex، html
اگر +lhs (یا +literate_haskell) را به یکی از قالبهای بالا الحاق کنید، pandoc با سند مانند کد منبع literate Haskell رفتار خواهد کرد. این بدان معناست که:
- در ورودی Markdown، بخشهای “bird track” به جای نقلقولهای بلوکی، به عنوان کد Haskell تجزیه خواهند شد. متن میان \begin{code} و \end{code} نیز به عنوان کد Haskell در نظر گرفته میشود. برای عنوانهای سبک ATX به جای `#' از نویسهٔ `=' استفاده خواهد شد.
- در خروجی Markdown، بلوکهای کد با کلاسهای haskell و literate با استفاده از bird track نمایش داده میشوند، و نقلقولهای بلوکی یک فاصله تورفتگی خواهند داشت تا به عنوان کد Haskell در نظر گرفته نشوند. علاوه بر این، عنوانها به جای سبک ATX (همراه با نویسههای `#' )، به سبک setext (با خط زیرین) رندر خواهند شد. (به این دلیل که ghc نویسههای `#' در ستون اول را به عنوان معرف شماره خط تلقی میکند.)
- در ورودی restructured text، بخشهای “bird track” به عنوان کد Haskell تجزیه میشوند.
- در خروجی restructured text، بلوکهای کد دارای کلاس haskell با استفاده از bird track رندر میشوند.
- در ورودی LaTeX، متن درون محیطهای code به عنوان کد Haskell تجزیه خواهد شد.
- در خروجی LaTeX، بلوکهای کد با کلاس haskell درون محیطهای code رندر خواهند شد.
- در خروجی HTML، بلوکهای کد با کلاس haskell با کلاس literatehaskell و نشانههای bird track رندر میشوند.
مثالها:
-
pandoc -f markdown+lhs -t html
کد منبع literate Haskell قالببندیشده با قراردادهای Markdown را میخواند و HTML معمولی (بدون bird track) مینویسد.
-
pandoc -f markdown+lhs -t html+lhs
خروجی HTML را با کدهای Haskell در قالب bird track مینویسد، تا بتوان آن را به عنوان کد منبع literate Haskell کپی و جایگذاری کرد.
توجه داشته باشید که GHC انتظار دارد bird trackها در ستون اول باشند، بنابراین بلوکهای کد literate تورفته (برای نمونه درون یک محیط فهرستبندیشده) توسط کامپایلر Haskell شناسایی نخواهند شد..SS سایر افزونهها
افزونه: empty_paragraphs
پاراگرافهای خالی را مجاز میکند. بهطور پیشفرض، پاراگرافهای خالی حذف میشوند.
این افزونه میتواند برای قالبهای زیر فعال/غیرفعال شود:
- قالبهای ورودی
- docx، html
- قالبهای خروجی
- docx، odt، opendocument، html، latex
افزونه: native_numbering
شمارهگذاری شکلها و جدولها را از طریق فیلدهای شمارندهٔ مختص به قالب مقصد فعال میکند. این افزونه میتواند برای قالبهای زیر فعال/غیرفعال شود:
- قالبهای خروجی
- odt، opendocument، docx
اگر این افزونه فعال نباشد، جدولها و شکلها در این قالبها شمارهگذاری نخواهند شد.
افزونه: xrefs_name
پیوندها به سرفصلها، شکلها و جدولهای درون سند با ارجاعهای متقابلی جایگزین میشوند که از نام یا عنوان موردِ ارجاعشده استفاده خواهند کرد. متن اصلی پیوند پس از تازهسازی (refresh) سند تولیدشده جایگزین میشود. این افزونه میتواند با xrefs_number ترکیب شود که در این صورت شمارهها پیش از نام ظاهر خواهند شد.
متن موجود در ارجاعهای متقابل تنها پس از تازهسازی سند با موردِ ارجاعشده یکدست و هماهنگ میشود.
این افزونه میتواند برای قالبهای زیر فعال/غیرفعال شود:
- قالبهای خروجی
- odt، opendocument
افزونه: xrefs_number
پیوندها به سرفصلها، شکلها و جدولهای درون سند با ارجاعهای متقابلی جایگزین میشوند که از شمارهٔ موردِ ارجاعشده استفاده خواهند کرد. متن اصلی پیوند نادیده گرفته میشود. این افزونه میتواند با xrefs_name ترکیب شود که در این صورت نام یا عنوان پس از شماره ظاهر خواهد شد.
برای اینکه xrefs_number مفید واقع شود، شمارهگذاری سرفصلها باید در سند تولیدشده فعال باشد، همچنین عنوانهای جدول و شکل نیز باید برای مثال با استفاده از افزونهٔ native_numbering فعال شده باشند.
شمارهها در ارجاعهای متقابل تنها پس از تازهسازی سند نهایی قابل مشاهده خواهند بود.
این افزونه میتواند برای قالبهای زیر فعال/غیرفعال شود:
- قالبهای خروجی
- odt، opendocument
افزونه: styles
هنگام تبدیل از docx، ویژگیهای custom-styles را برای همهٔ سبکهای docx اضافه میکند، صرفنظر از اینکه pandoc معنای این سبکها را متوجه شود یا خیر. از آنجا که ویژگیها را نمیتوان مستقیماً به پاراگرافها یا متن در AST پاندوک اضافه کرد، سبکهای پاراگراف موجب ایجاد Divها و سبکهای نویسه موجب ایجاد Spanها برای نگهداشتن ویژگیها میشوند. (سبکهای جدول مستقیماً به عناصر Table اضافه خواهند شد.) این افزونه میتواند همراه با سبکهای سفارشی docx استفاده شود.
- قالبهای ورودی
- docx
افزونه: amuse
در قالب ورودی muse، این افزونه قابلیتهای Text::Amuse را برای نشانهگذاری Emacs Muse فعال میکند.
افزونه: raw_markdown
در قالب ورودی ipynb، این افزونه باعث میشود سلولهای Markdown بهجای تجزیه شدن، بهصورت بلوکهای خام Markdown گنجانده شوند (که امکان تبدیل رفتوبرگشت بدون اتلاف داده را فراهم میسازد). تنها زمانی از این گزینه استفاده کنید که مقصد شما ipynb یا یک قالب خروجی مبتنی بر Markdown باشد.
افزونه: citations (typst)
هنگامی که افزونهٔ citations در typst فعال باشد (همانطور که بهطور پیشفرض فعال است)، ارجاعات typst بهصورت ارجاعات بومی pandoc تجزیه شده و ارجاعات بومی pandoc بهصورت ارجاعات typst نمایش داده میشوند.
افزونه: citations (org)
هنگامی که افزونهٔ citations در org فعال باشد، ارجاعات به سبک org-cite و org-ref بهصورت ارجاعات بومی pandoc تجزیه شده و از ارجاعات org-cite برای نمایش ارجاعات بومی pandoc استفاده خواهد شد.
افزونه: citations (docx)
هنگامی که citations در docx فعال باشد، ارجاعات درجشده توسط پلاگینهای Zotero ،Mendeley یا EndNote بهصورت ارجاعات بومی pandoc تجزیه خواهند شد. (در غیر این صورت، ارجاعات قالببندیشده که توسط نرمافزارهای کتابشناختی ایجاد شدهاند، بهصورت متن معمولی تجزیه میشوند.)
افزونه: fancy_lists (org)
برخی از جنبههای لیستهای پیشرفتهٔ Markdown در Pandoc در ورودی org نیز پذیرفته میشوند که عملکرد گزینهٔ org-list-allow-alphabetical در Emacs را شبیهسازی میکند. همانند Org Mode، فعال کردن این افزونه به نشانگرهای الفبایی کوچک و بزرگ برای لیستهای مرتب اجازه میدهد علاوه بر اعداد معمولی تجزیه شوند. توجه داشته باشید که برای Org، این شامل اعداد رومی یا نشانگر جانگهدار # که توسط این افزونه در Pandoc Markdown فعال میشوند، نخواهد بود.
افزونه: element_citations
در قالبهای خروجی jats، این افزونه باعث میشود موارد ارجاع با عناصر <element-citation> جایگزین شوند. این عناصر تحت تأثیر سبکهای CSL قرار نمیگیرند، اما تمام اطلاعات مربوط به آن مورد درون برچسبها گنجانده میشود.
افزونه: ntb
در قالب خروجی context، این افزونه استفاده از Natural Tables (TABLE) را بهجای Extreme Tables (xtables) پیشفرض فعال میکند. جدولهای Natural امکان سفارشیسازی سراسری دقیقتری را فراهم میسازند، اما در مقایسه با جدولهای extreme با کاهش کارایی و افت عملکرد همراهاند.
افزونه: smart_quotes (org)
هنگام تجزیه، گیومههای مستقیم (straight quotes) را بهصورت گیومههای خمیده (curly quotes) تفسیر میکند. هنگام نوشتن Org، افزونهٔ smart_quotes اثر معکوس دارد: آنچه قرار بود گیومهٔ خمیده باشد بهصورت مستقیم خارج میشود.
در صورت فعال بودن smart، این افزونه نیز بهطور خودکار اعمال خواهد شد..SS افزونه: special_strings (org) تفسیر --- بهصورت خط تیره بلند (em-dash)، -- بهصورت خط تیره متوسط (en-dash)، \- بهصورت خط پیوند اختیاری (shy hyphen)، و ... بهصورت سهنقطه (ellipses).
اگر smart فعال باشد، این افزونه نیز بهطور ضمنی اعمال میشود.
افزونه: tagging
فعالسازی این افزونه با خروجی context، نشانهگذاری مناسبی برای تولید PDFهای برچسبدار (tagged PDFs) ایجاد میکند. این شامل نشانگرهای اضافی برای بندها و نشانهگذاری جایگزین برای متنهای تأکیدشده است. در صورت فعال بودن این افزونه، متغیر الگوی emphasis-command مقداردهی میشود.
مارکداون پاندوک (PANDOC’S MARKDOWN)
پاندوک نحو گسترشیافته و اندکی بازنگریشدهای از نحو Markdown جان گروبر (John Gruber) را پشتیبانی میکند. این سند نحو مربوطه را توضیح داده و تفاوتهای آن با Markdown اصلی را مشخص میکند. بهجز مواردی که ذکر شده، میتوان این تفاوتها را با استفاده از قالب markdown_strict به جای markdown غیرفعال کرد. افزونهها را میتوان فعال یا غیرفعال کرد تا رفتار برنامه با جزئیات دقیقتری تنظیم شود. این موارد در ادامه شرح داده شدهاند. همچنین برای افزونههایی که روی قالبهای دیگر نیز کار میکنند، بخش افزونهها (Extensions) در بالا را ببینید.
فلسفه
مارکداون بهگونهای طراحی شده است که نوشتن آن آسان، و از آن مهمتر، خواندنش راحت باشد:
یک سند با قالببندی Markdown باید بتواند بدون تغییر و بهصورت متن ساده منتشر شود، بدون آنکه به نظر برسد با برچسبها یا دستورالعملهای قالببندی نشانهگذاری شده است.
– جان گروبر (John Gruber)
این اصل، راهنمای تصمیمهای pandoc در طراحی نحو برای جدولها، پانویسها و سایر افزونهها بوده است.
با این حال، از یک جهت اهداف pandoc با اهداف اولیه Markdown متفاوت است. در حالی که Markdown در ابتدا با هدف تولید HTML طراحی شده بود، pandoc برای چندین قالب خروجی گوناگون طراحی شده است. بنابراین، اگرچه pandoc درج HTML خام را مجاز میداند، اما استفاده از آن را توصیه نمیکند و روشهای غیر-HTML دیگری را برای نمایش عناصر مهم سند مانند فهرستهای تعاریف، جدولها، فرمولهای ریاضی و پانویسها ارائه میدهد.
بندها
یک بند (پاراگراف) از یک یا چند خط متن تشکیل شده که پس از آن یک یا چند خط خالی قرار دارد. شکستهای خط (Newlines) بهصورت فاصله در نظر گرفته میشوند، بنابراین میتوانید بندهای خود را به دلخواه بازچینی کنید. اگر به شکست سطر اجباری (hard line break) نیاز دارید، دو یا چند فاصله در انتهای خط قرار دهید.
افزونه: escaped_line_breaks
یک بکاسلش که بلافاصله پس از آن خط جدید بیاید نیز یک شکست سطر اجباری است. نکته: در سلولهای جدولهای چندخطی و شبکهای، این تنها روش برای ایجاد شکست سطر اجباری است، زیرا فاصلههای انتهایی در سلولها نادیده گرفته میشوند.
سرعنوانها
دو نوع سرعنوان وجود دارد: Setext و ATX.
سرعنوانهای سبک Setext
یک سرعنوان به سبک setext، سطری از متن است که با ردیفی از علامتهای = (برای سرعنوان سطح یک) یا علامتهای - (برای سرعنوان سطح دو) زیرخطدار شده است:
-
A level-one heading =================== A level-two heading -------------------
متن سرعنوان میتواند حاوی قالببندی درونخطی باشد، مانند تأکید (بخش قالببندی درونخطی را در زیر ببینید).
سرعنوانهای سبک ATX
یک سرعنوان به سبک ATX شامل یک تا شش علامت # و یک سطر متن است که به صورت اختیاری میتواند با هر تعداد علامت # به پایان برسد. تعداد علامتهای # در ابتدای سطر، سطح سرعنوان را تعیین میکند:
-
## A level-two heading ### A level-three heading ###
همانند سرعنوانهای سبک setext، متن سرعنوان میتواند شامل قالببندی باشد:
-
# A level-one heading with a [link](/url) and *emphasis*
افزونه: blank_before_header
نحو اصلی Markdown نیازی به خط خالی پیش از سرعنوان ندارد. پاندوک به این خط خالی نیاز دارد (البته بهجز ابتدای سند). علت این الزام آن است که احتمال قرار گرفتن تصادفی علامت # در ابتدای سطر (مثلاً در اثر شکست سطرها) بسیار بالاست. برای مثال، این مورد را در نظر بگیرید:
-
I like several of their flavors of ice cream: #22, for example, and #5.
افزونه: space_in_atx_header
بسیاری از پیادهسازیهای Markdown نیازی به فاصله بین علامتهای ابتدایی # در سرعنوان ATX و متن سرعنوان ندارند، بهطوری که #5 bolt و #hashtag سرعنوان به حساب میآیند. با این افزونه، pandoc وجود فاصله را الزامی میداند.
شناسههای سرعنوان
همچنین افزونهٔ auto_identifiers در بالا را ببینید.
افزونه: header_attributes
میتوان با استفاده از این نحو در انتهای سطری که حاوی متن سرعنوان است، به سرعنوانها صفتها را اختصاص داد:
-
{#identifier .class .class key=value key=value}
بنابراین، برای نمونه، به تمام سرعنوانهای زیر شناسهٔ foo اختصاص داده خواهد شد:
-
# My heading {#foo} ## My heading ## {#foo} My other heading {#foo} ---------------
(این نحو با PHP Markdown Extra سازگار است.)
توجه داشته باشید اگرچه این نحو امکان انتساب کلاسها و صفتهای کلید/مقدار را فراهم میکند، اما نویسندهها (writers) معمولاً از همه این اطلاعات استفاده نمیکنند. شناسهها، کلاسها و صفتهای کلید/مقدار در HTML و قالبهای مبتنی بر HTML مانند EPUB و slidy استفاده میشوند. شناسهها برای برچسبها و لنگرهای پیوند در نویسندههای LaTeX، ConTeXt، Textile، نشانهگذاری Jira و AsciiDoc کاربرد دارند.
سرعنوانهای دارای کلاس unnumbered شمارهگذاری نخواهند شد، حتی اگر --number-sections مشخص شده باشد. یک خط تیره منفرد (-) در بستر صفتها معادل .unnumbered بوده و در اسناد غیرانگلیسی ترجیح داده میشود. بنابراین،
-
# My heading {-}
دقیقاً معادل این است:
-
# My heading {.unnumbered}
اگر علاوه بر unnumbered، کلاس unlisted نیز درج شده باشد، سرعنوان در فهرست مطالب قرار نخواهد گرفت. (در حال حاضر این ویژگی تنها برای برخی قالبها پیادهسازی شده است: قالبهای مبتنی بر LaTeX و HTML، و همچنین PowerPoint و RTF.).SS افزونه: implicit_header_references دستور Pandoc طوری رفتار میکند که گویی برای هر سرتیتر، پیوندهای ارجاعی تعریف شده است. بنابراین، برای پیوند دادن به یک سرتیتر
-
# Heading identifiers in HTML
میتوانید به سادگی بنویسید
-
[Heading identifiers in HTML]
یا
-
[Heading identifiers in HTML][]
یا
-
[the section on heading identifiers][heading identifiers in HTML]
بهجای اینکه شناسه را بهطور صریح مشخص کنید:
-
[Heading identifiers in HTML](#heading-identifiers-in-html)
اگر چندین سرتیتر با متن یکسان وجود داشته باشد، ارجاع مربوطه تنها به اولین مورد پیوند میدهد، و برای پیوند به سایر موارد، همانطور که در بالا توضیح داده شد، باید از پیوندهای صریح استفاده کنید.
مانند پیوندهای ارجاعی معمول، این ارجاعها به بزرگی و کوچکی حروف حساس نیستند.
تعاریف صریح پیوند ارجاعی همواره نسبت به ارجاعهای ضمنی سرتیتر در اولویت قرار دارند. بنابراین، در مثال زیر، پیوند به bar اشاره خواهد کرد، نه به #foo:
-
# Foo [foo]: bar See [foo]
نقلقولهای بلوکی (Block quotations)
قالب Markdown از قواعد رایانامه (ایمیل) برای نقلقول بلوکهای متنی استفاده میکند. یک نقلقول بلوکی شامل یک یا چند بند یا دیگر عناصر بلوکی (مانند فهرستها یا سرتیترها) است، بهطوری که در ابتدای هر سطر یک نویسه > و یک فاصله اختیاری قرار میگیرد. (لازم نیست > دقیقاً از حاشیه چپ آغاز شود، اما نباید بیش از سه فاصله دندانهدار شود.)
-
> This is a block quote. This > paragraph has two lines. > > 1. This is a list inside a block quote. > 2. Second item.
حالت “تنبل” (lazy)، که تنها در سطر نخست هر بلوک به نویسه > نیاز دارد نیز مجاز است:
-
> This is a block quote. This paragraph has two lines. > 1. This is a list inside a block quote. 2. Second item.
در میان عناصر بلوکی که میتوانند در یک نقلقول بلوکی قرار گیرند، نقلقولهای بلوکی دیگر نیز وجود دارند. بدین معنی که نقلقولهای بلوکی میتوانند تودرتو باشند:
-
> This is a block quote. > > > A block quote within a block quote.
اگر پس از نویسه > یک فاصله اختیاری بیاید، آن فاصله بخشی از نشانگر نقلقول بلوکی به شمار میآید و نه بخشی از دندانهگذاری محتوا. بنابراین، برای قرار دادن یک بلوک کد دندانهدار در یک نقلقول بلوکی، به پنج فاصله پس از > نیاز دارید:
-
> code
افزونه: blank_before_blockquote
دستور زبان اصلی Markdown به یک سطر خالی پیش از نقلقول بلوکی نیاز ندارد. اما Pandoc به این سطر خالی نیاز دارد (البته به جز در ابتدای سند). دلیل این الزام آن است که احتمال دارد نویسه > بهطور تصادفی (شاید به دلیل شکستن خودکار سطرها) در ابتدای یک سطر قرار گیرد. بنابراین، مگر در صورتی که از قالب markdown_strict استفاده شود، مورد زیر در pandoc یک نقلقول بلوکی تودرتو تولید نمیکند:
-
> This is a block quote. >> Not nested, since `blank_before_blockquote` is enabled by default
بلوکهای کد عیناللفظی (Verbatim)
بلوکهای کد دندانهدار (Indented code blocks)
بلوکی از متن که به اندازه چهار فاصله (یا یک تب) دندانهدار شده باشد، به عنوان متن عیناللفظی (verbatim) در نظر گرفته میشود: به این معنا که نویسههای ویژه باعث اعمال قالببندی خاصی نمیشوند، و تمامی فاصلهها و شکستهای سطر حفظ میگردند. برای مثال،
-
if (a > 3) { moveShip(5 * gravity, DOWN); }
دندانهگذاری اولیه (چهار فاصله یا یک تب) بخشی از متن verbatim به شمار نمیآید و در خروجی حذف میشود.
نکته: سطرهای خالی درون متن عیناللفظی نیازی به شروع با چهار فاصله ندارند..SS بلوکهای کد محصور (Fenced code blocks)
افزونه: fenced_code_blocks
علاوه بر بلوکهای کد تورفتهٔ استاندارد، pandoc از بلوکهای کد محصور نیز پشتیبانی میکند. این بلوکها با سطری شامل سه یا چند تیلدا (~) آغاز میشوند و با سطری از تیلداها پایان مییابند که باید حداقل به اندازهٔ سطر آغازین طولانی باشد. تمام آنچه بین این خطوط قرار گیرد به عنوان کد در نظر گرفته میشود. هیچ تورفتگی لازم نیست:
-
~~~~~~~ if (a > 3) { moveShip(5 * gravity, DOWN); } ~~~~~~~
مانند بلوکهای کد معمولی، بلوکهای کد محصور نیز باید با خطوط خالی از متن اطراف جدا شوند.
اگر خود کد حاوی سطری از تیلداها یا بکتیکها باشد، کافی است از سطر طولانیتری از تیلداها یا بکتیکها در ابتدا و انتها استفاده کنید:
-
~~~~~~~~~~~~~~~~ ~~~~~~~~~~ code including tildes ~~~~~~~~~~ ~~~~~~~~~~~~~~~~
افزونه: backtick_code_blocks
مشابه fenced_code_blocks است، اما به جای تیلدا (~) از بکتیک (`) استفاده میکند.
افزونه: fenced_code_attributes
در صورت تمایل، میتوانید با استفاده از این نحو، ویژگیهایی را به بلوک کد محصور یا با بکتیک ضمیمه کنید:
-
~~~~ {#mycode .haskell .numberLines startFrom="100"} qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
در اینجا mycode یک شناسه، haskell و numberLines کلاس، و startFrom یک ویژگی با مقدار 100 است. برخی از قالبهای خروجی میتوانند از این اطلاعات برای انجام برجستهسازی نحو (syntax highlighting) استفاده کنند. در حال حاضر، تنها قالبهای خروجی که از این اطلاعات استفاده میکنند عبارتند از HTML، LaTeX، Docx، Ms و PowerPoint. اگر برجستهسازی برای قالب خروجی و زبان شما پشتیبانی شود، بلوک کد بالا به صورت برجستهشده و با خطوط شمارهگذاریشده نمایش داده خواهد شد. (برای مشاهدهٔ اینکه کدام زبانها پشتیبانی میشوند، دستور pandoc --list-highlight-languages را وارد کنید.) در غیر این صورت، بلوک کد بالا به شکل زیر ظاهر خواهد شد:
-
<pre id="mycode" class="haskell numberLines" startFrom="100"> <code> ... </code> </pre>
کلاس numberLines (یا number-lines) باعث شمارهگذاری خطوط بلوک کد میشود که از 1 یا مقدار ویژگی startFrom آغاز میگردد. کلاس lineAnchors (یا line-anchors) باعث میشود خطوط در خروجی HTML به صورت لنگرهای قابل کلیک درآیند.
همچنین میتوان از یک شکل میانبر برای مشخص کردن زبان بلوک کد استفاده کرد:
-
```haskell qsort [] = [] ```
این معادل است با:
-
``` {.haskell} qsort [] = [] ```
این شکل میانبر را میتوان با ویژگیها نیز ترکیب کرد:
-
```haskell {.numberLines} qsort [] = [] ```
که معادل است با:
-
``` {.haskell .numberLines} qsort [] = [] ```
اگر افزونهٔ fenced_code_attributes غیرفعال باشد، اما ورودی شامل ویژگی(های) کلاس برای بلوک کد باشد، اولین ویژگی کلاس بعد از حصار آغازین به صورت یک کلمهٔ ساده چاپ خواهد شد.
برای جلوگیری از تمام برجستهسازیها، از گزینهٔ --syntax-highlighting=none استفاده کنید. برای تنظیم سبک یا شیوهٔ برجستهسازی، از --syntax-highlighting استفاده کنید. برای اطلاعات بیشتر در مورد برجستهسازی، بخش «برجستهسازی نحو (Syntax highlighting)» را در ادامه ببینید.
بلوکهای خطی (Line blocks)
افزونه: line_blocks
بلوک خطی دنبالهای از خطوط است که با یک خط عمودی (|) و به دنبال آن یک فاصله آغاز میشود. تقسیمبندی به خطوط، و همچنین فاصلههای ابتدایی، در خروجی حفظ خواهند شد؛ در غیر این صورت، خطوط به صورت Markdown قالببندی میشوند. این ویژگی برای ابیات شعر و نشانیها سودمند است:
-
| The limerick packs laughs anatomical | In space that is quite economical. | But the good ones I've seen | So seldom are clean | And the clean ones so seldom are comical | 200 Main St. | Berkeley, CA 94718
در صورت نیاز، خطوط میتوانند شکست سخت (hard-wrap) داشته باشند، اما سطر ادامهیافته باید با یک فاصله آغاز شود.
-
| The Right Honorable Most Venerable and Righteous Samuel L. Constable, Jr. | 200 Main St. | Berkeley, CA 94718
قالببندی درونخطی (مانند تأکید) در محتوا مجاز است (اگرچه نمیتواند از مرزهای خط عبور کند). قالببندی در سطح بلوک (مانند نقلقولهای بلوکی یا فهرستها) شناخته نمیشود.
این نحو از reStructuredText به امانت گرفته شده است..SS "فهرستها (Lists)"
فهرستهای نشانهدار (Bullet lists)
یک فهرست نشانهدار فهرستی از موارد نشانهدار است. یک مورد از فهرست نشانهدار با یک نشانه (*، +، یا -) آغاز میشود. در اینجا یک مثال ساده آورده شده است:
-
* one * two * three
این کار یک فهرست “فشرده” تولید میکند. اگر یک فهرست “باز” میخواهید که در آن هر مورد به صورت یک پاراگراف قالببندی شود، بین موارد خطوط خالی قرار دهید:
-
* one * two * three
نیازی نیست که نشانهها حتماً همتراز با حاشیه سمت چپ باشند؛ آنها میتوانند یک، دو، یا سه فاصله تورفتگی داشته باشند. پس از هر نشانه باید نویسه فاصله (whitespace) قرار گیرد.
موارد فهرست زمانی بهترین ظاهر را دارند که خطوط بعدی با خط اول (پس از نشانه) همتراز باشند:
-
* here is my first list item. * and my second.
اما Markdown یک ساختار “تنبل” را نیز مجاز میداند:
-
* here is my first list item. * and my second.
محتوای بلوکی در موارد فهرست (Block content in list items)
یک مورد فهرست میتواند شامل چندین پاراگراف و سایر محتواهای سطح بلوک (block-level) باشد. با این حال، پیش از پاراگرافهای بعدی باید یک خط خالی وجود داشته باشد و بهگونهای تورفتگی داشته باشند که با اولین محتوای غیرفاصله پس از نشانگر فهرست همتراز شوند.
-
* First paragraph. Continued. * Second paragraph. With a code block, which must be indented eight spaces: { code }
استثنا: اگر پس از نشانگر فهرست یک بلوک کد تورفته قرار گیرد که باید ۵ فاصله پس از نشانگر فهرست شروع شود، در این صورت پاراگرافهای بعدی باید دو ستون پس از آخرین نویسه نشانگر فهرست آغاز شوند:
-
* code continuation paragraph
موارد فهرست میتوانند شامل فهرستهای دیگری نیز باشند. در این حالت خط خالی قبلی اختیاری است. فهرست تودرتو باید طوری تورفتگی داشته باشد که با اولین نویسه غیرفاصله پس از نشانگر فهرستِ دربرگیرنده همتراز شود.
-
* fruits + apples - macintosh - red delicious + pears + peaches * vegetables + broccoli + chard
همانطور که در بالا اشاره شد، Markdown به شما امکان میدهد موارد فهرست را به جای ایجاد تورفتگی در خطوط ادامهدهنده، به صورت “تنبل” بنویسید. با این حال، اگر چندین پاراگراف یا بلوکهای دیگر در یک مورد فهرست وجود داشته باشد، خط اول هر کدام باید دارای تورفتگی باشد.
-
+ A lazy, lazy, list item. + Another one; this looks bad but is legal. Second paragraph of second list item.
فهرستهای مرتب (Ordered lists)
فهرستهای مرتب دقیقاً مشابه فهرستهای نشانهدار کار میکنند، با این تفاوت که موارد به جای نشانهها با شمارهگذارها شروع میشوند.
در Markdown اصلی، شمارهگذارها اعداد دهدهی هستند که پس از آنها یک نقطه و یک فاصله قرار میگیرد. خود اعداد نادیده گرفته میشوند، بنابراین تفاوتی بین این فهرست:
-
1. one 2. two 3. three
و این یکی وجود ندارد:
-
5. one 7. two 1. three برخلاف Markdown اصلی، pandoc به آیتمهای لیست مرتب اجازه میدهد علاوه بر ارقام عربی، با حروف بزرگ و کوچک و اعداد رومی نیز مشخص شوند. نشانگرهای لیست ممکن است درون پرانتز قرار گیرند یا پس از آنها یک تکپرانتز راست یا نقطه بیاید. آنها باید از متنی که در ادامه میآید با حداقل یک فاصله جدا شوند، و اگر نشانگر لیست یک حرف بزرگ همراه با نقطه باشد، با حداقل دو فاصله.
افزونهی fancy_lists همچنین امکان استفاده از `#' را به عنوان نشانگر لیست مرتب به جای عدد فراهم میکند:
-
#. one #. two
نکته: نشانگر لیست مرتب `#' با commonmark کار نمیکند.
همانند commonmark، زیرلیستهای مرتب باید با 1 یا معادل آن (مانند i یا a) شروع شوند. این کار به جلوگیری از ایجاد ناخواستهی لیستها بر اثر مواردی مانند تاریخهای درون پرانتز کمک میکند.
افزونه: startnum
همچنین pandoc به نوع نشانگر لیست استفادهشده و عدد شروع توجه میکند، و هر دوی این موارد در صورت امکان در قالب خروجی حفظ میشوند. بنابراین، مورد زیر لیستی با اعداد همراه با یک تکپرانتز، با شروع از 9، و یک زیرلیست با اعداد رومی کوچک ایجاد میکند:
-
9) Ninth 10) Tenth 11) Eleventh i. subone ii. subtwo iii. subthree
pandoc هر بار که نوع متفاوتی از نشانگر لیست استفاده شود، لیست جدیدی را آغاز خواهد کرد. بنابراین، مورد زیر سه لیست ایجاد میکند:
-
(2) Two (5) Three 1. Four * Five
اگر نشانگرهای پیشفرض لیست مد نظر است، از #. استفاده کنید:
-
#. one #. two #. three
افزونه: task_lists
pandoc از لیستهای وظایف، با استفاده از نحو GitHub-Flavored Markdown پشتیبانی میکند.
-
- [ ] an unchecked task list item - [x] checked item
لیستهای تعاریف (Definition lists)
افزونه: definition_lists
pandoc از لیستهای تعاریف، با استفاده از نحو PHP Markdown Extra به همراه برخی افزونهها پشتیبانی میکند.
-
Term 1 : Definition 1 Term 2 with *inline markup* : Definition 2 { some code, part of Definition 2 } Third paragraph of definition 2.
هر اصطلاح باید در یک خط جا بگیرد، که میتواند بهصورت اختیاری با یک خط خالی دنبال شود، و باید یک یا چند تعریف به دنبال آن بیاید. یک تعریف با دونقطه یا تیلدا آغاز میشود، که میتواند با یک یا دو فاصله تورفتگی داشته باشد.
یک اصطلاح میتواند چندین تعریف داشته باشد، و هر تعریف میتواند از یک یا چند عنصر بلوکی تورفته (پاراگراف، بلوک کد، لیست و غیره) تشکیل شود. بلوکهای درون تعریف باید به اندازهی ستونِ نخستین محتوای غیرفاصلهای پس از نشانگر : یا ~ تورفتگی داشته باشند، یا (در صورتی که افزونهی four_space_rule فعال باشد) چهار فاصله یا یک پرش تب. همانند سایر لیستهای Markdown، میتوانید تورفتگی را در خطوط ادامهی پاراگراف بهصورت «تنبلانه» (“lazily”) نادیده بگیرید:
-
Term 1 : Definition with lazy continuation. Second paragraph of the definition.
اگر قبل از تعریف فاصله بگذارید (مانند مثال بالا)، متن تعریف به عنوان یک پاراگراف در نظر گرفته خواهد شد. در برخی از قالبهای خروجی، این امر به معنای فاصلهی بیشتر میان جفتهای اصطلاح/تعریف خواهد بود. برای داشتن یک لیست تعاریف فشردهتر، فاصلهی قبل از تعریف را حذف کنید:
-
Term 1 ~ Definition 1 Term 2 ~ Definition 2a ~ Definition 2b
توجه داشته باشید که وجود فاصله میان موارد در یک لیست تعاریف الزامی است..SS فهرستهای مثال شمارهگذاریشده
افزونه: example_lists
نشانگر ویژهٔ فهرست @ میتواند برای مثالهای شمارهگذاریشدهٔ متوالی استفاده شود. نخستین مورد فهرست دارای نشانگر @ با «1»، مورد بعدی با «2»، و به همین ترتیب در سرتاسر سند شمارهگذاری خواهد شد. نیازی نیست مثالهای شمارهگذاریشده در یک فهرست واحد قرار گیرند؛ هر فهرست جدیدی که از @ استفاده کند، شمارهگذاری را از جایی که فهرست پیشین متوقف شده بود پی خواهد گرفت. بنابراین، برای نمونه:
-
(@) My first example will be numbered (1). (@) My second example will be numbered (2). Explanation of examples. (@) My third example will be numbered (3).
مثالهای شمارهگذاریشده میتوانند برچسبگذاری شده و در جاهای دیگر سند مورد ارجاع قرار گیرند:
-
(@good) This is a good example. As (@good) illustrates, ...
برچسب میتواند هر رشتهای از نویسههای الفبایی-عددی، خط زیر یا خط تیره باشد.
بندهای ادامهدار در فهرستهای مثال باید فارغ از طول نشانگر فهرست، همواره به اندازهٔ چهار فاصله دندانهدار شوند. بدین معنا که فهرستهای مثال همواره به گونهای عمل میکنند که گویی افزونهٔ four_space_rule فعال است. چرا که برچسبهای مثال معمولاً طولانی هستند و دندانهدار کردن محتوا تا نخستین نویسهٔ غیرفاصله پس از برچسب، نامناسب و دشوار خواهد بود.
میتوانید با استفادهٔ مجدد از برچسب یک مثال شمارهگذاریشدهٔ پیشین، آن را تکرار کنید:
-
(@foo) Sample sentence. Intervening text... This theory can explain the case we saw earlier (repeated): (@foo) Sample sentence.
با این حال، این شیوه تنها در صورتی بهطور قابلاتکا عمل میکند که مورد تکرارشده به تنهایی در یک فهرست باشد، زیرا هر فهرست مثال شمارهگذاریشده بهصورت پیوسته از شمارهٔ آغازین خود شمارهگذاری خواهد شد.
پایان دادن به یک فهرست
اگر بخواهید یک بلوک کد دندانهدار را پس از یک فهرست قرار دهید چه میشود؟
-
- item one - item two { my code block }
مشکل! در اینجا pandoc (مانند سایر پیادهسازیهای Markdown) با { my code block } مانند بند دوم از مورد دوم رفتار میکند، نه به عنوان یک بلوک کد.
برای «قطع کردن» فهرست پس از مورد دوم، میتوانید مقداری محتوای بدون دندانهگذاری، مانند یک توضیح HTML وارد کنید که خروجی قابل مشاهدهای در هیچ قالبی تولید نمیکند:
-
- item one - item two <!-- end of list --> { my code block }
اگر به جای یک فهرست بزرگ، دو فهرست پیاپی میخواهید، میتوانید از همین ترفند بهره ببرید:
-
1. one 2. two 3. three <!-- --> 1. uno 2. dos 3. tres
خطوط افقی
سطری شامل ردیفی از سه یا چند نویسهٔ *، -، یا _ (که به صورت اختیاری با فاصله از هم جدا شدهاند) یک خط افقی ایجاد میکند:
-
* * * * ---------------
اکیداً توصیه میکنیم که خطوط افقی را با خطهای خالی از متنهای پیرامون جدا کنید. اگر پس از یک خط افقی، خط خالی قرار نگیرد، pandoc ممکن است خطوط بعدی را به عنوان یک بلوک فرادادهٔ YAML یا یک جدول تفسیر کند.
جدولها
میتوان از چهار نوع جدول استفاده کرد. سه نوع نخست (ساده، چندخطی و شبکهای) نیازمند تراز کردن ستونها هستند و بنابراین استفاده از یک قلم با عرض ثابت، مانند Courier را پیشفرض میگیرند. نوع چهارم (جدولهای پایپ یا pipe tables) را میتوان با قلمهایی با فاصلهٔ متناسب به کار برد، زیرا نیازی به تراز کردن ستونها ندارد.
افزونه: table_captions
میتوان به صورت اختیاری برای هر ۴ نوع جدول، یک عنوان (caption) مشخص کرد (همانطور که در مثالهای زیر نشان داده شده است). عنوان، بندی است که با رشتهٔ Table: (یا table: یا صرفاً :) آغاز میشود؛ این رشته از ابتدا حذف خواهد شد. این عنوان میتواند پیش یا پس از جدول ظاهر شود..SS افزونه: simple_tables جدولهای ساده بدین شکل هستند:
-
Right Left Center Default ------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 Table: Demonstration of simple table syntax.
سربرگ و ردیفهای جدول باید هر کدام در یک خط جای گیرند. تراز ستونها بر اساس موقعیت متن سربرگ نسبت به خطچین زیرین آن تعیین میشود:
- اگر خطچین در سمت راست همراستا با متن سربرگ باشد اما از سمت چپ فراتر از آن امتداد یابد، ستون راستچین است.
- اگر خطچین در سمت چپ همراستا با متن سربرگ باشد اما از سمت راست فراتر از آن امتداد یابد، ستون چپچین است.
- اگر خطچین از هر دو طرف فراتر از متن سربرگ امتداد یابد، ستون وسطچین است.
- اگر خطچین از هر دو طرف همراستا با متن سربرگ باشد، تراز پیشفرض به کار میرود (در بیشتر موارد، چپچین خواهد بود).
جدول باید با یک خط خالی، یا یک خط متشکل از خطتیرهها که در پی آن یک خط خالی آمده باشد، پایان یابد.
ردیف سربرگ ستونها را میتوان حذف کرد، به شرطی که از یک خطچین برای پایان جدول استفاده شود. برای نمونه:
-
------- ------ ---------- ------- 12 12 12 12 123 123 123 123 1 1 1 1 ------- ------ ---------- -------
هنگامی که ردیف سربرگ حذف شود، تراز ستونها بر پایهٔ نخستین خط از بدنهٔ جدول مشخص میشود. بنابراین، در جدولهای بالا، ستونها به ترتیب راستچین، چپچین، وسطچین، و راستچین خواهند بود.
افزونه: multiline_tables
جدولهای چندخطی اجازه میدهند تا سربرگ و ردیفهای جدول در چندین خط متنی امتداد یابند (اما خانههایی که در چند ستون یا ردیف از جدول گسترش مییابند پشتیبانی نمیشوند). در اینجا نمونهای آمده است:
-
------------------------------------------------------------- Centered Default Right Left Header Aligned Aligned Aligned ----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ------------------------------------------------------------- Table: Here's the caption. It, too, may span multiple lines.
این جدولها مانند جدولهای ساده کار میکنند، اما تفاوتهای زیر را دارند:
- باید با ردیفی از خطتیرهها پیش از متن سربرگ آغاز شوند (مگر اینکه ردیف سربرگ حذف شده باشد).
- باید با ردیفی از خطتیرهها و سپس یک خط خالی پایان یابند.
- ردیفها باید به وسیلهٔ خطهای خالی از یکدیگر جدا شوند.
در جدولهای چندخطی، تجزیهکنندهٔ جدول به عرض ستونها دقت میکند، و نویسندهها (writers) تلاش میکنند تا این عرضهای نسبی را در خروجی بازتولید نمایند. بنابراین، اگر متوجه شدید که یکی از ستونها در خروجی بیش از حد باریک است، عرض آن را در کد مبدأ Markdown افزایش دهید.
سربرگ را میتوان همانند جدولهای ساده در جدولهای چندخطی نیز حذف کرد:
-
----------- ------- --------------- ------------------------- First row 12.0 Example of a row that spans multiple lines. Second row 5.0 Here's another one. Note the blank line between rows. ----------- ------- --------------- ------------------------- : Here's a multiline table without a header.
امکانپذیر است که یک جدول چندخطی تنها دارای یک ردیف باشد، اما پس از این ردیف باید یک خط خالی (و سپس ردیف خطتیرههایی که جدول را به پایان میرسانند) بیاید، وگرنه ممکن است جدول به عنوان یک جدول ساده تفسیر شود.
افزونه: grid_tables
جدولهای شبکهای بدین شکل هستند:
-
: Sample grid table. +---------------+---------------+--------------------+ | Fruit | Price | Advantages | +===============+===============+====================+ | Bananas | $1.34 | - built-in wrapper | | | | - bright color | +---------------+---------------+--------------------+ | Oranges | $2.10 | - cures scurvy | | | | - tasty | +---------------+---------------+--------------------+
ردیف علامتهای = سربرگ را از بدنهٔ جدول جدا میکند، و میتوان آن را برای جدولهای بدون سربرگ حذف نمود. خانههای جدولهای شبکهای میتوانند شامل بلوکهای دلخواه (چندین بند، بلوکهای کد، فهرستها، و غیره) باشند.
خانهها میتوانند در چند ستون یا ردیف گسترش یابند:
-
+---------------------+----------+ | Property | Earth | +=============+=======+==========+ | | min | -89.2 °C | | Temperature +-------+----------+ | 1961-1990 | mean | 14 °C | | +-------+----------+ | | max | 56.7 °C | +-------------+-------+----------+
سربرگ جدول میتواند بیش از یک ردیف داشته باشد:
-
+---------------------+-----------------------+ | Location | Temperature 1961-1990 | | | in degree Celsius | | +-------+-------+-------+ | | min | mean | max | +=====================+=======+=======+=======+ | Antarctica | -89.2 | N/A | 19.8 | +---------------------+-------+-------+-------+ | Earth | -89.2 | 14 | 56.7 | +---------------------+-------+-------+-------+
ترازها را میتوان همانند جدولهای لولهای (pipe tables)، با قرار دادن دونقطهها در لبههای خط جداکننده پس از سربرگ مشخص کرد:
-
+---------------+---------------+--------------------+ | Right | Left | Centered | +==============:+:==============+:==================:+ | Bananas | $1.34 | built-in wrapper | +---------------+---------------+--------------------+
در جدولهای بدون سربرگ، دونقطهها به جای آن در خط بالایی قرار میگیرند:
-
+--------------:+:--------------+:------------------:+ | Right | Left | Centered | +---------------+---------------+--------------------+
پاورقی جدول (table foot) را میتوان با محصور کردن آن میان خطوط جداکنندهای که به جای - از = استفاده میکنند، تعریف کرد:
-
+---------------+---------------+ | Fruit | Price | +===============+===============+ | Bananas | $1.34 | +---------------+---------------+ | Oranges | $2.10 | +===============+===============+ | Sum | $3.44 | +===============+===============+
پاورقی باید همواره در پایینترین بخش جدول قرار گیرد.
جدولهای شبکهای را میتوان به آسانی با استفاده از table-mode در Emacs (M-x table-insert) ایجاد کرد..SS افزونه: pipe_tables جدولهای پایپ بدین شکل هستند:
-
| Right | Left | Default | Center | |------:|:-----|---------|:------:| | 12 | 12 | 12 | 12 | | 123 | 123 | 123 | 123 | | 1 | 1 | 1 | 1 | : Demonstration of pipe table syntax.
ساختار دستوری (syntax) همانند جدولهای PHP Markdown Extra است. نویسههای پایپ در ابتدا و انتها اختیاری هستند، اما وجود پایپ میان تمام ستونها الزامی است. دونقطهها همانطور که نشان داده شده است، چینش ستونها را مشخص میکنند. سرستون (header) را نمیتوان حذف کرد. برای شبیهسازی یک جدول بدون سرستون، سرستونی با سلولهای خالی قرار دهید.
از آنجا که پایپها مرزهای ستون را مشخص میکنند، نیازی نیست ستونها همانند مثال بالا بهصورت عمودی تراز شده باشند. بنابراین، این یک جدول پایپ کاملاً معتبر (هرچند نازیبا) است:
-
fruit| price -----|-----: apple|2.05 pear|1.37 orange|3.09
سلولهای جدولهای پایپ نمیتوانند شامل عناصر بلوکی مانند پاراگرافها و فهرستها باشند، و نمیتوانند در چندین سطر امتداد یابند. اگر هر سطری از منبع Markdown طولانیتر از عرض ستون باشد (به --columns مراجعه کنید)، جدول تمام عرض متن را اشغال خواهد کرد و محتوای سلولها شکسته (wrap) میشود؛ در این حالت، عرض نسبی سلولها بر اساس تعداد خطتیرههای موجود در خط جداکننده سرستون جدول از بدنه جدول تعیین میگردد. (بهعنوان مثال ---|- ستون اول را ۳/۴ و ستون دوم را ۱/۴ از کل عرض متن قرار میدهد.) از سوی دیگر، اگر هیچ سطری عریضتر از عرض ستون نباشد، محتوای سلول شکسته نخواهد شد و اندازه سلولها متناسب با محتوای آنها تنظیم میشود.
نکته: pandoc همچنین جدولهای پایپ به شکل زیر را، همانگونه که توسط orgtbl-mode در Emacs’ تولید میشوند، شناسایی میکند:
-
| One | Two | |-----+-------| | my | table | | is | nice |
تفاوت در این است که بهجای | از + استفاده میشود. سایر ویژگیهای orgtbl پشتیبانی نمیشوند. بهویژه، برای داشتن چینش ستونی غیر از پیشفرض، باید مانند بالا دونقطه اضافه کنید.
افزونه: table_attributes
مشخصهها (attributes) را میتوان با درج آنها در انتهای زیرنویس (caption)، به جدولها پیوست کرد. (برای ساختار دستوری، به header_attributes مراجعه کنید.)
-
: Here's the caption. {#ident .class key="value"}
جایگذاری جدول در LaTeX
بهطور پیشفرض، pandoc جدولها را در LaTeX با استفاده از محیط longtable رندر میکند. جدولها “شناور” (float) نخواهند بود و میتوانند در مرزهای صفحه امتداد یابند. اگر جدولهای استاندارد “شناور” را ترجیح میدهید (که محدود به آنچه در یک صفحه جا میشود هستند)، کلاس float را به مشخصههای جدول (که میتواند پس از زیرنویس مشخص شود) اضافه کنید. بهصورت اختیاری، میتوان از مشخصه latex-placement برای ارسال پارامترهای مؤثر بر جایگذاری شناور استفاده کرد:
-
: The caption of the table. {#ident .float latex-placement="ht"}
توجه داشته باشید که longtable با طرحبندیهای دوستونی کار نمیکند، بنابراین اگر در حال تولید یک سند دوستونی با استفاده از LaTeX هستید، باید کلاس float را روی هر جدول مشخص کنید، یا از این فیلتر کوچک Lua برای افزودن خودکار آن استفاده نمایید:
-
function Table(el) el.classes:insert("float") return el end
بلوکهای متاداده (Metadata blocks)
افزونه: pandoc_title_block
اگر فایل با یک بلوک عنوان آغاز شود:
-
% title % author(s) (separated by semicolons) % date
بهعنوان اطلاعات کتابشناختی تجزیه خواهد شد، نه متن عادی. (برای مثال در عنوان خروجی مستقل (standalone) در LaTeX یا HTML استفاده خواهد شد.) این بلوک میتواند فقط شامل یک عنوان، یک تاریخ و یک نویسنده، یا هر سه عنصر باشد. اگر میخواهید نویسنده بدون عنوان، یا یک عنوان و یک تاریخ بدون نویسنده قرار دهید، به یک سطر خالی نیاز دارید:
-
% % Author
-
% My title % % June 15, 2006
عنوان میتواند چند سطر را اشغال کند، اما سطرهای ادامه باید با فاصله ابتدایی آغاز شوند، بدین صورت:
-
% My title on multiple lines
اگر سندی چند نویسنده داشته باشد، نویسندگان را میتوان در سطرهای جداگانه با فاصله ابتدایی قرار داد، یا با نقطهویرگول (semicolon) از هم جدا کرد، یا از هر دو روش استفاده نمود. بنابراین، تمام موارد زیر معادل یکدیگرند:
-
% Author One Author Two
-
% Author One; Author Two
-
% Author One; Author Two
تاریخ باید در یک سطر جا شود.
هر سه فیلد متاداده میتوانند شامل قالببندی درونخطی استاندارد (حروف مورب، پیوندها، پاورقیها و غیره) باشند.
بلوکهای عنوان همواره تجزیه میشوند، اما فقط زمانی روی خروجی تأثیر میگذارند که گزینه --standalone (-s) انتخاب شده باشد. در خروجی HTML، عنوانها دو بار ظاهر میشوند: یکبار در سربرگ (head) سند—این همان عنوانی است که در بالای پنجره مرورگر ظاهر میشود—و یکبار در ابتدای بدنه سند. عنوان موجود در سربرگ سند میتواند یک پیشوند اختیاری پیوستشده داشته باشد (گزینه --title-prefix یا -T). عنوان درون بدنه بهصورت یک عنصر H1 با کلاس “title” ظاهر میشود، بنابراین میتوان آن را با CSS پنهان کرد یا دوباره قالببندی نمود. اگر پیشوند عنوان با -T مشخص شده باشد و هیچ بلوک عنوانی در سند وجود نداشته باشد، پیشوند عنوان بهتنهایی بهعنوان عنوان HTML استفاده خواهد شد.
نویسنده صفحه مان (man page writer) عنوان، شماره بخش صفحه مان، و سایر اطلاعات سربرگ و پانویس را از سطر عنوان استخراج میکند. فرض میشود عنوان اولین کلمه در سطر عنوان باشد، که میتواند بهصورت اختیاری با یک شماره بخش (تکرقمی) در پرانتز خاتمه یابد. (نباید هیچ فاصلهای بین عنوان و پرانتز وجود داشته باشد.) هر چیزی پس از آن، بهعنوان متن اضافی پانویس و سربرگ در نظر گرفته میشود. برای جداسازی متن پانویس از متن سربرگ باید از یک نویسه خط عمودی منفرد (|) استفاده شود. بدین ترتیب،
-
% PANDOC(1)
صفحه مانی با عنوان PANDOC و بخش ۱ تولید خواهد کرد.
-
% PANDOC(1) Pandoc User Manuals
همچنین عبارت “Pandoc User Manuals” را در پانویس خواهد داشت.
-
% PANDOC(1) Pandoc User Manuals | Version 4.0
همچنین عبارت “Version 4.0” را در سربرگ خواهد داشت..SS افزونه: yaml_metadata_block یک بلوک فرادادهٔ YAML یک شیء معتبر YAML است که در بالا با خطی شامل سه خط تیره (---) و در پایین با خطی شامل سه خط تیره (---) یا سه نقطه (...) محدود میشود. پس از خط آغازین --- نباید خط خالی قرار گیرد. یک بلوک فرادادهٔ YAML میتواند در هر کجای سند ظاهر شود، اما اگر در ابتدای سند نباشد، باید پیش از آن یک خط خالی بیاید. (توجه داشته باشید که از JSON نیز میتوان استفاده کرد، زیرا JSON زیرمجموعهای از YAML است.)
توجه داشته باشید که به دلیل نحوهٔ الحاق فایلهای ورودی توسط pandoc در صورتی که چند فایل ارائه شده باشد، میتوانید فرادادهها را در یک فایل YAML جداگانه نگهداری کرده و آن را در کنار فایلهای Markdown به عنوان آرگومان به pandoc ارسال کنید:
-
pandoc chap1.md chap2.md chap3.md metadata.yaml -s -o book.html
تنها مطمئن شوید که فایل YAML با --- آغاز شده و با --- یا ... خاتمه مییابد. همچنین، میتوانید از گزینهٔ --metadata-file استفاده کنید. با این حال، در صورت استفاده از این روش، نمیتوانید به محتوای سند ورودی اصلی Markdown (مانند پاورقیها) ارجاع دهید.
فراداده از فیلدهای شیء YAML استخراج شده و به فرادادههای موجود سند افزوده خواهد شد. فراداده میتواند شامل فهرستها و شیءها (با تو در تویی دلخواه) باشد، اما تمام اسکالرهای رشتهای به عنوان Markdown تفسیر خواهند شد. فیلدهایی که نام آنها به زیرخط (underscore) ختم میشود توسط pandoc نادیده گرفته خواهند شد. (ممکن است توسط پردازندههای خارجی نقشی به آنها اختصاص داده شود.) نام فیلدها نباید به عنوان اعداد یا مقادیر بولی YAML قابل تفسیر باشند (بنابراین، برای مثال، مقادیر yes، True و 15 نمیتوانند به عنوان نام فیلد استفاده شوند).
یک سند میتواند شامل چندین بلوک فراداده باشد. اگر دو بلوک فراداده تلاش کنند فیلد یکسانی را مقداردهی کنند، مقدار بلوک دوم اعمال خواهد شد.
هر بلوک فراداده در داخل برنامه به صورت یک سند YAML مستقل مدیریت میشود. این بدان معناست که برای نمونه، لنگرهای (anchors) تعریفشده در یک بلوک نمیتوانند در بلوک دیگری مورد ارجاع قرار گیرند.
هنگامی که pandoc با -t markdown برای ایجاد یک سند Markdown استفاده میشود، بلوک فرادادهٔ YAML تنها در صورتی ایجاد خواهد شد که گزینهٔ -s/--standalone به کار رفته باشد. تمام فرادادهها در قالب یک بلوک واحد در ابتدای سند ظاهر خواهند شد.
توجه داشته باشید که قوانین گریز (escaping) در YAML باید رعایت شوند. بنابراین، برای مثال، اگر عنوان شامل دونقطه باشد، باید درون نقلقول قرار گیرد، و اگر شامل ممیز وارونه (backslash) است، باید اطمینان حاصل شود که به عنوان توالی گریز YAML در نظر گرفته نشود. از نویسهٔ خط لوله (|) میتوان برای شروع یک بلوک با تورفتگی استفاده کرد که به صورت لفظی و بدون نیاز به گریز تفسیر میشود. این شکل زمانی لازم است که فیلد شامل خطوط خالی یا قالببندی در سطح بلوک باشد:
-
--- title: 'This is the title: it contains a colon' author: - Author One - Author Two keywords: [nothing, nothingness] abstract: | This is the abstract. It consists of two paragraphs. ...
بلوک لفظی بعد از | باید نسبت به خط حاوی | دارای تورفتگی باشد. در غیر این صورت، ساختار YAML نامعتبر خواهد بود و pandoc آن را به عنوان فراداده تفسیر نخواهد کرد. برای بررسی اجمالی قوانین پیچیدهٔ حاکم بر YAML، مدخل ویکیپدیا دربارهٔ نحو YAML را ببینید.
متغیرهای الگو به طور خودکار از روی فرادادهها مقداردهی میشوند. بنابراین، برای مثال، در نگارش HTML، متغیر abstract با معادل HTML متن Markdown موجود در فیلد abstract مقداردهی خواهد شد:
-
<p>This is the abstract.</p> <p>It consists of two paragraphs.</p>
متغیرها میتوانند شامل ساختارهای دلخواه YAML باشند، اما الگو باید با این ساختار مطابقت داشته باشد. متغیر author در الگوهای پیشفرض انتظار یک فهرست ساده یا رشته را دارد، اما برای پشتیبانی از ساختارهای پیچیدهتر میتواند تغییر داده شود. برای مثال، ترکیب زیر در صورت مشخص بودن وابستگی سازمانی (affiliation)، آن را به نویسنده اضافه میکند:
-
--- title: The document title author: - name: Author One affiliation: University of Somewhere - name: Author Two affiliation: University of Nowhere ...
برای استفاده از نویسندگان ساختاریافته در مثال بالا، به یک الگوی سفارشی نیاز خواهید داشت:
-
$for(author)$ $if(author.name)$ $author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$ $else$ $author$ $endif$ $endfor$
محتوای خامی که قرار است در سربرگ (header) سند گنجانده شود میتواند با استفاده از header-includes مشخص گردد؛ با این حال، مهم است که این محتوا را با استفاده از افزونهٔ raw_attribute به عنوان کد خام برای یک قالب خروجی خاص نشانهگذاری کنید، در غیر این صورت به عنوان Markdown تفسیر خواهد شد. برای مثال:
-
header-includes: - | ```{=latex} \let\oldsection\section \renewcommand{\section}[1]{\clearpage\oldsection{#1}} ```
نکته: افزونهٔ yaml_metadata_block نه تنها با markdown بلکه با commonmark نیز کار میکند (و به طور پیشفرض در gfm و commonmark_x فعال است). با این حال، در commonmark، gfm و commonmark_x محدودیتهای زیر اعمال میشوند:
- بلوک فرادادهٔ YAML باید در ابتدای سند قرار گیرد (و تنها میتواند یکی باشد). اگر چندین فایل به عنوان آرگومان به pandoc داده شوند، تنها فایل اول میتواند یک بلوک فرادادهٔ YAML باشد.
- گرههای برگ ساختار YAML به طور مجزا از یکدیگر و از بقیهٔ سند تجزیه میشوند. بنابراین، برای مثال، نمیتوانید در این زمینهها از پیوند ارجاعی استفاده کنید اگر تعریف پیوند در جای دیگری از سند قرار داشته باشد..SS گریز با بکاسلش (Backslash escapes)
افزونه: all_symbols_escapable
به جز در درون یک بلوک کد یا کد درونخطی، با هر نشانهٔ نگارشی یا نویسهٔ فاصلهای که پیش از آن یک بکاسلش آمده باشد به صورت لفظی (literal) رفتار میشود، حتی اگر در حالت عادی بیانگر قالببندی باشد. بنابراین، به عنوان مثال، اگر بنویسید
-
*\*hello\**
این خروجی حاصل میشود:
-
<em>*hello*</em>
به جای
-
<strong>hello</strong>
بهخاطرسپاری این قاعده از قاعدهٔ اصلی Markdown آسانتر است، که در آن تنها نویسههای زیر مجاز به گریز با بکاسلش هستند:
-
\`*_{}[]()>#+-.!
(با این حال، اگر از قالب markdown_strict استفاده شود، قاعدهٔ اصلی Markdown به کار گرفته خواهد شد.)
یک فاصلهٔ گریز دادهشده با بکاسلش به عنوان یک فاصلهٔ نشکن (nonbreaking space) تجزیه میشود. در خروجی TeX، به صورت ~ ظاهر خواهد شد. در خروجی HTML و XML، به صورت یک نویسهٔ یونیکد لفظی فاصلهٔ نشکن ظاهر میشود (توجه داشته باشید که از این رو در سورس HTML تولیدشده در واقع “نامرئی” به نظر میرسد؛ همچنان میتوانید از گزینهٔ خط فرمان --ascii استفاده کنید تا به عنوان یک موجودیت صریح نمایش یابد).
یک خط جدیدِ گریز دادهشده با بکاسلش (یعنی بکاسلشی که در انتهای یک سطر میآید) به عنوان یک شکست خط قطعی (hard line break) تجزیه میشود. در خروجی TeX به صورت \\ و در HTML به صورت <br /> ظاهر خواهد شد. این یک جایگزین مناسب برای روش “نامرئی” در Markdown جهت نشان دادن شکستهای قطعی خط با استفاده از دو فاصله در انتهای سطر است.
گریزهای بکاسلش در زمینههای عین متن (verbatim) کار نمیکنند.
قالببندی درونخطی (Inline formatting)
تأکید (Emphasis)
برای تأکید روی بخشی از متن، آن را مانند زیر میان * یا _ قرار دهید:
-
This text is _emphasized with underscores_, and this is *emphasized with asterisks*.
دو نویسهٔ * یا _ باعث ایجاد تأکید قوی (strong emphasis) میشود:
-
This is **strong emphasis** and __with underscores__.
نویسهٔ * یا _ که با فاصله احاطه شده باشد، یا با بکاسلش گریز داده شده باشد، تأکید ایجاد نمیکند:
-
This is * not emphasized *, and \*neither is this\*.
افزونه: intraword_underscores
از آنجا که _ گاهی در داخل کلمات و شناسهها به کار میرود، pandoc نویسهٔ _ احاطهشده توسط نویسههای الفباییعددی را به عنوان نشانگر تأکید تفسیر نمیکند. اگر میخواهید فقط بخشی از یک کلمه را مورد تأکید قرار دهید، از * استفاده کنید:
-
feas*ible*, not feas*able*.
خطخورده (Strikeout)
افزونه: strikeout
برای خط زدن روی بخشی از متن با یک خط افقی، ابتدا و انتهای آن را با ~~ مشخص کنید. بنابراین، برای مثال،
-
This ~~is deleted text.~~
بالانویسها و زیرنویسها (Superscripts and subscripts)
افزونه: superscript، subscript
بالانویسها را میتوان با قرار دادن متن مورد نظر در میان نویسههای ^ نوشت؛ زیرنویسها را نیز میتوان با قرار دادن متن در میان نویسههای ~ نوشت. بنابراین، برای مثال،
-
H~2~O is a liquid. 2^10^ is 1024.
متن میان ^...^ یا ~...~ نباید حاوی فاصله یا خطوط جدید باشد. اگر متن بالانویس یا زیرنویس حاوی فاصله باشد، این فاصلهها باید با بکاسلش گریز داده شوند. (این قاعده برای جلوگیری از بالانویس یا زیرنویس شدن تصادفی در استفادههای معمولی از ~ و ^، و همچنین تداخل نامطلوب با پاورقیها است.) بنابراین، اگر میخواهید حرف P با عبارت “a cat” در زیرنویس باشد، از P~a\ cat~ استفاده کنید، نه P~a cat~.
عین متن (Verbatim)
برای تبدیل بخشی کوتاه از متن به صورت عین متن (verbatim)، آن را درون بکتیک قرار دهید:
-
What is the difference between `>>=` and `>>`?
اگر متن verbatim شامل بکتیک باشد، از دو بکتیک استفاده کنید:
-
Here is a literal backtick `` ` ``.
(فاصلههای پس از بکتیکهای آغازین و پیش از بکتیکهای پایانی نادیده گرفته خواهند شد.)
قاعدهٔ کلی این است که یک بخش verbatim با رشتهای از بکتیکهای متوالی (اختیاراً به همراه یک فاصله در ادامه) آغاز شده و با رشتهای با همان تعداد بکتیک (اختیاراً به همراه یک فاصله در ابتدا) پایان مییابد.
توجه داشته باشید که گریزهای بکاسلش (و سایر ساختارهای Markdown) در محیطهای verbatim کار نمیکنند:
-
This is a backslash followed by an asterisk: `\*`. ویژگیها را میتوان همانند بلوکهای کد محصور (fenced code blocks)، به متن درجاشده (verbatim) نیز پیوست کرد:
-
`<$>`{.haskell}
زیرخط (Underline)
برای خط کشیدن زیر متن، از کلاس underline استفاده کنید:
-
[Underline]{.underline}
یا، بدون افزونهٔ bracketed_spans (اما با native_spans):
-
<span class="underline">Underline</span>
این مورد در تمامی قالبهای خروجی که از خطزیرین پشتیبانی میکنند کار خواهد کرد.
حروف کاپیتال کوچک (Small caps)
برای نوشتن حروف کاپیتال کوچک، از کلاس smallcaps استفاده کنید:
-
[Small caps]{.smallcaps}
یا، بدون افزونهٔ bracketed_spans:
-
<span class="smallcaps">Small caps</span>
برای سازگاری با سایر گونههای Markdown، از CSS نیز پشتیبانی میشود:
-
<span style="font-variant:small-caps;">Small caps</span>
این مورد در تمامی قالبهای خروجی که از حروف کاپیتال کوچک پشتیبانی میکنند کار خواهد کرد.
برجستهسازی (Highlighting)
برای برجستهسازی متن، از کلاس mark استفاده کنید:
-
[Mark]{.mark}
یا، بدون افزونهٔ bracketed_spans (اما با native_spans):
-
<span class="mark">Mark</span>
این مورد در تمامی قالبهای خروجی که از برجستهسازی پشتیبانی میکنند کار خواهد کرد.
فرمولهای ریاضی (Math)
افزونه: tex_math_dollars
هر چیزی میان دو نویسهٔ $ به عنوان ریاضیات TeX در نظر گرفته خواهد شد. علامت $ آغازین باید بلافاصله در سمت راست خود یک نویسهٔ غیرفاصله داشته باشد، در حالی که $ پایانی باید بلافاصله در سمت چپ خود یک نویسهٔ غیرفاصله داشته و نباید بلافاصله پس از آن رقمی بیاید. بنابراین، $20,000 and $30,000 به عنوان فرمول ریاضی تجزیه نخواهد شد. اگر بنا به هر دلیلی نیاز دارید که متن را در نویسههای واقعی $ محصور کنید، آنها را با بکاسلش گریز دهید (\$) تا به عنوان جداکنندههای ریاضی در نظر گرفته نشوند.
برای ریاضیات نمایشی (display math)، از جداکنندههای $$ استفاده کنید. (در این حالت، جداکنندهها میتوانند با فاصله از فرمول جدا شوند. با این وجود، نباید هیچ خط خالیای میان جداکنندههای بازکننده و پایانیِ $$ وجود داشته باشد.)
ریاضیات TeX در تمامی قالبهای خروجی چاپ خواهد شد. نحوهٔ رندر شدن آن به قالب خروجی بستگی دارد:
- LaTeX
- به صورت کلمهبهکلمه و محصور در \(...\) (برای ریاضی درونخطی) یا \[...\] (برای ریاضی نمایشی) ظاهر خواهد شد.
- Markdown, Emacs Org mode, ConTeXt, Txt2Tags, ZimWiki
- به صورت کلمهبهکلمه و محصور در $...$ (برای ریاضی درونخطی) یا $$...$$ (برای ریاضی نمایشی) ظاهر خواهد شد.
- XWiki
- به صورت کلمهبهکلمه و محصور در {{formula}}..{{/formula}} ظاهر خواهد شد.
- reStructuredText
- با استفاده از نقش متن تفسیرشدهٔ :math: رندر خواهد شد.
- AsciiDoc
- برای خروجی AsciiDoc، ریاضی به صورت کلمهبهکلمه و محصور در latexmath:[...] ظاهر خواهد شد. برای asciidoc_legacy، بخش درون براکت شامل جداکنندههای ریاضی درونخطی یا نمایشی نیز خواهد بود.
- Texinfo
- درون یک دستور @math رندر خواهد شد.
- roff man, Jira markup
- به صورت کلمهبهکلمه بدون علامتهای $ رندر خواهد شد.
- MediaWiki, DokuWiki
- درون برچسبهای <math> رندر خواهد شد.
- Textile
- درون برچسبهای <span class="math"> رندر خواهد شد.
- RTF, OpenDocument
- در صورت امکان، با استفاده از نویسههای یونیکد رندر میشود و در غیر این صورت به صورت کلمهبهکلمه ظاهر خواهد شد.
- ODT
- در صورت امکان، با استفاده از MathML رندر خواهد شد.
- DocBook
- اگر پرچم --mathml استفاده شود، با استفاده از MathML درون یک برچسب inlineequation یا informalequation رندر میشود. در غیر این صورت، در صورت امکان، با استفاده از نویسههای یونیکد رندر خواهد شد.
- Docx و PowerPoint
- با استفاده از نشانهگذاری ریاضی OMML رندر خواهد شد.
- FictionBook2
- اگر گزینهٔ --webtex استفاده شود، فرمولها با استفاده از CodeCogs یا دیگر سرویسهای وب سازگار به صورت تصویر رندر شده، دانلود میشوند و در کتاب الکترونیکی جایگذاری خواهند شد. در غیر این صورت، به شکل کلمهبهکلمه ظاهر خواهند شد.
- HTML, Slidy, DZSlides, S5, EPUB
- شیوهٔ رندر شدن ریاضی در HTML به گزینههای خط فرمانیِ انتخابشده بستگی خواهد داشت. بنابراین بخش «رندر کردن ریاضی در HTML» در بالا را ببینید..SS HTML خام
افزونه: raw_html
Markdown به شما اجازه میدهد کد HTML (یا DocBook) خام را در هر کجای سند درج کنید (بهجز بافتهای واژهبهواژه (verbatim)، که در آن <، > و & به صورت تحتاللفظی تفسیر میشوند). (از نظر فنی این یک افزونه نیست، چرا که Markdown استاندارد آن را مجاز میداند، اما به عنوان یک افزونه تعریف شده است تا در صورت نیاز بتوان آن را غیرفعال کرد.)
کدهای HTML خام در خروجیهای HTML، S5، Slidy، Slideous، DZSlides، EPUB، Markdown، CommonMark، حالت Emacs Org، Textile و Txt2Tags بدون تغییر منتقل میشوند و در سایر قالبها نادیده گرفته (حذف) میشوند.
برای روشی صریحتر جهت گنجاندن HTML خام در یک سند Markdown، افزونهٔ raw_attribute را ببینید.
در قالب CommonMark، اگر raw_html فعال باشد، بالانویسها، زیرنویسها، خطخوردگیها و حروف بزرگ کوچک (small capitals) به صورت HTML نشان داده خواهند شد. در غیر این صورت، از جایگزینهای متن ساده استفاده میشود. توجه داشته باشید که حتی در صورت غیرفعال بودن raw_html، اگر جدولها نتوانند از نحو پایپ (pipe) استفاده کنند، با نحو HTML رندر خواهند شد.
افزونه: markdown_in_html_blocks
نگارش اولیه Markdown اجازه میدهد “بلوکهای” HTML را بگنجانید: بلوکهایی از HTML بین تگهای متوازن که با خطهای خالی از متن اطراف جدا شدهاند و از حاشیهٔ سمت چپ شروع شده و خاتمه مییابند. درون این بلوکها، همهچیز به عنوان HTML تفسیر میشود، نه Markdown؛ بنابراین (برای مثال)، * به معنای تأکید نیست.
هنگام استفاده از قالب markdown_strict، پاندوک بدین شیوه رفتار میکند؛ اما به طور پیشفرض، pandoc محتوای بین تگهای بلوکی HTML را به عنوان Markdown تفسیر میکند. بنابراین، برای مثال، pandoc عبارت
-
<table> <tr> <td>*one*</td> <td>[a link](https://google.com)</td> </tr> </table>
را به
-
<table> <tr> <td><em>one</em></td> <td><a href="https://google.com">a link</a></td> </tr> </table>
تبدیل میکند، در حالی که Markdown.pl آن را همانطور که هست نگه میدارد.
یک استثنا برای این قاعده وجود دارد: متن بین تگهای <script>، <style>، <pre> و <textarea> به عنوان Markdown تفسیر نمیشود.
این انحراف از Markdown اولیه باید ترکیب Markdown با عناصر بلوکی HTML را آسانتر کند. برای مثال، میتوان یک بلوک متن Markdown را با تگهای <div> احاطه کرد بدون اینکه مانع از تفسیر آن به عنوان Markdown شد.
افزونه: native_divs
برای محتوای درون تگهای <div> از بلوکهای بومی Div پاندوک استفاده میکند. در بیشتر موارد این کار خروجی مشابهی با markdown_in_html_blocks تولید میکند، اما نوشتن فیلترهای pandoc را برای دستکاری گروهی بلوکها سادهتر میسازد.
افزونه: native_spans
برای محتوای درون تگهای <span> از بلوکهای بومی Span پاندوک استفاده میکند. در بیشتر موارد این کار خروجی مشابهی با raw_html تولید میکند، اما نوشتن فیلترهای pandoc را برای دستکاری گروهی عناصر درونخطی (inlines) سادهتر میسازد.
افزونه: raw_tex
علاوه بر HTML خام، pandoc اجازه میدهد کدهای خام LaTeX، TeX و ConTeXt نیز در سند گنجانده شوند. دستورهای TeX درونخطی حفظ شده و بدون تغییر به نویسندههای LaTeX و ConTeXt منتقل میشوند. بنابراین، برای مثال، میتوانید از LaTeX برای درج ارجاعات BibTeX استفاده کنید:
-
This result was proved in \cite{jones.1967}.
توجه داشته باشید که در محیطهای LaTeX، مانند
-
\begin{tabular}{|l|l|}\hline Age & Frequency \\ \hline 18--25 & 15 \\ 26--35 & 33 \\ 36--45 & 22 \\ \hline \end{tabular}
محتوای بین تگهای begin و end به عنوان LaTeX خام تفسیر میشود، نه Markdown.
برای روشی صریحتر و انعطافپذیرتر جهت گنجاندن TeX خام در سند Markdown، افزونهٔ raw_attribute را ببینید.
کدهای درونخطی LaTeX در قالبهای خروجی غیر از Markdown، LaTeX، حالت Emacs Org و ConTeXt نادیده گرفته میشوند.
مشخصه خام عمومی
افزونه: raw_attribute
محدودههای درونخطی (inline spans) و بلوکهای کد محصور (fenced code blocks) با نوع خاصی از مشخصه (attribute)، به عنوان محتوای خام با قالب تعیینشده تجزیه میشوند. برای مثال، مورد زیر یک بلوک خام roff ms تولید میکند:
-
```{=ms} .MYMACRO blah blah ```
و مورد زیر یک عنصر درونخطی خام html تولید میکند:
-
This is `<a>html</a>`{=html}
این ویژگی میتواند برای درج XML خام در اسناد docx مفید باشد، مانند یک شکست صفحه (pagebreak):
-
```{=openxml} <w:p> <w:r> <w:br w:type="page"/> </w:r> </w:p> ```
نام قالب باید با نام قالب مقصد مطابقت داشته باشد (برای مشاهدهٔ فهرست، -t/--to را در بالا ببینید یا از دستور pandoc --list-output-formats استفاده کنید). از openxml برای خروجی docx، از opendocument برای خروجی odt، از html5 برای خروجی epub3، از html4 برای خروجی epub2، و از latex، beamer، ms یا html5 برای خروجی pdf استفاده کنید (بسته به آنچه برای --pdf-engine به کار میبرید).
این افزونه مستلزم آن است که نوع مربوطه از کد درونخطی یا بلوک کد محصور فعال باشد. بنابراین، برای مثال، جهت استفاده از مشخصه خام با یک بلوک کد بکتیک (backtick)، باید backtick_code_blocks فعال باشد.
مشخصهٔ خام را نمیتوان با مشخصههای معمولی ترکیب کرد..SS ماکروهای LaTeX
افزونه: latex_macros
هنگامی که این افزونه فعال باشد، pandoc تعاریف ماکروی LaTeX را تجزیه کرده و ماکروهای حاصل را بر تمام ریاضیات LaTeX و LaTeX خام اِعمال میکند. بنابراین، به عنوان مثال، نمونهٔ زیر در تمام قالبهای خروجی کار خواهد کرد، نه فقط در LaTeX:
-
\newcommand{\tuple}[1]{\langle #1 \rangle} $\tuple{a, b, c}$
توجه داشته باشید که اگر ماکروهای LaTeX درون یک محدوده (span) یا بلوک خامِ نشانهگذاریشده با افزونهٔ raw_attribute قرار گیرند، اِعمال نخواهند شد.
هنگامی که latex_macros غیرفعال باشد، ماکروها روی LaTeX خام و عبارات ریاضی اِعمال نمیشوند. این رویکرد معمولاً هنگامی که هدف شما LaTeX یا PDF است، راهکار بهتری محسوب میشود.
تعاریف ماکرو در LaTeX تنها در صورتی به عنوان LaTeX خام منتقل میشوند که latex_macros فعال نباشد. تعاریف ماکرو در منبع Markdown (یا سایر قالبهایی که به raw_tex اجازه میدهند)، صرفنظر از اینکه latex_macros فعال باشد یا خیر، منتقل خواهند شد.
پیوندها
Markdown امکان تعیین پیوندها را به روشهای گوناگونی فراهم میکند.
پیوندهای خودکار
اگر یک نشانی URL یا نشانی ایمیل را درون قلابهای نوکتیز محصور کنید، به یک پیوند تبدیل میشود:
-
<https://google.com> <sam@green.eggs.ham>
پیوندهای درونخطی
یک پیوند درونخطی شامل متن پیوند درون کروشه است که پس از آن نشانی URL در پرانتز میآید. (به صورت اختیاری، پس از URL میتواند عنوان پیوند درون گیومه بیاید.)
-
This is an [inline link](/url), and here's [one with a title](https://fsf.org "click here for a good time!").
بین بخش درون کروشه و بخش درون پرانتز نباید هیچ فاصلهای باشد. متن پیوند میتواند دارای قالببندی (مانند تأکید) باشد، اما عنوان نمیتواند.
نشانیهای ایمیل در پیوندهای درونخطی بهطور خودکار تشخیص داده نمیشوند، بنابراین باید با پیشوند mailto مشخص شوند:
-
[Write me!](mailto:sam@green.eggs.ham)
پیوندهای مرجع
یک پیوند مرجع صریح دو بخش دارد: خود پیوند و تعریف پیوند، که ممکن است در جای دیگری از سند (قبل یا بعد از پیوند) قرار گیرد.
پیوند شامل متن پیوند در کروشه است که پس از آن برچسب در کروشه میآید. (بین این دو نمیتواند فاصله باشد، مگر اینکه افزونهٔ spaced_reference_links فعال باشد.) اگر برچسب خالی باشد ([])، آنگاه بهطور ضمنی همان متن پیوند در نظر گرفته میشود؛ بنابراین [foo][] معادل [foo][foo] است. (اگر افزونهٔ shortcut_reference_links فعال باشد، میتوان [] خالی را حذف کرد.)
تعریف پیوند شامل برچسب درون کروشه است که پس از آن یک دونقطه و یک فاصله، سپس نشانی URL، و به صورت اختیاری (پس از یک فاصله) عنوان پیوند در گیومه یا پرانتز میآید. برچسب نباید به عنوان ارجاع قابل تجزیه باشد (با فرض اینکه افزونهٔ citations فعال است): ارجاعات بر برچسبهای پیوند اولویت دارند.
در اینجا چند نمونه از پیوندهای مرجع و تعاریف پیوند آورده شده است:
-
See [the website *I* built][my website]. See [my website][] and [the bar page][1] and the [home page of the FSF][fsf]. [my website]: http://foo.bar.baz [1]: /foo/bar.html "My title, optional" [fsf]: https://fsf.org (The Free Software Foundation) [special page]: /bar#special 'A title in single quotes'
نشانی URL در یک تعریف پیوند میتواند به صورت اختیاری با قلابهای نوکتیز محصور شود:
-
[my label 5]: <http://foo.bar.baz>
عنوان میتواند در خط بعدی قرار گیرد:
-
[my label 3]: https://fsf.org "The Free Software Foundation"
توجه داشته باشید که برچسبهای پیوند به حروف بزرگ و کوچک حساس نیستند. بنابراین، این نمونه کار خواهد کرد:
-
Here is [my link][FOO] [Foo]: /bar/baz
تعریف پیوند میتواند قبل یا بعد از پیوند مرجعی که از برچسب استفاده میکند بیاید.
نکته: در برخی از پیادهسازیهای Markdown، تعاریف پیوند مرجع نمیتوانند در ساختارهای تودرتو مانند موارد فهرست یا نقلقولهای بلوکی قرار گیرند. pandoc این محدودیتِ بهظاهر دلخواه را برمیدارد. بنابراین نمونهٔ زیر در pandoc مشکلی ندارد، اگرچه نه در همهٔ پیادهسازیها:
-
> My block [quote]. > > [quote]: /foo در یک پیوند ارجاعی میانبر (shortcut)، جفت قلاب دوم میتواند بهطور کامل حذف شود:
-
See [my website]. [my website]: http://foo.bar.baz
پیوندهای داخلی
برای ایجاد پیوند به بخش دیگری از همان سند، از شناسهٔ تولیدشده بهصورت خودکار استفاده کنید (بخش شناسههای سرنگاشت را ببینید). برای نمونه:
-
See the [Introduction](#introduction).
یا
-
See the [Introduction]. [Introduction]: #introduction
پیوندهای داخلی در حال حاضر برای قالبهای HTML (از جمله اسلایدهای نمایشی HTML و EPUB)، LaTeX و ConTeXt پشتیبانی میشوند.
تصاویر
پیوندی که بلافاصله پیش از آن یک ! بیاید، به عنوان تصویر در نظر گرفته میشود. متن پیوند (بخشی که درون قلابها قرار دارد) به عنوان متن جایگزین (alt text) تصویر استفاده خواهد شد:
-
 ![movie reel] [movie reel]: movie.gif
افزونه: implicit_figures
تصویری با متن جایگزین غیرخالی که بهتنهایی در یک پاراگراف قرار گیرد، به عنوان یک نگاره (figure) دارای زیرنویس (caption) رندر خواهد شد. توضیحات تصویر به عنوان زیرنویس استفاده میشود.
-

نحوهٔ رندر شدن این مورد به قالب خروجی بستگی دارد. برخی از قالبهای خروجی (مانند RTF) هنوز از نگارهها پشتیبانی نمیکنند. در آن قالبها، تنها یک تصویر بهتنهایی در یک پاراگراف و بدون زیرنویس دریافت خواهید کرد.
اگر فقط یک تصویر درونخطی (inline) معمولی میخواهید، کافی است مطمئن شوید که تنها عنصر موجود در پاراگراف نباشد. یک راه برای انجام این کار، قرار دادن یک فاصله نشکن (nonbreaking space) پس از تصویر است:
-
\
توجه داشته باشید که در اسلایدهای نمایشی reveal.js، تصویری که بهتنهایی در یک پاراگراف باشد و کلاس r-stretch داشته باشد کل صفحه را پر خواهد کرد، و برچسبهای نگاره و زیرنویس حذف خواهند شد.
برای مشخص کردن یک متن جایگزین برای تصویر که متفاوت از زیرنویس باشد، میتوانید از یک صفت صریح استفاده کنید (به شرطی که افزونهٔ link_attributes فعال باشد):
-
{alt="description of image"}
برای خروجی LaTeX، میتوانید با افزودن صفت latex-placement، موقعیت نگاره را مشخص کنید.
-
{latex-placement="ht"}
افزونه: link_attributes
صفتها را میتوان روی پیوندها و تصاویر تعیین کرد:
-
An inline {#id .class width=30 height=20px} and a reference ![image][ref] with attributes. [ref]: foo.jpg "optional title" {#id .class key=val key2="val 2"}
(این نحو در صورتی که فقط #id و .class استفاده شوند، با PHP Markdown Extra سازگار است.)
برای HTML و EPUB، تمام صفتهای شناختهشدهٔ HTML5 به جز width و height (اما شامل srcset و sizes) عینا منتقل میشوند. صفتهای ناشناخته به عنوان صفتهای سفارشی، همراه با پیشوند data- اعمال میگردند. سایر نویسندهها (writers) صفتهایی را که بهطور خاص توسط قالب خروجی آنها پشتیبانی نمیشود، نادیده میگیرند.
صفتهای width و height در تصاویر رفتار ویژهای دارند. هنگامی که بدون یکا استفاده شوند، فرض میشود یکا بر حسب پیکسل است. با این حال، هر یک از شناسههای یکای زیر نیز قابل استفاده هستند: px، cm، mm، in، inch و %. نباید هیچ فاصلهای بین عدد و یکا وجود داشته باشد. برای نمونه:
-
{ width=50% }
- ابعاد ممکن است به شکلی تبدیل شوند که با قالب خروجی سازگار باشد (برای نمونه، ابعاد مشخصشده بر حسب پیکسل در هنگام تبدیل HTML به LaTeX به اینچ تبدیل خواهند شد). تبدیل بین پیکسلها و اندازهگیریهای فیزیکی تحت تأثیر گزینهٔ --dpi قرار میگیرد (بهطور پیشفرض، ۹۶ dpi فرض میشود، مگر اینکه خود تصویر حاوی اطلاعات dpi باشد).
- یکای % عموماً نسبت به مقداری فضای در دسترس سنجیده میشود. برای نمونه، مثال بالا به صورت زیر رندر خواهد شد.
- در HTML: <img href="file.jpg" style="width: 50%;" />
- در LaTeX: \includegraphics[width=0.5\textwidth,height=\textheight]{file.jpg} (اگر از یک قالب سفارشی استفاده میکنید، لازم است graphicx را همانند قالب پیشفرض پیکربندی کنید.)
- در ConTeXt: \externalfigure[file.jpg][width=0.5\textwidth]
- برخی از قالبهای خروجی دارای مفهومی از کلاس (ConTeXt) یا یک شناسهٔ یکتا (LaTeX \caption)، یا هر دو (HTML) هستند.
- هنگامی که هیچ صفت width یا height تعیین نشده باشد، راهکار جایگزین بررسی تفکیکپذیری (رزولوشن) تصویر و متادیتای dpi درونسازیشده در فایل تصویر خواهد بود..SS عناصر Div و Span با استفاده از افزونههای native_divs و native_spans (به بالا مراجعه کنید)، نحو HTML میتواند به عنوان بخشی از Markdown برای ایجاد عناصر بومی Div و Span در AST پاندوک (در مقایسه با HTML خام) مورد استفاده قرار گیرد. با این حال، نحو زیباتری نیز در دسترس است:
افزونه: fenced_divs
نحو محصور (fenced) ویژهای را برای بلوکهای بومی Div مجاز میکند. یک Div با حصاری شامل حداقل سه دونقطه متوالی به همراه برخی مشخصهها آغاز میشود. این مشخصهها میتوانند به صورت اختیاری با رشته دیگری از دونقطههای متوالی دنبال شوند.
نکته: تجزیهکنندهٔ commonmark دونقطهها را پس از مشخصهها مجاز نمیداند.
نحو مشخصه دقیقاً مانند بلوکهای کد محصور است (افزونهٔ fenced_code_attributes را ببینید). همانند بلوکهای کد محصور، میتوان از مشخصهها درون آکولاد یا یک کلمهٔ منفرد بدون آکولاد (که به عنوان نام کلاس در نظر گرفته میشود) استفاده کرد. بلوک Div با خط دیگری شامل رشتهای از حداقل سه دونقطهٔ متوالی به پایان میرسد. بلوک Div محصور باید توسط خطوط خالی از بلوکهای قبل و بعد خود جدا شود.
مثال:
-
::::: {#special .sidebar} Here is a paragraph. And another. :::::
عناصر Div محصور میتوانند تودرتو باشند. حصارهای آغازین از این جهت متمایز هستند که باید دارای مشخصه باشند:
-
::: Warning :::::: This is a warning. ::: Danger This is a warning within a warning. ::: ::::::::::::::::::
حصارهای بدون مشخصه همیشه حصارهای پایانی هستند. برخلاف بلوکهای کد محصور، تعداد دونقطهها در حصار پایانی نیازی نیست با تعداد دونقطهها در حصار آغازین مطابقت داشته باشد. با این حال، استفاده از حصارهایی با طولهای متفاوت برای تشخیص بصری Divهای تودرتو از والدشان میتواند مفید باشد.
افزونه: bracketed_spans
توالی از عناصر درونخطی در کروشه، مشابه آنچه برای آغاز یک پیوند به کار میرود، اگر بلافاصله با مشخصهها دنبال شود، به عنوان یک Span دارای مشخصه در نظر گرفته خواهد شد:
-
[This is *some text*]{.class key="val"}
پانویسها
افزونه: footnotes
نحو Markdown در pandoc، پانویسها را با استفاده از نحو زیر مجاز میداند:
-
Here is a footnote reference,[^1] and another.[^longnote] [^1]: Here is the footnote. [^longnote]: Here's one with multiple blocks. Subsequent paragraphs are indented to show that they belong to the previous footnote. { some.code } The whole paragraph can be indented, or just the first line. In this way, multi-paragraph footnotes work like multi-paragraph list items. This paragraph won't be part of the note, because it isn't indented.
شناسهها در ارجاعات پانویس نباید شامل فاصله، تب، خط جدید یا نویسههای ^، [ یا ] باشند. این شناسهها تنها برای تطبیق ارجاع پانویس با خود یادداشت به کار میروند؛ در خروجی، پانویسها به ترتیب شمارهگذاری خواهند شد.
خود پانویسها نیازی نیست در انتهای سند قرار گیرند. آنها میتوانند در هر جایی به جز داخل سایر عناصر بلوکی (فهرستها، نقلقولهای بلوکی، جدولها و غیره) ظاهر شوند. هر پانویس باید با خطوط خالی از محتوای اطراف خود (از جمله سایر پانویسها) جدا شود.
افزونه: inline_notes
پانویسهای درونخطی نیز مجاز هستند (اگرچه برخلاف یادداشتهای معمولی، نمیتوانند شامل چندین پاراگراف باشند). نحو به صورت زیر است:
-
Here is an inline note.^[Inline notes are easier to write, since you don't have to pick an identifier and move down to type the note.]
پانویسهای درونخطی و معمولی را میتوان آزادانه با یکدیگر ترکیب کرد.
نحو ارجاعدهی
افزونه: citations
برای ارجاع به یک مورد کتابشناختی با شناسهٔ foo، از نحو @foo استفاده کنید. ارجاعات معمولی باید درون کروشهها قرار گیرند و با نقطهویرگول موارد مجزا جدا شوند:
-
Blah blah [@doe99; @smith2000; @smith2004].
نحوهٔ رندر شدن این مورد به سبک ارجاعدهی بستگی دارد. در یک سبک «نویسنده-تاریخ»، ممکن است به صورت زیر رندر شود:
-
Blah blah (Doe 1999, Smith 2000, 2004).
در یک سبک پانویسی، ممکن است به صورت زیر رندر شود:
-
Blah blah.[^1] [^1]: John Doe, "Frogs," *Journal of Amphibians* 44 (1999); Susan Smith, "Flies," *Journal of Insects* (2000); Susan Smith, "Bees," *Journal of Insects* (2004).
برای اطلاعات بیشتر درباره سبکهای CSL و چگونگی تأثیر آنها بر رندر شدن، به مستندات کاربری CSL مراجعه کنید.
مگر اینکه کلید ارجاع با یک حرف، رقم یا _ آغاز شود و فقط شامل نویسههای الفبایی-عددی و علائم نگارشی داخلی منفرد (:.#$%&-+?<>~/) باشد، وگرنه باید درون آکولاد قرار گیرد که بخشی از کلید به شمار نمیآید. در @Foo_bar.baz.، کلید Foo_bar.baz است زیرا نقطهٔ انتهایی یک علامت نگارشی داخلی نیست، بنابراین در کلید گنجانده نمیشود. در @{Foo_bar.baz.}، کلید شامل نقطهٔ انتهایی، یعنی Foo_bar.baz. است. در @Foo_bar--baz، کلید Foo_bar است زیرا تکرار علائم نگارشی داخلی باعث خاتمهٔ کلید میشود. اگر از نشانیهای وب به عنوان کلید استفاده میکنید، استفاده از آکولاد توصیه میشود: [@{https://example.com/bib?name=foobar&date=2000}, p. 33].
موارد ارجاع میتوانند به صورت اختیاری شامل پیشوند، مکانیاب و پسوند باشند. در
-
Blah blah [see @doe99, pp. 33-35 and *passim*; @smith04, chap. 1].
مورد اول (doe99) دارای پیشوند see، مکانیاب pp. 33-35 و پسوند and *passim* است. مورد دوم (smith04) دارای مکانیاب chap. 1 و فاقد پیشوند یا پسوند است.
پاندوک از روشهای مکاشفهای برای تفکیک مکانیاب از باقی متن استفاده میکند. این ابزار به اصطلاحات مکانیاب تعریفشده در فایلهای محلی CSL حساس است. هر دو شکل اختصاری یا غیراختصاری پذیرفته میشوند. در محلیسازی en-US، اصطلاحات مکانیاب میتوانند به هر دو صورت مفرد یا جمع نوشته شوند، مانند book، bk./bks.؛ chapter، chap./chaps.؛ column، col./cols.؛ figure، fig./figs.؛ folio، fol./fols.؛ number، no./nos.؛ line، l./ll.؛ note، n./nn.؛ opus، op./opp.؛ page، p./pp.؛ paragraph، para./paras.؛ part، pt./pts.؛ section، sec./secs.؛ sub verbo، s.v./s.vv.؛ verse، v./vv.؛ volume، vol./vols.؛ ¶/¶¶؛ §/§§. اگر از هیچ اصطلاح مکانیابی استفاده نشود، “page” فرض میشود.
در موارد پیچیده، میتوانید با قرار دادن یک عبارت در آکولاد، آن را مجبور کنید که به عنوان مکانیاب در نظر گرفته شود، یا با قرار دادن آکولاد قبل از آن، از تجزیه شدن پسوند به عنوان مکانیاب جلوگیری کنید:
-
[@smith{ii, A, D-Z}, with a suffix] [@smith, {pp. iv, vi-xi, (xv)-(xvii)} with suffix here] [@smith{}, 99 years later] علامت تفریق (-) قبل از @ از ذکر نام نویسنده در یادکرد جلوگیری میکند. این مورد زمانی میتواند مفید باشد که نام نویسنده پیشتر در متن ذکر شده باشد: -
Smith says blah [-@smith04].
همچنین میتوانید با حذف قلابها، یک یادکرد نویسنده-در-متن (author-in-text) بنویسید:
-
@smith04 says blah. @smith04 [p. 33] says blah.
این کار باعث میشود نام نویسنده رندر شده و به دنبال آن جزئیات کتابشناختی قرار گیرد. زمانی از این شیوه استفاده کنید که میخواهید یادکرد را به فاعل یک جمله تبدیل کنید.
هنگامی که از شیوهٔ یادداشت (note style) استفاده میکنید، معمولاً بهتر است به جای نوشتن یک یادداشت صریح، اجازه دهید citeproc پاورقیها را از روی یادکردها ایجاد کند. اگر یک یادداشت صریح حاوی یادکرد مینویسید، توجه داشته باشید که یادکردهای عادی درون پرانتز قرار میگیرند، در حالی که یادکردهای نویسنده-در-متن پرانتز نخواهند داشت. به همین دلیل، هنگام استفاده از شیوهٔ یادداشت، گاهی ترجیح داده میشود در داخل یادداشتها از سبک نویسنده-در-متن استفاده شود.
بسیاری از شیوههای CSL زمانی که یک منبع قبلاً در متن مورد یادکرد قرار گرفته باشد، یادکردها را به شکلی متفاوت قالببندی میکنند. در اسناد دارای فصل، معمولاً مطلوب است که این اطلاعات موقعیت در آغاز هر فصل بازنشانی شوند. برای انجام این کار، کلاس reset-citation-positions را به عنوان هر فصل اضافه کنید:
-
# The Beginning {.reset-citation-positions}
توجه داشته باشید که این کلاس تنها زمانی تأثیر دارد که روی عنوانهای سطح بالا قرار گیرد؛ این کلاس در بلوکهای تودرتو نادیده گرفته میشود.
افزونههای غیرپیشفرض (Non-default extensions)
افزونههای نحو Markdown زیر به طور پیشفرض در pandoc فعال نیستند، اما میتوان آنها را با افزودن +EXTENSION به نام قالب فعال کرد، که در آن EXTENSION نام افزونه است. بنابراین، برای مثال، markdown+hard_line_breaks همان Markdown با شکستهای خطی سخت (hard line breaks) است.
افزونه: rebase_relative_paths
مسیرهای نسبی را برای پیوندها و تصاویر Markdown، بسته به مسیر فایلی که حاوی پیوند یا پیوند تصویر است بازنویسی میکند. برای هر پیوند یا تصویر، pandoc دایرکتوری فایلِ حاوی آن را نسبت به دایرکتوری کاری محاسبه کرده و مسیر حاصل را به ابتدای مسیر پیوند یا تصویر اضافه میکند.
کاربرد این افزونه با یک مثال بهتر مشخص میشود. فرض کنید برای هر فصل از یک کتاب یک زیردایرکتوری دارید: chap1، chap2، chap3. هر کدام حاوی یک فایل text.md و تعدادی تصویر استفادهشده در آن فصل هستند. شما میخواهید  در chap1/text.md به chap1/spider.jpg و  در chap2/text.md به chap2/spider.jpg ارجاع داشته باشد. برای این کار، از دستور زیر استفاده کنید:
-
pandoc chap*/*.md -f markdown+rebase_relative_paths
بدون این افزونه، مجبور بودید از  در chap1/text.md و  در chap2/text.md استفاده نمایید. پیوندهای دارای مسیر نسبی نیز دقیقاً به همان شیوهٔ تصاویر بازنویسی خواهند شد.
مسیرهای مطلق و URLها تغییر داده نمیشوند. همچنین مسیرهای خالی یا مسیرهایی که کاملاً از یک قطعه (fragment) تشکیل شدهاند، مانند #foo، دستنخورده باقی میمانند.
توجه داشته باشید که در صورت تفاوت، مسیرهای نسبی در پیوندها و تصاویر ارجاعی نسبت به فایلی بازنویسی خواهند شد که حاوی تعریف ارجاع پیوند است، نه فایلی که خود پیوند یا تصویر ارجاعی در آن قرار دارد.
افزونه: mark
برای برجستهسازی بخشی از متن، ابتدا و انتهای آن را با == مشخص کنید. بنابراین، برای مثال:
-
This ==is deleted text.==
افزونه: attributes
امکان ضمیمه کردن ویژگیها (attributes) را به هر عنصر درونخطی (inline) یا در سطح بلوک (block-level) هنگام تجزیهٔ commonmark فراهم میکند. نحو ویژگیها مشابه نحوی است که در header_attributes استفاده میشود.
- ویژگیهایی که بلافاصله پس از یک عنصر درونخطی قرار میگیرند، بر آن عنصر تأثیر میگذارند. اگر پس از یک فاصله قرار گیرند، به آن فاصله تعلق خواهند داشت. (بنابراین، این گزینه شامل inline_code_attributes و link_attributes نیز میشود.)
- ویژگیهایی که بلافاصله پیش از یک عنصر بلوکی، در یک سطر جداگانه قرار میگیرند، بر آن عنصر تأثیر میگذارند.
- میتوان از مشخصکنندههای ویژگی متوالی، چه برای بلوکها و چه برای عناصر درونخطی استفاده کرد. ویژگیهای آنها با یکدیگر ترکیب خواهند شد.
- ویژگیهایی که در انتهای متن یک عنوان Setext یا ATX قرار میگیرند (و با فاصله از متن جدا شدهاند) بر عنصر عنوان تأثیر میگذارند. (بنابراین، این گزینه شامل header_attributes نیز میشود.)
- ویژگیهایی که پس از حصار آغازین (opening fence) در یک بلوک کد محصور (fenced code block) قرار میگیرند، بر عنصر بلوک کد تأثیر میگذارند. (بنابراین، این گزینه شامل fenced_code_attributes نیز میشود.)
- ویژگیهایی که در انتهای تعریف یک پیوند ارجاعی قرار میگیرند، بر پیوندهایی که به آن تعریف ارجاع میدهند تأثیر میگذارند.
توجه داشته باشید که درخت نحو انتزاعی pandoc (یا همان AST) در حال حاضر اجازه نمیدهد ویژگیها به عناصر دلخواه ضمیمه شوند. بنابراین در صورت نیاز، یک ظرف Span یا Div اضافه خواهد شد..SS افزونه: old_dashes رفتار pandoc <= 1.8.2.1 را برای تجزیه خطتیرههای هوشمند انتخاب میکند: - قبل از یک عدد به عنوان خطتیره کوتاه (en-dash) و -- به عنوان خطتیره بلند (em-dash) در نظر گرفته میشود. این گزینه تنها در صورتی تأثیر دارد که smart فعال باشد. این افزونه بهطور خودکار برای ورودی textile انتخاب میشود.
افزونه: angle_brackets_escapable
امکان گریز دادن < و > با بکاسلش را فراهم میکند، همانطور که در GitHub flavored Markdown ممکن است اما در Markdown اصلی امکانپذیر نیست. این ویژگی بهطور ضمنی توسط گزینه پیشفرض all_symbols_escapable در pandoc اعمال میشود.
افزونه: lists_without_preceding_blankline
اجازه میدهد یک فهرست بلافاصله پس از یک بند، بدون هیچ خط خالی میانی قرار گیرد.
افزونه: four_space_rule
رفتار pandoc <= 2.0 را برای تجزیه فهرستها انتخاب میکند، بهطوری که برای بندهای ادامهدهنده موارد فهرست به چهار فاصله تورفتگی نیاز است.
افزونه: spaced_reference_links
اجازه میدهد بین دو جزء یک پیوند مرجع، فاصله خالی وجود داشته باشد، برای مثال:
-
[foo] [bar].
افزونه: hard_line_breaks
باعث میشود تمام خطوط جدید درون یک بند، بهجای فاصله بهعنوان شکست سخت خط تفسیر شوند.
افزونه: ignore_line_breaks
باعث میشود خطوط جدید درون یک بند، بهجای در نظر گرفته شدن بهعنوان فاصله یا شکست سخت خط، نادیده گرفته شوند. این گزینه برای استفاده در زبانهای آسیای شرقی در نظر گرفته شده است که در آنها بین کلمات از فاصله استفاده نمیشود، اما متن برای خوانایی بهتر به چندین خط تقسیم میگردد.
افزونه: east_asian_line_breaks
باعث میشود خطوط جدید درون یک بند، هنگامی که بین دو نویسه عریض آسیای شرقی قرار میگیرند، بهجای در نظر گرفته شدن بهعنوان فاصله یا شکست سخت خط، نادیده گرفته شوند. این افزونه برای متونی که ترکیبی از نویسههای عریض آسیای شرقی و نویسههای دیگر هستند، انتخاب بهتری نسبت به ignore_line_breaks است.
افزونه: emoji
ایموجیهای متنی مانند :smile: را بهعنوان شکلکهای یونیکد تجزیه میکند.
افزونه: tex_math_gfm
از دو قالب مخصوص GitHub برای ریاضیات پشتیبانی میکند. ریاضی درونخطی: $`e=mc^2`$.
ریاضی نمایشی:
-
``` math e=mc^2 ```
افزونه: tex_math_single_backslash
باعث میشود هر متنی بین \( و \) به عنوان ریاضیات TeX درونخطی، و هر متنی بین \[ و \] به عنوان ریاضیات TeX نمایشی تفسیر شود. نکته: یکی از معایب این افزونه این است که امکان گریز دادن ( و [ را سلب میکند.
افزونه: tex_math_double_backslash
باعث میشود هر متنی بین \\( و \\) به عنوان ریاضیات TeX درونخطی، و هر متنی بین \\[ و \\] به عنوان ریاضیات TeX نمایشی تفسیر شود.
افزونه: markdown_attribute
بهطور پیشفرض، pandoc محتوای داخل برچسبهای سطح بلوک را به عنوان Markdown تفسیر میکند. این افزونه رفتار را تغییر میدهد تا Markdown تنها زمانی درون برچسبهای سطح بلوک تجزیه شود که آن برچسبها دارای مشخصه markdown=1 باشند.
افزونه: mmd_title_block
یک بلوک عنوان به سبک MultiMarkdown را در ابتدای سند فعال میکند، برای مثال:
-
Title: My title Author: John Doe Date: September 1, 2008 Comment: This is a sample mmd title block, with a field spanning multiple lines.
برای جزئیات به مستندات MultiMarkdown مراجعه کنید. اگر pandoc_title_block یا yaml_metadata_block فعال باشد، نسبت به mmd_title_block اولویت خواهد داشت.
افزونه: abbreviations
کلیدهای اختصار PHP Markdown Extra را تجزیه میکند، مانند:
-
*[HTML]: Hypertext Markup Language
توجه داشته باشید که مدل سند pandoc از اختصارات پشتیبانی نمیکند، بنابراین اگر این افزونه فعال باشد، کلیدهای اختصار صرفاً نادیده گرفته میشوند (برخلاف اینکه به عنوان یک بند تجزیه شوند).
افزونه: alerts
از هشدارهای Markdown به سبک GitHub پشتیبانی میکند، مانند:
-
> [!TIP] > Helpful advice for doing things better or more easily.
افزونه: autolink_bare_uris
همه نشانیهای اینترنتی مطلق (absolute URIs) را تبدیل به پیوند میکند، حتی زمانی که درون قلابهای زاویهدار <...> قرار نگرفته باشند.
افزونه: mmd_link_attributes
مشخصههای کلید-مقدار به سبک MultiMarkdown را روی ارجاعات پیوند و تصویر تجزیه میکند. این افزونه نباید با افزونه link_attributes اشتباه گرفته شود.
-
This is a reference ![image][ref] with MultiMarkdown attributes. [ref]: https://path.to/image "Image title" width=20px height=30px id=myId class="myClass1 myClass2"
افزونه: mmd_header_identifiers
شناسههای سربرگ به سبک MultiMarkdown را تجزیه میکند (در کروشهها، پس از عنوان اما پیش از هر # انتهایی در یک سربرگ ATX).
افزونه: gutenberg
از قواعد Project Gutenberg برای خروجی plain استفاده میکند: حروف تماماً بزرگ برای تأکید قوی، احاطه با زیرخط برای تأکید معمولی، و افزودن فاصله خالی اضافی در اطراف سربرگها..SS افزونه: sourcepos هنگام تجزیه commonmark، ویژگیهای موقعیت در منبع گنجانده میشوند. برای عناصری که ویژگیها را میپذیرند، یک ویژگی data-pos اضافه میشود؛ سایر عناصر درون یک عنصر دربرگیرنده Div یا Span با ویژگی data-pos قرار میگیرند.
افزونه: short_subsuperscripts
زیرنویسها و بالانویسهای به سبک MultiMarkdown را تجزیه میکند که به ترتیب با نویسه `~' یا `^' آغاز میشوند و دنباله الفبایی-عددی پس از آن را در بر میگیرند. برای مثال:
-
x^2 = 4
یا
-
Oxygen is O~2.
افزونه: wikilinks_title_after_pipe
دستور Pandoc از چندین نحو پیوند ویکی (wikilink) در Markdown پشتیبانی میکند، بدون توجه به اینکه عنوان پیش یا پس از خط لوله (pipe) قرار گیرد.
استفاده از --from=markdown+wikilinks_title_after_pipe نتیجه میدهد:
-
[[URL|title]]
در حالی که استفاده از --from=markdown+wikilinks_title_before_pipe نتیجه میدهد:
-
[[title|URL]]
گونههای Markdown
علاوه بر Markdown گسترشیافته pandoc، گونههای Markdown زیر نیز پشتیبانی میشوند:
- markdown_phpextra (PHP Markdown Extra)
- markdown_github (نسخه منسوخشده GitHub-Flavored Markdown)
- markdown_mmd (MultiMarkdown)
- markdown_strict (Markdown.pl)
- commonmark (CommonMark)
- gfm (Github-Flavored Markdown)
- commonmark_x (CommonMark به همراه بسیاری از افزونههای pandoc)
برای مشاهده اینکه کدام افزونهها برای یک قالب مشخص پشتیبانی میشوند و کدامیک بهطور پیشفرض فعال هستند، میتوانید از این دستور استفاده کنید:
-
pandoc --list-extensions=FORMAT
که در آن FORMAT با نام قالب جایگزین میشود.
توجه داشته باشید که فهرست افزونهها برای commonmark، gfm و commonmark_x نسبت به commonmark پیشفرض تعریف شدهاند. بنابراین، برای مثال، backtick_code_blocks به عنوان یک افزونه نمایش داده نمیشود، چرا که بهطور پیشفرض فعال است و نمیتوان آن را غیرفعال کرد.
ارجاعات (CITATIONS)
هنگامی که گزینه --citeproc استفاده شود، pandoc میتواند بهطور خودکار ارجاعات و کتابشناسی را در چندین شیوهنامه تولید کند. کاربرد پایهای عبارت است از:
-
pandoc --citeproc myinput.txt
برای استفاده از این ویژگی، به موارد زیر نیاز خواهید داشت:
- یک سند حاوی ارجاعات (بخش نحو ارجاعدهی را ببینید)؛
- یک منبع از دادههای کتابشناختی: یا یک فایل کتابشناسی خارجی یا فهرستی از references در فراداده YAML سند؛
- به صورت اختیاری، یک شیوهنامه ارجاع CSL.
تعیین دادههای کتابشناختی
میتوانید یک کتابشناسی خارجی را با استفاده از فیلد فراداده bibliography در بخش فراداده YAML یا آرگومان خط فرمان --bibliography مشخص کنید. اگر مایلید از چندین فایل کتابشناسی استفاده کنید، میتوانید چندین آرگومان --bibliography ارائه دهید یا فیلد فراداده bibliography را روی یک آرایه YAML تنظیم کنید. یک کتابشناسی میتواند هر یک از این قالبها را داشته باشد:
-
Format File extension ---------- ---------------- BibLaTeX .bib BibTeX .bibtex CSL JSON .json CSL YAML .yaml RIS .ris
توجه داشته باشید که .bib هم برای فایلهای BibTeX و هم BibLaTeX قابل استفاده است؛ برای اجبار به تفسیر به عنوان BibTeX، از پسوند .bibtex استفاده کنید.
در پایگاههای داده BibTeX و BibLaTeX، پاندوک نشانهگذاری LaTeX را درون فیلدهایی مانند title تجزیه میکند؛ در پایگاههای داده CSL YAML، نشانهگذاری Markdown پاندوک را؛ و در پایگاههای داده CSL JSON، یک نشانهگذاری شبیه به HTML را:
- <i>...</i>
- مورب (italics)
- <b>...</b>
- پررنگ (bold)
- <span style="font-variant:small-caps;">...</span> یا <sc>...</sc>
- حروف کاپیتال کوچک (small capitals)
- <sub>...</sub>
- زیرنویس (subscript)
- <sup>...</sup>
- بالانویس (superscript)
- <span class="nocase">...</span>
- جلوگیری از بزرگنویسی حروف یک عبارت بر اساس شیوهی عنوان (title case)
به عنوان جایگزینی برای تعیین یک فایل کتابشناسی با استفاده از --bibliography یا فیلد فراداده YAML با نام bibliography، میتوانید دادههای ارجاع را مستقیماً در فیلد references در فراداده YAML سند بگنجانید. این فیلد باید شامل آرایهای از ارجاعات کدگذاریشده با فرمت YAML باشد، برای مثال:
-
--- references: - type: article-journal id: WatsonCrick1953 author: - family: Watson given: J. D. - family: Crick given: F. H. C. issued: date-parts: - - 1953 - 4 - 25 title: 'Molecular structure of nucleic acids: a structure for deoxyribose nucleic acid' title-short: Molecular structure of nucleic acids container-title: Nature volume: 171 issue: 4356 page: 737-738 DOI: 10.1038/171737a0 URL: https://www.nature.com/articles/171737a0 language: en-GB ...
اگر هم کتابشناسی خارجی و هم ارجاعات درونخطی (فراداده YAML) ارائه شوند، از هر دو استفاده خواهد شد. در صورت تداخل در idها، ارجاعات درونخطی اولویت خواهند داشت.
توجه داشته باشید که میتوان از pandoc برای تولید چنین بخش فراداده YAML از یک کتابشناسی BibTeX، BibLaTeX یا CSL JSON استفاده کرد:
-
pandoc chem.bib -s -f biblatex -t markdown pandoc chem.json -s -f csljson -t markdown
در واقع، pandoc میتواند میان هر یک از این قالبهای ارجاع تبدیل انجام دهد:
-
pandoc chem.bib -s -f biblatex -t csljson pandoc chem.yaml -s -f markdown -t biblatex
اجرای pandoc بر روی یک فایل کتابشناسی با گزینه --citeproc، یک کتابشناسی قالببندیشده در قالب انتخابی شما ایجاد خواهد کرد:
-
pandoc chem.bib -s --citeproc -o chem.html pandoc chem.bib -s --citeproc -o chem.pdf اگر از یک کتابشناسی bibtex یا biblatex استفاده میکنید، قواعد زیر را رعایت کنید:
-
عنوانهای انگلیسی باید در حالت title case باشند. عنوانهای غیرانگلیسی باید در حالت sentence case باشند، و فیلد langid در biblatex باید روی زبان مربوطه تنظیم شود. (مقدارهای زیر به عنوان انگلیسی در نظر گرفته میشوند: american، british، canadian، english، australian، newzealand، USenglish، یا UKenglish.)
-
همانطور که در bibtex/biblatex استاندارد است، اسامی خاص باید با آکولاد محافظت شوند تا در شیوههایی که نیازمند sentence case هستند، با حروف کوچک نوشته نشوند. برای مثال:
-
title = {My Dinner with {Andre}}
- •
- علاوه بر این، کلماتی که باید با حروف کوچک (یا camelCase) باقی بمانند باید محافظت شوند:
-
title = {Spin Wave Dispersion on the {nm} Scale}
اگرچه این کار در bibtex/biblatex ضروری نیست، اما در citeproc که عنوانها را در داخل به صورت sentence case ذخیره میکند و در شیوههای نیازمند آن به title case تبدیل مینماید، ضروری است. در اینجا ما “nm” را محافظت میکنیم تا در این مرحله به “Nm” تبدیل نشود.
اگر از کتابشناسی CSL (چه JSON یا YAML) استفاده میکنید، قواعد زیر را رعایت کنید:
- تمام عنوانها باید در حالت sentence case باشند.
- از فیلد language برای عنوانهای غیرانگلیسی استفاده کنید تا از تبدیل آنها به title case در شیوههایی که این را میطلبند جلوگیری شود. (تبدیل تنها در صورتی رخ میدهد که language با en آغاز شود یا خالی گذاشته شده باشد.)
- کلماتی را که نباید به title case تبدیل شوند، با استفاده از این نحو محافظت کنید:
-
Spin wave dispersion on the <span class="nocase">nm</span> scale
مقالههای همایش، منتشرشده در برابر منتشرنشده
برای یک مقالهٔ همایش که به طور رسمی منتشر شده است، از نوع مدخل biblatex با نام inproceedings استفاده کنید (که به CSL paper-conference نگاشت خواهد شد).
برای یک دستنوشتهٔ منتشرنشده، از نوع مدخل biblatex با نام unpublished بدون فیلد eventtitle استفاده کنید (این نوع مدخل به CSL manuscript نگاشت خواهد شد).
برای یک سخنرانی، مقالهٔ همایش منتشرنشده، یا ارائهٔ پوستر، از نوع مدخل biblatex با نام unpublished همراه با یک فیلد eventtitle استفاده کنید (این نوع مدخل به CSL speech نگاشت خواهد شد). از فیلد type در biblatex برای مشخص کردن نوع استفاده کنید، مانند “Paper” یا “Poster”. فیلدهای venue و eventdate نیز ممکن است مفید باشند، هرچند eventdate در بیشتر شیوههای CSL نمایش داده نخواهد شد. توجه داشته باشید که venue برای محل برگزاری رویداد است، برخلاف location که مکان ناشر را توصیف میکند؛ از دومی برای یک مقالهٔ همایش منتشرنشده استفاده نکنید.
تعیین شیوهٔ استناد
استنادها و مراجع را میتوان با استفاده از هر شیوهای که توسط Citation Style Language پشتیبانی شده و در Zotero Style Repository فهرست شده باشد، قالببندی کرد. این فایلها با استفاده از گزینهٔ --csl یا فیلد فرادادهٔ csl (یا citation-style) مشخص میشوند. به طور پیشفرض، pandoc از قالب author-date در Chicago Manual of Style استفاده خواهد کرد. (میتوانید این پیشفرض را با کپی کردن شیوهٔ CSL مورد نظر خود در default.csl درون دایرکتوری دادههای کاربر خود لغو کنید.) پروژهٔ CSL اطلاعات بیشتری در مورد یافتن و ویرایش شیوهها ارائه میدهد.
گزینهٔ --citation-abbreviations (یا فیلد فرادادهٔ citation-abbreviations) ممکن است برای مشخص کردن یک فایل JSON حاوی اختصارات مجلاتی به کار رود که باید در کتابشناسیهای قالببندیشده هنگام تعیین form="short" استفاده شوند. قالب فایل را میتوان با یک مثال نشان داد:
-
{ "default": { "container-title": { "Lloyd's Law Reports": "Lloyd's Rep", "Estates Gazette": "EG", "Scots Law Times": "SLT" } } }
استنادها در شیوههای پانویس
پردازش استناد pandoc طوری طراحی شده است که به شما اجازه میدهد بدون دستکاری منبع Markdown، بین شیوههای author-date، عددی، و پانویس جابهجا شوید. هنگامی که از یک شیوهٔ پانویس استفاده میکنید، از درج دستی پاورقیها خودداری نمایید. در عوض، استنادها را دقیقاً همانطور که در یک شیوهٔ author-date وارد میکردید درج کنید—برای مثال،
-
Blah blah [@foo, p. 33].
پاورقی به صورت خودکار ایجاد خواهد شد. بسته به تنظیمات notes-after-punctuation، همانطور که در ادامه در بخش «دیگر فیلدهای فرادادهٔ مرتبط» (Other relevant metadata fields) شرح داده شده است، pandoc کار حذف فاصله و انتقال یادداشت به قبل یا بعد از نقطه را انجام خواهد داد.
در برخی موارد ممکن است لازم باشد استنادی را درون یک پاورقی معمولی قرار دهید. استنادهای عادی در پاورقیها (مانند [@foo, p. 33]) درون پرانتز نمایش داده خواهند شد. استنادهای درونمتنی (مانند @foo [p. 33]) بدون پرانتز نمایش داده خواهند شد. (در صورت نیاز، یک ویرگول اضافه خواهد شد.) بنابراین:
-
[^1]: Some studies [@foo; @bar, p. 33] show that frubulicious zoosnaps are quantical. For a survey of the literature, see @baz [chap. 1]. اگر شیوهنامه خواستار فهرستی از آثار ارجاعشده باشد، در صورت وجود، در یک div با شناسهٔ refs قرار داده میشود: -
::: {#refs} :::
در غیر این صورت، در انتهای سند قرار خواهد گرفت. تولید کتابشناسی را میتوان با تنظیم suppress-bibliography: true در فرادادهٔ YAML لغو کرد.
اگر میخواهید کتابشناسی دارای عنوان بخش باشد، میتوانید reference-section-title را در فراداده تنظیم کنید، یا عنوان را در ابتدای div با شناسهٔ refs (در صورت استفاده از آن) یا در انتهای سند خود قرار دهید:
-
last paragraph... # References
کتابشناسی پس از این عنوان درج خواهد شد. توجه داشته باشید که کلاس unnumbered به این عنوان افزوده خواهد شد تا این بخش شمارهگذاری نشود.
اگر میخواهید کتابشناسی را درون متغیری در قالب (template) خود قرار دهید، یک روش برای انجام این کار قرار دادن div با شناسهٔ refs درون یک فیلد فراداده است؛ برای نمونه:
-
--- refs: | ::: {#refs} ::: ...
سپس میتوانید متغیر $refs$ را در هر کجای قالب خود که میخواهید کتابشناسی در آنجا قرار گیرد بگذارید.
گنجاندن موارد ارجاعنشده در کتابشناسی
اگر میخواهید مواردی را بدون ارجاع واقعی به آنها در متن اصلی، در کتابشناسی بگنجانید، میتوانید یک فیلد فرادادهٔ ساختگی nocite تعریف کرده و ارجاعات را در آن قرار دهید:
-
--- nocite: | @item1, @item2 ... @item3
در این مثال، سند تنها حاوی ارجاعی برای item3 خواهد بود، اما کتابشناسی شامل مدخلهایی برای item1، item2 و item3 خواهد بود.
همچنین میتوان با استفاده از یک نویسهٔ عام (wildcard)، کتابشناسی را شامل تمامی ارجاعات، صرفنظر از اینکه در متن سند ظاهر شده باشند یا خیر، ایجاد کرد:
-
--- nocite: | @* ...
برای خروجی LaTeX، میتوانید از natbib یا biblatex نیز برای رندر کتابشناسی استفاده کنید. برای انجام این کار، فایلهای کتابشناسی را مطابق آنچه در بالا شرح داده شد مشخص کرده و آرگومان --natbib یا --biblatex را به فراخوانی pandoc بیفزایید. به یاد داشته باشید که فایلهای کتابشناسی باید در قالب BibTeX (برای --natbib) یا BibLaTeX (برای --biblatex) باشند.
سایر فیلدهای فرادادهٔ مرتبط
چند فیلد فرادادهٔ دیگر نیز بر قالببندی کتابشناسی تأثیر میگذارند:
- link-citations
- اگر true باشد، ارجاعات به مدخلهای متناظر کتابشناسی پیوند (ابرپیوند) داده میشوند (تنها برای شیوههای نویسنده-تاریخ و عددی). پیشفرض false است.
- link-bibliography
- اگر true باشد، شناسههای DOI، PMCID، PMID و URLها در کتابشناسی به صورت ابرپیوند رندر میشوند. (اگر مدخلی حاوی یک DOI، PMCID، PMID یا URL باشد، اما هیچیک از این فیلدها توسط شیوهنامه رندر نشوند، آنگاه عنوان، یا در نبود عنوان کل مدخل، پیوند خواهد شد.) پیشفرض true است.
- lang
- فیلد lang بر نحوهٔ بومیسازی شیوهنامه اثر میگذارد؛ برای نمونه در ترجمهٔ برچسبها، استفاده از علامتهای نقلقول، و شیوهٔ مرتبسازی موارد. (برای سازگاری با گذشته، میتوان از locale بهجای lang استفاده کرد، اما این کاربرد منسوخ شده است.)
- zh-u-co-pinyin: چینی با مرتبسازی پینیین (Pinyin).
- es-u-co-trad: اسپانیایی با مرتبسازی سنتی (به طوری که Ch پس از C مرتب میشود).
- fr-u-kb: فرانسوی با مرتبسازی اعراب “وارونه” (به طوری که coté پس از côte مرتب میشود).
- en-US-u-kf-upper: انگلیسی با مرتبسازی حروف بزرگ پیش از کوچک (پیشفرض، حروف کوچک قبل از حروف بزرگ است).
- notes-after-punctuation
- اگر true باشد (پیشفرض برای شیوههای یادداشت)، pandoc مراجع پانویس یا ارجاعات عددی بالانویس را پس از علائم نگارشی بعدی قرار میدهد. برای نمونه، اگر متن مبدأ حاوی blah blah [@jones99]. باشد، نتیجه شبیه به blah blah.[^1] خواهد بود، به طوری که یادداشت به پس از نقطه منتقل شده و فاصله حذف میشود. اگر false باشد، فاصله همچنان حذف میشود، اما پانویس به پس از علائم نگارشی منتقل نخواهد شد. این گزینه همچنین میتواند در شیوههای عددی که از بالانویس برای شمارههای ارجاع استفاده میکنند به کار رود (اما برای این شیوهها، پیشفرض انتقال ندادن ارجاع است)..SH "نمایشهای اسلاید (SLIDE SHOWS)" شما میتوانید از pandoc برای ایجاد یک ارائهٔ اسلاید HTML + JavaScript که در یک مرورگر وب قابل مشاهده باشد، استفاده کنید. برای انجام این کار پنج روش با استفاده از S5، DZSlides، Slidy، Slideous یا reveal.js وجود دارد. همچنین میتوانید یک نمایش اسلاید PDF با استفاده از beamer در LaTeX یا نمایشهای اسلاید با قالب Microsoft PowerPoint تولید کنید.
در اینجا کد منبع Markdown برای یک نمایش اسلاید ساده، habits.txt، آمده است:
-
% Habits % John Doe % March 22, 2005 # In the morning ## Getting up - Turn off alarm - Get out of bed ## Breakfast - Eat eggs - Drink coffee # In the evening ## Dinner - Eat spaghetti - Drink wine ------------------  ## Going to sleep - Get in bed - Count sheep
برای ایجاد یک نمایش اسلاید HTML/JavaScript، کافی است دستور زیر را وارد کنید:
-
pandoc -t FORMAT -s habits.txt -o habits.html
که در آن FORMAT یکی از مقادیر s5، slidy، slideous، dzslides یا revealjs است.
برای Slidy، Slideous، reveal.js و S5، فایلی که توسط pandoc همراه با گزینهٔ -s/--standalone تولید میشود پیوندی به فایلهای JavaScript و CSS اضافه میکند که فرض میشود در مسیر نسبی s5/default (برای S5)، slideous (برای Slideous)، reveal.js (برای reveal.js)، یا در وبسایت Slidy در w3.org (برای Slidy) در دسترس هستند. (این مسیرها را میتوان با تنظیم متغیرهای slidy-url، slideous-url، revealjs-url، یا s5-url تغییر داد؛ بخش «Variables for HTML slides» را در بالا ببینید.) برای DZSlides، کدهای JavaScript و CSS (که نسبتاً کوتاه هستند) بهطور پیشفرض درون خود فایل قرار داده میشوند.
در تمام قالبهای اسلاید HTML، میتوان از گزینهٔ --self-contained برای تولید یک فایل منفرد استفاده کرد که شامل تمام دادههای لازم برای نمایش اسلاید است، از جمله اسکریپتهای پیوندشده، شیوهنامهها، تصاویر و ویدیوها.
برای تولید یک نمایش اسلاید PDF با استفاده از beamer، دستور زیر را وارد کنید:
-
pandoc -t beamer habits.txt -o habits.pdf
توجه داشته باشید که نمایش اسلاید reveal.js را نیز میتوان با چاپ در قالب فایل از طریق مرورگر به یک PDF تبدیل کرد.
برای تولید یک نمایش اسلاید PowerPoint، دستور زیر را وارد کنید:
-
pandoc habits.txt -o habits.pptx
ساختاربندی نمایش اسلاید (Structuring the slide show)
بهطور پیشفرض، سطح اسلاید (slide level) بالاترین سطح سرفصل در سلسلهمراتب است که در جایی از سند، بلافاصله پس از آن محتوا (و نه یک سرفصل دیگر) قرار گرفته باشد. در مثال بالا، پس از سرفصلهای سطح ۱ همواره سرفصلهای سطح ۲ قرار دارند که خود بلافاصله با محتوا دنبال میشوند؛ بنابراین سطح اسلاید ۲ است. این مقدار پیشفرض را میتوان با استفاده از گزینهٔ --slide-level لغو و بازنویسی کرد.
سند بر اساس قوانین زیر به اسلایدها تقسیم میشود:
- یک خط افقی همواره آغازگر یک اسلاید جدید است.
- یک سرفصل در سطح اسلاید همواره آغازگر یک اسلاید جدید است.
- سرفصلهای پایینتر از سطح اسلاید در سلسلهمراتب، سرفصلهایی درون یک اسلاید ایجاد میکنند. (در beamer، یک “block” ساخته خواهد شد. اگر سرفصل دارای کلاس example باشد، محیط exampleblock استفاده خواهد شد؛ اگر دارای کلاس alert باشد، محیط alertblock به کار میرود؛ در غیر این صورت یک block معمولی استفاده خواهد شد.)
- سرفصلهای بالاتر از سطح اسلاید در سلسلهمراتب، “title slides” (اسلایدهای عنوان) ایجاد میکنند که تنها حاوی عنوان بخش هستند و به تقسیمبندی نمایش اسلاید به بخشهای مجزا کمک میکنند. محتوای غیرِاسلایدی موجود در زیر این سرفصلها در همان اسلاید عنوان (برای نمایشهای اسلاید HTML) یا در یک اسلاید بعدی با همان عنوان (برای beamer) قرار خواهد گرفت.
- در صورت وجود، صفحهٔ عنوان بهطور خودکار از بلوک عنوان سند ساخته میشود. (در beamer، میتوان این مورد را با کامنت کردن چند خط در قالب پیشفرض غیرفعال کرد.)
این قوانین بهمنظور پشتیبانی از سبکهای متعددی از نمایشهای اسلاید طراحی شدهاند. اگر ساختاربندی اسلایدهایتان به بخشها و زیربخشها اهمیتی ندارد، میتوانید یا فقط از سرفصلهای سطح ۱ برای همهٔ اسلایدها استفاده کنید (که در آن صورت، سطح ۱ همان سطح اسلاید خواهد بود) یا اینکه مقدار --slide-level=0 را تنظیم کنید.
نکته: در نمایشهای اسلاید reveal.js، اگر سطح اسلاید ۲ باشد، یک چیدمان دوبعدی تولید میشود که در آن سرفصلهای سطح ۱ بهصورت افقی و سرفصلهای سطح ۲ بهصورت عمودی پیش میروند. استفاده از سطوح تودرتوی عمیقتر برای بخشها در reveal.js توصیه نمیشود، مگر اینکه --slide-level=0 را تنظیم کرده باشید (که به reveal.js اجازه میدهد یک چیدمان یکبعدی تولید کند و فقط خطوط افقی را به عنوان مرزهای اسلاید تفسیر نماید)..SS انتخاب چیدمان PowerPoint هنگام ایجاد اسلایدها، نویسندهٔ pptx بر اساس محتوای اسلاید، از میان چندین چیدمان از پیشتعریفشده انتخاب میکند:
- Title Slide
- این چیدمان برای اسلاید نخست استفاده میشود؛ اسلایدی که در صورت وجود فیلدهای فرادادهٔ date، author و title، تولید شده و با آنها پر میشود.
- Section Header
- این چیدمان برای چیزی استفاده میشود که pandoc آن را “اسلایدهای عنوان” مینامد؛ یعنی اسلایدهایی که با سرآیندی آغاز میشوند که در سلسلهمراتب بالاتر از سطح اسلاید قرار دارد.
- Two Content
- این چیدمان برای اسلایدهای دو ستونی به کار میرود؛ یعنی اسلایدهایی شامل یک div با کلاس columns که دستکم شامل دو div با کلاس column باشد.
- Comparison
- این چیدمان به جای “Two Content” برای هر اسلاید دو ستونی به کار میرود که در آن دستکم یک ستون شامل متن و به دنبال آن محتوای غیرمتنی (مانند یک تصویر یا جدول) باشد.
- Content with Caption
- این چیدمان برای هر اسلاید غیر دو ستونی به کار میرود که شامل متن و به دنبال آن محتوای غیرمتنی (مانند یک تصویر یا جدول) باشد.
- Blank
- این چیدمان برای هر اسلایدی که تنها حاوی محتوای خالی باشد استفاده میشود؛ برای نمونه اسلایدی که فقط شامل یادداشتهای ارائهدهنده است، یا اسلایدی که تنها شامل یک فاصلهٔ نشکن است.
- Title and Content
- این چیدمان برای تمام اسلایدهایی که با معیارهای هیچیک از چیدمانهای دیگر همخوانی ندارند به کار میرود.
این چیدمانها از سند مرجع پیشفرض pptx که همراه pandoc عرضه میشود انتخاب میگردند، مگر اینکه با استفاده از --reference-doc سند مرجع دیگری مشخص شده باشد.
فهرستهای تدریجی
به طور پیشفرض، این نویسندهها فهرستهایی تولید میکنند که “یکجا” نمایش داده میشوند. اگر میخواهید فهرستهایتان به صورت تدریجی (یک مورد در هر بار) نمایش داده شوند، از گزینهٔ -i استفاده کنید. اگر میخواهید فهرستی خاص از حالت پیشفرض پیروی نکند، آن را درون یک بلوک div با کلاس incremental یا nonincremental قرار دهید. بنابراین، برای نمونه با استفاده از نحو fenced div، مورد زیر صرفنظر از پیشفرض سند به صورت تدریجی خواهد بود:
-
::: incremental - Eat spaghetti - Drink wine :::
یا
-
::: nonincremental - Eat spaghetti - Drink wine :::
در حالی که استفاده از divهای incremental و nonincremental روش توصیهشده برای تنظیم موردیِ فهرستهای تدریجی است، روشی قدیمیتر نیز پشتیبانی میشود: قرار دادن فهرستها درون نقلقول بلوکی (blockquote) باعث عدول از پیشفرض سند خواهد شد (به این معنی که بدون گزینهٔ -i به صورت تدریجی و با گزینهٔ -i به صورت یکجا نمایش مییابد):
-
> - Eat spaghetti > - Drink wine
هر دو روش امکان ترکیب فهرستهای تدریجی و غیرتدریجی را در یک سند واحد فراهم میکنند.
اگر میخواهید یک فهرست نقلقولشدهٔ واقعی داشته باشید، میتوانید این رفتار را با قرار دادن فهرست درون یک fenced div دور بزنید، به طوری که فرزند مستقیم نقلقول بلوکی نباشد:
-
> ::: wrapper > - a > - list in a quote > :::
درج مکثها
میتوانید با قرار دادن یک بند حاوی سه نقطه که با فاصله از هم جدا شدهاند، درون یک اسلاید “مکث” ایجاد کنید:
-
# Slide with a pause content before the pause . . . content after the pause
نکته: این ویژگی هنوز برای خروجی PowerPoint پیادهسازی نشده است.
شیوهبندی اسلایدها
میتوانید ظاهر اسلایدهای HTML را با قرار دادن فایلهای CSS سفارشی در $DATADIR/s5/default (برای S5)، $DATADIR/slidy (برای Slidy)، یا $DATADIR/slideous (برای Slideous) تغییر دهید؛ که در آن $DATADIR دایرکتوری دادههای کاربر است (گزینهٔ --data-dir در بالا را ببینید). فایلهای اصلی را میتوان در دایرکتوری دادههای سیستمیِ pandoc پیدا کرد (به طور معمول $CABALDIR/pandoc-VERSION/s5/default). دستور Pandoc برای هر فایلی که در دایرکتوری دادههای کاربر پیدا نکند، آنجا را بررسی خواهد کرد.
برای dzslides، کد CSS درون خودِ فایل HTML قرار دارد و میتواند در همانجا ویرایش شود.
تمام گزینههای پیکربندی reveal.js را میتوان از طریق متغیرها تنظیم کرد. برای نمونه، پوستهها (themes) را میتوان با تنظیم متغیر theme به کار برد:
-
-V theme=moon
یا میتوانید با استفاده از گزینهٔ --css یک شیوهنامهٔ (stylesheet) سفارشی مشخص کنید.
برای شیوهبندی اسلایدهای beamer، میتوانید مقادیر theme، colortheme، fonttheme، innertheme و outertheme را با استفاده از گزینهٔ -V تعیین کنید:
-
pandoc -t beamer habits.txt -V theme:Warsaw -o habits.pdf
توجه داشته باشید که در قالبهای اسلاید HTML، مشخصههای سرآیند به مشخصههای اسلاید (در یک <div> یا <section>) تبدیل میشوند که به شما امکان میدهد به اسلایدهای تکی استایل دهید. در beamer، تعدادی از کلاسها و مشخصههای سرآیند به عنوان گزینههای فریم شناخته شده و به عنوان گزینه به frame تحویل داده میشوند: بخش Frame attributes in beamer را در زیر ببینید..SS یادداشتهای گوینده (Speaker notes) یادداشتهای گوینده در خروجیهای reveal.js، PowerPoint (pptx) و beamer پشتیبانی میشوند. میتوانید یادداشتها را بدین صورت به سند Markdown خود بیفزایید:
-
::: notes This is my note. - It can contain Markdown - like this list :::
برای نمایش پنجرهٔ یادداشتها در reveal.js، هنگام مشاهدهٔ ارائه کلید s را فشار دهید. یادداشتهای گوینده در PowerPoint طبق معمول در بخش جزوهها و نمای ارائهدهنده در دسترس خواهند بود.
یادداشتها هنوز برای سایر قالبهای اسلاید پشتیبانی نمیشوند، اما خود یادداشتها روی اسلایدها نمایش داده نخواهند شد.
یادداشتهای گوینده در اسلاید عنوان (PowerPoint)
برای خروجی PowerPoint، اسلاید عنوان از بلوک متادیتای YAML سند تولید میشود. جهت افزودن یادداشتهای گوینده به این اسلاید، از فیلد notes در متادیتا استفاده کنید:
-
--- title: My Presentation author: Jane Doe notes: | Welcome everyone to this presentation. Remember to introduce yourself and mention the key topics. ---
فیلد notes میتواند شامل چندین بند و قالببندی Markdown باشد.
ستونها (Columns)
برای قرار دادن مطالب در ستونهای کنار هم، میتوانید از یک نگهدارندهٔ بومی div با کلاس columns استفاده کنید که شامل دو یا چند نگهدارندهٔ div با کلاس column و ویژگی width باشد:
-
:::::::::::::: {.columns} ::: {.column width="40%"} contents... ::: ::: {.column width="60%"} contents... ::: ::::::::::::::
نکته: مشخص کردن عرض ستونها در حال حاضر برای PowerPoint کار نمیکند.
ویژگیهای اضافی ستونها در beamer
نگهدارندههای div با کلاسهای columns و column میتوانند به صورت اختیاری ویژگی align داشته باشند. کلاس columns میتواند به صورت اختیاری یک ویژگی totalwidth یا یک کلاس onlytextwidth داشته باشد.
-
:::::::::::::: {.columns align=center totalwidth=8em} ::: {.column width="40%"} contents... ::: ::: {.column width="60%" align=bottom} contents... ::: ::::::::::::::
ویژگیهای align در columns و column میتوانند با مقادیر top، top-baseline، center و bottom برای تراز عمودی ستونها استفاده شوند. مقدار پیشفرض در columns برابر با top است.
ویژگی totalwidth عرض ستونها را به مقدار دادهشده محدود میکند.
-
:::::::::::::: {.columns align=top .onlytextwidth} ::: {.column width="40%" align=center} contents... ::: ::: {.column width="60%"} contents... ::: ::::::::::::::
کلاس onlytextwidth مقدار totalwidth را روی \textwidth تنظیم میکند.
برای جزئیات بیشتر به بخش 12.7 از Beamer User’s Guide مراجعه کنید.
ویژگیهای فریم در beamer
گاهی لازم است گزینهٔ [fragile] در LaTeX به یک فریم در beamer اضافه شود (بهعنوان مثال، هنگام استفاده از محیط minted). این کار را میتوان با افزودن کلاس fragile به سرآیندی که اسلاید را معرفی میکند اجبار کرد:
-
# Fragile slide {.fragile}
تمام ویژگیهای فریم دیگر که در بخش 8.1 از Beamer User’s Guide شرح داده شدهاند نیز میتوانند استفاده شوند: allowdisplaybreaks، allowframebreaks، b، c، s، t، environment، label، plain، shrink، standout، noframenumbering، squeeze. استفاده از allowframebreaks بهویژه برای کتابشناسیها توصیه میشود، زیرا در صورتی که محتوا از گنجایش فریم فراتر رود، امکان ایجاد چند اسلاید را فراهم میسازد:
-
# References {.allowframebreaks}
علاوه بر این، ویژگی frameoptions میتواند برای ارسال گزینههای دلخواه فریم به یک اسلاید beamer استفاده شود:
-
# Heading {frameoptions="squeeze,shrink,customoption=foobar"} تصاویر پسزمینه را میتوان به ارائههای اسلاید خودبسندهٔ reveal.js، ارائههای اسلاید beamer و ارائههای اسلاید pptx افزود.
در تمام اسلایدها (beamer, reveal.js, pptx)
در beamer و reveal.js، گزینهٔ پیکربندی background-image میتواند در بلوک متادیتای YAML یا به عنوان یک متغیر خط فرمان به کار رود تا تصویری یکسان روی تمام اسلایدها قرار گیرد.
توجه داشته باشید که برای reveal.js، گزینهٔ background-image به عنوان یک parallaxBackgroundImage استفاده خواهد شد (زیر را ببینید).
برای pptx، میتوانید از یک --reference-doc استفاده کنید که در آن تصاویر پسزمینه روی چیدمانهای مربوطه تنظیم شدهاند.
parallaxBackgroundImage (reveal.js)
برای reveal.js، گزینهٔ بومی reveal.js یعنی parallaxBackgroundImage نیز وجود دارد که پسزمینهای با پیمایش اختلافمنظر (پارالاکس) ایجاد میکند. همچنین باید parallaxBackgroundSize را تعیین کنید، و بهصورت اختیاری میتوانید parallaxBackgroundHorizontal و parallaxBackgroundVertical را برای پیکربندی رفتار پیمایش تنظیم نمایید. برای جزئیات بیشتر دربارهٔ مفهوم این گزینهها، به مستندات reveal.js مراجعه کنید.
در حالت نمای کلی (overview mode) در reveal.js، متغیر parallaxBackgroundImage فقط در نخستین اسلاید نمایش داده خواهد شد.
در اسلایدهای جداگانه (reveal.js, pptx)
برای تعیین تصویر برای یک اسلاید خاص reveal.js یا pptx، عبارت {background-image="/path/to/image"} را به نخستین سربرگ سطح اسلاید در آن اسلاید (که حتی ممکن است خالی باشد) بیفزایید.
از آنجا که نویسندههای HTML ویژگیهای ناشناخته را مستقیماً عبور میدهند، سایر تنظیمات پسزمینهٔ reveal.js نیز روی تکتک اسلایدها کار میکنند، از جمله background-size، background-repeat، background-color، transition و transition-speed. (پیشوند data- بهطور خودکار اضافه خواهد شد.)
نکته: برای سازگاری با reveal.js، ویژگی data-background-image در pptx نیز پشتیبانی میشود – اگر background-image پیدا نشود، data-background-image بررسی خواهد شد.
در اسلاید عنوان (reveal.js, pptx)
برای افزودن تصویر پسزمینه به اسلاید عنوانی که بهطور خودکار برای reveal.js ایجاد میشود، از متغیر title-slide-attributes در بلوک متادیتای YAML استفاده کنید. این متغیر باید شامل نگاشتی از نامها و مقادیر ویژگیها باشد. (توجه داشته باشید که در اینجا پیشوند data- الزامی است، چرا که بهطور خودکار اضافه نمیشود.)
برای pptx، یک --reference-doc ارسال کنید که در آن تصویر پسزمینه روی چیدمان “Title Slide” تنظیم شده باشد.
مثال (reveal.js)
-
--- title: My Slide Show parallaxBackgroundImage: /path/to/my/background_image.png title-slide-attributes: data-background-image: /path/to/title_image.png data-background-size: contain --- ## Slide One Slide 1 has background_image.png as its background. ## {background-image="/path/to/special_image.jpg"} Slide 2 has a special image for its background, even though the heading has no content.
ئیپابها (EPUBS)
متادیتای EPUB
برای تعیین متادیتا برای یک EPUB، دو راه وجود دارد. نخست استفاده از گزینهٔ --epub-metadata است که یک فایل XML حاوی عناصر Dublin Core را به عنوان آرگومان خود دریافت میکند.
راه دوم استفاده از YAML است، چه در یک بلوک متادیتای YAML در یک سند Markdown، چه در یک فایل YAML جداگانه که با --metadata-file مشخص شده باشد. در اینجا مثالی از یک بلوک متادیتای YAML همراه با متادیتای EPUB آورده شده است:
-
--- title: - type: main text: My Book - type: subtitle text: An investigation of metadata creator: - role: author text: John Smith - role: editor text: Sarah Jones identifier: - scheme: DOI text: 'urn:doi:10.234234.234/33' - scheme: ISBN-13 text: 'urn:isbn:9780000000000' publisher: My Press rights: © 2007 John Smith, CC BY-NC ibooks: version: 1.3.4 ...
فیلدهای زیر شناسایی میشوند:
- identifier
- یک مقدار رشتهای، یا شیئی با فیلدهای text و scheme (اختیاری)، یا فهرستی از چنین اشیائی. مقادیر معتبر برای scheme عبارتند از ISBN-10، GTIN-13، UPC، ISMN-10، DOI، LCCN، GTIN-14، ISBN-13، Legal deposit number، URN، OCLC number، Co-publisher’s ISBN-13، ISMN-13، ISBN-A، JP e-code، OLCC number، JP Magazine ID، UPC-12+5، BNF Control number، ISSN-13، ARK، Digital file internal version number. در فیلد text، توصیه میشود همانطور که در مثالهای بالا آمده، یک URN تعیین گردد. توجه داشته باشید که در YAML، فیلدی که حاوی دونقطه (:) باشد باید درون نقلقول قرار گیرد.
- title
- یک مقدار رشتهای، یا شیئی با فیلدهای text، file-as (اختیاری) و type (اختیاری)، یا فهرستی از چنین اشیائی. مقادیر معتبر برای type عبارتند از main، subtitle، short، collection، edition، extended.
- creator
- یک مقدار رشتهای، یا شیئی با فیلدهای text، role (اختیاری)، و file-as (اختیاری)، یا فهرستی از چنین اشیائی. مقادیر معتبر برای role روابط MARC هستند، اما pandoc تلاش خواهد کرد نسخههای انسانخوانا (مانند “author” و “editor”) را به رابطهای مناسب marc ترجمه کند.
- contributor
- قالبی مشابه creator دارد.
- date
- یک مقدار رشتهای با قالب YYYY-MM-DD. (تنها ذکر سال الزامی است.) Pandoc تلاش خواهد کرد قالبهای تاریخ رایج دیگر را تبدیل کند.
- lang (یا در نگارشهای قدیمیتر: language)
- یک مقدار رشتهای با قالب BCP 47. اگر مقداری مشخص نشود، pandoc زبان محلی را بهطور پیشفرض در نظر میگیرد.
- subject
- یک مقدار رشتهای، یا شیئی با فیلدهای text، authority (اختیاری)، و term (اختیاری)، یا فهرستی از چنین اشیائی. مقادیر معتبر برای authority عبارتند از یک مرجع رزروشده (در حال حاضر AAT، BIC، BISAC، CLC، DDC، CLIL، EuroVoc، MEDTOP، LCSH، NDC، Thema، UDC و WGS) یا یک IRI مطلق که یک طرح سفارشی را مشخص میکند. مقادیر معتبر برای term بر اساس آن طرح تعریف میشوند.
- description
- یک مقدار رشتهای.
- type
- یک مقدار رشتهای.
- format
- یک مقدار رشتهای.
- relation
- یک مقدار رشتهای.
- coverage
- یک مقدار رشتهای.
- rights
- یک مقدار رشتهای.
- belongs-to-collection
- یک مقدار رشتهای. نام مجموعهای را مشخص میکند که این اثر EPUB به آن تعلق دارد.
- group-position
- فیلد group-position موقعیت عددی این اثر EPUB را نسبت به سایر آثار متعلق به همان فیلد belongs-to-collection مشخص میکند.
- cover-image
- یک مقدار رشتهای (مسیر تصویر جلد).
- css (یا در نگارشهای قدیمیتر: stylesheet)
- یک مقدار رشتهای (مسیر شیوهنامهٔ CSS).
- page-progression-direction
- یا ltr یا rtl. صفت page-progression-direction را برای عنصر spine مشخص میکند..TP accessModes آرایهای از رشتهها (schema). پیشفرض ["textual"] است.
- accessModeSufficient
- آرایهای از رشتهها (schema). پیشفرض ["textual"] است.
- accessibilityHazards
- آرایهای از رشتهها (schema). پیشفرض ["none"] است.
- accessibilityFeatures
- آرایهای از رشتهها (schema). پیشفرض به این صورت است:
-
- "alternativeText" - "readingOrder" - "structuralNavigation" - "tableOfContents"
- accessibilitySummary
- یک مقدار رشتهای.
- ibooks
- متادادهٔ ویژهٔ iBooks، با فیلدهای زیر:
- version: (string)
- specified-fonts: true|false (پیشفرض false)
- ipad-orientation-lock: portrait-only|landscape-only
- iphone-orientation-lock: portrait-only|landscape-only
- binding: true|false (پیشفرض true)
- scroll-axis: vertical|horizontal|default
صفت epub:type
برای خروجی epub3، میتوانید سربرگی را که با یک فصل از EPUB متناظر است، با استفاده از صفت epub:type نشانهگذاری کنید. برای نمونه، جهت مقداردهی این صفت به prologue، از این نحو Markdown استفاده کنید:
-
# My chapter {epub:type=prologue}
که نتیجهٔ آن به شکل زیر خواهد بود:
-
<body epub:type="frontmatter"> <section epub:type="prologue"> <h1>My chapter</h1>
دستور pandoc بهطور پیشفرض <body epub:type="bodymatter"> را در خروجی قرار میدهد، مگر اینکه از یکی از مقادیر زیر استفاده کنید که در این صورت frontmatter یا backmatter در خروجی درج خواهد شد.
-
epub:type of first section epub:type of body ---------------------------- ------------------- prologue frontmatter abstract frontmatter acknowledgments frontmatter copyright-page frontmatter dedication frontmatter credits frontmatter keywords frontmatter imprint frontmatter contributors frontmatter other-credits frontmatter errata frontmatter revision-history frontmatter titlepage frontmatter halftitlepage frontmatter seriespage frontmatter foreword frontmatter preface frontmatter frontispiece frontmatter appendix backmatter colophon backmatter bibliography backmatter index backmatter
رسانههای پیوندشده (Linked media)
بهطور پیشفرض، pandoc تمام رسانههای ارجاع دادهشده از هر عنصر <img>، <audio>، <video> یا <source> موجود در EPUB تولیدشده را بارگیری کرده و آن را در کانتینر EPUB قرار میدهد، که منجر به تولید یک EPUB کاملاً مستقل و خودکفا میشود. اگر در عوض میخواهید به منابع رسانهای بیرونی پیوند برقرار کنید، از HTML خام در فایل منبع خود استفاده کنید و data-external="1" را به برچسبی که دارای صفت src است بیفزایید. برای نمونه:
-
<audio controls="1"> <source src="https://example.com/music/toccata.mp3" data-external="1" type="audio/mpeg"> </source> </audio>
اگر قالب ورودی از قبل HTML باشد، آنگاه data-external="1" طبق انتظار برای عناصر <img> عمل خواهد کرد. به همین ترتیب، برای Markdown، تصاویر خارجی را میتوان با {external=1} مشخص کرد. توجه داشته باشید که این روش فقط برای تصاویر کارایی دارد؛ سایر عناصر رسانهای نمایش بومی در AST ابزار pandoc ندارند و نیازمند استفاده از HTML خام هستند..SS "شیوهبندی EPUB (EPUB styling)" بهطور پیشفرض، pandoc برخی شیوهبندیهای پایهای موجود در فایل دادهٔ epub.css خود را در بر میگیرد. (برای مشاهدهٔ این، از دستور pandoc --print-default-data-file epub.css استفاده کنید.) برای استفاده از یک فایل CSS دیگر، کافی است از گزینهٔ خط فرمان --css استفاده کنید. علاوه بر این، چند شیوهٔ درونخطی نیز تعریف شدهاند؛ این موارد برای قالببندی صحیح خروجی HTML در pandoc ضروری هستند.
اگر شیوهبندی خاصترِ قالبهای پیشفرض HTML در pandoc مد نظر باشد، میتوان متغیر document-css را تنظیم کرد (و در این حالت متغیرهای تعریفشده در Variables for HTML را میتوان برای تنظیم دقیق این شیوه به کار برد).
اچتیامال تکهتکهشده (CHUNKED HTML)
دستور pandoc -t chunkedhtml یک آرشیو zip از فایلهای HTML پیوندیافته تولید میکند، یکی برای هر بخش از سند اصلی. پیوندهای داخلی بهطور خودکار تنظیم میشوند تا به جای مناسب اشاره کنند، تصاویری که زیر دایرکتوری کاری به آنها پیوند داده شده است درج میشوند، و پیوندهای ناوبری افزوده خواهند شد. علاوه بر این، یک فایل JSON به نام sitemap.json گنجانده خواهد شد که ساختار سلسلهمراتبی فایلها را شرح میدهد.
اگر یک فایل خروجی بدون پسوند مشخص شود، به عنوان یک دایرکتوری تفسیر شده و آرشیو zip بهطور خودکار درون آن استخراج میشود (مگر آنکه از پیش وجود داشته باشد که در این صورت خطایی ایجاد خواهد شد). در غیر این صورت یک فایل .zip تولید خواهد شد.
پیوندهای ناوبری را میتوان با ویرایش قالب سفارشیسازی کرد. بهطور پیشفرض، فهرست مطالب تنها در صفحهٔ نخست گنجانده میشود. برای قرار دادن آن در همهٔ صفحات، متغیر toc را بهصورت دستی تنظیم کنید.
دفترچههای ژوپیتر (JUPYTER NOTEBOOKS)
هنگام ایجاد یک دفترچهٔ Jupyter، برنامهٔ pandoc تلاش میکند ساختار دفترچه را استنباط کند. بلوکهای کد دارای کلاس code به عنوان سلولهای کد در نظر گرفته خواهند شد، و محتوای مابین آنها به عنوان سلولهای Markdown در نظر گرفته میشود. پیوستها بهطور خودکار برای تصاویر موجود در سلولهای Markdown ایجاد خواهند شد. متادیتا از فیلد متادیتای jupyter دریافت خواهد شد. برای نمونه:
-
--- title: My notebook jupyter: nbformat: 4 nbformat_minor: 5 kernelspec: display_name: Python 2 language: python name: python2 language_info: codemirror_mode: name: ipython version: 2 file_extension: ".py" mimetype: "text/x-python" name: "python" nbconvert_exporter: "python" pygments_lexer: "ipython2" version: "2.7.15" --- # Lorem ipsum **Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus bibendum felis dictum sodales. ``` code print("hello") ``` ## Pyout ``` code from IPython.display import HTML HTML(""" <script> console.log("hello"); </script> <b>HTML</b> """) ``` ## Image This image  will be included as a cell attachment.
اگر میخواهید ویژگیهای سلول را اضافه کنید، سلولها را بهگونهای متفاوت گروهبندی کنید، یا خروجی را به سلولهای کد بیفزایید، لازم است divهایی را برای مشخص کردن ساختار بگنجانید. شما میتوانید هم از fenced divها و هم از native divها برای این کار استفاده کنید. در اینجا یک مثال آورده شده است:
-
:::::: {.cell .markdown} # Lorem **Lorem ipsum** dolor sit amet, consectetur adipiscing elit. Nunc luctus bibendum felis dictum sodales. :::::: :::::: {.cell .code execution_count=1} ``` {.python} print("hello") ``` ::: {.output .stream .stdout} ``` hello ``` ::: :::::: :::::: {.cell .code execution_count=2} ``` {.python} from IPython.display import HTML HTML(""" <script> console.log("hello"); </script> <b>HTML</b> """) ``` ::: {.output .execute_result execution_count=2} ```{=html} <script> console.log("hello"); </script> <b>HTML</b> hello ``` ::: ::::::
اگر HTML یا TeX خام را در یک سلول خروجی میگنجانید، همانند آنچه در آخرین سلول مثال بالا نشان داده شده است، از ویژگی raw استفاده کنید. اگرچه pandoc میتواند HTML و TeX خامِ “عریان” را پردازش کند، اما نتیجه اغلب آمیختهای از عناصر خام و عناصر متنی عادی خواهد بود، و در یک سلول خروجی pandoc انتظار یک بلوک خام یکپارچه و منفرد را دارد. برای پرهیز از استفاده از HTML یا TeX خام مگر در مواردی که با صراحت با استفاده از ویژگیهای raw مشخص شدهاند، توصیه میکنیم هنگام تبدیل میان Markdown و دفترچههای ipynb، افزونههای -raw_html-raw_tex+raw_attribute را مشخص کنید.
توجه داشته باشید گزینهها و افزونههایی که بر خواندن و نوشتن Markdown تأثیر میگذارند، بر سلولهای Markdown در دفترچههای ipynb نیز اثر خواهند گذاشت. برای مثال، --wrap=preserve شکستهای نرم خطوط را در سلولهای Markdown حفظ خواهد کرد؛ --markdown-headings=setext سبب استفاده از سربرگهای سبک Setext خواهد شد؛ و --preserve-tabs از تبدیل تبها به فاصله جلوگیری میکند..SH "اسناد ویم (VIMDOC)" نویسندهٔ Vimdoc فایلهای راهنمای Vim را تولید میکند و از متغیرهای متادادهٔ زیر بهره میگیرد:
-
abstract: "A short description" author: Author title: Title # Vimdoc-specific filename: "definition-lists.txt" vimdoc-prefix: pandoc
یک سرآیند کامل نیازمند تنظیم abstract، author، title و filename است. کامپایل کردن فایل با چنین متادادهای فایل زیر را تولید میکند (با فرض استفاده از --standalone، بخش Templates را ببینید):
-
*definition-lists.txt* A short description Title by Author Type |gO| to see the table of contents. [...] vim:tw=72:sw=4:ts=4:ft=help:norl:et:
اگر vimdoc-prefix تنظیم شده باشد، مقدار آن به عنوان پیشوند به تمام برچسبهای غیردستوری اضافه میشود؛ این قابلیت برای جلوگیری از تداخل برچسبها به کار میرود: تمام سرآیندها یک برچسب دارند (خواه استنتاجشده یا صریح) و صفحات راهنمای متعدد میتوانند نامهای سرآیند یکسانی داشته باشند، بنابراین رخ دادن تداخل قابل انتظار است. فرض کنید ورودی ما فایل markdown زیر باشد:
-
## Header `:[range]Fnl {expr}`{#:Fnl} : Evaluates {expr} or range `vim.b`{#vim.b} : Buffer-scoped (`:h b:`) variables for the current buffer. Invalid or unset key returns `nil`. Can be indexed with an integer to access variables for a specific buffer. [Span]{#span} : generic inline container for phrasing content, which does not inherently represent anything.
تبدیل آن به vimdoc:
-
------------------------------------------------------------------------ Header *header* :[range]Fnl {expr} *:Fnl* Evaluates {expr} or range `vim.b` *vim.b* Buffer-scoped (|b:|) variables for the current buffer. Invalid or unset key returns `nil`. Can be indexed with an integer to access variables for a specific buffer. Span *span* generic inline container for phrasing content, which does not inherently represent anything.
تبدیل آن به vimdoc با متغیر متادادهٔ تنظیمشده (برای مثال با -M vimdoc-prefix=pandoc):
-
------------------------------------------------------------------------ Header *pandoc-header* :[range]Fnl {expr} *:Fnl* Evaluates {expr} or range `vim.b` *pandoc-vim.b* Buffer-scoped (|b:|) variables for the current buffer. Invalid or unset key returns `nil`. Can be indexed with an integer to access variables for a specific buffer. Span *pandoc-span* generic inline container for phrasing content, which does not inherently represent anything.
به vim.b و Span پیشوند اضافه شد اما به :Fnl خیر، زیرا دستورهای ex (آنهایی که با : شروع میشوند) پیشوندی دریافت نمیکنند، چرا که در سراسر صفحات راهنما یکتا در نظر گرفته میشوند.
در هر دو مورد، :help b: به ارجاع |b:| تبدیل شد (با :h b: نیز کار میکند). پیوندهایی که به https://vimhelp.org یا https://neovim.io/doc/user اشاره میکنند نیز به ارجاع تبدیل میشوند.
بهطور سنتی Vim خطوط را روی ستون ۷۸ میشکند، اما مقدار پیشفرض Pandoc روی ۷۲ است. برای مطابقت با Vim، از --columns 78 استفاده کنید.
برجستهسازی نحو (SYNTAX HIGHLIGHTING)
Pandoc بهطور خودکار نحو را در بلوکهای کد محصور (fenced code blocks) که با نام یک زبان مشخص شدهاند، برجستهسازی میکند. برای برجستهسازی از کتابخانهٔ هسکل skylighting استفاده میشود. در حال حاضر برجستهسازی تنها برای خروجیهای HTML، EPUB، Docx، Ms، Man، Typst و LaTeX/PDF پشتیبانی میشود. برای مشاهدهٔ فهرستی از نامهای زبانهایی که pandoc تشخیص میدهد، دستور pandoc --list-highlight-languages را تایپ کنید.
طرح رنگ را میتوان با استفاده از گزینهٔ --syntax-highlighting انتخاب کرد. طرح رنگ پیشفرض pygments است، که از طرح رنگ پیشفرضِ مورد استفادهٔ کتابخانهٔ پایتون pygments تقلید میکند (هرچند در واقع از خود pygments برای انجام برجستهسازی استفاده نمیشود). برای مشاهدهٔ فهرستی از سبکهای برجستهسازی، دستور pandoc --list-highlight-styles را تایپ کنید.
اگر سبکهای از پیش تعریفشده برای شما رضایتبخش نیست، میتوانید از --print-highlight-style برای تولید یک فایل JSON با پسوند .theme استفاده کنید که میتواند ویرایش شده و به عنوان آرگومانِ --syntax-highlighting به کار رود. برای مثال، جهت دریافت نسخهٔ JSON از سبک pygments:
-
pandoc -o my.theme --print-highlight-style pygments
سپس my.theme را ویرایش کرده و آن را به این صورت استفاده کنید:
-
pandoc --syntax-highlighting my.theme
اگر از برجستهسازی توکار رضایت ندارید، یا میخواهید زبانی را برجستهسازی کنید که پشتیبانی نمیشود، میتوانید از گزینهٔ --syntax-definition برای بارگیری یک فایل تعریف نحو XML به سبک KDE استفاده کنید. پیش از نوشتن تعریف اختصاصی خود، نگاهی به مخزن تعاریف نحو KDE بیندازید.
اگر با خطایی مبنی بر اینکه pandoc “Could not read highlighting theme” مواجه شدید، بررسی کنید که فایل JSON با کدگذاری UTF-8 ذخیره شده باشد و فاقد نشانگر ترتیب بایت (BOM) باشد.
برای غیرفعال کردن برجستهسازی، از --syntax-highlighting=none استفاده کنید.
برای استفاده از برجستهسازی نحو بومی (idiomatic) یک قالب بهجای برجستهسازی توکار pandoc، از --syntax-highlighting=idiomatic استفاده کنید. در حال حاضر، مقدار idiomatic تنها روی قالبهای زیر تأثیر میگذارد:
- در reveal.js، باعث میشود از افزونهٔ برجستهسازی خود reveal.js برای برجستهسازی کد منبع استفاده شود. این سبک را میتوان با تنظیم متغیر highlightjs-theme سفارشیسازی کرد.
- در Typst، باعث میشود از برجستهسازی توکار Typst استفاده شود. (این حالت همچنین پیشفرضِ Typst است.)
- در LaTeX، باعث میشود بستهٔ listings به کار رود. توجه داشته باشید که listings از کدگذاری چندبایتی برای کد منبع پشتیبانی نمیکند. برای مدیریت UTF-8 باید از یک الگوی سفارشی استفاده کنید. این مشکل بهطور کامل در اینجا مستند شده است: Encoding issue with the listings package.
- در قالبهای دیگر، idiomatic همان نتیجهٔ default را خواهد داشت..SH "سبکهای سفارشی (CUSTOM STYLES)" از سبکهای سفارشی میتوان در قالبهای docx، odt و ICML استفاده کرد.
خروجی (Output)
بهطور پیشفرض، خروجیهای odt، docx و ICML در pandoc مجموعهٔ ازپیشتعریفشدهای از سبکها را برای بلوکهایی مانند بندها و نقلقولهای بلوکی اعمال میکنند، و برای عناصر درونخطی عمدتاً قالببندی پیشفرض (ایتالیک، پررنگ) را به کار میبرند. این سازوکار برای بیشتر اهداف، بهویژه در کنار یک فایل سند مرجع (reference doc)، کارآمد خواهد بود. با این حال، اگر نیاز دارید سبکهای خودتان را روی بلوکها اعمال کنید، یا با مجموعهای از سبکهای ازپیشموجود هماهنگ شوید، pandoc به شما امکان میدهد تا به ترتیب با استفاده از divها و spanها سبکهای سفارشی را برای بلوکها و متن تعریف نمایید.
اگر یک Div، Span یا Table را با ویژگی custom-style تعریف کنید، pandoc سبک مشخصشدهٔ شما را روی عناصر درون آن اعمال خواهد کرد (به استثنای عناصری که عملکردشان وابسته به یک سبک خاص است، مانند سربرگها، بلوکهای کد، نقلقولهای بلوکی یا پیوندها). بنابراین، برای نمونه با استفاده از نحو bracketed_spans،
-
[Get out]{custom-style="Emphatically"}, he said.
فایلی تولید خواهد شد که در آن عبارت «Get out» با سبک نویسهای Emphatically قالببندی شده است. به همین ترتیب، با استفاده از نحو fenced_divs،
-
Dickinson starts the poem simply: ::: {custom-style="Poetry"} | A Bird came down the Walk--- | He did not know I saw--- :::
دو خط موجود در آن با سبک بند Poetry قالببندی خواهند شد.
اگر سبکها هنوز در سند مرجع شما تعریف نشده باشند، در فایل خروجی به صورت ارثبری از متن عادی (در docx) یا Default Paragraph Style (در odt) تعریف میشوند. اگر از پیش تعریف شده باشند، pandoc تعریف آنها را تغییر نخواهد داد.
این قابلیت در پیوند با فیلترهای pandoc بالاترین سطح سفارشیسازی را فراهم میآورد. اگر میخواهید تمام بندهای پس از نقلقولهای بلوکی دارای تورفتگی باشند، میتوانید فیلتری بنویسید تا سبکهای لازم را اعمال کند. اگر میخواهید تمام متنهای ایتالیک به سبک نویسهای Emphasis تبدیل شوند (مثلاً برای تغییر رنگ آنها)، میتوانید فیلتری بنویسید که تمام عناصر درونخطی ایتالیک را به عناصر درونخطی در یک span با ویژگی custom-style برابر با Emphasis تبدیل نماید.
برای خروجی docx یا odt، جهت فعال شدن سبکهای سفارشی نیازی به فعالسازی هیچ افزونهای ندارید.
برای خروجی icml، میتوانید یک object-style را نیز در تصاویر مشخص کنید:
-
{object-style="fixedSizeImage"}
در InDesign خواهید دید که این سبک شیء به تصویر اختصاص یافته است و میتوانید آن را سفارشی کرده یا تعریف آن را از یک الگوی آماده بارگذاری کنید.
ورودی (Input)
خوانندهٔ docx بهطور پیشفرض تنها سبکهایی را میخواند که بتواند آنها را به عناصر pandoc تبدیل کند؛ چه از طریق تبدیل مستقیم و چه با تفسیر اشتقاق سبکهای سند ورودی.
با فعال کردن افزونهٔ styles در خوانندهٔ docx (-f docx+styles)، میتوانید خروجیای تولید کنید که سبکهای سند ورودی را با استفاده از کلاس custom-style حفظ نماید. برای هر سبک یک ویژگی custom-style افزوده خواهد شد. عناصر Div برای نگهداری سبکهای بند و عناصر Span برای نگهداری سبکهای نویسه ایجاد میشوند. سبکهای جدول مستقیماً روی Table اعمال خواهند شد.
برای نمونه، با استفاده از فایل custom-style-reference.docx در دایرکتوری test، خروجیهای متفاوت زیر را خواهیم داشت:
بدون افزونهٔ +styles:
-
$ pandoc test/docx/custom-style-reference.docx -f docx -t markdown This is some text. This is text with an *emphasized* text style. And this is text with a **strengthened** text style. > Here is a styled paragraph that inherits from Block Text.
و همراه با افزونه:
-
$ pandoc test/docx/custom-style-reference.docx -f docx+styles -t markdown ::: {custom-style="First Paragraph"} This is some text. ::: ::: {custom-style="Body Text"} This is text with an [emphasized]{custom-style="Emphatic"} text style. And this is text with a [strengthened]{custom-style="Strengthened"} text style. ::: ::: {custom-style="My Block Style"} > Here is a styled paragraph that inherits from Block Text. :::
با این سبکهای سفارشی، میتوانید هنگام ایجاد خروجی docx از سند ورودی خود به عنوان یک reference-doc استفاده کرده (بخشهای زیر را ببینید) و سبکهای یکسانی را در فایلهای ورودی و خروجی حفظ نمایید.
خوانندهها و نویسندههای سفارشی (CUSTOM READERS AND WRITERS)
میتوان pandoc را با خوانندهها و نویسندههای سفارشی نوشتهشده به زبان Lua گسترش داد. (pandoc شامل یک مفسر Lua داخلی است، بنابراین نیازی به نصب جداگانهٔ Lua نیست.)
برای استفاده از یک خواننده یا نویسندهٔ سفارشی، کافی است مسیر اسکریپت Lua را به جای قالب ورودی یا خروجی مشخص کنید. برای نمونه:
-
pandoc -t data/sample.lua pandoc -f my_custom_markup_language.lua -t latex -s
اگر اسکریپت بر اساس مسیر نسبی به دایرکتوری کاری پیدا نشود، در زیردایرکتوری custom از دایرکتوری دادههای کاربر جستجو خواهد شد (--data-dir را ببینید).
یک خوانندهٔ سفارشی، اسکریپتی به زبان Lua است که تابعی به نام Reader را تعریف میکند؛ این تابع یک رشته را به عنوان ورودی دریافت کرده و یک Pandoc AST برمیگرداند. برای مستندات توابعی که جهت ایجاد عناصر pandoc AST در دسترس هستند، به مستندات فیلترهای Lua مراجعه فرمایید. جهت تجزیهٔ متن، کتابخانهٔ تجزیهگر lpeg بهطور پیشفرض در دسترس است. برای دیدن یک نمونه خوانندهٔ سفارشی:
-
pandoc --print-default-data-file creole.lua
اگر میخواهید خوانندهٔ سفارشی شما به گزینههای خواننده دسترسی داشته باشد (مانند تنظیمات tab stop)، یک پارامتر دوم به نام options به تابع Reader خود بدهید.
یک نویسندهٔ سفارشی، اسکریپتی به زبان Lua است که تابعی برای تعیین نحوهٔ بازنمایی (render) هر عنصر در یک Pandoc AST را تعریف میکند. برای یک مثال جامع و کامل، djot-writer.lua را ببینید.
توجه داشته باشید که نویسندههای سفارشی هیچ قالب (template) پیشفرضی ندارند. اگر میخواهید از --standalone همراه با یک نویسندهٔ سفارشی استفاده کنید، باید با استفاده از گزینهٔ --template قالبی را بهصورت دستی مشخص نمایید، یا یک قالب پیشفرض جدید با نام default.NAME_OF_CUSTOM_WRITER.lua به زیردایرکتوری templates در دایرکتوری دادههای کاربری خود اضافه کنید (بخش Templates را ببینید)..SH "ساختهای بازتولیدپذیر (REPRODUCIBLE BUILDS)" برخی از قالبهای سندی که pandoc پشتیبانی میکند (مانند EPUB، docx و ODT) شامل برچسبهای زمانی ساخت در سند تولیدشده هستند. این بدان معناست که فایلهای تولیدشده در ساختهای متوالی، حتی در صورتی که منبع تغییر نکرده باشد، با یکدیگر تفاوت خواهند داشت. برای جلوگیری از این امر، متغیر محیطی SOURCE_DATE_EPOCH را تنظیم کنید تا برچسب زمانی به جای زمان فعلی از آن خوانده شود. SOURCE_DATE_EPOCH باید حاوی یک برچسب زمانی یونیکس به صورت عدد صحیح باشد (مشخصکننده تعداد ثانیهها از مبدأ زمان یونیکس یعنی نیمهشب ۱ ژانویه ۱۹۷۰ بر حسب UTC).
برای ساختهای بازتولیدپذیر با LaTeX، میتوانید pdf-trailer-id را در فرادادهها مشخص کنید یا آن را تعریفنشده باقی بگذارید؛ در این حالت، pandoc یک trailer-id بر اساس درهمسازی (هش) SOURCE_DATE_EPOCH و محتویات سند ایجاد میکند.
برخی از قالبهای سند همچنین شامل یک شناسه یکتا هستند. برای EPUB، میتوان این مقدار را صراحتاً با تنظیم فیلد فراداده identifier مشخص کرد (بخش «فرادادههای EPUB» در بالا را ببینید).
پیدیافهای دسترسپذیر و استانداردهای بایگانی پیدیاف (ACCESSIBLE PDFS AND PDF ARCHIVING STANDARDS)
قالب PDF انعطافپذیر است و استفاده از آن در زمینههای خاص به قواعد و قراردادهای بیشتری نیاز دارد. برای نمونه، فایلهای PDF به صورت پیشفرض دسترسپذیر نیستند؛ آنها نحوه چینش نویسهها در صفحه را تعریف میکنند اما حاوی اطلاعات معنایی درباره محتوا نیستند. با این حال، تولید PDFهای دسترسپذیر امکانپذیر است؛ این فایلها با استفاده از برچسبگذاری (tagging)، اطلاعات معنایی را به سند میافزایند.
ابزار pandoc به صورت پیشفرض از LaTeX برای تولید PDF استفاده میکند. رابط \DocumentMetadata در LaTeX هنگام استفاده از LuaLaTeX از استانداردهای PDF و برچسبگذاری پشتیبانی میکند؛ برای فعالسازی آن متغیر pdfstandard را تنظیم کنید (پایینتر را ببینید). برای نصبهای قدیمیتر LaTeX، باید موتورهای جایگزین به کار گرفته شوند.
استانداردهای پیدیاف PDF/A و PDF/UA محدودیتهای بیشتری را برای بهینهسازی فایلهای PDF جهت بایگانی و دسترسپذیری تعریف میکنند. برچسبگذاری معمولاً در ترکیب با این استانداردها برای تضمین بهترین نتایج به کار میرود.
با این حال توجه داشته باشید که سازگاری با استانداردها به عوامل متعددی از جمله فضای رنگی (colorspace) تصاویر جاسازیشده بستگی دارد. ابزار pandoc قادر به بررسی این موارد نیست و برای اطمینان از انطباق PDFهای تولیدشده، باید برنامههای خارجی به کار گرفته شوند.
LaTeX
متغیر pdfstandard را برای تولید PDFهای برچسبگذاریشده مطابق با استانداردهای PDF/A، PDF/X یا PDF/UA تنظیم کنید. برای مثال:
-
pandoc -V pdfstandard=ua-2 --pdf-engine=lualatex doc.md -o doc.pdf
میتوان چندین استاندارد را ترکیب کرد:
-
--- pdfstandard: - ua-2 - a-4f ---
نسخه مورد نیاز PDF به طور خودکار استنتاج میشود. این ویژگی نیازمند LuaLaTeX در TeX Live 2025 با هسته LaTeX نسخه 2025-06-01 یا جدیدتر است.
ConTeXt
ابزار ConTeXt همیشه PDFهای برچسبگذاریشده تولید میکند، اما کیفیت آن به ورودی بستگی دارد. نشانهگذاری پیشفرض ConTeXt که توسط pandoc تولید میشود برای خوانایی و استفاده مجدد بهینهسازی شده است، نه برای برچسبگذاری. پسوند قالب tagging را فعال کنید تا نشانهگذاری بهینهشده برای برچسبگذاری اعمال شود. برای مثال:
-
pandoc -t context+tagging doc.md -o doc.pdf
باید از یک نسخه جدید context استفاده شود، زیرا نسخههای قدیمیتر شامل باگی بودند که منجر به تولید فرادادههای نامعتبر PDF میشد.
WeasyPrint
موتور مبتنی بر HTML با نام WeasyPrint از نسخه ۵۷ شامل پشتیبانی آزمایشی از PDF/A و PDF/UA است. پیدیافهای برچسبگذاریشده را میتوان با دستور زیر ایجاد کرد:
-
pandoc --pdf-engine=weasyprint \ --pdf-engine-opt=--pdf-variant=pdf/ua-1 ...
این قابلیت آزمایشی است و نباید سازگاری قطعی با استاندارد فرض شود.
Prince XML
مبدل غیرآزاد HTML به PDF به نام prince از استانداردهای گوناگون PDF و همچنین برچسبگذاری پشتیبانی گستردهای دارد. برای مثال:
-
pandoc --pdf-engine=prince \ --pdf-engine-opt=--tagged-pdf ...
برای اطلاعات بیشتر، مستندات prince را ببینید.
Typst
ابزار Typst 0.12 میتواند خروجی PDF/A-2b تولید کند:
-
pandoc --pdf-engine=typst --pdf-engine-opt=--pdf-standard=a-2b ...
واژهپردازها (Word Processors)
واژهپردازهایی مانند LibreOffice و MS Word نیز میتوانند برای تولید خروجیهای PDF استاندارد و برچسبگذاریشده مورد استفاده قرار گیرند. ابزار pandoc از تبدیل مستقیم از طریق این برنامهها پشتیبانی نمیکند. با این حال، pandoc میتواند سند را به یک فایل docx یا odt تبدیل کند که سپس میتوان آن را در واژهپرداز مربوطه باز کرد و به PDF تبدیل نمود. مستندات Word و LibreOffice را ببینید.
اجرای PANDOC به عنوان یک وبسرور (RUNNING PANDOC AS A WEB SERVER)
اگر نام فایل اجرایی pandoc را به pandoc-server تغییر دهید (یا پیوند نمادین بزنید)، یا اگر pandoc را با server به عنوان آرگومان نخست فراخوانی کنید، یک وبسرور با یک رابط برنامهنویسی نرمافزار (API) مبتنی بر JSON راهاندازی میکند. این سرور اکثر قابلیتهای تبدیل pandoc را در دسترس قرار میدهد. برای مستندات کامل، صفحه راهنمای pandoc-server را ببینید.
اگر نام فایل اجرایی pandoc را به pandoc-server.cgi تغییر دهید (یا پیوند نمادین بزنید)، به عنوان یک برنامه CGI عمل کرده و همان API ارائهشده توسط pandoc-server را فراهم میسازد.
ابزار pandoc-server به گونهای طراحی شده است که بالاترین سطح امنیت را داشته باشد؛ این برنامه از سیستم انواع Haskell بهره میبرد تا تضمینهای محکمی مبنی بر عدم انجام هرگونه عملیات I/O روی سرور هنگام تبدیلهای pandoc ارائه دهد..SH "اجرای PANDOC بهعنوان مفسر LUA (RUNNING PANDOC AS A LUA INTERPRETER)" فراخوانی فایل اجرایی pandoc تحت نام pandoc-lua یا با lua بهعنوان نخستین آرگومان، باعث میشود که مانند یک مفسر مستقل Lua عمل کند. رفتار آن تا حد زیادی با فایل اجرایی مستقل lua، نسخهٔ ۵.۴ یکسان است. همهٔ بستههای pandoc.*، و همچنین بستههای re و lpeg، از طریق متغیرهای سراسری در دسترس هستند. علاوهبراین، متغیرهای سراسری PANDOC_VERSION، PANDOC_STATE و PANDOC_API_VERSION هنگام راهاندازی مقداردهی میشوند. برای مستندات کامل، به صفحهٔ راهنمای pandoc-lua مراجعه کنید.
نکتهای درباره امنیت (A NOTE ON SECURITY)
- 1.
- اگرچه خود pandoc هیچ فایلی جز آنهایی که صراحتاً از آن خواستهاید ایجاد کند، نمیسازد یا تغییر نمیدهد (به استثنای فایلهای موقتی که در تولید PDF استفاده میشوند)، اما یک فیلتر یا نویسندهٔ سفارشی (custom writer) از لحاظ نظری میتواند هر کاری در سیستم فایل شما انجام دهد. لطفاً پیش از استفاده از فیلترها و نویسندههای سفارشی، آنها را بسیار دقیق بازبینی و بررسی کنید.
- 2.
- اگر میخواهید از pandoc در یک برنامهٔ وب استفاده کنید که ورودیهای کاربری نامطمئن را میپذیرد، باید آگاه باشید که اجرای pandoc در این بستر نیازمند اقدامات احتیاطی ویژه است، در غیر این صورت خطر افشای محتویات فایلهای محلی یا عواقب بدتری وجود دارد. بهویژه:
- چندین فرمت ورودی (از جمله LaTeX ،Org ،RST و Typst) از دستورالعملهای include پشتیبانی میکنند که اجازه میدهند محتویات یک فایل در خروجی گنجانده شود. یک مهاجم میتواند از این ویژگی برای مشاهدهٔ محتویات فایلهای روی سیستم فایل استفاده کند. استفاده از گزینهٔ --sandbox در برابر این تهدید محافظت میکند.
- چندین فرمت خروجی (از جمله RTF ،FB2، فایل HTML بههمراه --self-contained، EPUB ،Docx و ODT) تصاویر خام یا کدگذاریشده را درون فایل خروجی جاسازی (embed) میکنند. یک مهاجم میتواند از این سازوکار سوءاستفاده کرده و محتویات فایلهای غیرتصویری روی سیستم فایل را مشاهده کند. استفاده از گزینهٔ --sandbox در برابر این تهدید محافظت میکند، اما همچنین از گنجاندن تصاویر در این فرمتها جلوگیری به عمل میآورد.
- هنگام خواندن فایلهای HTML، دستور pandoc تلاش میکند با واکشی محتوا از فایل محلی یا URL مشخصشده توسط src، محتوای عناصر iframe را بگنجاند. اگر HTML نامطمئن روی سرور پردازش شود، این امر این پتانسیل را دارد که هر چیزی را که توسط فرایندِ در حال اجرای سرور قابلخواندن است فاش کند یا منجر به حملات جعل درخواست سمت سرور (SSRF) شود (CVE-2025-51591). برای مقابله با اینگونه حملات، از --sandbox یا -f html+raw_html (که باعث میشود کل iframe بهعنوان یک بلوک HTML خام تجزیه شود) استفاده کنید.
- استفاده از pandoc بههمراه --pdf-engine خطرات بیشتری را به همراه دارد که با استفاده از --sandbox برطرف نمیشوند. برای نمونه، در wkhtmltopdf فیلدهای متادیتای footer-html و header-html مستقیماً بهعنوان آرگومانهای --footer-html و --header-html به wkhtmltopdf ارسال میشوند، و با قرار دادن شناسههای file: در این فیلدها، فرد میتواند محتوای فایلهای محلی را استخراج کند. علاوهبراین، استفاده از --pdf-engine=wkhtmltopdf به همراه -f html+raw_html یک آسیبپذیری SSRF را در wkhtmltopdf فعال میکند (CVE-2022-35583). توجه داشته باشید که wkhtmltopdf منسوخ شده است و توسعهدهندگان آن توصیه میکنند که از آن با هیچ ورودی نامطمئنی استفاده نشود. بااینحال، ممکن است مشکلات مشابهی در سایر موتورهای pdf نیز وجود داشته باشد. هر فردی که یک موتور pdf را در دستور pandoc اجراشده روی ورودی نامطمئن به کار میبرد، باید موتور را به دقت بازبینی کند و استفاده از --pdf-engine-opt را با دقت زیر نظر بگیرد.
در اینجا راهکارهای جایگزینی برای استفادهٔ امن از pandoc در یک برنامهٔ وب آورده شده است:
- از pandoc server برای راهاندازی یک سرور وب محلی استفاده کنید و به برنامهٔ خود بگویید درخواستها را به آن ارسال کند. این سرور در حالت ایزوله (sandboxed) اجرا میشود و قادر به خواندن فایلها یا استفاده از فیلترها نخواهد بود.
- از نسخهٔ WASM نرمافزار pandoc استفاده کنید. این نسخه امکان استفاده از فیلترهای Lua را فراهم میسازد، اما همه چیز درون یک محیط سندباکس ایزولهٔ WASM اجرا میشود.
- از pandoc --sandbox استفاده کنید. بااینحال، در نظر داشته باشید که قابلیت سندباکس فقط خوانندهها و نویسندهها را محدود میکند، و در صورت استفادهٔ همزمان آن با --filter یا --pdf-engine ممکن است مشکلات امنیتی پیش بیاید.
- 3.
- کد HTML تولیدشده توسط pandoc تضمینشده نیست که کاملاً امن باشد. اگر raw_html برای ورودی Markdown فعال باشد، کاربران میتوانند کدهای HTML دلخواه را تزریق کنند. حتی در صورت غیرفعال بودن raw_html، کاربران ممکن است محتوای خطرناکی را در URLها و صفتها بگنجانند. برای حفظ امنیت، باید تمام کدهای HTML تولیدشده از ورودیهای کاربری نامطمئن را از طریق یک پاکساز HTML (sanitizer) پالایش کنید.
- 4.
- تجزیهکنندههای pandoc ممکن است در برخی موارد مرزی دچار افت شدید و غیرعادی کارایی (pathological performance) شوند. عاقلانه است که برای تمامی عملیاتهای pandoc یک مهلت زمانی (timeout) تعیین کنید تا از حملات DOS که از این اختلالات سوءاستفاده میکنند، جلوگیری شود. اگر از فایل اجرایی pandoc استفاده میکنید، میتوانید گزینههای خط فرمان مانند +RTS -M512M -RTS را اضافه کنید تا اندازهٔ حافظهٔ heap به ۵۱۲ مگابایت محدود شود. توجه داشته باشید که تجزیهکنندهٔ commonmark (شامل commonmark_x و gfm) نسبت به تجزیهکنندهٔ markdown بسیار کمتر در معرض افت شدید کارایی است؛ بنابراین هنگام پردازش ورودیهای نامطمئن انتخاب بهتری خواهد بود.
- 5.
- اگر برنامهٔ شما از pandoc بهعنوان یک کتابخانهٔ Haskell استفاده میکند (بهجای فراخوانی مستقیم فایل اجرایی)، امکان اجرای آن در حالتی وجود دارد که pandoc را با اجرای عملیاتها در موناد PandocPure، بهطور کامل از سیستم فایل شما ایزوله میکند. برای اطلاعات بیشتر، سند «Using the pandoc API» را ببینید. (این حالت معادل استفاده از گزینهٔ --sandbox در خط فرمان است.)
نویسندگان (AUTHORS)
کپیرایت 2006–2024 متعلق به John MacFarlane (jgm@berkeley.edu). تحت مجوز GPL، نسخهٔ ۲ یا بالاتر منتشر شده است. این نرمافزار بدون هیچگونه ضمانتی ارائه میشود. (برای اطلاعیههای کامل کپیرایت و ضمانت، به COPYRIGHT مراجعه کنید.) برای مشاهدهٔ فهرست کامل مشارکتکنندگان، فایل AUTHORS.md را در کد منبع pandoc ببینید.
کد منبع Pandoc را میتوان از https://hackage.haskell.org/package/pandoc یا https://github.com/jgm/pandoc/releases دریافت کرد. مستندات بیشتر در https://pandoc.org موجود است.
| 2026-08-11 | pandoc 3.10.2 |