diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/lshort-chinese/src/graphic.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/lshort-chinese/src/graphic.tex | 825 |
1 files changed, 825 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/lshort-chinese/src/graphic.tex b/Master/texmf-dist/doc/latex/lshort-chinese/src/graphic.tex new file mode 100644 index 00000000000..34fb16a97e8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/lshort-chinese/src/graphic.tex @@ -0,0 +1,825 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 中文~4.20~翻译: +% 5.2.5-5.2.11 gprsnl@bbs.ctex +% 其他章节 zpxing@bbs.ctex email: zpxing at gmail dot com +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\setcounter{chapter}{4} +\newcommand{\graphicscompanion}{\emph{The \LaTeX{} Graphics Companion}~\cite{graphicscompanion}} +\newcommand{\hobby}{\emph{A User's Manual for MetaPost}~\cite{metapost}} +\newcommand{\hoenig}{\emph{\TeX{} Unbound}~\cite{unbound}} +\newcommand{\graphicsinlatex}{\emph{Graphics in \LaTeXe{}}~\cite{ursoswald}} + +%\chapter{Producing Mathematical Graphics} +%\label{chap:graphics} +\chapter{数学图形} +\label{chap:graphics} + +%\begin{intro} +%Most people use \LaTeX\ for typesetting their text. But as the non content and +%structure oriented approach to authoring is so convenient, \LaTeX\ also offers a, +%if somewhat restricted, possibility for producing graphical output from textual +%descriptions. Furthermore, quite a number of \LaTeX\ extensions have been created +%in order to overcome these restrictions. In this section, you will learn about a +%few of them. +%\end{intro} +\begin{intro} +大部分人使用 \LaTeX 来排版文本内容。 因其不面向内容和结构的特点给写作提供了巨大的方便, +我们还可以有办法从文本描述生成图形输出。此外,大量的 \LaTeX 扩展 +被开发出来以克服种种限制。 在本节中,我们将学习其中的一些。 +\end{intro} +%\section{Overview} +\section{概述} + +%The \ei{picture} environment allows programming pictures directly in +%\LaTeX. A detailed +%description can be found in the \manual. On the one hand, there are rather +%severe constraints, as the slopes of line segments as well as the radii of +%circles are restricted to a narrow choice of values. On the other hand, the +%\ei{picture} environment of \LaTeXe\ brings with it the \ci{qbezier} +%command, ``\texttt{q}'' meaning ``quadratic''. Many frequently used curves +%such as circles, ellipses, or catenaries can be satisfactorily approximated +%by quadratic B\'ezier curves, although this may require some mathematical +%toil. If, in addition, a programming language like Java is used to generate +%\ci{qbezier} blocks of \LaTeX\ input files, the \ei{picture} environment +%becomes quite powerful. + +\ei{picture} 环境可以在 \LaTeX{} 里直接设计图形。详细的介绍请参考 \manual。 +一方面,这种方法有严重的局限性,比如线段的斜率和圆的半径只能在一个很小的范围内取值。 +另一方面, \LaTeXe 的 \ei{picture} 环境提供了 \ci{qbezier} 命令, +``\texttt{q}'' 表示 ``quadratic''。许多常用的曲线如圆、椭圆、或者悬链线都 +可以用二次 B\'ezier 曲线得到令人满意的近似,虽然这可能需要一些辛苦的数学准备。 +另外,如果有一种编程语言如 Java 能用来生成 \LaTeX 源文档的 \ci{qbezier} 模块, +\ei{picture} 环境会更强大。 + +%Although programming pictures directly in \LaTeX\ is severely +%restricted, and often rather tiresome, there are still reasons for +%doing so. The documents thus produced are ``small'' with respect to +%bytes, and there are no additional graphics files to be dragged +%along. +% +%Packages like \pai{epic} and \pai{eepic} (described, for instance, +%in \companion), or \pai{pstricks} help to eliminate the restrictions +%hampering the original \ei{picture} environment, and greatly +%strengthen the graphical power of \LaTeX. +% +%While the former two packages just enhance the \ei{picture} +%environment, the \pai{pstricks} package has its own drawing +%environment, \ei{pspicture}. The power of \pai{pstricks} stems from +%the fact that this package makes extensive use of \PSi{} +%possibilities. In addition, numerous packages have been written for +%specific purposes. One of them is \texorpdfstring{\Xy}{Xy}-pic, +%described at the end of this chapter. A wide variety of these +%packages is described in detail in \graphicscompanion{} (not to be +%confused with \companion). + +虽然直接在 \LaTeX 里设计图形的方法有严重的局限性而且通常比较繁琐, +但它还是很有用的。这份文档就是用它才变得体积很小,不需要插入额外的图片。 + +一些宏包,如 \pai{epic} 和 \pai{eepic}(\companion 里有介绍),或者 + \pai{pstricks} 可以排除 \ei{picture} 环境的局限,并大大地增强了 \LaTeX 的图形功能。 + +跟前两个宏包只是加强了 \ei{picture} 环境不同,\pai{pstricks} 宏包有自己的绘图环境, +\ei{pspicture}。 \pai{pstricks} 的强大之处在于它广泛应用了 \PSi{}。 +另外,许多宏包可以用来处理专门的问题。其一是 \texorpdfstring{\Xy}{Xy}-pic, +本章最后会讲到它。 +\graphicscompanion{} (勿与 \companion 混淆)里详细介绍了大量的宏包. +% +%Perhaps the most powerful graphical tool related with \LaTeX\ is \texttt{MetaPost}, the twin of +%Donald E. Knuth's \texttt{METAFONT}. \texttt{MetaPost} has the very powerful and +%mathematically sophisticated programming language of \texttt{METAFONT}. Contrary to \texttt{METAFONT}, +%which generates bitmaps, \texttt{MetaPost} generates encapsulated \PSi{} files, +%which can be imported in \LaTeX. For an introduction, see \hobby, or the tutorial on \cite{ursoswald}. + +\LaTeX 最强大的图形工具可能是 \texttt{MetaPost}, Donald E. +Knuth 编写的 \texttt{METAFONT} 的孪生兄弟。 +\texttt{MetaPost} 使用非常强大的数学编程语言: \texttt{METAFONT}。 +与 \texttt{METAFONT} 生成点阵图片不同,\texttt{MetaPost} 生成的是封装的 \PSi{} 文件, +可以导入 \LaTeX 中。其介绍可以看 \hobby,或者 \cite{ursoswald}。 + +% +%A very thorough discussion of \LaTeX{} and \TeX{} strategies for graphics (and fonts) can +%be found in \hoenig. + +关于 \LaTeX{} 和 \TeX{} 图形(以及字体)支持方法的详细讨论请参考 \hoenig。 + +%\section{The \texttt{picture} Environment} +%\secby{Urs Oswald}{osurs@bluewin.ch} +\section{\texttt{picture} 环境} +\secby{Urs Oswald}{osurs@bluewin.ch} + + +%\subsection{Basic Commands} +\subsection{基本命令} + +%A \ei{picture} environment\footnote{Believe it or not, the picture environment works out of the +%box, with standard \LaTeXe{} no package loading necessary.} is created with one of the two commands +一个 \ei{picture} 环境\footnote{信不信由你,picture 环境仅需标准的 \LaTeXe{},“开箱即用”,无需载入宏包。}可以用下面两个命令中的一个来创建 +\begin{lscommand} +\ci{begin}\verb|{picture}(|$x,y$\verb|)|\ldots\ci{end}\verb|{picture}| +\end{lscommand} +\noindent 或者 +\begin{lscommand} +\ci{begin}\verb|{picture}(|$x,y$\verb|)(|$x_0,y_0$\verb|)|\ldots\ci{end}\verb|{picture}| +\end{lscommand} +%The numbers $x,\,y,\,x_0,\,y_0$ refer to \ci{unitlength}, which can be reset any time +%(but not within a \ei{picture} environment) with a command such as +数字 $x,\,y,\,x_0,\,y_0$ 是相对于 \ci{unitlength} 而言的,任何时候(除了在 \ei{picture} 环境之内以外),都可以 +使用命令如 +\begin{lscommand} +\ci{setlength}\verb|{|\ci{unitlength}\verb|}{1.2cm}| +\end{lscommand} +%The default value of \ci{unitlength} is \texttt{1pt}. The first +%pair, $(x,y)$, effects the reservation, within the document, of +%rectangular space for the picture. The optional second pair, +%$(x_0,y_0)$, assigns arbitrary coordinates to the bottom left corner +%of the reserved rectangle. +\noindent +来改变。\ci{unitlength} 的默认值是 \texttt{1 pt}。第一个数对, +$(x,y)$, 在文档中为图形保留一个矩形的区域。可选的第二个数对, +$(x_0,y_0)$,为矩形左下角指派任意的坐标。 + +%Most drawing commands have one of the two forms +大多数的绘图命令是下面两种格式之一 +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\emph{object}\verb|}| +\end{lscommand} +\noindent 或者 +\begin{lscommand} +\ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta +y$\verb|){|$n$\verb|}{|\emph{object}\verb|}|\end{lscommand} +%B\'ezier curves are an exception. They are drawn with the command +B\'ezier 曲线是一个例外。 它们需要用命令 +\begin{lscommand} +\ci{qbezier}\verb|(|$x_1,y_1$\verb|)(|$x_2,y_2$\verb|)(|$x_3,y_3$\verb|)| +\end{lscommand} +\noindent 来画。 +\newpage + +%\subsection{Line Segments} +\subsection{线段} +\begin{example} +\setlength{\unitlength}{5cm} +\begin{picture}(1,1) + \put(0,0){\line(0,1){1}} + \put(0,0){\line(1,0){1}} + \put(0,0){\line(1,1){1}} + \put(0,0){\line(1,2){.5}} + \put(0,0){\line(1,3){.3333}} + \put(0,0){\line(1,4){.25}} + \put(0,0){\line(1,5){.2}} + \put(0,0){\line(1,6){.1667}} + \put(0,0){\line(2,1){1}} + \put(0,0){\line(2,3){.6667}} + \put(0,0){\line(2,5){.4}} + \put(0,0){\line(3,1){1}} + \put(0,0){\line(3,2){1}} + \put(0,0){\line(3,4){.75}} + \put(0,0){\line(3,5){.6}} + \put(0,0){\line(4,1){1}} + \put(0,0){\line(4,3){1}} + \put(0,0){\line(4,5){.8}} + \put(0,0){\line(5,1){1}} + \put(0,0){\line(5,2){1}} + \put(0,0){\line(5,3){1}} + \put(0,0){\line(5,4){1}} + \put(0,0){\line(5,6){.8333}} + \put(0,0){\line(6,1){1}} + \put(0,0){\line(6,5){1}} +\end{picture} +\end{example} +%Line segments are drawn with the command +线段用命令 +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\ci{line}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}| +\end{lscommand} +%Line segments are drawn with the command +\noindent 来画。 命令 \ci{line} 有两个参量: +%\begin{enumerate} +% \item a direction vector, +% \item a length. +%\end{enumerate} +\begin{enumerate} + \item 一个方向向量, + \item 一个长度。 +\end{enumerate} +%The components of the direction vector are restricted to the integers +方向向量需由以下整数构成 +\[ + -6,\,-5,\,\ldots,\,5,\,6, +\] +%and they have to be coprime (no common divisor except 1). The figure illustrates all +%25 possible slope values in the first quadrant. The length is relative to \ci{unitlength}. +%The length argument is the vertical coordinate in the case of a vertical line segment, the +%horizontal coordinate in all other cases. +而且它们需要互质(除 1 以外,没有公约数),图形显示了第一象限中所有 25 个可能的斜率值。 +长度是相对于 \ci{unitlength} 来说的。长度的参量当一个垂直线段时是垂直坐标,其他情况都是水平坐标。 + +%\subsection{Arrows} +\subsection{箭头} + +\begin{example} +\setlength{\unitlength}{0.75mm} +\begin{picture}(60,40) + \put(30,20){\vector(1,0){30}} + \put(30,20){\vector(4,1){20}} + \put(30,20){\vector(3,1){25}} + \put(30,20){\vector(2,1){30}} + \put(30,20){\vector(1,2){10}} + \thicklines + \put(30,20){\vector(-4,1){30}} + \put(30,20){\vector(-1,4){5}} + \thinlines + \put(30,20){\vector(-1,-1){5}} + \put(30,20){\vector(-1,-4){5}} +\end{picture} +\end{example} +%Arrows are drawn with the command +画箭头要用命令 +\begin{lscommand} +\ci{put}\verb|(|$x,y$\verb|){|\ci{vector}\verb|(|$x_1,y_1$\verb|){|$length$\verb|}}| +\end{lscommand} +%For arrows, the components of the direction vector are even more narrowly restricted than +%for line segments, namely to the integers +箭头的方向向量元素比线段的限制更严格,需由以下整数构成 +\[ + -4,\,-3,\,\ldots,\,3,\,4. +\] +%Components also have to be coprime (no common divisor except 1). Notice the effect of the +%\ci{thicklines} command on the two arrows pointing to the upper left. +而且需要互质(除 1 以外,没有公约数)。注意命令 \ci{thicklines} 对指向左上方的两个箭头产生的效果。 + +%\subsection{Circles} +\subsection{圆} + +\begin{example} +\setlength{\unitlength}{1mm} +\begin{picture}(60, 40) + \put(20,30){\circle{1}} + \put(20,30){\circle{2}} + \put(20,30){\circle{4}} + \put(20,30){\circle{8}} + \put(20,30){\circle{16}} + \put(20,30){\circle{32}} + + \put(40,30){\circle{1}} + \put(40,30){\circle{2}} + \put(40,30){\circle{3}} + \put(40,30){\circle{4}} + \put(40,30){\circle{5}} + \put(40,30){\circle{6}} + \put(40,30){\circle{7}} + \put(40,30){\circle{8}} + \put(40,30){\circle{9}} + \put(40,30){\circle{10}} + \put(40,30){\circle{11}} + \put(40,30){\circle{12}} + \put(40,30){\circle{13}} + \put(40,30){\circle{14}} + + \put(15,10){\circle*{1}} + \put(20,10){\circle*{2}} + \put(25,10){\circle*{3}} + \put(30,10){\circle*{4}} + \put(35,10){\circle*{5}} +\end{picture} +\end{example} +%The command +命令 +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{circle}\verb|{|\emph{diameter}\verb|}}| +\end{lscommand} +%\noindent draws a circle with center $(x,y)$ and diameter (not radius) \emph{diameter}. +%The \ei{picture} environment only admits diameters up to approximately 14\,mm, +%and even below this limit, not all diameters are possible. The \ci{circle*} +%command produces disks (filled circles). +\noindent +画了一个圆心在 $(x,y)$ 直径(不是半径)为 \emph{diameter} 的圆。 +\ei{picture} 环境只允许直径最大是 14\,mm, 而且即使在这个限制之下, +也不是所有的直径都可获得。命令 \ci{circle*} 生成圆盘 (填充的圆形)。 + + +%As in the case of line segments, one may have to resort to additional packages, +%such as \pai{eepic} or \pai{pstricks}. +%For a thorough description of these packages, see \graphicscompanion. + +跟线段的情况一样,你可能需要其他宏包的帮助,比如 \pai{eepic} 或者 \pai{pstricks}。 +这些宏包的详细说明请参考 \graphicscompanion。 + +%There is also a possibility within the +%\ei{picture} environment. If one is not afraid of doing the necessary calculations +%(or leaving them to a program), arbitrary circles and ellipses can be patched +%together from quadratic B\'ezier curves. +%See \graphicsinlatex\ for examples and Java source files. +\ei{picture} 环境还有另外一个可能。如果你不怕麻烦的必要的计算(或者交给一个程序来处理), +任意的圆和矩形都可以由二次 B\'ezier 曲线拼成。请看例子 \graphicsinlatex 以及 Java 源文件。 + + +% \subsection{Text and Formulas} +\subsection{文本与公式} + +\begin{example} +\setlength{\unitlength}{0.8cm} +\begin{picture}(6,5) + \thicklines + \put(1,0.5){\line(2,1){3}} + \put(4,2){\line(-2,1){2}} + \put(2,3){\line(-2,-5){1}} + \put(0.7,0.3){$A$} + \put(4.05,1.9){$B$} + \put(1.7,2.95){$C$} + \put(3.1,2.5){$a$} + \put(1.3,1.7){$b$} + \put(2.5,1.05){$c$} + \put(0.3,4){$F= + \sqrt{s(s-a)(s-b)(s-c)}$} + \put(3.5,0.4){$\displaystyle + s:=\frac{a+b+c}{2}$} +\end{picture} +\end{example} +% As this example shows, text and formulas can be written into a \ei{picture} environment with +% the \ci{put} command in the usual way. +如本例所示,文本与公式可以使用 \ci{put} 命令按照正常方式在 \ei{picture} 环境中使 +用。 + +% \subsection{\ci{multiput} and \ci{linethickness}} +\subsection{\ci{multiput}~与~\ci{linethickness}} + +\begin{example} +\setlength{\unitlength}{2mm} +\begin{picture}(30,20) + \linethickness{0.075mm} + \multiput(0,0)(1,0){26}% + {\line(0,1){20}} + \multiput(0,0)(0,1){21}% + {\line(1,0){25}} + \linethickness{0.15mm} + \multiput(0,0)(5,0){6}% + {\line(0,1){20}} + \multiput(0,0)(0,5){5}% + {\line(1,0){25}} + \linethickness{0.3mm} + \multiput(5,0)(10,0){2}% + {\line(0,1){20}} + \multiput(0,5)(0,10){2}% + {\line(1,0){25}} +\end{picture} +\end{example} +% The command +% \begin{lscommand} +% \ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{object}\verb|}| +% \end{lscommand} +% \noindent has 4 arguments: the starting point, the translation vector from one object to the next, +% the number of objects, and the object to be drawn. The \ci{linethickness} command applies to +% horizontal and vertical line segments, but neither to oblique line segments, nor to circles. +% It does, however, apply to quadratic B\'ezier curves! +命令 +\begin{lscommand} + \ci{multiput}\verb|(|$x,y$\verb|)(|$\Delta x,\Delta y$\verb|){|$n$\verb|}{|\emph{object}\verb|}| +\end{lscommand} +\noindent +有 4 个参量:初始点,从一个对象到下一个的平移向量,对象的数目和要绘制 +的对象。命令 \ci{linethickness} 可作用于水平和垂直方向的线段,但不能作用于倾斜的 +线段和圆。然而,该命令可作用于二次 B\'ezier 曲线。 + +% \subsection{Ovals} +\subsection{椭圆} + +\begin{example} +\setlength{\unitlength}{0.75cm} +\begin{picture}(6,4) + \linethickness{0.075mm} + \multiput(0,0)(1,0){7}% + {\line(0,1){4}} + \multiput(0,0)(0,1){5}% + {\line(1,0){6}} + \thicklines + \put(2,3){\oval(3,1.8)} + \thinlines + \put(3,2){\oval(3,1.8)} + \thicklines + \put(2,1){\oval(3,1.8)[tl]} + \put(4,1){\oval(3,1.8)[b]} + \put(4,3){\oval(3,1.8)[r]} + \put(3,1.5){\oval(1.8,0.4)} +\end{picture} +\end{example} +% The command +% \begin{lscommand} +% \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)}| +% \end{lscommand} +% \noindent or +% \begin{lscommand} +% \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)[|\emph{position}\verb|]}| +% \end{lscommand} +% \noindent produces an oval centered at $(x,y)$ and having width $w$ and height $h$. The optional +% \emph{position} arguments \texttt{b}, \texttt{t}, \texttt{l}, \texttt{r} refer to +% ``top'', ``bottom'', ``left'', ``right'', and can be combined, as the example illustrates. +命令 +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)}| +\end{lscommand} +\noindent 或 +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|){|\ci{oval}\verb|(|$w,h$\verb|)[|\emph{position}\verb|]}| +\end{lscommand} +\noindent +可以产生一个中心在 $(x,y)$ 处、宽为 $w$ 高为 $h$ 的椭圆。如本例所示,可选 +参量 \emph{position} 可以是 \texttt{b}, \texttt{t}, \texttt{l}, +\texttt{r}, 分别 +表示仅绘制椭圆的“下部”、“上部”、“左部”和“右部”,如例所示,这些参数可以进行组合。 + +% Line thickness can be controlled by two kinds of commands: \\ +% \ci{linethickness}\verb|{|\emph{length}\verb|}| +% on the one hand, \ci{thinlines} and \ci{thicklines} on the other. While \ci{linethickness}\verb|{|\emph{length}\verb|}| +% applies only to horizontal and vertical lines (and quadratic B\'ezier curves), \ci{thinlines} and \ci{thicklines} +% apply to oblique line segments as well as to circles and ovals. +以下两类命令可以控制线宽:一类 +为 \ci{linethickness}\verb|{|\emph{length}\verb|}|,另一类 +为 \ci{thinlines} 与 \ci{thicklines}。命 +令 \ci{linethickness}\verb|{|\emph{length}\verb|}| 仅对水平和垂直直线(及二次 B\'ezier 曲线)有作用, +\ci{thinlines} 与 \ci{thicklines} 则可以作用于倾斜的线段、圆和椭圆。 + + +% \subsection{Multiple Use of Predefined Picture Boxes} +\subsection{重复使用预定义的图形盒子} + +\begin{example} +\setlength{\unitlength}{0.5mm} +\begin{picture}(120,168) +\newsavebox{\foldera} +\savebox{\foldera} + (40,32)[bl]{% definition + \multiput(0,0)(0,28){2} + {\line(1,0){40}} + \multiput(0,0)(40,0){2} + {\line(0,1){28}} + \put(1,28){\oval(2,2)[tl]} + \put(1,29){\line(1,0){5}} + \put(9,29){\oval(6,6)[tl]} + \put(9,32){\line(1,0){8}} + \put(17,29){\oval(6,6)[tr]} + \put(20,29){\line(1,0){19}} + \put(39,28){\oval(2,2)[tr]} +} +\newsavebox{\folderb} +\savebox{\folderb} + (40,32)[l]{% definition + \put(0,14){\line(1,0){8}} + \put(8,0){\usebox{\foldera}} +} +\put(34,26){\line(0,1){102}} +\put(14,128){\usebox{\foldera}} +\multiput(34,86)(0,-37){3} + {\usebox{\folderb}} +\end{picture} +\end{example} +% A picture box can be \emph{declared} by the command +% \begin{lscommand} +% \ci{newsavebox}\verb|{|\emph{name}\verb|}| +% \end{lscommand} +% \noindent then \emph{defined} by +% \begin{lscommand} +% \ci{savebox}\verb|{|\emph{name}\verb|}(|\emph{width,height}\verb|)[|\emph{position}\verb|]{|\emph{content}\verb|}| +% \end{lscommand} +% \noindent and finally arbitrarily often be \emph{drawn} by +% \begin{lscommand} +% \ci{put}\verb|(|$x,y$\verb|)|\ci{usebox}\verb|{|\emph{name}\verb|}| +% \end{lscommand} +一个图形盒子可以使用命令 +\begin{lscommand} + \ci{newsavebox}\verb|{|\emph{name}\verb|}| +\end{lscommand} +\noindent 进行\textbf{声明},然后使用命令 +\begin{lscommand} + \ci{savebox}\verb|{|\emph{name}\verb|}(|\emph{width,height}\verb|)[|\emph{position}\verb|]{|\emph{content}\verb|}| +\end{lscommand} +\noindent 进行\textbf{定义},最后使用命令 +\begin{lscommand} + \ci{put}\verb|(|$x,y$\verb|)|\ci{usebox}\verb|{|\emph{name}\verb|}| +\end{lscommand} +\noindent 进行任意次数的重复\textbf{绘制}。 + +% The optional \emph{position} parameter has the effect of defining the +% `anchor point' of the savebox. In the example it is set to \texttt{bl} which +% puts the anchor point into the bottom left corner of the savebox. The other +% position specifiers are \texttt{t}op and \texttt{r}ight. +可选参数 \emph{position} 的作用是定义图形存放盒子的“锚点”。在本例中该参数被设置 +为 \texttt{bl},从而将锚点设置为图形存放盒子的左下角。其他的位置描述 +有 \texttt{t} 和 \texttt{r},分别表示“上”和“右”。 + +% The \emph{name} argument refers to a \LaTeX{} storage bin and therefore is +% of a command nature (which accounts for the backslashes in the current +% example). Boxed pictures can be nested: In this example, \ci{foldera} is +% used within the definition of \ci{folderb}. +参量 \emph{name} 指明了 \LaTeX{} 存储槽,揭示了其命令本质(在本例中指反斜线)。图 +形盒子可以嵌套:在本例中,\ci{foldera} 被用在了 \ci{folderb} 的定义中。 + +% The \ci{oval} command had to be used as the \ci{line} command does not work if +% the segment length is less than about 3\,mm. +由于命令 \ci{line} 在线段长度小于大约 3\,mm 的时候不能正常工作,所以必须使用命令 \ci{oval}。 + +% \subsection{Quadratic B\'ezier Curves} +\subsection{二次~B\'ezier~曲线} + +\begin{example} +\setlength{\unitlength}{0.8cm} +\begin{picture}(6,4) + \linethickness{0.075mm} + \multiput(0,0)(1,0){7} + {\line(0,1){4}} + \multiput(0,0)(0,1){5} + {\line(1,0){6}} + \thicklines + \put(0.5,0.5){\line(1,5){0.5}} + \put(1,3){\line(4,1){2}} + \qbezier(0.5,0.5)(1,3)(3,3.5) + \thinlines + \put(2.5,2){\line(2,-1){3}} + \put(5.5,0.5){\line(-1,5){0.5}} + \linethickness{1mm} + \qbezier(2.5,2)(5.5,0.5)(5,3) + \thinlines + \qbezier(4,2)(4,3)(3,3) + \qbezier(3,3)(2,3)(2,2) + \qbezier(2,2)(2,1)(3,1) + \qbezier(3,1)(4,1)(4,2) +\end{picture} +\end{example} +% As this example illustrates, splitting up a circle into 4 quadratic B\'ezier curves +% is not satisfactory. At least 8 are needed. The figure again shows the effect of +% the \ci{linethickness} command on horizontal or vertical lines, and of the +% \ci{thinlines} and the \ci{thicklines} commands on oblique line segments. It also +% shows that both kinds of commands affect quadratic B\'ezier curves, each command +% overriding all previous ones. +如本例所示,将圆分割为 4 条二次 B\'ezier 曲线的效果不能令人满意,至少需要 8 条。该图 +再一次展示了命令 \ci{linethickness} 对水平或垂直直线以及命 +令 \ci{thinlines} 和 \ci{thicklines} 对倾斜线段的影响。该例同时显示:这两类命令都 +会影响二次 B\'ezier 曲线,每一条命令都会覆盖以前所有命令。 + +% Let $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$ denote the end points, and $m_1,\,m_2$ the +% respective slopes, of a quadratic B\'ezier curve. The intermediate control point +% $S=(x,\,y)$ is then given by the equations +令 $P_1=(x_1,\,y_1),\,P_2=(x_2,\,y_2)$ 和 $m_1,\,m_2$ 分别表示一条二次 B\'ezier 曲线 +的两个端点及其对应斜率。中间控制点 $S=(x,\,y)$ 则由下述方程给出 +\begin{equation} \label{zwischenpunkt} + \left\{ + \begin{array}{rcl} + x & = & \displaystyle \frac{m_2 x_2-m_1x_1-(y_2-y_1)}{m_2-m_1}, \\ + y & = & y_i+m_i(x-x_i)\qquad (i=1,\,2). + \end{array} + \right. +\end{equation} +% \noindent See \graphicsinlatex\ for a Java program which generates +% the necessary \ci{qbezier} command line. +\noindent +关于生成必要的 \ci{qbezier} 命令的 Java 程序参见 \graphicsinlatex。 + +% \subsection{Catenary} +\subsection{悬链线} + +\begin{example} +\setlength{\unitlength}{1cm} +\begin{picture}(4.3,3.6)(-2.5,-0.25) +\put(-2,0){\vector(1,0){4.4}} +\put(2.45,-.05){$x$} +\put(0,0){\vector(0,1){3.2}} +\put(0,3.35){\makebox(0,0){$y$}} +\qbezier(0.0,0.0)(1.2384,0.0) + (2.0,2.7622) +\qbezier(0.0,0.0)(-1.2384,0.0) + (-2.0,2.7622) +\linethickness{.075mm} +\multiput(-2,0)(1,0){5} + {\line(0,1){3}} +\multiput(-2,0)(0,1){4} + {\line(1,0){4}} +\linethickness{.2mm} +\put( .3,.12763){\line(1,0){.4}} +\put(.5,-.07237){\line(0,1){.4}} +\put(-.7,.12763){\line(1,0){.4}} +\put(-.5,-.07237){\line(0,1){.4}} +\put(.8,.54308){\line(1,0){.4}} +\put(1,.34308){\line(0,1){.4}} +\put(-1.2,.54308){\line(1,0){.4}} +\put(-1,.34308){\line(0,1){.4}} +\put(1.3,1.35241){\line(1,0){.4}} +\put(1.5,1.15241){\line(0,1){.4}} +\put(-1.7,1.35241){\line(1,0){.4}} +\put(-1.5,1.15241){\line(0,1){.4}} +\put(-2.5,-0.25){\circle*{0.2}} +\end{picture} +\end{example} + +% In this figure, each symmetric half of the catenary $y=\cosh x -1$ is approximated by a quadratic +% B\'ezier curve. The right half of the curve ends in the point \((2,\,2.7622)\), the slope there having the value +% \(m=3.6269\). Using again equation (\ref{zwischenpunkt}), we can +% calculate the intermediate control points. They turn out to be $(1.2384,\,0)$ and $(-1.2384,\,0)$. +% The crosses indicate points of the \emph{real} catenary. The error is barely noticeable, being less +% than one percent. +在本图中,悬链线 $y=\cosh x +-1$ 对称的两半由二次 B\'ezier 曲线分别近似地绘成。曲线的右 +半部分终止于点 \((2,\,2.7622)\),对应的斜率为 \(m=3.6269\)。再次使用公 +式 (\ref{zwischenpunkt}),我们可以计算中间控制点。计算结果 +为 $(1.2384,\,0)$ 和 $(-1.2384,\,0)$。图中的十字为{\textbf +真正}的悬链线上的点。误差 小于百分之一,很难被发现。 + +% This example points out the use of the optional argument of the \\ +% \verb|\begin{picture}| command. +% The picture is defined in convenient ``mathematical'' coordinates, whereas by the command +% \begin{lscommand} +% \ci{begin}\verb|{picture}(4.3,3.6)(-2.5,-0.25)| +% \end{lscommand} +% \noindent its lower left corner (marked by the black disk) is assigned the +% coordinates $(-2.5,-0.25)$. +该例指出了命令 \verb|\begin{picture}| 的可选参数的用法。该图通过使用命令 +\begin{lscommand} + \ci{begin}\verb|{picture}(4.3,3.6)(-2.5,-0.25)| +\end{lscommand} +\noindent 定义了方便的“数学”坐标:左下角(由黑色圆点标出)坐标是 +$(-2.5,-0.25)$。 + +% \subsection{Rapidity in the Special Theory of Relativity} +\subsection{坐标的相对性} + +\begin{example} +\setlength{\unitlength}{0.8cm} +\begin{picture}(6,4)(-3,-2) + \put(-2.5,0){\vector(1,0){5}} + \put(2.7,-0.1){$\chi$} + \put(0,-1.5){\vector(0,1){3}} + \multiput(-2.5,1)(0.4,0){13} + {\line(1,0){0.2}} + \multiput(-2.5,-1)(0.4,0){13} + {\line(1,0){0.2}} + \put(0.2,1.4) + {$\beta=v/c=\tanh\chi$} + \qbezier(0,0)(0.8853,0.8853) + (2,0.9640) + \qbezier(0,0)(-0.8853,-0.8853) + (-2,-0.9640) + \put(-3,-2){\circle*{0.2}} +\end{picture} +\end{example} +% The control points of the two B\'ezier curves were calculated with formulas (\ref{zwischenpunkt}). +% The positive branch is determined by $P_1=(0,\,0),\,m_1=1$ and $P_2=(2,\,\tanh 2),\,m_2=1/\cosh^2 2$. +% Again, the picture is defined in mathematically convenient coordinates, and the lower left corner +% is assigned the mathematical coordinates $(-3,-2)$ (black disk). +公式 (\ref{zwischenpunkt}) 给出了两条 B\'ezier 曲线的控制点。正向分支 +由 $P_1=(0,\,0),\,m_1=1$ 和 $P_2=(2,\,\tanh 2),\,m_2=1/\cosh^2 2$ 确定。与前例相 +同,本图也定义了在数学上方便的坐标,左下角的坐标是 $(-3,-2)$ (黑点)。 + +%\section{\texorpdfstring{\Xy}{Xy}-pic} +%\secby{Alberto Manuel Brand\~ao Sim\~oes}{albie@alfarrabio.di.uminho.pt} +\section{\texorpdfstring{\Xy}{Xy}-pic} +\secby{Alberto Manuel Brand\~ao Sim\~oes}{albie@alfarrabio.di.uminho.pt} + +%\pai{xy} is a special package for drawing diagrams. To use it, +%simply add the following line to the preamble of your document: +%\begin{lscommand} +%\verb|\usepackage[|\emph{options}\verb|]{xy}| +%\end{lscommand} +%\emph{options} is a list of functions from \Xy-pic you want to +%load. These options are primarily useful when debugging the package. I recommend +%you pass the \verb!all! option, making \LaTeX{} load all the \Xy{} commands. + +\pai{xy} 是绘制流程图的专用宏包。要想使用它,只需在导言区加上: +\begin{lscommand} +\verb|\usepackage[|\emph{options}\verb|]{xy}| +\end{lscommand} +\emph{options} 列出你需要载入的 \Xy-pic 的选项。这些选项基本上被用于调试这个宏包的使用。 +建议你使用 \verb!all!,可以让 \LaTeX{} 载入 \Xy{} 的所有命令。 + +%\Xy-pic diagrams are drawn over a matrix-oriented canvas, where +%each diagram element is placed in a matrix slot: +\Xy-pic 流程图被绘制在一幅以矩阵定位的画布上,每一个流程图元素被放在矩阵的一个单元中: +\begin{example} +\begin{displaymath} +\xymatrix{A & B \\ + C & D } +\end{displaymath} +\end{example} +%The \ci{xymatrix} command must be used in math mode. Here, we +%specified two lines and two columns. To make this matrix a diagram we +%just add directed arrows using the \ci{ar} command. +命令 \ci{xymatrix} 必须置于数学模式中。这里,我们设定了一个两行两列的矩阵。 +为了画出流程,我们只需要使用命令 \ci{ar} 增加带方向的箭头即可。 +\begin{example} +\begin{displaymath} +\xymatrix{ A \ar[r] & B \ar[d] \\ + D \ar[u] & C \ar[l] } +\end{displaymath} +\end{example} +%The arrow command is placed on the origin cell for the arrow. The +%arguments are the direction the arrow should point to (\texttt{u}p, +%\texttt{d}own, \texttt{r}ight and \texttt{l}eft). +箭头命令要放在其出发的那个单元里。参量是箭头的方向 (\texttt{u}:上, +\texttt{d}:下, \texttt{r}:右以及 \texttt{l}:左). + + +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[d] \ar[dr] \ar[r] & B \\ + D & C } +\end{displaymath} +\end{example} +%To make diagonals, just use more than one direction. In +%fact, you can repeat directions to make bigger arrows. +要画对角线,可以指定不只一个方向参量。实际上,你还可以重复同一个方向来得到更大的箭头。 +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[d] \ar[dr] \ar[drr] &&\\ + B & C & D } +\end{displaymath} +\end{example} + +%We can draw even more interesting diagrams by adding +%labels to the arrows. To do this, we use the common superscript and +%subscript operators. +我们还可以绘制一些更有趣的流程图,给箭头加上标签,只需要使用普通的上标和下标。 +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[r]^f \ar[d]_g & + B \ar[d]^{g'} \\ + D \ar[r]_{f'} & C } +\end{displaymath} +\end{example} + +%As shown, you use these operators as in math mode. The only +%difference is that that superscript means ``on top of the arrow,'' +%and subscript means ``under the arrow.'' There is a third operator, the vertical bar: \verb+|+ +%It causes text to be placed \emph{in} the arrow. +如图所示,就像数学模式里一样使用上下标。唯一的区别在于:上标表示放在 “箭头的上方”, +下标表示放在“箭头的下方”。 把文本放到箭头上可以用 \verb+|+。 +\begin{example} +\begin{displaymath} +\xymatrix{ + A \ar[r]|f \ar[d]|g & + B \ar[d]|{g'} \\ + D \ar[r]|{f'} & C } +\end{displaymath} +\end{example} + +%To draw an arrow with a hole in it, use \verb!\ar[...]|\hole!. +绘制空心箭头的命令是 \verb!\ar[...]|\hole!。 + +%In some situations, it is important to distinguish between different types of +%arrows. This can be done by putting labels on them, or changing their appearance: +某些情况下,需要区分不同类型的箭头。可以给它们标上标签,或者使用不同的外观来实现: + +\begin{example} +\shorthandoff{"} +\begin{displaymath} +\xymatrix{ +\bullet\ar@{->}[rr] && \bullet\\ +\bullet\ar@{.<}[rr] && \bullet\\ +\bullet\ar@{~)}[rr] && \bullet\\ +\bullet\ar@{=(}[rr] && \bullet\\ +\bullet\ar@{~/}[rr] && \bullet\\ +\bullet\ar@{^{(}->}[rr] && + \bullet\\ +\bullet\ar@2{->}[rr] && \bullet\\ +\bullet\ar@3{->}[rr] && \bullet\\ +\bullet\ar@{=+}[rr] && \bullet +} +\end{displaymath} +\shorthandon{"} +\end{example} + +%Notice the difference between the following two diagrams: +注意下面两幅流程图的区别: + +\begin{example} +\begin{displaymath} +\xymatrix{ + \bullet \ar[r] + \ar@{.>}[r] & + \bullet +} +\end{displaymath} +\end{example} + +\begin{example} +\begin{displaymath} +\xymatrix{ + \bullet \ar@/^/[r] + \ar@/_/@{.>}[r] & + \bullet +} +\end{displaymath} +\end{example} + +%The modifiers between the slashes define how the curves are drawn. +%\Xy-pic offers many ways to influence the drawing of curves; +%for more information, check \Xy-pic documentation. +两条斜线间的修饰元素决定了曲线应该如何被画出。 +\Xy-pi 提供了很多办法来改变曲线的形状;更详细的内容请参考 \Xy-pic 的文档。 + +% \begin{example} +% \begin{lscommand} +% \ci{dum} +% \end{lscommand} +% \end{example} |