summaryrefslogtreecommitdiff
path: root/Master/texmf-doc/doc/chinese/lnotes/src/basics.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-doc/doc/chinese/lnotes/src/basics.tex')
-rw-r--r--Master/texmf-doc/doc/chinese/lnotes/src/basics.tex490
1 files changed, 490 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/chinese/lnotes/src/basics.tex b/Master/texmf-doc/doc/chinese/lnotes/src/basics.tex
new file mode 100644
index 00000000000..a95baf212e9
--- /dev/null
+++ b/Master/texmf-doc/doc/chinese/lnotes/src/basics.tex
@@ -0,0 +1,490 @@
+\chapter{入门}
+
+\section{Hello, World!}
+\label{sec:hello_world}
+把下面例子用编辑器保存为~\verb|hello_world.tex|,这就是一个最简单的~\LaTeX~源文件。
+
+\begin{code}
+%hello_world.tex
+\documentclass{article}
+\begin{document}
+ Hello, World!
+\end{document}
+\end{code}
+
+有了源文件,我们可以在命令行把它编译成~DVI~文件(DVI~格式见\ref{sec:dvi}小节)。此命令知道输入的是~\LaTeX~源文件,所以这里的~\verb|.tex|~后缀可以省略。以后的示例中可以省略的后缀都用~\verb|()|~标出,不再特别声明。
+\begin{code}
+latex hello_world(.tex)
+\end{code}
+
+如果系统显示类似下面的错误信息,请检查源文件是否有拼写错误。\verb|.log|~文件里有更详细的编译信息。
+\begin{code}
+! LaTeX Error:
+...
+! Emergency stop.
+...
+No pages of output.
+Transcript written on hello_world.log.
+\end{code}
+
+如果编译成功,系统会报出类似下面的信息:
+\begin{code}
+Output written on hello_world.dvi (1 page, 232 bytes).
+Transcript written on hello_world.log.
+\end{code}
+
+每种~\LaTeX~发行包附带不同的~DVI~浏览器,比如~MiKTeX~的是~yap。
+\begin{code}
+yap hello_world(.dvi)
+\end{code}
+
+\section{格式及其转换}
+\subsection{页面描述语言}
+\label{sec:pdl}
+页面描述语言(Page Description Language,PDL)是一种在较高层次上描述实际输出结果的语言。本文只讨论其中三种与~\LaTeX~紧密相关的格式:DVI、PostScript、PDF。
+
+\subsubsection{PostScript}
+最早的打印机只用于打印字符,它使用的硬字符与打字机类似。后来出现的点阵(dot matrix)打字机用一系列的点来“画”出字符,当然它也可以画出图形。当时矢量图的打印只能由绘图仪(plotter)来完成。
+
+1976~年,施乐(Xerox)推出了首台激光打印机,它结合了点阵打印机和绘图仪的优点,可以同时打印高质量的图形和文字。
+
+同一时期,John Warnock~也在酝酿一种类似于~Forth~的图形设计语言,也就是后来的~PostScript(PS),当时他正在旧金山一家电脑图形公司~Evans \& Sutherland~工作。1978~年老板想让~Warnock~搬到位于犹他州的总部,他不想搬家就跳槽到了施乐。
+
+Warnock~和~Martin Newell~开发了新的图形系统~JaM(John and Martin),它后来被合并到施乐的打印机驱动程序~InterPress~中去。这两位还开发过另一个系统~MaJ。
+
+1982~年,Warnock~和施乐研究中心图形实验室主任~Chuck Geschke~一起离开施乐,成立了~Adobe~公司。Newell~后来也加入了~Adobe。
+
+1984~年~Adobe~发布~PS~后不久,Steve Jobs~跑来参观,并建议用它来驱动激光打印机。次年,武装着~PS~驱动的~Apple LaserWriter~横空出世,打响了~80~年代中期桌面出版革命的第一枪。
+
+90~年代中后期,廉价喷墨打印机的流行使得~PS~逐渐式微,因为~PS~驱动对它们毕竟是一个成本负担。
+
+\subsubsection{PDF}
+1993~年,Adobe~推出了一种开放的格式:Portable Document Format(PDF),它于~2007~年成为~ISO 32000~标准。除了开放,PDF~比起~PS~还有一些其它优势:
+\begin{itemize}
+ \item PDF~基本上是~PS~的一个子集,因此更轻便。
+ \item PDF~可以嵌入更先进的字体,具体见\ref{sec:font}节。
+ \item PDF~支持嵌入乱七八糟的东东,比如动画。
+ \item PDF~支持透明图形。
+\end{itemize}
+
+PDF~虽然拥有上述优势,起初它的推广却并不顺利,因为其读写工具~Acrobat~太贵。Adobe~很快推出了免费的~Acrobat Reader(后更名为~Adobe Reader),并不断改进~PDF,终于使它超越了曾经的事实标准~PS,成为网络时代电子文档的新标准。
+
+\subsubsection{DVI}
+\label{sec:dvi}
+Knuth~最初设计的~\TeX~只能用于~XGP~打印机,这台打印机本身还需要一台~PDP-6~主机为它服务。1979~年,David Fuchs\footnote{Fuchs~本科毕业于普林斯顿,1978~年进入斯坦福攻读博士学位。他不是~Knuth~的学生,但是完成过一些~\TeX~的开发任务。他在~Adobe~工作过一段时间,现在混入了娱乐圈,担任过电影《Red Diaper Baby》和《Haiku Tunnel》的制片人。}提出把~\TeX~的输出改为设备无关的格式,也就是~Device Independent format(DVI)。
+
+DVI~只是一种中间格式,用户还需要另外的处理程序(driver)把它转换为其它格式,比如~PS~或~PDF~,甚至~PNG、SVG~等。DVI~不能嵌入字体和图形,PS~和~PDF~可以选择是否嵌入字体。
+
+\subsubsection{Ghostscript}
+\label{sec:ghostscript}
+PS~输出时需要一个解释器(Raster Image Processor,RIP)来把它转换为点阵图形。RIP~可以是软件,也可以是固件(firmware)或硬件\footnote{固件~RIP~在打印机内置处理器上运行,硬件~RIP~常见于高端打印设备。}。
+
+Ghostscript~是一个基于~RIP~的软件包,除了~RIP~它还有一些其它功能,比如处理~EPS,把~PS~转换为~PDF~等。Ghostscript~已经被移植到~Windows、Unix/Linux、Mac OS~等多种操作系统,和它匹配的前端图形用户界面(GUI)有\href{http://pages.cs.wisc.edu/~ghost/}{GSview、Ghostview、gv}等。
+
+\subsection{格式转换}
+\label{sec:convert_format}
+DVI、PS、PDF~等格式的的转换关系如\Fref{fig:convert_format}所示。
+
+\begin{figure}[htbp]
+\centering
+\begin{tikzpicture}
+ \node[box] (tex) {.tex};
+ \node[box] (dvi) [right=5 of tex] {.dvi};
+ \node[box] (pdf) [right=6 of dvi] {.pdf};
+ \node[box] (ps) [above=3 of pdf] {.ps};
+ \path (tex) edge [arrow] node[auto] {latex} (dvi)
+ (dvi) edge [arrow] node[auto] {dvipdfm} (pdf)
+ (dvi.north) [arrow,draw] to node[above,sloped] {dvips} (ps.west)
+ (ps) edge [arrow] node[right] {ps2pdf} (pdf)
+ (tex) edge [arrow,bloop] (pdf);
+ \node [below=.7 of dvi] {pdflatex};
+\end{tikzpicture}
+\caption{格式转换}
+\label{fig:convert_format}
+\end{figure}
+
+最早的~driver~是~\verb|dvips|,它把~DVI~转换为~PS。\verb|dvipdf|~把~DVI~转为~PDF,它后来被~\verb|dvipdfm|~所取代;\verb|dvipdfm|~主要用于处理单字节字符,1999~年之后停止开发;在~\verb|dvipdfm|~基础上发展来的~\verb|dvipdfmx|~可以处理多字节编码(字符编码详见\ref{sec:encoding}节)。
+
+pdf\TeX~是一种特殊的driver,它跳过~DVI,直接用~\TeX~源文件生成~PDF。基于~pdf\TeX~的~pdf\LaTeX~则把\LaTeX~源文件转为~PDF。
+
+包老师倾向于~\verb|dvipdfmx|,因为它对图形格式的兼容性较好,而且擅长处理中文。
+
+得到~DVI~后,我们可以在控制台用以下命令把它转为~PDF。
+\begin{code}
+dvipdfm hello_world(.dvi)
+\end{code}
+
+我们也可以把它转为~PS,接着用~Ghostscript~的一个命令行程序把它转换为~PDF,注意第二个命令需要~\verb|.ps|~后缀。一般情况下不推荐这种方法,因为它多了个步骤。
+\begin{code}
+dvips hello_world(.dvi)
+ps2pdf hello_world.ps
+\end{code}
+
+pdf\LaTeX~用法如下。
+\begin{code}
+pdflatex hello_world(.tex)
+\end{code}
+
+\section{\LaTeX~语句}
+\LaTeX~源文件的每一行称作一条语句(statement),语句可以分三种:命令(command)、数据(data)和注释(comment)。
+
+命令分为两种:普通命令和环境(environment)。普通命令以\verb|\|~起始,大多只有一行;而环境包含一对起始声明和结尾声明,用于多行的场合。命令和环境可以互相嵌套。
+
+数据就是普通内容。注释语句以~\verb|%|~起始,它在编译过程中被忽略。
+
+例如在\ref{sec:hello_world}节例1中,第一行是注释,第二行是普通命令;第三、五行是环境的起始和结尾声明;第四行是数据。
+
+\section{文档结构}
+\subsection{文档类、序言、正文}
+\LaTeX~源文件的结构分三大部分,依次为:文档类声明、序言(可选)、正文。
+
+文档类声明用来指定文档的类型;序言(preamble)用来完成一些特殊任务,比如引入宏包,定义命令,设置环境等;文档的实际内容则放在正文部分。这里的正文指得是\verb|\begin{document}|和\verb|\end|~\verb|{document}|之间的部分,和通常人们心目中的“正文”概念有所出入。
+
+这三部分的基本语法如下:
+\begin{code}
+\documentclass[options]{class} %文档类声明
+\usepackage[options]{package} %引入宏包
+...
+\begin{document} %正文
+...
+\end{document}
+\end{code}
+
+常用的文档类(documentclass)有三种:\verb|article、report、book|,它们的常用选项见\fref{tab:class_options}。
+
+\begin{table}[htbp]
+\centering
+\caption{文档类常用选项}
+\label{tab:class_options}
+\begin{tabularx}{350pt}{lX}
+ \toprule
+ 10pt, 11pt, 12pt & 正文字号,缺省10pt。\LaTeX~会根据正文字号选择标题、上下标等的字号。\\
+ letterpaper, a4paper & 纸张尺寸,缺省是~letter。\\
+ notitlepage, titlepage & 标题后是否另起新页。article~缺省~notitlepage,report~和~book~缺省有~titlepage。\\
+ onecolumn, twocolumn & 栏数,缺省单栏。\\
+ oneside, twoside & 单面双面。article~和~report~缺省单面,book~缺省双面。\\
+ landscape & 打印方向横向,缺省纵向。\\
+ openany, openright & 此选项只用于~report~和~book。report~缺省~openany~,book~缺省~openright。\\
+ draft & 草稿模式。有时某些行排得过满,draft~模式可以在它们右边标上粗黑线提醒用户。\\
+ \bottomrule
+\end{tabularx}
+\end{table}
+
+\LaTeX~的核心只提供基本的功能,系统以宏包(package)的形式提供附加功能或增强原有功能。其它一些编程语言也有类似的模块化机制,比如~C/C++~的~\verb|#include|,Java~的~\verb|import|。
+
+\subsection{标题、摘要、章节}
+
+
+一份文档正文部分的开头通常有标题、作者、摘要等信息,之后是章节等层次结构,内容则散布于层次结构之间。
+
+标题、作者、日期等命令如下,注意\verb|\maketitle|~命令要放在最后。
+\begin{code}
+\title{标题}
+\author{作者}
+\today
+\maketitle
+\end{code}
+
+摘要环境用法如下:
+\begin{code}
+\begin{abstract}
+...
+\end{abstract}
+\end{code}
+
+常用的层次结构命令如下,
+\begin{code}
+\chapter{...}
+\section{...}
+\subsection{...}
+\subsubsection{...}
+\end{code}
+
+每个高级层次可以包含若干低级层次。\verb|article|~中没有~\verb|chapter|,而~\verb|report|~和~\verb|book|~则支持上面所有层次。
+
+\subsection{目录}
+
+我们可以用~\verb|\tableofcontents|~命令来生成整个文档的目录,\LaTeX~会自动设定目录包含的章节层次,也可以用~\verb|\setcounter|~命令来指定目录层次深度。
+\begin{code}
+\tableofcontents
+\setcounter{tocdepth}{2}
+\end{code}
+
+如果不想让某个章节标题出现在目录中,可以使用以下带~\verb|*|~的命令来声明章节。
+\begin{code}
+\chapter*{...}
+\section*{...}
+\subsection*{...}
+\end{code}
+
+类似地,我们也可以用以下命令生成插图和表格的目录,插图和表格功能将在后面章节中介绍。
+
+\begin{code}
+\listoffigures
+\listoftables
+\end{code}
+
+当章节或图表等结构发生变化时,我们需要执行两遍编译命令以获得正确结果。\LaTeX~之所以设计成这样可能是因为当时的电脑内存容量有限。
+
+\section{文字排版}
+\subsection{字符输入}
+文档中可以输入的内容大致可以分为:普通字符、控制符、特殊符号、注音符号、预定义字符串等。而这些内容有两种输入模式:文本模式(缺省)和数学模式,普通的行间(inline)数学模式用\verb|\$...\$|来表示。
+
+\LaTeX~中有些字符(例如~\verb|# $ % ^ & _ { } ~ \|~等)被用作特殊的控制符,所以不能直接输入,多数需要在前面加个~\verb|\|。而~\verb|\|~本身则要用~\verb|\textbackslash|~命令来输入,因为~\verb|\\|~被用作了换行指令。很奇怪为什么不用~C~语言的~\verb|\n|,也许是因为~\TeX~的编程语言是~Pascal。
+
+\begin{code}
+\# \$ \% \^{} \& \_ \{ \} \~{} \textbackslash
+\end{code}
+
+\Fref{tab:symbol}~提供了一些符号的输入方法示例,完整的符号列表见~Scott Pakin的《The Comprehensive \LaTeX~ Symbol List》\citep{Pakin_2008}。
+
+\begin{table}[htbp]
+\centering
+\caption{一些符号和预定义字符串}
+\label{tab:symbol}
+\begin{tabular}{llllll}
+ \toprule
+ \multicolumn{2}{c}{特殊符号} & \multicolumn{2}{c}{注音符号} &
+ \multicolumn{2}{c}{预定义字符串} \\
+ \cmidrule(lr){1-2} \cmidrule(lr){3-4} \cmidrule(lr){5-6}
+ \textcopyright & \verb|\textcopyright| & \aa & \verb|\aa| &
+ \today & \verb|\today| \\
+ \textregistered & \verb|\textregistered| & \AA & \verb|\AA| &
+ \TeX & \verb|\TeX| \\
+ $^\circ$C & \verb|$^\circ$C| & \ae & \verb|\ae| &
+ \LaTeX & \verb|\LaTeX| \\
+ \textyen & \verb|\textyen| & \o & \verb|\o| &
+ \LaTeXe & \verb|\LaTeXe| \\
+ \pounds & \verb|\pounds| & \"o & \verb|\"o| &
+ \MF & \verb|\MF| \\
+ \texteuro & \verb|\texteuro| & \^o & \verb|\^o| &
+ \MP & \verb|\MP| \\
+ \dots & \verb|\dots| & \~o & \verb|\~o| & \\
+ \bottomrule
+\end{tabular}
+\end{table}
+
+\subsection{换行、换页、断字}
+通常~\LaTeX~会自动换行、换页。用户也可以用~\verb|\\|~或~\verb|\newline|~来强制换行;用~\verb|\newpage|~来强制换页。
+
+一般情况下~\LaTeX~会尽量均匀地断字(Hyphenate),使得每一行的字间距分布整齐。但有时我们也需要显式指明断字位置,比如下例就指明~BASIC~这个词不能断开,而~blar-blar-blar~可以在-处断开。
+\begin{code}
+\hyphenation{BASIC blar-blar-blar}
+\end{code}
+
+\subsection{字样、字号}
+
+\LaTeX~会自动调整正文、标题、章节、上下标、脚注等的字样\footnote{关于字样详见\ref{sec:typeface}节}、字号。我们也可以用\fref{tab:typeface_command}中的命令来设置字样;用\fref{tab:fontsize_command}中的命令来设置相对字号,比如正文字号是~10pt、11pt、12pt~时,tiny的字号就分别是~5pt、6pt、6pt。
+
+\LaTeX~有一个特别的字样强调命令:\verb|\emph|,它在不同字样和装饰环境下有不同效果。比如周围文字是正体,它就是斜体;反之它就是正体。
+
+\begin{table}[hbtp]
+\centering
+\caption{字样命令}
+\label{tab:typeface_command}
+\begin{tabular}{llll}
+ \toprule
+ \verb|\textrm{...}| & \textrm{roman} &
+ \verb|\textbf{...}| & \textbf{bold face} \\
+ \verb|\textsf{...}| & \textsf{sans serif} &
+ \verb|\textit{...}| & \textit{italic} \\
+ \verb|\texttt{...}| & \texttt{typewriter} &
+ \verb|\textsl{...}| & \textsl{slanted} \\
+ \\
+ \verb|\emph{...}| & \emph{emphasized} &
+ \verb|\underline{...}| & \underline{underline} \\
+ \verb|\textsc{...}| & \textsc{Small Caps} & & \\
+ \bottomrule
+\end{tabular}
+\end{table}
+
+\begin{table}[htbp]
+\centering
+\caption{字号命令}
+\label{tab:fontsize_command}
+\begin{tabular}{llll}
+ \toprule
+ & \multicolumn{3}{c}{正文字号} \\
+ \cmidrule(lr){2-4}
+ 命令 & 10pt & 11pt & 12pt \\
+ \midrule
+ \verb|\tiny| & 5pt & 6pt & 6pt \\
+ \verb|\scriptsize| & 7pt & 8pt & 8pt \\
+ \verb|\footnotesize| & 8pt & 9pt & 10pt \\
+ \verb|\small| & 9pt & 10pt & 11pt \\
+ \verb|\normalsize| & 10pt & 11pt & 12pt \\
+ \verb|\large| & 12pt & 12pt & 14pt \\
+ \verb|\Large| & 14pt & 14pt & 17pt \\
+ \verb|\LARGE| & 17pt & 17pt & 20pt \\
+ \verb|\huge| & 20pt & 20pt & 25pt \\
+ \verb|\Huge| & 25pt & 25pt & 25pt \\
+ \bottomrule
+\end{tabular}
+\end{table}
+
+\section{常用命令环境}
+\subsection{列表}
+
+\LaTeX~中有三种列表环境:\verb|itemize、enumerate、description|,它们的一般用法如下:
+
+\begin{demo}
+\begin{itemize}
+ \item C++
+ \item Java
+ \item HTML
+\end{itemize}
+\end{demo}
+
+\begin{demo}
+\begin{enumerate}
+ \item C++
+ \item Java
+ \item HTML
+\end{enumerate}
+\end{demo}
+
+\begin{demo}
+\begin{description}
+ \item{C++} 一种编程语言
+ \item{Java} 另一种编程语言
+ \item{HTML} 一种标记语言
+\end{description}
+\end{demo}
+
+\subsection{对齐}
+\LaTeX~中的段落缺省两端对齐(fully justified),我们也可以让段落居左、居右或居中对齐。
+
+\begin{demo}
+\begin{flushleft}
+本段落\\
+居左
+\end{flushleft}
+\end{demo}
+
+\begin{demo}
+\begin{flushright}
+本段落\\
+居右
+\end{flushright}
+\end{demo}
+
+\begin{demo}
+\begin{center}
+本段落\\
+居中
+\end{center}
+\end{demo}
+
+\subsection{摘录}
+\LaTeX~中有三种摘录环境:\verb|quote、quotation、verse|。\verb|quote|~两端都缩进,\verb|quotation|~在~\verb|quote|~的基础上增加了首行缩进,\verb|verse|~比~\verb|quote|~多了第二行起的缩进。
+
+\begin{demo}
+正文
+\begin{quote}
+引文两端都缩进。
+\end{quote}
+正文
+\end{demo}
+
+\begin{demo}
+正文
+\begin{quotation}
+引文两端缩进,首行缩进。
+\end{quotation}
+正文
+\end{demo}
+
+\begin{demo}
+正文
+\begin{verse}
+引文两端缩进,第二行起缩进。
+\end{verse}
+正文
+\end{demo}
+
+\subsection{原文照排}
+一般文档中,命令和源代码通常使用等宽字样来表示,也就是原文照排。对此~\LaTeX~提供了~\verb|\verb|~命令(一般用于在正文中插入较短的命令)和~\verb|verbatim|~环境。后者有带~\verb|*|~的版本用来标明空格。
+
+\begin{demo}
+正文中插入\verb|command|
+\begin{verbatim}
+printf("Hello, world!");
+\end{verbatim}
+\begin{verbatim*}
+printf("Hello, world!");
+\end{verbatim*}
+\end{demo}
+
+\subsection{交叉引用}
+我们常常需要引用文档中~\verb|section、subsection、figure、table|~等对象的编号,这种功能叫作交叉引用(cross referencing)。
+
+\LaTeX~中可以用~\verb|\label{marker}|~命令来定义一个标记,标记名可以是任意字符串,但是在全文中须保持唯一。之后可以用~\verb|\ref{marker}|~命令来引用标记处章节或图表的编号,用~\verb|\pageref{marker}|~来引用标记处的页码。
+
+\begin{demo}
+被引用处\label{sec}\\
+...\\
+第\pageref{sec}页\ref{sec}节
+\end{demo}
+
+文档中新增交叉引用后,第一次执行~\verb|latex|~或~\verb|pdflatex|~编译命令时会得到类似下面的警告信息。因为第一次编译只会扫描出有交叉引用的地方,第二次编译才能得到正确结果。
+
+\begin{code}
+LaTeX Warning: There were undefined references.
+...
+LaTeX Warning: Label(s) may have changed. Rerun to get cross-
+references right.
+\end{code}
+
+\subsection{脚注}
+脚注(footnote)的一般用法如下:
+\begin{demo}
+这里是一段正文。\footnote{这里是一段脚注。}
+\end{demo}
+
+\section{长度单位}
+\LaTeX~中的常用长度单位如\Fref{tab:unit}~所示。point~是个传统印刷业采用的单位,而~big point~是~Adobe~推出~PS~时新定义的单位。em~是个相对单位,比如当前字体是~11pt~时,1em~就是~11pt。
+\begin{table}[htbp]
+\caption{常用长度单位}
+\label{tab:unit}
+\centering
+\begin{tabular}{llllll}
+ \toprule
+ in & 英寸 & pt & point, 1/72.27 in & em & 当前字体中字母M的宽度 \\
+ cm & 厘米 & bp & big point, 1/72 in & ex & 当前字体中字母X的高度 \\
+ mm & 毫米 & pc & pica, 12 pt & mu & math unit,1/18 em \\
+ \bottomrule
+\end{tabular}
+\end{table}
+
+\section{盒子}
+\LaTeX~在排版时把每个对象(小到一个字母,大到一个段落)都视为一个矩形盒子(box),我们在~HTML~和~CSS~中也可以见到类似的模型。
+
+\subsection{mbox~和~fbox}
+
+\LaTeX~中最简单的盒子是~\verb|\mbox|~和~\verb|\fbox|。前者把一组对象组合起来,后者在此基础上加了个边框。
+\begin{demo}
+\mbox{010 6278 5001}
+\fbox{010 6278 5001}
+\end{demo}
+
+\subsection{makebox~和~framebox}
+稍复杂的~\verb|\makebox|~和~\verb|\framebox|~提供了宽度和对齐方式控制选项。这里用~l、r、s~分别代表居左、居右和分散对齐。
+\begin{demo}
+%语法:[宽度][对齐方式]{内容}
+\makebox[100pt][l]{居左}
+\framebox[100pt][r]{居右}
+\end{demo}
+
+\subsection{parbox~和~minipage}
+大一些的对象比如整个段落可以用~\verb|\parbox|~命令和~\verb|\minipage|~环境,两者语法类似,也提供了对齐方式和宽度的选项。但是这里的对齐方式是指与周围内容的纵向关系,用~t、c、b~分别代表居顶、居中和居底对齐。
+
+\begin{demo}
+%语法:[对齐方式]{宽度}{内容}
+\parbox[c]{90pt}{锦瑟无端五十弦,\\一弦一柱思华年。}李商隐
+\end{demo}
+
+细心的读者会发现~\verb|\parbox|~和~\verb|\minipage|~的选项排列顺序和~\verb|\makebox|~和~\verb~\framebox|~的不一致,可能出自不同的作者。
+
+\bibliographystyle{unsrtnat}
+\bibliography{reading}
+\newpage