我有以下待办任务:我已经为讲座笔记设置了默认结构,现在我想将我的笔记编译成单独的 PDF 以供学习。
所以我的目标是为每门课程创建一个单独的 tex 文件,并且只有一个模板文件。问题是我无法做到这一点,\input{myfile}
因为我想设置标题、精美的页眉和类似的东西。或者也可以使用该函数来实现这一点\input{}
?
或者还有其他方法吗?
答案1
您可以设置页眉/页脚,而无需定义实际内容。因此,创建一个MyTemplate.sty
包含您的设置的文件。请注意,、CourseNumber
和\CourseTitle
尚未\CourseTitle
定义。此文件应包含您要使用的所有包,并且样式的基本设置已在此处完成。
MyTemplate.sty:
\usepackage{fancyhdr}
% Other generic packages
% Setup style for fancyheader
\pagestyle{fancy}
\lhead{\bfseries \CourseNumber}
\chead{}
\rhead{\bfseries \CourseTitle}
\lfoot{\today}
\cfoot{\Author}
\rfoot{Page \thepage}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
% Other generic settings
% Following is only so that I can capture the image below in a small height.
% Do not use in real document
%\renewcommand{\textheight}{4cm}
对于每个课程,您都有一个单独的文件,其中包含\usepackage{MyTemplate}
。这是一个示例文件,您可以在其中定义填充页眉/页脚内容所需的宏的值。请注意,此文件应仅包含内容,所有格式信息都包含在MyTemplate.sty
Math101:
\documentclass{article}
\usepackage{lipsum}% for dummy text
\usepackage{MyTemplate}
\newcommand{\CourseNumber}{Math 101}%
\newcommand{\CourseTitle}{Intro to Mathematics}%
\newcommand{\Author}{Prof. Reox}%
\begin{document}
\section{Section Header}
\lipsum[1-4]
\end{document}
这样,每门课程都会有一个共同的格式:
答案2
.tex
如果您打算只在模板中包含一个课程文件,那么您可以在课程.tex
文件中设置所有标题、标题等,并在模板文件中使用\input{<filename>}
。下面简要说明一下我所说的内容(您将拥有多个course.tex
文件):
course.tex
% Course preamble
\usepackage{<packages>}% Course-specific package(s)
%...
\begin{document}
% Course body/content
\end{document}
template.tex
\documentclass{article}% Main document class
% Template preamble
\usepackage{fancyhdr}% http://ctan.org/pkg/fancyhdr
\usepackage{<packages>}% Generic packages used throughout all courses
%...
% Other generic packages
% Other generic settings
\input{course}
该\input{<filename>}
命令提取逐字内容<filename>.tex
并将其插入到调用它的文档中。因此,您可以在<filename>.tex
主.tex
模板文件中包括任何内容。只要命令序列遵循常规/必需的文档结构:
\documentclass{<class>}
%preamble
\begin{document}
%body
\end{document}
您会注意到,当在第一个示例中将\input{course}
替换为 的内容时course.tex
,将产生上述文档结构,从而导致特定的成功编译course
。
如上所述,这不允许你将课程混合在一起并编译(例如)course1.tex
到course2.tex
主模板中,因为每个课程都会有一个与常规文档结构冲突的序言。如果你做想要这个设置(无论出于什么原因),你需要考虑使用类似standalone
包/文档类或者subfiles
包裹。
有趣的是,请考虑阅读何时应使用 \input 和 \include?
答案3
听起来你最好 (i) 将所有专门的代码收集到所谓的 LaTeX “样式文件” 中——一个扩展名为 的文本文件.sty
——reox.sty
以及 (ii) 从每个驱动程序文件中加载此包。使用以下命令加载包\usepackage
,如下所示:
\documentclass{article} % or "report", or whatever
\usepackage{reox}
% further commands to set document's tile, page headers, etc
\begin{document}
% body of document.
\end{document}
答案4
您可以在模板命令名称中使用,例如在标题等的定义中使用 \mytitle。然后在课程文件中为该命令提供合理的内容 — 您只需确保在使用命令之前为命令提供正确的内容。