ทำอย่างไรจึงจะไม่มี pagebreak หลังจาก \ include ใน LaTeX


111

LaTeX ของฉันทำให้ฉันมีการแบ่งหน้าหลังจากแต่ละส่วนย่อยเนื่องจากส่วนย่อยของฉันอยู่ในไฟล์แยกกัน ฉันใช้คำสั่ง\include{file}ที่เพิ่ม pagebreak หลังจากใช้งาน

ฉันต้องการที่จะไม่มี pagebreak ที่เกิดจากการใช้\include{file}.

คุณจะไม่มี pagebreak ได้อย่างไรหลังจากใช้include-command?


2
ฉันไม่เชื่อว่าคุณจะได้รับตัวแบ่งหน้าหลังจากส่วนย่อยตามปกติ คุณใช้คลาสเอกสารอะไร
Cascabel

1
คุณช่วยโพสต์ส่วนหัวของคุณ (ทุกอย่างจนถึง \ begin {document}) เพื่อให้เราบอกได้ว่าเกิดอะไรขึ้น
Gerald Senarclens de Grancy

10
ใช้\inputมิฉะนั้นใช้หรือการใช้งานอื่น\input\input
egreg

คำตอบ:


4

แพ็คเกจ newclude ที่แนะนำโดย Will Robertson ค่อนข้างมีประโยชน์ในการหลีกเลี่ยงการเคลียร์เพจ ปรากฏขึ้นเพื่อ\includeonlyให้ใช้งานได้ต้องโทรหาแพ็คเกจทันทีหลังจาก\documentclass{...}นั้น ในสภาพแวดล้อมที่ซับซ้อนของวิทยานิพนธ์ของฉันฉันยังประสบปัญหาเกี่ยวกับการอ้างอิงที่ไม่สมบูรณ์

วิธีแก้ปัญหาที่ดีเมื่อไม่จำเป็นต้องใช้รวมอย่างเดียวสำหรับเวอร์ชันสุดท้ายคือการใช้รวมเฉพาะในฉบับร่าง:

\newif\ifdraft\drafttrue

หรือ

\newif\ifdraft\draftfalse

\ifdraft
  \include{...}
\fi

\ifdraft
  \include{file}
\else
  \input{file}
\fi

บรรทัดแรกสามารถต่อท้ายได้อย่างง่ายดายโดย makefile เพื่อให้การผลิตแบบร่างหรือเวอร์ชันการผลิตสร้างเป้าหมาย

\includeonly{file1,file2,...}อนุญาตให้ระบุรายการไฟล์ต้นฉบับที่เรียกด้วย\include{file1}(ซึ่งfile1เป็นตัวอย่าง) ที่จะแสดงในเอกสารผลลัพธ์ รายการอื่น ๆ จะไม่ปรากฏขึ้น แต่ได้รับการพิจารณาสำหรับตัวนับป้ายกำกับสารบัญเมื่อรวมไฟล์ aux ที่เกี่ยวข้อง

กล่าวอีกนัยหนึ่งโดยการใช้includeและincludeonlyสามารถทำให้เวลาในการรวบรวมสั้นลงในแบบร่างในขณะที่มีการอ้างอิงที่ถูกต้อง อ่านเพิ่มเติมเกี่ยวกับวิกิพีเดีย

@ จะโรเบิร์ตสัน

\includeมีประโยชน์มากเพราะช่วยให้\includeonly{...}สามารถสร้างเฉพาะส่วนที่จำเป็นได้ ในขณะที่ทำงานกับข้อความที่ยาวขึ้นจะสามารถสร้างความแตกต่างได้มากในการรวบรวมเฉพาะส่วนของบทที่มีความยาว นอกจากนี้ยังมีประโยชน์อย่างยิ่งเนื่องจากไม่ต้องอ่านแบบร่างยาวในขณะที่ทำงานจนถึงจุดหนึ่ง ประการสุดท้ายไฟล์ซอร์สโค้ดที่มีขนาดเล็กจะจัดการได้ง่ายกว่าในการจัดการเวอร์ชันเช่น git


คุณช่วยยกตัวอย่างได้ไหมว่าคุณรวบรวมกระดาษใช้งานที่ยาวมากเพียงส่วนเดียวได้อย่างไร ฉันได้ใช้วิธีการเหล่านี้ของคำตอบต่อไปนี้ในpageselabout \discardpagesfromhereand \keeppagesfromhere. มันทับซ้อนกันเล็กน้อยดังนั้นฉันยินดีที่จะเรียนรู้ว่าคุณสามารถจัดการกับการจัดการแบบร่างนี้ได้ดีขึ้นหรือไม่ tex.stackexchange.com/a/267555/13173
Hertz 준영

1
ถ้าฉันเข้าใจว่ามันถูกต้องแล้วpageselจะต้องบรรลุมากกว่าการรวมอย่างเดียวโดยอนุญาตให้ควบคุมได้ดีว่าจะรวมเพจใดไว้ในบิลด์สุดท้าย รวมมีขอบเขตที่เล็กกว่ามากรวมถึงซอร์สโค้ดในลักษณะที่สามารถเปิดและปิดได้
gschenk

152

\includeใช้เสมอ\clearpageไม่ใช่ค่าเริ่มต้นที่สมเหตุสมผลทั้งหมด มีไว้สำหรับทั้งบทไม่ใช่สำหรับส่วนย่อย (ทำไมคุณถึงต้องการส่วนย่อยในไฟล์แยกต่างหากล่ะ)

คุณสามารถแก้ไขได้โดยใช้\input{filename}หรือโหลดnewcludeแพ็คเกจแล้วเขียน\include*{filename}แทน


โครงการฐานข้อมูลของฉันต้องการเอกสารการวางแผนเอกสาร "อาคาร" เพื่อแสดงวิธีการตั้งค่าระบบ เป็นส่วนใน LaTeX -file ของฉัน
LéoLéopold Hertz 준영

7
ฉันคิดได้หลายเหตุผลว่าทำไมต้องใส่ส่วนย่อยในไฟล์ต่างๆ สิ่งแรกที่ต้องนึกถึงคือการมีประวัติย่อที่มีรายละเอียดระดับต่างๆขึ้นอยู่กับเป้าหมายและ / หรือใบสมัครงาน เมื่อสามารถสับบิตออกหรือใส่บิตได้อย่างง่ายดายโดยมีสัญลักษณ์ '%' เพียงตัวเดียว
Nicholas Hamilton

9
เป็นเวลานานแล้วที่ฉันเขียนคำตอบนี้ แต่ฉันเชื่อว่าวงเล็บควรจะประชดประชัน:)
Will Robertson

เหตุผลที่\includeเริ่มหน้าใหม่คือ\includeonlyสามารถทำงานได้อย่างถูกต้อง
Carsten S

อีกเหตุผลหนึ่งในการครอบตัดส่วนต่างๆลงในไฟล์ที่แตกต่างกัน: พิจารณาการเขียนแบบฝึกหัดที่มี maketitle อยู่เสมอในตอนต้น แต่รวมแบบฝึกหัดหนึ่งแผ่นไว้ในงานพิมพ์เท่านั้น ตัวฉันเองจะไม่พิจารณาแบบฝึกหัดทุกบทโดยเฉพาะอย่างยิ่งเนื่องจากแผ่นแบบฝึกหัดจำนวนมากอ้างถึงบทเดียวในการบรรยาย รวมเฉพาะทำหน้าที่นับแผ่นแบบฝึกหัดเช่นแผ่นที่ 1 พร้อมแบบฝึกหัด (1.1-1.4) แผ่นที่ 2 พร้อมแบบฝึกหัด (2.1-2.3) และอื่น ๆ
C-Star-W-Star

31

คุณสามารถหยุดการแบ่งหน้าเว็บที่เกิด\includeจากการวาง\let\clearpage\relaxไว้ข้างหน้า ดังนั้น,

\let\clearpage\relax
\include{file1}
\include{file2}
\include{file3}

จะรวมเนื้อหาของไฟล์ทั้งสาม (และไฟล์ที่รวมในภายหลัง) เข้าด้วยกันโดยไม่มีการแบ่งหน้าระหว่างไฟล์เหล่านี้ หากคุณต้องการหยุดการผ่อนคลาย\clearpageคำสั่งให้รวมไฟล์เพื่อรวมโดยไม่มีการแบ่งหน้าภายในกลุ่มดังนี้:

\begingroup
\let\clearpage\relax
\include{file1}
\include{file2}
\endgroup
\include{file3}

การดำเนินการนี้จะหยุดการแบ่งหน้าระหว่างไฟล์ 1 และไฟล์ 2 แต่แทรกการแบ่งหน้าปกติหลังไฟล์ 2 (หมายเหตุ: ฉันไม่รู้ว่าสิ่งนี้รบกวนการอ้างอิงและการกำหนดหมายเลขหน้าหรือไม่ แต่ฉันคิดว่ามันน่าจะใช้ได้)


1
ขอบคุณ! คำตอบนี้ใช้ได้ดีเมื่อคุณมีการอ้างอิงหลายรายการและคุณไม่ต้องการให้มีหน้าใหม่สำหรับพวกเขา เพียงแค่สร้างกลุ่มสุดท้ายที่รวมไว้และส่วนบรรณานุกรมและไม่ใช่หน้าที่ชัดเจนอีกต่อไป
Manuel Ferreria

2
มานูเอลพูดถูก: คุณสามารถใช้\begingroup\let\clearpage\relax ...\endgroupเคล็ดลับได้ทุกที่ที่คุณต้องการ --- หยุดการแบ่งหน้าระหว่างส่วนหรือส่วนใดส่วนหนึ่งหากคุณต้องการให้บรรณานุกรมอยู่ในหน้าเดียวกับข้อความของคุณเป็นต้น
จอห์น

1
วิธีนี้ดูเหมือนจะทำให้เกิดปัญหากับฉันเกี่ยวกับการอ้างอิง ในไฟล์ที่รวมซึ่งมีรายการแจกแจงสองรายการการอ้างอิงไปยังรายการของรายการที่สองไม่ได้ผล ฉันไม่รู้ว่าทำไมจึงควรเป็นเช่นนี้ แต่การเปลี่ยนไปใช้ newclude ช่วยแก้ปัญหาได้
Mike Shulman

1
ผมขอแนะนำให้กับการใช้วิธีนี้; มันจะสร้างปัญหามากกว่าที่จะแก้ได้ (สมมติว่าแก้ปัญหาได้ในตอนแรก): ดูtex.stackexchange.com/a/185237/4427
รวม

2

ขอบคุณเคมบริดจ์ !

ใช้ \ include แทน \ input และใช้คำสั่ง \ includeonly เพื่อเลือกส่วนที่จะประมวลผล


2
นี่ไม่ใช่คำแนะนำที่ดีที่สุด เหตุใดคุณจึงต้องการใช้\include{...]สำหรับงานเมื่อ\input{...}คำสั่งจริงซึ่งเป็นค่าตั้งใจสำหรับสถานการณ์เหล่านี้
Florian R.Clein

1
คำตอบนี้ดูเหมือนจะไม่ตอบคำถามเลย (แม้ว่าจะเป็นคำแนะนำที่เป็นประโยชน์ แต่ก็มีข้อมูลอ้างอิงที่ดี)
jciloa

สิ่งนี้ไม่ตอบคำถาม
EL_DON
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.