ข้ามไปยังเนื้อหา

โปรเจกต์ที่มีหลายไฟล์

เก็บพรีแอมเบิลและ \begin{document} ไว้ใน main.tex แล้วดึงไฟล์อื่นเข้ามาด้วย \input{chapters/intro} หรือ \include{chapters/intro} Scissor LaTeX รวมไฟล์เหล่านั้นเป็นเอกสารเดียวก่อนจัดเรียงพิมพ์

ทำไมต้องแบ่งเอกสาร

วิทยานิพนธ์หรือรายงานยาว ๆ ทำงานได้ง่ายกว่าเมื่อแบ่งเป็นส่วน ๆ: หนึ่งไฟล์ต่อหนึ่งบท หนึ่งไฟล์สำหรับพรีแอมเบิล หนึ่งไฟล์สำหรับภาคผนวก LaTeX มีสองคำสั่งสำหรับเรื่องนี้ และทั้งสองใช้ได้ใน Scissor LaTeX

คำสั่งทำอะไรใน Scissor LaTeX
\input{file}ใส่ข้อความของไฟล์ไว้ตรงนี้ เหมือนคุณพิมพ์เองใช้ได้ ทั้งในพรีแอมเบิลและแบบซ้อนกัน
\include{file}เริ่มหน้าใหม่ ใส่ข้อความของไฟล์ไว้ตรงนี้ แล้วจบหน้าใช้ได้ การขึ้นหน้าใหม่ที่ติดกันรวมเป็นครั้งเดียว จึงไม่มีหน้าว่าง
\includeonly{a,b}ละ \include ทุกตัวที่ไม่อยู่ในรายการละเว้น: รวมทุกไฟล์
\subfile{file} (subfiles)เหมือน \input สำหรับไฟล์ที่คอมไพล์เดี่ยว ๆ ได้ด้วยไม่รองรับ: ข้ามไปพร้อมข้อความแจ้ง ให้ใช้ \input
\import{dir/}{file} (import)\input โดยอิงจากโฟลเดอร์อื่นไม่รองรับ: ข้ามไปพร้อมข้อความแจ้ง

โปรเจกต์ขนาดเล็ก

โปรเจกต์ทั่วไปมีไฟล์หลักและโฟลเดอร์ของบทต่าง ๆ:

TEXT
main.tex
preamble.tex
chapters/intro.tex
chapters/method.tex
refs.bib

ไฟล์หลักเก็บคลาส พรีแอมเบิล และเนื้อหาเอกสาร แล้วดึงส่วนที่เหลือเข้ามา:

LaTeX
\documentclass{report}
\input{preamble}

\title{Rainfall at Two Sites}
\author{Erika Mustermann}

\begin{document}
\maketitle
\input{chapters/intro}
\input{chapters/method}
\bibliographystyle{plain}
\bibliography{refs}
\end{document}

ไฟล์ของแต่ละบทเก็บเฉพาะส่วนข้อความของตัวเอง ไม่มีพรีแอมเบิลและไม่มี \begin{document}:

LaTeX
\chapter{Introduction}
\label{chap:intro}
Rain gauges were read every morning for 44 days.
The method is described in Chapter~\ref{chap:method}.

Scissor LaTeX แทนที่ \input และ \include แต่ละตัวด้วยข้อความของไฟล์ แล้วจัดเรียงพิมพ์ผลลัพธ์เป็นเอกสารเดียว ป้ายกำกับ การอ้างอิง และการอ้างอิงบรรณานุกรมใช้ได้ข้ามไฟล์ เพราะสำหรับตัวจัดเรียงพิมพ์แล้ว ทั้งหมดคือข้อความเดียวกัน

หน้าตาของเอกสารที่รวมแล้ว

นี่คือสิ่งที่ตัวแก้ไขจัดเรียงพิมพ์เมื่อ main.tex ดึงไฟล์บทสองไฟล์เข้ามาด้วย \input: ข้อความของทั้งสองไฟล์ตามลำดับ (ตัวอย่างเขียนเป็นไฟล์เดียวเพื่อให้แสดงที่นี่ได้) ใน report หรือ book คำสั่ง \chapter เริ่มแต่ละบทในหน้าใหม่เอง

ไฟล์บทสองไฟล์ที่รวมเป็นเอกสารเดียว

\documentclass{report}
\begin{document}
\chapter{Introduction}
\label{chap:intro}
Rain gauges were read every morning for 44 days.
The method is described in Chapter~\ref{chap:method}.
\chapter{Method}
\label{chap:method}
Each gauge was emptied after reading, as noted in
Chapter~\ref{chap:intro}.
\end{document}
จัดหน้าโดย Scissor LaTeX: ไฟล์บทสองไฟล์ที่รวมเป็นเอกสารเดียว
หน้า 2

ระบบหาชื่อไฟล์อย่างไร

  • พาธอิงจากโฟลเดอร์บนสุดของโปรเจกต์ เช่นเดียวกับที่ใน LaTeX พาธอิงจากโฟลเดอร์ของไฟล์หลัก แม้อยู่ในไฟล์ที่ซ้อนกัน
  • ละนามสกุล .tex ได้: \input{chapters/intro} จะหา chapters/intro.tex
  • เครื่องหมายอัญประกาศรอบชื่อ เช่น \input{"my file"} จะถูกตัดออก
  • ไฟล์ที่หายไปจะแสดงเป็นข้อผิดพลาดในแท็บปัญหา พร้อมบรรทัดของ \input ส่วนที่เหลือของเอกสารยังจัดเรียงพิมพ์ได้
  • ไฟล์ที่รวมตัวเองเข้ามา ไม่ว่าโดยตรงหรือผ่านไฟล์อื่น จะถูกละไว้พร้อมข้อความแจ้ง และการซ้อนจะหยุดหลังจาก 24 ระดับ

subfiles และ \includeonly

แพ็กเกจ subfiles ทำให้แต่ละบทคอมไพล์ได้เดี่ยว ๆ Scissor LaTeX ไม่ตาม \subfile คำสั่งนี้ถูกข้ามไป และแท็บปัญหาจะแจ้งว่ามีไฟล์ที่ไม่ได้ถูกรวมเข้ามา

ไม่ตาม \subfile

\documentclass{article}
\usepackage{subfiles}
\begin{document}
The chapter below is not included:
\subfile{chapters/intro}
Replace it with an \verb|\input| line.
\end{document}

แท็บปัญหา: 1 included file is not part of this conversion

หากต้องการทำงานทีละบท ให้ใส่ % เพื่อปิดบรรทัด \include อื่น ๆ ไว้เป็นคอมเมนต์ ยอมรับ \includeonly แต่ไม่มีผล ทุกไฟล์ที่รวมเข้ามาจะถูกจัดเรียงพิมพ์ \lstinputlisting และ \inputminted ก็เช่นกัน ถูกข้ามไปพร้อมข้อความแจ้งแบบเดียวกัน (ดูโค้ดโปรแกรม)

ไฟล์อื่น ๆ ในโปรเจกต์

รูปภาพ ไฟล์ .bib และไฟล์ข้อมูลอยู่ในโฟลเดอร์ใดก็ได้ อ้างถึงด้วยพาธจากโฟลเดอร์บนสุด เช่น \includegraphics{figures/plot.png} ไฟล์ .bib ทุกไฟล์ในโปรเจกต์ถูกใช้สำหรับการอ้างอิง ไม่ว่า \bibliography จะระบุชื่ออะไร (ดูบรรณานุกรม) หากต้องการนำทั้งโปรเจกต์มาจากการติดตั้ง TeX ดูโปรเจกต์และไฟล์

สิ่งที่ต่างจากการติดตั้ง TeX

คู่มือของแพ็กเกจที่เกี่ยวข้องอยู่บน CTAN: subfiles และ import

คำถามและคำตอบ

\input กับ \include ต่างกันอย่างไร

\input วางข้อความของไฟล์ลงในตำแหน่งนั้น \include ยังเริ่มและจบหน้าใหม่รอบไฟล์นั้นด้วย และในการติดตั้ง TeX ใช้ร่วมกับ \includeonly ได้ ใน Scissor LaTeX ทั้งสองแบบใช้กับบทได้ \includeonly ถูกละเว้น ทุก \include จึงถูกจัดเรียงพิมพ์

ทำไมจึงหาไฟล์ใน \input ของฉันไม่เจอ

ตรวจสอบพาธจากโฟลเดอร์บนสุดของโปรเจกต์และการสะกด รวมถึงตัวพิมพ์ใหญ่ แท็บปัญหาแสดงชื่อที่ระบบค้นหาและบรรทัดของ \input

subfiles ใช้ได้ใน Scissor LaTeX หรือไม่

ไม่ได้ ให้แทนที่ \subfile{...} ด้วย \input{...} แล้วไฟล์บทจะไม่ต้องมีพรีแอมเบิลของตัวเอง

ทุกตัวอย่างในหน้านี้จัดหน้าโดย Scissor LaTeX ขณะสร้างเว็บไซต์ อัปเดตล่าสุด 2026-11-07