尝试为新手用户创建简单的模板

尝试为新手用户创建简单的模板

我正在尝试为学生创建一个简单的模板,以便他们创建一页摘要。这个想法是,他们只需定义标题、作者和摘要,另一个文件实际上可以包含使用它们的主要代码。例如:

\title{A Very Simple \LaTeXe{} Template}
\author{author1 \and author2}
\abstract{
Long, drawn out abstract, blah, blah, blah.

}
\captionedimage {myimage.pdf}{caption text}
\captionedimage {myimage2.pdf}{caption text2}

第二个文件是主文档,包括第一个文件。虽然我从来没有做过这样的事情,但显然如果我想要一种新风格,那么要做的就是为我想要的新风格编写一个新的 .sty 和 .cls 文件。假设主文档可能看起来像这样(我使用 C 预处理器包含来说明我要做什么)

#include "individualpage.tex"
\documentclass[12pt]{simpleabstract}

\begin{document}
\maketitle  %% Insert a bold title font at the top of the page

%% insert the abstract defined by the student here

%% if there is an image, insert it here

\end{document}

第一个问题是,是否已经存在类似的东西,因为我不想重新发明轮子。我搜索了摘要模板,但甚至没有找到我想要的页面的简单示例,更不用说允许我生成此页面,然后交替地将它们组合在一起的设置了。这是可行的,但我知道我可以改变文档类以使页面看起来像我想要的那样。但是,在尝试之前,我想知道是否已经存在可以执行此操作的东西。以下是我希望一页看起来像的样子:

在此处输入图片描述

第二个问题是如何自动提取其中的 200 份并创建一个文档。这可能需要不同的文档样式,该样式包含标题页、一些介绍性文字、从每个摘要的标题中选择的目录以及摘要页面。主要出于这个原因,我宁愿不让个别学生嵌入定义文档的 latex 代码,而是将其放在单独的文件中。如果他们将文档样式嵌入页面中,那么为了构建更大的文档,我必须将其包装在更大的文档中。

我曾尝试说明我想使用 C++ 预处理器将文件连接在一起来实现什么,当然,实现这一点的一种方法是使用 perl 或其他文本处理语言以某种方式处理这些文件。但也许是我对 LaTeX 的无知,我不知道已经存在这样的工具,因此我提出了这个问题:是否有某种标准化的方法来实现这一点,还是需要我进行自定义编程?

答案1

以下是基于@Ignasi 建议的答案框架。combine软件包的文档(http://tug.ctan.org/tex-archive/macros/latex/contrib/combine/combine.pdf) 将帮助您进行格式化、使目录正常工作,甚至生成索引和图表。

学生获得两个文件preamble.tex(如果可能则只读)和template.tex。她填写模板、编译它并以新名称连同她的图像文件一起提交(您必须建立命名约定)。

序言:

% preamble.tex
% provided to students, read only
\documentclass[12pt,notitlepage]{article}
\usepackage{graphicx}

\newcommand{\theschool}{to be renewed}
\newcommand{\school}[1]{%
   \renewcommand{\theschool}{#1}
}
\newcommand{\theteacher}{to be renewed}
\newcommand{\teacher}[1]{%
   \renewcommand{\theteacher}{#1}
}

% hack the \date field of \maketitle
\date{School: \theschool{} -- Teacher: \theteacher{}} 

\newcommand{\myfigure}[2]{%
\centering
\includegraphics[height=3cm]{#1}\\
Caption: #2
}
\begin{document}
\newcommand{\alldone}{\end{document}}

template.tex,保存为plato.tex

% template for students to fill in
% 
\input{preamble}
\author{Plato}
\title{The Republic}
\school{Athens}
\teacher{Socrates}
\maketitle
\begin{abstract}
   \emph{The Republic} in one short paragraph \ldots
\end{abstract}
% first argument is image (.jpg, .png, .pdf)
% second argument is figure caption
\myfigure{therepublic}{Image from wikipedia}
\alldone

编译为

在此处输入图片描述

包装器位于putittogether.tex包含学生提交内容和空的目录中preamble.tex。我使用第二个保存的模板对其进行了编译和测试 - 此处未包含代码。

% putittogether.tex
\documentclass[12pt]{combine}

% macros from the preamble seen by the students
\usepackage{graphicx}
\newcommand{\theschool}{to be renewed}
\newcommand{\school}[1]{%
   \renewcommand{\theschool}{#1}
}
\newcommand{\theteacher}{to be renewed}
\newcommand{\teacher}[1]{%
   \renewcommand{\theteacher}{#1}
}
\newcommand{\hackdate}{%
  \date{School: \theschool{} -- Teacher: \theteacher{}} 
}
\newcommand{\myfigure}[2]{%
\centering
\includegraphics[height=3cm]{#1}\\
Caption: #2
}
% The \date must be renewed between \imports
\newcommand{\goget}[1]{%
  \hackdate{}\import{#1}
}
\newcommand{\alldone}{} % do nothing

% Combine package configuration
\title{All Together Now}
\author{many authors}
\date{\today}

\begin{document}
\pagestyle{combine} % use the combine page style
\maketitle % main title
\tableofcontents % main ToC
\clearpage

% The files to glue together - all in this directory,
% along with all graphics files required.
%
% Generate this list with a script, then \include it here.

\goget{plato}
\goget{vonneumann}

\end{document}

相关内容