《Groff应用》word版.doc_第1页
《Groff应用》word版.doc_第2页
《Groff应用》word版.doc_第3页
《Groff应用》word版.doc_第4页
《Groff应用》word版.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用 Groff 生成独立于设备的文档开始之前了解本教程中包含的内容和如何最好地利用本教程,以及在使用本教程的过程中您需要完成的工作。关于本教程本教程提供了使用Groff(GNU Troff)文档准备系统的简介。其中介绍了这个系统的工作原理、如何使用Groff命令语言为其编写输入、以及如何从该输入生成各种格式的独立于设备的排版文档。本教程所涉及的主题包括:文档准备过程输入文件格式语言语法基本的格式化操作生成输出目标本教程的主要目标是介绍Groff,一种用于文档准备的开放源码系统。如果您需要在应用程序中构建文档或帮助文件、或为客户和内部使用生成任何类型的打印或屏幕文档(如订单列表、故障单、收据或报表),那么本教程将向您介绍如何开始使用Groff以实现这些任务。在学习了本教程之后,您应该完全了解Groff的基本知识,包括如何编写和处理基本的Groff输入文件、以及如何从这些文件生成各种输出。先决条件本教程的目标读者是入门级到中级水平的UNIX?开发人员和管理员。您应该对使用UNIX命令行Shell和文本编辑器有基本的了解。系统要求要运行本教程中的示例,您需要访问运行UNIX操作系统并安装了下面这些软件的计算机(请参见本教程的参考资料部分以获取相关链接):Groff。Groff分发版中包括groff前端工具、troff后端排版引擎和本教程中使用的各种附属工具。自由软件基金会将Groff作为其GNU Project中的一部分进行了发布,所发布的源代码符合GNU通用公共许可证(GPL)并得到了广泛的移植,几乎对于所有的UNIX操作系统、以及非UNIX操作系统(如Microsoft?Windows?)都有相应的可用版本。在撰写本教程时,最新的Groff发布版是Version 1.19.2,对于学习本教程而言,您至少需要Groff Version 1.17。gxditview。从Version 1.19.2开始,Groff中包含了这个工具,而在以前的版本中,对其进行了单独的发布。PostScript Previewer,如ghostview、gv或showpage。如果您是从源代码安装Groff,那么请参考Groff源代码分发版中的自述文件,其中列举了所需的任何额外的软件,而在编译和安装Groff时可能需要使用这些软件。介绍Groff用户通常在字处理软件、桌面发布套件和文本布局应用程序等应用程序环境中创建文档,而在这些环境中,最终将对文档进行打印或导出为另一种格式。整个文档准备过程,从创建到最后的输出,都发生在单个应用程序中。文档通常由用户通过一段时间的交互生成,使用应用程序中可用的功能来创建和操作文档,以完成最终的设计。图1对这个过程进行了说明。图1.典型的文档准备过程Groff是一种用于准备文档的编程语言。它由一套工具组成,而不是单个的应用程序,groff工具是使用这些工具的前端。其中包括处理特殊的输入文本的预处理器、用于处理输入的称为troff的主排版引擎、以及将troff的输出转换为打印和屏幕输出的各种格式的后处理器。您可以在文本编辑器中编写输入或者从程序生成输入,无论采用哪种方式,文档的编写过程都发生在Groff系统之外。文档使用纯文本进行编写并使用Groff语言进行标记,后者指定了文档的格式和外观(请参见为Groff编写输入部分)。然后将该输入文本发送到Groff,以便对其进行处理从而获得所需的输出。图2说明了这个处理过程。图2.Groff文档准备过程本部分中余下的内容将详细介绍这个过程。输入文本格式Groff可以接受下列编码方式的纯文本输入,cp1047、latin-1、latin-2或latin-9。可以使用应用程序生成或在任何文本编辑器中编写输入,甚至可以在字处理器中编写输入,只要您在结束后将文档导出为纯文本即可。输入包括文档文本、标记以及Groff语言的命令。在本教程的下一部分(为Groff编写输入)中,您将开始编写输入。预处理器语言并非所有的输入都直接使用Groff语言编写。有许多高级描述语言可以用来帮助编写文档元素,如果使用低级的Groff命令语言将会很不方便而且很笨拙,比如当您在编写图片、表格和复杂的公式时。例如,可以使用Groff来绘制图形,清单1介绍了在当前位置绘制半径为1英寸的简单圆形的Groff语言命令。清单1.使用Groff绘制一个圆形.nr 00 n(.u.nf.nr 0x 1h2.000i.sp-1 Dt-1.000ph1.000p.sp-1 h0.000iv1.000iDc2.000i.sp-1.sp 2.000i+1.if n(00.fi.br.nr 0x 0.lf 3但是如果您使用PIC(Groff附带的一种预处理器语言)来绘制圆形,那么您可以使用清单2中的单个语句来替代这些命令。清单2.使用Groff和PIC预处理器绘制一个圆形circle rad 1in要使用预处理器代码,您需要将该代码插入到描述的元素在输入中出现的位置。这段代码通过开始和结束标记(例如PIC指令,包含在.PS和.PE中,它们分别各占据一行)与其他的文本分隔开来。所有的预处理器都具有对应的标记,以便将它们的文本与常规的Groff输入区分开来。当使用pic筛选器发送输入文本时,会将所有在这些标记之间的文本转换为Groff格式化命令,再将经过筛选的文本发送到标准输出。然后,您可以使用管道将其传输到另一个预处理器或troff。通过将该内容发送到合适的预处理器并使用管道将其输出到troff,groff前端可以使这个处理过程自动化。表1列出了Groff附带的或常用的一些预处理器工具。表1.Groff中常用的预处理器预处理器描述eqn等式和数学公式grap图形(单独分发)grn GREMLIN文件格式的图片pic图片、图表和线条图refer参考文献soelim外部源文件tbl表格和图表宏包宏是具有标识名称的Groff输入片段,并且可以在输入中的任何位置使用该名称来调用它,就像内置的Groff命令。宏通常用作复杂操作的简略表示。文档可以包含它们自己的宏,并且可以引用一个外部宏包。表2列出了Groff安装中附带的主要的宏包。通常使用这些宏包的其中之一来帮助编写文档,因为它们可以处理复杂的文档结构和格式化,使用一组新的mom宏,即使是非专业的用户也可以使用最少的指令来创建各种文档。每个宏包都用于某个目的或文档类型,您不能在同一个文档中使用多个宏包或者同时处理需要不同的宏包的多个文件。表2.Groff中使用的宏包包描述man这个宏用于系统手册页面,但是也可以用于其他的打印或屏幕文档。mandoc这个宏根据需要调用man或mdoc包。mdoc它用于格式化UNIX手册页面。me由Berkeley实现的me宏,用于格式化科技论文。mm这个宏是AT&T实现的Documenters Workbench Memorandum宏。mom这个新宏是一个称为maximum overdrive macros的主要宏包。mom的目标是用作文档一般的、直观的排版的完整解决方案。ms这个宏是Bell Labs Manuscript宏的实现,用于打印的手稿,包括信件、报表、文章和书籍。输出驱动程序troff工具并不编写任何设备输出,它仅仅输出中间的、独立于排版的描述格式,而这种格式(与Groff输入一样)是纯文本的。Groff后处理器必须对这种格式进行进一步的处理,以获取针对特定设备的输出。可以使用管道对其进行传递,并使用相应的UNIX工具对其进行进一步的处理。Groff输出驱动程序是一些筛选器,它们使用Groff文档描述格式作为其标准输入,并将其转换为特殊的输出格式,然后写到标准输出。表3列出了Groff附带的输出驱动程序。表3.Groff中使用的输出驱动程序驱动程序描述grodvi用于DVI(独立于设备)输出的驱动程序grohtml用于HTML输出的驱动程序grolbp用于Canon打印机(CaPSL页面描述格式)输出的驱动程序grolj4用于HP LaserJet 4打印机输出的驱动程序grops用于PostScript输出的驱动程序grotty用于终端设备(纯文本输出)的驱动程序gxditview用于X Window System显示输出的驱动程序汇总结果发送到Groff进行处理的输入文本首先经过指定的预处理器的筛选,然后读入指定宏包的内容并由troff排版引擎对文本进行处理。然后,将Groff文档描述格式的输出传递到指定的输出驱动程序,而输出驱动程序则生成最终的输出格式并将其发送到标准输出。您可以将其发送到一个文件(包括打印系统的后台处理器)、外部查看器应用程序或命令管道中的其他某个程序。该过程如图3所示,这是图2的详细的版本。图3.Groff文档准备过程的详细视图为Groff编写输入Groff输入文件包含文档的文本,并使用指定请求的特性或控制的Groff语言命令进行标记。既然您已经安装了Groff,并且了解了它的处理过程,那么这一部分将向您介绍如何编写Groff输入。下面的示例使用了带-X选项的groff前端工具,该选项将输出通过管道传递到gxditview,以便在X Window中进行预览。因为在没有指定文件的情况下,groff从标准输入进行读取,所以您可以使用Shell重定向操作符建立一个多行字符串文档,以进行输入并测试小规模输入示例的结果。编写有格式的文本输入中所编写的文档文本是没有标记的纯文本。因为Groff语言独特的格式,所以建议用户在输入文件中编写由若干行组成的句子,使用标点符号进行分隔。要对行或段落进行缩进,可以在它的前面使用空白字符,或者使用缩进命令,在本部分后面的内容中将对缩进命令进行描述。要了解在Groff中所进行的缺省工作,需要完成的第一件事情是尝试通过Groff运行一些文本。首先,尝试一些具有格式化信息的文本,但是其中没有命令或标记。在Shell中输入下面的内容:$groff-X END Sales team:We need to check inventory at all locations,even before placing any orders.This is the new policy-effective immediately.The boss END当您在进行这项工作的时候,groff命令将您所输入的文本发送到troff引擎,以便对其进行处理。并将输出发送到gxditview,这将在新的窗口中对其进行显示。它应该与图4所示类似。图4.Groff对文本输入进行处理尽管在输入中没有指定字体,但它对文本进行了字体设置。缺省情况下,文档文本被设置为10磅Times Roman,gxditview将使用X服务器中可用的字体。您还可以看到,一些输出行中的内容来自于多个输入行。出现这种情况是因为troff按行读取其输入文本,从左空白页边到右空白页边收集足够填充一行输出的内容,缺省行长度为6.5英寸(troff还会添加分页符,缺省情况下,页面长度为11英寸)。您可以对所有这些缺省值进行配置。理解填充、调整和分隔您注意到如何将多行输入合并到输出中吗?但是使用空白字符作为开头的那些行都是新行。这个示例演示了Groff中的三个重要的概念。连续地读取输入,直到读取了足够填充输出中一行的单词。然后,对该行中的文本进行调整:对其内部的单词间距进行处理,以使文本适合于左右空白页边之间的距离(这是缺省的行为,关于其他类型的填充和调整,将在本部分后面的内容中描述)。如果某一行以空格作为开始,那么它将产生分隔,troff停止为当前输出行收集单词,输出当前行,而不对其进行任何填充,然后为下一行输出读取输入文本。(在新的输出行的开始处,输出该空格,不对其填充进行调整。)空行也会导致分隔。通常,在每个文件中至少有一个分隔,即文件末尾。使用制表符并设置间距还应该认识到其他的一些文本缺省值:.、?和!字符都被认为是句子的结束字符,并且对它们的间距进行相应的调整。如果需要,可以对单词进行断字。缺省情况下,将制表位设置为整行长度中的半英寸长。请尝试这个示例:$groff-X END We have excess inventory!Here is alist.These numbers are for our two most popular locations.However,some additional data is available.Gadgets 23 18 Gizmos 101 397 END在输出中您可以看到,对句子之间的间距进行了调整,并且比单词之间的间距要大。应该对一行末尾的单词使用连字符号连接(取决于您的字体服务器),并且制表位处的数字都是左对齐的。为特殊的字符和功能使用转义序列通常,您不能在文档中使用纯文本指定所有的字符,例如,项目符号和希腊字母则必须使用其他的方式进行输入。您可以在输入中包含转义序列以指定这些特殊的字符、书写下标和上标、指定其他的功能(包括字体变更、行和页面中的移动)。转义可能发生在输入文本中的任何位置,并且它在其出现之处生效。在编写转义序列时,使用反斜杠字符(称为转义字符,可以对其进行自定义),然后紧跟用来表示特殊转义功能的字符。e转义将打印当前的转义字符,所以您可以使用它在文档文本中打印一个反斜杠字符。现在,请尝试下面的代码:$groff-X END The report is stored in eusrelocaleinv.END您可以看到,转义的前后不需要空格,常规文档文本可以直接出现在它的前后。但是一些转义功能需要相应的参数,这些参数以下列方式之一紧跟在功能符号后面:单个字符、左圆括号后紧跟两个字符、一个用引号括起来的字符串、或一个用中括号括起来的字符串。例如,f转义用来选择字体,它通常接受一个参数,紧跟其后的单个字符指定了字体属性,包括B表示黑体或P表示前面使用的字体。您可以使用这个转义在一行中的任何位置更改字体的属性。尝试下面的代码:$groff-X END This is afBboldfP word END您将在输出窗口中看到This is abold word。表4列出了一些最常用的转义功能。表4.常用的Groff转义转义描述&插入一个空字符。这是停止缺省行为的一种很好的办法,例如,要删除Groff通常插入到句子末尾的额外的间隔,可以在句子最后的标点符号后使用这个转义。注释标记。troff将删除这个转义及该行中位于它右边的所有内容(整行的注释将变成空白行,从而在输出中产生分隔)。(ch插入一个字符,其中ch可以指定要打印的字符的名称:em表示长划线、bu表示项目符号、lq和rq分别表示左引号和右引号。您可以在groff_char man页面中找到字符名称的完整列表。-插入减号。e打印当前的转义字符。f X选择字体,其中,X可以是下列之一:B表示黑体、R表示Roman、I表示斜体或P表示前面的字体。he根据用引号括起来的参数e,从当前位置进行水平移动。缺省的单位是em。l从当前位置绘制一条水平的线条。通过用引号括起来的参数指定其长度。例如,l1i绘制一条长度为1英寸的线条。缺省的单位是em。L从当前位置绘制一条垂直的线条。通过用引号括起来的参数指定其长度。缺省的单位是em。oSTRING重印标记。打印用引号括起来的参数STRING,并且不增加字符之间的垂直量。(要包括用单引号括起来的字符作为STRING,可以使用其他某个字符将该参数括起来。)s选择磅值。可以使用下列方式之一指定该数值:直接使用数值参数(范围为4-39)、或使用以(字符开头的两位数参数(范围为01-99)、或使用以+或-开头的一位数(表示相对于当前大小进行增加或减小)。在没有提供参数时,这个转义返回到前面的磅值。实现命令请求在Groff用语中,进行排版的命令称为请求。它们可以指示排版引擎执行某种格式化任务或者以某种方式工作。请求可以完成下列任务中的一种:更改紧随其后的文本的格式、更改页面布局、更改整个文档的布局或其他特性。转义可以出现在文本行中的任何位置,而与转义不同,请求根本不能出现在文本行中,通常它们会使用单独的一行。这样就可以从文档文本中区分出请求,它们通常以一个控制字符开头。点号字符(.)是用来实现请求的常用控制字符。但是对于一些请求,其正常操作将在文本中产生分隔,如果您不希望出现分隔,您可以使用非分隔的控制字符来进行请求,它将禁止产生分隔。单引号字符()是常用的非分隔请求字符(可以对这两种控制字符进行配置)。要使用这些控制字符其中之一来开始文档中的一行,可以在输入行的前面加上&转义。请求可能需要相应的参数,这时您应该在请求的后面加上一个空格,然后给出相应的参数,使用空格进行分隔。(如果参数包含空格,那么应该将该参数括起来。)例如,尝试使用sp请求,它用来插入垂直间隔:$groff-X END ITEMS NOW IN STOCK.sp 1in ACROSS ALL WAREHOUSES(ALL FIGURES IN TABLE CURRENT AS OF TODAY)END这个示例中的输入包含了插入1英寸垂直间隔的请求。sp请求通常是一个分隔请求,在该请求出现之处,为当前输出行读取的任何文本都立即写入到输出,无论它是否填满了该行。然后,对请求进行处理(在本示例中,添加1英寸垂直间距),并继续处理一行新的输出。请参考下面的图5中的输出。图5.分隔请求如果您使用非分隔控制字符实现相同的请求,那么它不会产生分隔,在进行请求后依然保存为当前输出行读取的文本。现在,请尝试下面的代码:$groff-X END ITEMS NOW IN STOCKsp 1in ACROSS ALL WAREHOUSES(ALL FIGURES IN TABLE CURRENT AS OF TODAY)END其结果显示在图6中,其输出与前面不同:在输出文本ITEMS NOW IN STOCK之前,进行了向下移动1英寸的请求,因为该文本没有填满一整行。将保存该文本直到进行请求,并且在输入文本填满了一整行后,才将其发送到输出。图6.非分隔请求某些请求总是会产生分隔,如用于行间距的那些请求。可以对用来指定请求的控制字符进行配置,并将其更改为其他的字符。如果请求是未知的,那么将忽略它。通常,需要参数的请求在没有给定参数时具有其缺省行为,如将一个属性恢复为以前的值或使用值1。例如,ce请求用来使后面的行居中,如果您没有提供参数,那么ce假设其值为1,并仅将后面的第一行文本居中。表5描述了一些最常用的请求及其缺省行为。表5.常用的Groff请求名称描述ad X根据给定的参数调整填充:参数描述l填充至左空白页边(右边未对齐)。r填充至右空白页边(左边未对齐)。c居中填充。b填充至两侧空白页边(等同于fi请求,这是它的缺省行为)。n与b相同。在没有参数的情况下,将填充设置为在上一次af请求中使用的值。bp分页。对文本进行分隔,并开始新的输出页面。br请求分隔,因此开始一行新的输出(如果使用非分隔控制字符进行请求,那么它将不执行任何操作)。ce X居中文本。分隔文本,并使后面的X行文本在页面中水平居中。在没有参数的情况下,仅对下一行进行居中。当参数为0时,则关闭居中功能。fi填充行至两侧空白页边(缺省请求)。hy X请求断字。通过添加所需的特性来构建数值参数:值描述1始终断字(缺省行为)。2不对页面或分栏中最后一个单词进行断字。4不对一个单词中最后的两个字符进行断字。8不对一个单词中开头的两个字符进行断字。可以使用下列选项来构建有效的断字请求:1、2、4、6、8、10、12和14。in X将缩进设置为X。这是左空白页边和文本之间的间距。(缺省情况下,没有间距。)缺省单位为em。在没有参数的情况下,将缩进设置为以前的值。ll X将行长度(左右空白页边之间的间距长度)设置为X。缺省的行长度为6.5英寸,缺省单位为em。在没有参数的情况下,该请求将行长度设置为上一个ll请求之前的值。ls X更改文档的行间距:在每行后输出X-1空行。要使文档变为双倍行距,可以使用2作为参数。在没有参数的情况下,使用上一次调用该请求之前的值。缺省情况下,行间距设置为1。na不进行调整。禁止调整填充。nh不进行断字。nf不进行填充。输出文本与它在输入中的显示相同,不对空白页边进行任何填充。ns没有间距。禁止使用空行或者sp请求调整间距。po X将页面偏移设置为X。这是纸张左边缘和左空白页边之间的间距。(缺省的页面偏移为1英寸。)在没有参数的情况下,将页面偏移设置为上一次使用po请求之前的值。ps X将磅值更改为X。在没有参数的情况下,将磅值更改为以前的大小。在参数之前使用+或-操作符,以便相对于当前大小更改磅值。rs回车间距。禁止ns请求。sp X将垂直间距移动所请求的大小。如果没有指定具体的大小,缺省情况为向下移动一行。负值表示向上移动,以|开头的数值表示相对于页面顶端进行移动。ta设置制表位。使用参数给出制表位的位置。在没有参数的情况下,该请求清除所有的制表位。缺省单位为em。ti X分隔文本,并进行X的临时缩进,仅适用于下一行。缺省单位为em。创建输入文件您已经通过少量的示例文本了解了一些基本的Groff命令。现在让我们来处理一个包含一些基本请求和转义的输入文件。单页报表示例使用了自定义制表符对一个简单的、具有6列的数字数据表格进行格式化和右对齐,它还使用了PIC预处理器的circle操作符来实现三孔活页夹的打孔基准点。使用文本编辑器建立包含清单3中文本的新文件,请确保使用制表符而不是空格来输入分栏的文本。在完成了这项任务后,您已经生成了Groff输入文件report.groff。在下一个部分中,您将通过各种方式来处理这个输入文件。清单3.示例Groff输入文件.po.281ioffset for hole punches.sp.9ispacing down for first hole.PS circle rad.125i.PE.sp 3.88i.PS circle rad.125i.PE.sp 3.88i.PS circle rad.125i.PE.poreturn to default page offset.sp-8iback up to top of page.ce.ps+2increase the point size by two fBItems in stock(emacross all warehousesfP.psreturn to previous point size.ta 1.5iR 2.5iR 3.5iR 4.5iR 5.5iR.nf Central Eastern Western Northern Southern l6iWidgetsfC 12 90 42fP GadgetsfC 02 14 42 3fP GizmosfC 312 93 29fP GrommetsfC 68 70 14通过Groff处理输入文件在本部分中,您将使用groff前端根据report.groff输入文件生成相应的输出。验证您的输入语法首先,您应该确保所输入的内容正确,并且将使用有效的Groff输入文件。要验证文件的语法,可以使用-z选项。对您的文件使用下面的代码:$groff-z report.groff该选项对文件进行处理,但是禁止所有常规的输出,因为它需要将错误消息发送到标准输出,这将有助于对输入文件进行检查。如果您没有得到错误消息,那么文件中的语法就是正确的。生成输出您已经知道了文件没有错误,所以可以继续操作并对其执行不带任何参数的groff,然后观察所发生的情况:$groff report.groff PostScript文档文本在您的显示器中滚动而过。缺省情况下,Groff调用grops筛选器,它会将输出发送到标准输出。使用PostScript输出要预览PostScript,您可以通过管道将它传输到PostScript查看器(如果您已经安装了一个这样的查看器):$groff report.groff|gv-请注意,似乎有些地方有点问题,没有将绘制圆形的PIC预处理器代码转换为Groff输入,所以在输出中不会出现圆形,而是在左空白页边出现了PIC代码的文本。确定要使用的选项当您希望groff对输入运行预处理器时,您必须先为其指定一个选项,如表6中所述。您可以使用相同的命令行调用多个预处理器。表6.groff的预处理器标志标志预处理器-e eqn-t tbl-g grn-G grap-p pic-R refer-s soelim您知道这个文件中包含了PIC代码,但是如果您不知道在Groff源文件中使用的是何种预处理器语言和宏包,您可以使用grog(groff guess的缩写)工具来进行确定。在对特殊的文件进行处理时,它为groff提供了确切的命令行选项。尝试下面的代码:$grog report.groff groff-p report.groff正如您在输出中看到的,您应该对这个文件使用-p选项,以便使用PIC对其进行预处理。既然您已经了解了正确的选项,那么可以再次尝试预览PostScript:$groff-p report.groff|gv-这次的输出看起来没有问题了,在左空白页边处绘制了一些圆形。如果已将打印后台处理器配置为使用PostScript输入,您还可以通过管道将输出传输到打印后台处理器,或者将输出重定向到一个文件:$groff-p report.groff report.ps在X窗口中预览输出另一种在X窗口中预览输出的方法是使用-X选项,它将调用gxditview,和您在为Groff编写输入部分中所进行的操作一样。对您的文件尝试下面的代码:$groff-p-X report.groff当您运行这个命令时,您将在新的X窗口中看到显示的排版输出,如图7所示。图7.gxditview的显示查看管道请记住,groff会为您调用所有的预处理器和设备驱动程序。要显示它所使用的管道(但不执行它),请包括-V选项:$groff-p-V report.groff pic-S report.groff|troff-Tps|grops groff首先使用pic对该文件进行筛选,然后将其发送到troff。使用grops设备驱动程序对输出进行筛选,以便将该文件的PostScript版本发送到标准输出。指定输出驱动程序到目前为止,您仅仅为输入文件生成了PostScript输出。您可以使用-T选项指定一个后处理器筛选器(请参见表3),它接受表7中所示的参数。尝试使用EBCDIC(IBM系统中使用的字符编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论