我每周都会为圣公会教堂制作周日公告(又称服务传单)。目前,我使用 MS Publisher (PITA),我还使用 Ruby 进行一些网页设计。在攻读物理学本科期间,我学习了足够的 LaTeX,这足以让我变得危险,并爱上了精心设计的文本。
公告非常定期,我想使用 TeX 和一些 Ruby on Rails 前端来每周制作公告。我曾尝试使用我有限的 LaTeX 知识来设置它,但感觉我在逆势而行,代码很乱。
我的问题:
鉴于以下内容,我应该从原始 Tex 开始,继续使用 LaTeX 还是使用其他宏包?
我应该去哪里学习 TeX 作为一种编程语言而不是仅仅作为一种标记工具,以便我可以自动执行其中的一些项目?
公告设计要求:
项目符号的设计已经确定,其设计是教会文化的一部分。我根据现代排版对它做了一些更新,但我需要遵循基本模式(即我无法轻易适应现有的其他东西)。
文档的大部分内容由一个标题行组成,该标题行描述了礼拜的部分内容(例如第一次阅读、福音赞美诗、结束祷告),后面是一段文字或音乐。标题通常在右边距有一些细节。(例如马可福音 2:1-14,赞美诗 342)
公告内容直接通过计算机打印在 8.5 X 14 英寸(法律用纸)纸张上,采用 2 页小册子格式。然后将其对折、整理并在中间装订。大小范围为 1 至 7 张,但通常为 3 或 4 张。
有些音乐以 tiff 图像的形式直接印在公告中。这些图像有时需要分成多页。(在发布者中,我插入两次图像,然后裁剪一张图像的底部,裁剪另一张图像的顶部)。我已经使用 LilyPond,如果我可以直接在文本中嵌入音乐符号,我会更频繁地使用它,但重新排版音乐很慢而且容易出错,所以在可预见的未来,有些图像将保留。
每页在正文左侧都有一个 7/8 英寸的空白,其中包含简短的说明(例如全部站立,司仪,全部)。此文本与标题或段落开头对齐。
A很多文本是“诗意的”,也就是说,换行和缩进很重要。我已经有了带有制表符和换行符的文本,但我花了几个小时在 LaTeX 中重置它,而且有 1000 多行必须重置。这就是我最后一次尝试失败的原因。
我需要对换行的位置进行大量控制。与书籍不同,这种形式可以容忍底部边距大小的很大差异,但有些地方文本根本不能换行。如果有机会手动调整分页符就更好了。
答案1
在没有看到所有实际规范的情况下,很难确切地说出在 LaTeX 中实现这些功能有多难或多容易。不过,我认为大多数功能都可以轻松完成。
我建议你研究一下memoir
文档类。它具有广泛的功能,可以自定义文档中所需的几乎所有内容,并且具有非常好的设置诗句的功能。它还具有将文本放入页边距的广泛功能。该文档也非常完整,可以作为文档格式的一般指南。
您可以直接使用该类,也可以使用 memoir 作为基础构建自己的自定义类。我将首先使用 memoir 类生成文档格式的模型,然后通过为文档的各种逻辑部分添加语义标记宏将其转换为自定义类文件。
您可以使用graphicx
包,但是如果您有办法以可缩放格式(例如 PDF)重新创建图像,那就更好了。
如你所知,荷花池可以很好地与 LaTeX 集成,因此当您将更多的音乐转换成 LilyPond 时,集成将变得更加清晰。
至于自动化,您无需学习 TeX 即可实现自动化:使用 LaTeX 即可轻松实现自动化。还有许多用于处理外部数据源的软件包:datatool
用于导入电子表格类型的数据,以及latexdb
用于与 SQL 数据库接口。
与此相关但不一定直接有用的是songs
包,可以生成歌曲集。这可能会为您提供一些用于格式化某些方面的代码。
说了这么多,我还是想劝你考虑一下你会继续保持这一切。一旦你离开,就很难再找到其他人来继承你所有的劳动成果。
答案2
我是一名牧师,目前每周日都会用 LaTeX 创建 8 页小册子式公告 [2 页,2 列,正面和背面横向]。设置它花了一点时间,但现在使用起来很轻松。
我并不假装自己是 LaTeX 专家。但是,以下代码可以完成工作。我不会再使用以前的程序来制作教堂公告了。
%-----------------------------------------------------------------
% If you content goes beyond the individual pages, then you must copy the overflow and move to the correct page in the sequence.
%
%
% PREAMBLE
%-----------------------------------------------------------------
\documentclass[11pt,letterpaper,landscape,twocolumn]{article}
%\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[left=0.250in, right=0.250in, top=0.250in, bottom=0.250in]{geometry}
\author{You}
\usepackage[compact]{titlesec}
\titleformat{\section}[block]{\sffamily\Large\bfseries\filcenter}{\thesection}{1em}{}
\titleformat{\subsection}[block]{\sffamily\large\bfseries\filcenter}{\thesubsection}{1em}{}
\titlespacing{\section}{5pt}{5pt}{5pt}
\titlespacing{\subsection}{5pt}{5pt}{5pt}
\usepackage{lettrine}
\newcommand{\superscript}[1]{\ensuremath{^{\textrm{#1}}}}
\newcommand{\subscript}[1]{\ensuremath{_{\textrm{#1}}}}
\setlength{\columnsep}{72pt}
%\setlength{\columnseprule}{1pt}
\usepackage{graphicx}
\usepackage{eso-pic}
\usepackage{scrextend}
\usepackage{layout}
\usepackage{tikz}
\usepackage{framed}
\usepackage{fancybox}
\usepackage{tcolorbox}
\usepackage{niceframe}
\renewcommand\fbox[1]{\Ovalbox{#1}}
\renewcommand*\FrameCommand{\ovalbox}
\usepackage{fancyhdr}
\pagestyle{fancy}
\usetikzlibrary{shapes}
\usetikzlibrary{decorations.pathmorphing}
\usepackage[english]{babel}
\usepackage{caption}
\usepackage{multicol}
\usepackage{setspace}
\usepackage{wrapfig}
\usepackage{tabularx}
\usepackage[framemethod=TikZ]{mdframed}
\usepackage{lipsum}
\mdfdefinestyle{MyFrame}{%
linecolor=black,
outerlinewidth=2pt,
roundcorner=20pt,
innertopmargin=\baselineskip,
innerbottommargin=\baselineskip,
innerrightmargin=20pt,
innerleftmargin=20pt,}
% backgroundcolor=gray!30!white}
% You can set the background color of the front page frame. You must remove the brace follow the innerleftmargin=20pt to do that.
\usepackage{bclogo}
\begin{document}
%-----------------------------------------------------------------
% BACK PAGE OF BULLETIN
%-----------------------------------------------------------------
\thispagestyle{empty}
Content goes here!
\newpage
%-----------------------------------------------------------------
% FRONT PAGE OF BULLETIN - PAGE 1
%-----------------------------------------------------------------
\begin{mdframed}[style=MyFrame]
{\Huge\begin{center}
{\textbf{\emph{Front Page Content goes here!}}}
Frame will expand around front page content! You may have to use vspace and linespacing to enlarge your content area to bring the lower box margin down to where you want.
\end{center}}
\end{mdframed}
\newpage
%-----------------------------------------------------------------
% INSIDE FRONT PAGE OF BULLETIN - PAGE 2
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 2}}
Content goes here!
\newpage
%-----------------------------------------------------------------
% INSIDE BACK COVER-PAGE 7
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 7}}
Content goes here!
\newpage
%-----------------------------------------------------------------
% PAGE 6
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 6}}
Content goes here!
\newpage
%-----------------------------------------------------------------
% PAGE 3
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 3}}
Content goes here!
\newpage
%-----------------------------------------------------------------
% PAGE 4
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 4}}
Content goes here!
\newpage
%-----------------------------------------------------------------
% PAGE 5
%-----------------------------------------------------------------
\thispagestyle{empty}
\subsection*{\underline{Page 5}}
Content goes here!
\newpage
\end{document}
答案3
或许paperTeX可以帮到你。根据 CTAN 中的 README:
此类允许 LaTeX 用户使用 LaTeX 创建报纸。此类与 Perl 脚本一起创建,以便自动创建出版物。paperTeX 将帮助您创建具有报纸风格的出版物。
此软件包提供创建报纸头版和内页的命令。还有各种配置命令,让用户设置自己的样式。
我认为 Perl 脚本不存在,但我知道您也可以使用 Ruby。