答案1
如果你真的想复制 Knuth 所做的,你可以使用相同的宏。他使用的宏计算机编程艺术(TAOCP)可用作taocpmac.tex
,与问题中的例子相关的是\quoteformat
和\author
。下载taocpmac.tex
,注释掉\input figdir.local
顶部的行(或创建该名称的文件)并执行以下操作:
\input taocpmac
\beginchapter CHAPTER SIX: SEARCHING.
{\quoteformat{Let's look at the record.}
\author AL SMITH (1928)
}
\medskip
The normal text of the chapter here.
\bigskip
{\quoteformat{I shall have accomplished my purpose if I have sorted out and put in logical order
the gist of the great volume of material which has been generated about sorting
over the past few years.}
\author J. C. HOSKEN (1955)
}
\bye
使用tex
或pdftex
(或xetex
或luatex
,即不是任何*latex
)进行编译:
如果你不想把所有的宏都复制过来,taocpmac.tex
你可以只复制相关的宏,如果你愿意的话,你甚至可以用表面上的 LaTeX 风格来装饰它们:
\documentclass{article}
\font\eightss=cmssq8
\font\eightssi=cmssqi8
\newcommand\quoteAuthorDate[3]{\begingroup
\baselineskip 10pt
\parfillskip 0pt
\interlinepenalty 10000 % not needed in example
\leftskip 0pt plus 40pc minus \parindent
\let\rm=\eightss
\let\sl=\eightssi
\everypar{\sl}#1\par
\nobreak\smallskip
\noindent\rm--- #2\unskip\enspace(#3)\par
\endgroup}
\begin{document}
\hsize = 6in % Wider than default, to illustrate.
\quoteAuthorDate{Let's look at the record.}{AL SMITH}{1928}
\medskip
The normal text of the chapter here.
\bigskip
\quoteAuthorDate{I shall have accomplished my purpose if I have sorted out and put in logical order\par
the gist of the great volume of material which has been generated about sorting\par
over the past few years.}{J. C. HOSKEN}{1955}
\medskip
\end{document}
根据需要调整跳过和换行符。尽管即使没有手动选择换行符,您也可能得到一些可以接受的结果,但 DEK 会手动选择换行符——这就是 的定义中\quoteformat
有 的原因\obeylines
,而我上面的“LaTeX”示例\par
在第二个引号中有 s。LaTeX 用户往往不喜欢这样的东西。如果您属于同一类别,您可以尝试找到一个可以满足您的需求的 LaTeX 包。例如,正如问题评论中提到的,您可以使用epigraph
:
\documentclass{article}
\usepackage{epigraph}
\begin{document}
\epigraph{Let's look at the record.}{AL SMITH (1928)}
The normal text of the chapter here.
\setlength{\epigraphwidth}{0.9\textwidth}
\epigraph{I shall have accomplished my purpose if I have sorted out and put in logical order
the gist of the great volume of material which has been generated about sorting
over the past few years.}{J. C. HOSKEN (1955)}
\end{document}
但外观与 TAOCP 不一样。
历史附录:除了这些宏存在之外,我们如何知道 DEK 就是这样输入报价的taocpmac.tex
?
实际上,我不知道周围的{
和}
,但至于其余的(\quoteformat
和\author
),事实上,自从 1977 年 5 月 DEK 为 TeX 编写的第一个“设计文档”以来,这一点并没有发生实质性变化,当时 TeX 程序还没有写出一行。在这些(TEXDR.AFT 和 TEX.ONE,发表于数字排版)他写下了他想要输入的内容,基本上是一样的。后来,较旧的 TeX 手册(例如,1997 年出版的那本)TeX 和 METAFONT:排版的新方向) 实际上在其“附录 E:书籍格式示例”中详细介绍了如何输入 TAOCP,其中这些宏位于acphdr.TEX
当时名为的文件中,它甚至说“对于引文,您输入...”并给出\quoteformat
和\author
。(当前电子书在其“附录 E:示例格式”中,解释了manmac.tex
用于排版的TeXbook你也可以看看在 中如何引用)中texbook.tex
也提到了acpmac.tex
1995 年 TUG 采访,最后它现在被称为taocpmac.tex.