पंडोक मार्कडाउन पेज ब्रेक


113

हाल ही में मैंने पंडोक मार्कडाउन का उपयोग करना शुरू किया, जो कि लाटेक्स का एक अच्छा विकल्प लगता है, क्योंकि मेरे दस्तावेज़ में कई गणितीय सूत्र नहीं हैं, और मुझे लाटेक्स के साथ कोई अनुभव नहीं है, जो कि 2 सप्ताह से कम समय की समय सीमा के साथ संयुक्त है, यह एक अच्छा समाधान बनाता है।

एक चीज़ जो मैं नहीं कर पा रहा हूं, वह यह है कि इसे पेज के बाकी हिस्सों को खाली करने के लिए कैसे मजबूर किया जाए, क्या कोई मदद कर सकता है?


5
गणितीय फ़ार्मुलों का उपयोग करते समय पंडोक-स्वाद वाले मार्कडाउन भी महान हैं।
ए। डोंडा

जवाबों:


135

ऐसा लगता है कि इस उद्देश्य के लिए पैंडोक मार्कडाउन मानक LaTeX टैग का उपयोग करता है:

\newpage तथा \pagebreak


9
दोनों काम (धन्यवाद!), लेकिन दोनों के बीच क्या अंतर है या क्या वे बिल्कुल बराबर हैं?
कलिन

15
नया पृष्ठ वर्तमान पृष्ठ को समाप्त करता है, जबकि पेजब्रेक एक फ्रेंडली अनुरोध का अधिक है - ऐसा हो भी सकता है और नहीं भी। व्यक्तिगत
।ceu.hu

5
इसका कारण यह है कि यदि कच्चे लेटेक्स कमांड को समझते हैं तो कच्चे लेटेक्स कमांड को सीधे पास किया जाता है।
मैथ्यू पिकरिंग

23

टीएल; डीआर : कई स्वरूपों में पृष्ठ विराम\newpage पाने के लिए नीचे और लुआ फिल्टर का उपयोग करें

पांडोक एक आंतरिक दस्तावेज़ प्रारूप में सभी इनपुटों को पार्स करता है। उस प्रारूप में पृष्ठ विराम का प्रतिनिधित्व करने का कोई समर्पित तरीका नहीं है, लेकिन फिर भी जानकारी को अन्य तरीकों से एनकोड करना संभव है। इसका एक तरीका कच्चे एलएटीएक्स का उपयोग करना है \newpage। यह पूरी तरह से काम करता है जब LaTeX (या LaTeX के माध्यम से बनाई गई पीडीएफ) को आउटपुट करता है। हालाँकि, HTML या docx जैसे विभिन्न स्वरूपों को लक्षित करते समय कोई समस्या में चलेगा।

अन्य स्वरूपों को लक्षित करते समय एक सरल समाधान एक पैंडॉक फ़िल्टर का उपयोग करना है जो आंतरिक दस्तावेज़ प्रतिनिधित्व को बदल सकता है जैसे कि यह हमारी आवश्यकताओं को पूरा करता है। पंडोक 2.0 और बाद में भी इस परिवर्तन को करने के लिए शामिल लुया दुभाषिया का उपयोग करने की अनुमति देता है।

मान लेते हैं कि हम पृष्ठ \newpageरेखाओं को रिक्त रेखाओं से घिरी हुई पंक्ति में रखकर संकेत दे रहे हैं , जैसे:

lorem ipsum

\newpage

more text

कच्चे TeX युक्त रॉब्लॉक के\newpage रूप में वसीयत की जाएगी । ब्लॉक को केवल आउटपुट में शामिल किया जाएगा यदि लक्ष्य प्रारूप में कच्चा TeX (यानी, LaTeX, Markdown, Org, आदि) हो सकता है।

एक अलग प्रारूप को लक्षित करते हुए इसका अनुवाद करने के लिए हम एक साधारण Lua फ़िल्टर का उपयोग कर सकते हैं। डॉक , लाटेक्स , एपब और लाइट-वेट मार्कअप के लिए निम्नलिखित कार्य करता है

--- Return a block element causing a page break in the given format.
local function newpage(format)
  if format == 'docx' then
    local pagebreak = '<w:p><w:r><w:br w:type="page"/></w:r></w:p>'
    return pandoc.RawBlock('openxml', pagebreak)
  elseif format:match 'html.*' then
    return pandoc.RawBlock('html', '<div style=""></div>')
  elseif format:match 'tex$' then
    return pandoc.RawBlock('tex', '\\newpage{}')
  elseif format:match 'epub' then
    local pagebreak = '<p style="page-break-after: always;"> </p>'
    return pandoc.RawBlock('html', pagebreak)
  else
    -- fall back to insert a form feed character
    return pandoc.Para{pandoc.Str '\f'}
  end
end

-- Filter function called on each RawBlock element.
function RawBlock (el)
  -- check that the block is TeX or LaTeX and contains only \newpage or
  -- \pagebreak.
  if el.text:match '\\newpage' then
    -- use format-specific pagebreak marker. FORMAT is set by pandoc to
    -- the targeted output format.
    return newpage(FORMAT)
  end
  -- otherwise, leave the block unchanged
  return nil
end

हमने एक अपडेट किया गया, अधिक फीचर वाला संस्करण प्रकाशित किया । यह आधिकारिक पंडॉक लुआ-फिल्टर रिपॉजिटरी से उपलब्ध है


8
यह \newpageपेजबॉक्स के एमएस वर्ड आउटपुट फॉर्मेट में पेजब्रेक्स के साथ जबरदस्ती काम करता है । इस फ़िल्टर का उपयोग करने के लिए, इस उत्तर के कोड को उदा में सेव करें pagebreak.luaऔर pandoc के साथ आह्वान करें--lua-filter=pagebreak.lua
क्रिश्चियन लॉन्ग

3

मैंने देखा कि यह .doc और .odt प्रारूपों के लिए काम नहीं करता है। एक वर्कअराउंड मैंने पाया कि एक क्षैतिज रेखा सम्मिलित करना -----------------और "क्षैतिज रेखा" शैली को पृष्ठ को तोड़ना और अदृश्य होना, पाठ संपादक (मेरे मामले में ibre कार्यालय) का उपयोग करना था


कैसे करोगे format the "horizontal line" style to break a page?
nilon

मुझे केवल HTML आउटपुट के बारे में पता है, जिसके परिणामस्वरूप मैं पीडीएफ में प्रिंट करता हूं। क्रोम में प्रिंट के लिए सीएसएस व्याख्या का वास्तव में अच्छा कार्यान्वयन है। इस मामले में, hr{opacity:0;page-break-after: always;}काम करता है। यदि आप <hr>किसी और चीज़ के लिए उपयोग करना चाहते हैं तो आप अन्य तत्व का त्याग कर सकते हैं ।
जोकिन

0

LucasSveryvery के उत्तर को संपादित नहीं किया जा सकता है, कतार को पूर्ण बताया गया है, इसलिए यहां कुछ जानकारी जोड़ें।

रास्ता 1: + रॉ_टेक्स

\newpageऔर विस्तार की \pagebreakआवश्यकता raw_texहै।

// pandoc 2.9.2.1 के साथ, डॉक्स या html आउटपुट के साथ काम नहीं करना चाहिए, --verbose का कहना है

[INFO] Not rendering RawBlock (Format "tex") "\\pagebreak"
[INFO] Not rendering RawBlock (Format "tex") "\\newpage"

तरीका 2: + raw_attribute

https://pandoc.org/MANUAL.html#extension-raw_attribute

```{=openxml}
<w:p>
  <w:r>
    <w:br w:type="page"/>
  </w:r>
</w:p>
```

// gfm इनपुट प्रारूप में भी समर्थन नहीं करता है।
// यह docx आउटपुट के लिए काम करता है, html आउटपुट के साथ काम नहीं करता है।

विस्तार सूचना

यह +raw_texप्रारूप विस्तार की जरूरत है । जो पैंडॉक में सभी मार्कडाउन वेरिएंट के लिए समर्थन नहीं करता है।

https://pandoc.org/MANUAL.html#markdown-variants

Note, however, that commonmark and gfm have limited support for extensions.  

Only those listed below (and smart, raw_tex, and hard_line_breaks) will work.  

The extensions can, however, all be individually disabled.

Also, raw_tex only affects gfm output, not input.

इसलिए -f markdownकाम करेगा, लेकिन -f gfmकाम नहीं करेगा ।

प्रारूप का विस्तार

https://pandoc.org/MANUAL.html#option--from

Extensions can be individually enabled or disabled by appending 
+EXTENSION or -EXTENSION to the format name.

उदाहरण के लिए

-t html+raw_tex: आउटपुट राव_टेक्स को सक्षम करता है

-f markdown-raw_tex-raw_attribute: इनपुट रॉ_टेक्स्ट और रॉ_टैब को निष्क्रिय करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.