รับบทเพื่อเริ่มต้นในหน้าใหม่ในรูปแบบ PDF ที่สร้างด้วย pandoc


20
%Title
%Author

#Header 1

Lots of words.

#Header 2

More words.

##Level 2 header

ข้อความข้างต้นสามารถกลายเป็นไฟล์ ePub สำหรับ e-ผู้อ่านที่มีpandoc -o output.epub input.mkdและมันสามารถแปลงเป็น PDF pandoc -o output.pdf input.mkdด้วย หลังจำเป็นต้องติดตั้งเครื่องยนต์ลาเท็กซ์ซึ่งอาจเกี่ยวข้องกับการตอบคำถาม

ด้วย EPUB ส่วนหัวระดับ 1 จะถูกตั้งค่าโดยอัตโนมัติที่ด้านบนของหน้าใหม่ (ส่วนหัวที่ไม่ได้น้อยลง) ด้วย PDF นี่ไม่ใช่กรณี - และฉันไม่คิดว่ามันจะเป็นค่าเริ่มต้นเพราะมันจะขัดกับเป้าหมายหลักของการทำเครื่องหมาย อย่างไรก็ตามฉันมีปัญหาในการค้นหาตัวเลือกการ pandoc เพื่อเปิดใช้งานลักษณะการทำงานนี้

ไม่มีใครรู้วิธีที่จะเปิดใช้งานพฤติกรรมนี้ด้วยการแพนโดกหรือไม่? การแก้ไขไฟล์ปรับแต่งจะเป็นวิธีแก้ปัญหาที่ยอมรับได้ แต่ถ้าไวยากรณ์เป็นพื้นฐานของลาเท็กซ์ฉันขอขอบคุณคำอธิบายของมัน (จากความหมายของสิ่งที่อยู่ในไฟล์ปรับแต่งไม่ใช่คำอธิบายที่ครอบคลุมของลาเท็กซ์!)

--chaptersตัวเลือกของ pandoc ดูเหมือนว่ามันควรจะทำในสิ่งที่ฉันต้องการ ... แต่มัน

  • ทำให้บทปรากฏเฉพาะในหน้าเลขคี่การแทรกหน้าว่างตามความจำเป็น (น่าสนใจ แต่ไม่ใช่สิ่งที่ฉันต้องการ - ฉันต้องการพิมพ์สิ่งนี้ลงบนกระดาษ A4 และมันจะไม่ถูกจัดวางในรูปแบบหนังสือดังนั้น สุนทรียศาสตร์เชิงบวกใด ๆ ที่นี่ถูกชดเชยโดยเศษกระดาษ)
  • แทรกChapter xก่อนส่วนหัวจริงซึ่งนำไปสู่บางสิ่งที่ไร้สาระเช่น:

บทที่ 1

อารัมภบท

หากเป็นไปได้ที่จะทำให้เชื่อง--chaptersตัวเลือกนั่นจะเป็นคำตอบที่เหมาะสม

คำตอบ:


28

ดู/tex/9497/start-new-page-with-each-section

ในการทำให้การทำงานกับ pandoc นี้คุณจะต้องแทรกสิ่งต่อไปนี้ลงในบทนำของเอกสาร LaTeX pandoc ที่สร้างขึ้นระหว่างทางสู่ PDF:

\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}

มีหลายวิธีที่จะทำเช่นนั้น สิ่งแรกคือการสร้างเทมเพลต LaTeX ที่กำหนดเองด้วยบรรทัดเหล่านี้ในคำนำ จากนั้นคุณสามารถใช้ตัวเลือก--template mytemplate.latexเพื่อบอกให้ pandoc ใช้เทมเพลตนี้ pandoc -D latex > mytemplate.latexเพื่อให้ได้น้ำยางแม่แบบเริ่มต้นซึ่งคุณสามารถปรับเปลี่ยนให้ทำ

อีกทางเลือกหนึ่งคือการสร้างไฟล์ขนาดเล็กที่titlesec.texมีเพียงสองบรรทัด จากนั้นเรียกใช้ pandoc พร้อมตัวเลือก--include-in-header titlesec.texเพื่อรวมไว้ในส่วนหัวเช่น:

pandoc --toc --include-in-header titlesec.tex -o output.pdf input1.mkd input2.mkd

ขอบคุณนี่ยอดเยี่ยมมาก นี่มีข้อเสียของการทำลายลิงค์ใน PDF และตั้งค่าบุ๊กมาร์กทั้งหมด (ไม่แน่ใจว่านี่เป็นคำที่ถูกต้อง) ไปที่หน้า 1 แต่เนื่องจากฉันใช้สิ่งนี้เป็นหลักในการพิมพ์จริงไม่ใช่เรื่องใหญ่ สิ่งเดียวที่มันไม่ได้ทำคือการใส่สารบัญลงในหน้าเดียวกับชื่อเรื่อง แต่นั่นไม่สำคัญเลย
evilsoup

2
BTW ถ้าคุณเป็นจอห์นแมคฟาร์เลนคนเดียวที่สร้างแพนโดคฉันอยากจะใช้โอกาสนี้ขอบคุณ - ตั้งแต่ฉันค้นพบมันโปรแกรมของคุณได้กลายเป็นส่วนสำคัญของกระบวนการเขียนของฉัน นอกจากนี้ยังมีแหล่งข้อมูลใดบ้างที่คุณแนะนำให้เรียนรู้เกี่ยวกับ LaTeX
evilsoup

4
ไม่เป็นไร ฉันเริ่มต้นด้วยหนังสือ LaTeX: ระบบการเตรียมเอกสารของ Lamport ซึ่งดีมาก
จอห์น MacFarlane

1
titleec ดูเหมือนจะไม่เข้ากันกับเทมเพลต pandoc latex ปัจจุบันคำตอบที่เสนอจะสร้างข้อผิดพลาดในการทำลาเท็กซ์ คุณสามารถใช้ \usepackage{sectsty} \sectionfont{\clearpage}sectsty:
Merlijn Sebrechts

มีข้อผิดพลาดเมื่อฉันใช้วิธีการข้างต้น การแก้ปัญหาคือให้ที่นี่
jdhao

11

สิ่งที่ฉันทำคือ:

pandoc --toc -V documentclass=report -o output.pdf inputs*.mkd

สิ่งนี้ทำให้ชั้นเอกสาร LaTeX 'report' ถูกใช้ (โดยค่าเริ่มต้นด้วย--chapterspandoc ดูเหมือนว่าจะใช้คลาส 'book' หรือ 'memoir' ซึ่งออกแบบมาสำหรับหนังสือ - ขอบที่ต่างกันในแต่ละด้าน บทเริ่มต้นที่หน้าคี่และอื่น ๆ เท่านั้น) ซึ่งวางส่วนหัวระดับ 1 ไว้ที่ด้านบนสุดของหน้า แต่ไม่เพียงวางไว้ที่ด้านบนสุดของหน้าคี่

สิ่งนี้ยังคงแทรก 'บทที่ X' ก่อนแต่ละบทซึ่งยังคงน่ารำคาญ ฉันอยากจะให้สารบัญเริ่มต้นในหน้าเดียวกับชื่อเรื่อง (เกิดขึ้นกับคลาสเอกสาร 'บทความ' แต่จากนั้นบทจะไม่ถูกแบ่งเป็นจุดเริ่มต้นของหน้าใหม่ - พวกเขาเพิ่งเริ่มที่ใดก็ได้) อย่างไรก็ตามฉันคิดว่าการได้รับสิ่งเหล่านั้นต้องการความรู้เพิ่มเติมเกี่ยวกับ LaTeX มากกว่าฉัน: ฉันจะไม่ทำเครื่องหมายคำตอบนี้เป็นคำตอบที่ยอมรับได้เนื่องจากคำตอบในอุดมคตินี้จะอธิบายวิธีการแก้ไขปัญหาทั้งสองนี้


1

อีกสองปีต่อมาและฉันก็ยังคงพบปัญหานี้เช่นกัน ดังนั้นสำหรับใครก็ตามที่พบปัญหานี้ผู้ที่พบสิ่งนี้ ...

ขอบคุณคำตอบของจอห์นและลิงค์อื่น ๆ ที่รวมอยู่ฉันใช้สิ่งต่อไปนี้ในไฟล์พร้อมpandoc -Hตัวเลือกและดูเหมือนว่าจะทำงานได้ดี:

% /superuser/601469/getting-chapters-to-start-on-a-new-page-in-a-pandoc-generated-pdf
% http://tex.stackexchange.com/questions/120740/how-do-i-remove-chapter-n-from-the-chapter-titles-of-a-book
\usepackage{titlesec}
\usepackage{fancyhdr}

\newcommand{\sectionbreak}{\clearpage}
\titleformat{\chapter}[display]{\normalfont\bfseries}{}{0pt}{\Large}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[RE]{\leftmark}
\fancyhead[LO]{\rightmark}
\fancyhead[LE,RO]{\thepage}
\renewcommand\headrulewidth{0pt}
\renewcommand\chaptermark[1]{\markboth{#1}{}} 
\renewcommand\sectionmark[1]{\markright{\thesection.\ #1}}

ด้วยสิ่งนี้ฉันใช้--chaptersตัวเลือกpandocและสร้างบท PDF บนหน้าใหม่โดยไม่มีChapter XX:ส่วนหัวของหน้า การใช้-V documentclass=reportยังสร้างผลลัพธ์ที่ต้องการโดยไม่มีปรากฏการณ์การข้ามหน้าและใหม่บทที่แปลกหน้าจำนวนที่ผลิตโดยbookคลาสเอกสาร


0

มีปัญหาเดียวกันและคิดว่าฉันโพสต์วิธีการแก้ปัญหาของฉันโดยใช้เพียงเขตข้อมูลเมตาของ YAML

documentclass: report
header-includes:
- \renewcommand{\chaptername}{}
- \renewcommand{\thechapter}{}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.