mirror of
https://github.com/darlinghq/darling-groff.git
synced 2024-11-23 11:59:53 +00:00
Initial commit
This commit is contained in:
commit
f5cf24f11b
55
BUG-REPORT
Normal file
55
BUG-REPORT
Normal file
@ -0,0 +1,55 @@
|
||||
Groff Bug Report
|
||||
|
||||
Please read the PROBLEMS file before sending in a bug report.
|
||||
|
||||
Please fill in all fields, even if you think they are not relevant.
|
||||
|
||||
Please delete the text in brackets before sending it in.
|
||||
|
||||
Please report separate bugs separately.
|
||||
|
||||
Send the completed form to bug-groff@gnu.org
|
||||
|
||||
GROFF VERSION:
|
||||
[The version of groff you are using. For example, `1.05']
|
||||
|
||||
MACHINE:
|
||||
[The machine you are using. For example, `Sun SPARCstation 2']
|
||||
|
||||
OS:
|
||||
[The operating system you are using. For example, `SunOS 4.1.1']
|
||||
|
||||
COMPILER:
|
||||
[The compiler you are used to compile groff. For example, `g++ 1.40.3']
|
||||
|
||||
INPUT FILES:
|
||||
[Include all the files necessary to reproduce the problem that are not
|
||||
part of the standard groff distribution. This includes font
|
||||
description files, DESC files and macro files (with the exception of
|
||||
the -ms and -mm macros: we have them). Send them as a shell archive or
|
||||
as a uuencoded, compressed tar file.
|
||||
|
||||
It's easier for us if you can provide an example that doesn't depend on
|
||||
any macro package, but obviously if you're reporting a problem with a
|
||||
macro package that won't be possible. Also a short example is more
|
||||
convenient than a long one, but don't worry if you can't find a short
|
||||
example. Don't say something like ``any file that X'': Always send a
|
||||
definite example.]
|
||||
|
||||
COMMAND LINE:
|
||||
[The command line that we should run in order to observe the bug. For
|
||||
example, `gtroff -Tps bug.tr'. If the command line uses -ms or -mm,
|
||||
say whether these refer to the groff versions or the Unix versions of
|
||||
the macros.]
|
||||
|
||||
DESCRIPTION OF INCORRECT BEHAVIOUR:
|
||||
[What goes wrong when that command line is run? For example, `gtroff
|
||||
gets a segmentation fault', or `The output looks bad because the bar
|
||||
over the x is too long and is too far over to the left.' If you get an
|
||||
error message, include it here without modification: Don't edit it to
|
||||
make it more readable.]
|
||||
|
||||
SUGGESTED FIX [optional]:
|
||||
[If you can suggest a fix for the problem, include a context diff here.
|
||||
But don't delay sending in a bug report in the hope of finding a fix.
|
||||
Guesses about the cause of the bug are not usually helpful.]
|
340
COPYING
Normal file
340
COPYING
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
6147
ChangeLog.115
Normal file
6147
ChangeLog.115
Normal file
File diff suppressed because it is too large
Load Diff
1388
ChangeLog.116
Normal file
1388
ChangeLog.116
Normal file
File diff suppressed because it is too large
Load Diff
2190
ChangeLog.117
Normal file
2190
ChangeLog.117
Normal file
File diff suppressed because it is too large
Load Diff
3794
ChangeLog.118
Normal file
3794
ChangeLog.118
Normal file
File diff suppressed because it is too large
Load Diff
397
FDL
Normal file
397
FDL
Normal file
@ -0,0 +1,397 @@
|
||||
GNU Free Documentation License
|
||||
Version 1.2, November 2002
|
||||
|
||||
|
||||
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
||||
0. PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document "free" in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of "copyleft", which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
|
||||
1. APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The "Document", below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as "you". You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A "Modified Version" of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A "Secondary Section" is a named appendix or a front-matter section of
|
||||
the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall subject
|
||||
(or to related matters) and contains nothing that could fall directly
|
||||
within that overall subject. (Thus, if the Document is in part a
|
||||
textbook of mathematics, a Secondary Section may not explain any
|
||||
mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The "Invariant Sections" are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The "Cover Texts" are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A "Transparent" copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not "Transparent" is called "Opaque".
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
||||
or XML using a publicly available DTD, and standard-conforming simple
|
||||
HTML, PostScript or PDF designed for human modification. Examples of
|
||||
transparent image formats include PNG, XCF and JPG. Opaque formats
|
||||
include proprietary formats that can be read and edited only by
|
||||
proprietary word processors, SGML or XML for which the DTD and/or
|
||||
processing tools are not generally available, and the
|
||||
machine-generated HTML, PostScript or PDF produced by some word
|
||||
processors for output purposes only.
|
||||
|
||||
The "Title Page" means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, "Title Page" means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section "Entitled XYZ" means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as "Acknowledgements",
|
||||
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section "Entitled XYZ" according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
|
||||
2. VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
|
||||
3. COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
|
||||
4. MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
A. Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
B. List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
C. State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
D. Preserve all the copyright notices of the Document.
|
||||
E. Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
F. Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
G. Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
H. Include an unaltered copy of this License.
|
||||
I. Preserve the section Entitled "History", Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled "History" in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
J. Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the "History" section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
K. For any section Entitled "Acknowledgements" or "Dedications",
|
||||
Preserve the Title of the section, and preserve in the section all
|
||||
the substance and tone of each of the contributor acknowledgements
|
||||
and/or dedications given therein.
|
||||
L. Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
M. Delete any section Entitled "Endorsements". Such a section
|
||||
may not be included in the Modified Version.
|
||||
N. Do not retitle any existing section to be Entitled "Endorsements"
|
||||
or to conflict in title with any Invariant Section.
|
||||
O. Preserve any Warranty Disclaimers.
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section Entitled "Endorsements", provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties--for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
|
||||
5. COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections Entitled "History"
|
||||
in the various original documents, forming one section Entitled
|
||||
"History"; likewise combine any sections Entitled "Acknowledgements",
|
||||
and any sections Entitled "Dedications". You must delete all sections
|
||||
Entitled "Endorsements".
|
||||
|
||||
|
||||
6. COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
|
||||
7. AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an "aggregate" if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
|
||||
8. TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled "Acknowledgements",
|
||||
"Dedications", or "History", the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
|
||||
9. TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
|
||||
10. FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
http://www.gnu.org/copyleft/.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License "or any later version" applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
|
||||
|
||||
ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
Copyright (c) YEAR YOUR NAME.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the section entitled "GNU
|
||||
Free Documentation License".
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the "with...Texts." line with this:
|
||||
|
||||
with the Invariant Sections being LIST THEIR TITLES, with the
|
||||
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
50
INSTALL
Normal file
50
INSTALL
Normal file
@ -0,0 +1,50 @@
|
||||
To install groff, follow the instructions in the file INSTALL.gen.
|
||||
|
||||
This file contains information that supplements those instructions.
|
||||
|
||||
(For instructions how to build groff with DJGPP tools for MS-DOS and
|
||||
MS-Windows, see the file arch/djgpp/README.)
|
||||
|
||||
(For instructions how to build groff with the MinGW tools for
|
||||
MS-Windows, see the file README.MinGW.)
|
||||
|
||||
groff is written in C++, so you will need a C++ compiler. The C++
|
||||
source files use a suffix of `.cpp', so your C++ compiler must be able
|
||||
to handle this. If you don't already have a C++ compiler, I suggest
|
||||
gcc 2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).
|
||||
From gcc 2.5, it is no longer necessary to install libg++: the C++
|
||||
header files needed by groff are created by the gcc installation
|
||||
process. To override configure's choice of C++ compiler, you can set
|
||||
the CXX environment variable.
|
||||
|
||||
If you have a library that provides a faster malloc than your system's
|
||||
usual malloc, it is good idea to include it in LIBS. For example,
|
||||
using the malloc that comes with GNU Emacs version 20 can give a
|
||||
worthwhile (and sometimes spectacular) performance improvement.
|
||||
|
||||
If you want A4 or letter paper format and the configure script produces
|
||||
an incorrect guess, say
|
||||
|
||||
PAGE=xxx ./configure
|
||||
|
||||
where `xxx' should be either `A4' or `letter'. Note that this will only
|
||||
affect the paper selection of some device drivers like grops (which can
|
||||
be still overridden on the command line). For compatibility with
|
||||
ditroff, the default page length in gtroff is always 11 inches. The
|
||||
page length can be changed with the `pl' request.
|
||||
|
||||
When you have built groff, you can use the test-groff script to try
|
||||
groff out on one of the man pages. (Use the .n files not the .man
|
||||
files.) The test-groff script sets up environment variables to allow
|
||||
groff to run without being installed. For example, you could do
|
||||
|
||||
./test-groff -man -Tascii src/roff/groff/groff.n | less
|
||||
|
||||
To get a DVI, PDF, or HTML version of the groff texinfo manual, say `make
|
||||
groff.dvi', `make groff.pdf', or `make groff.html', respectively, in the
|
||||
`doc' subdirectory (after configuring the groff package). Note that you
|
||||
need texinfo version 4.6 as a prerequisite. Neither older versions nor
|
||||
texinfo 4.7 (due to a bug) will work.
|
||||
|
||||
If you have problems, read the PROBLEMS file. If this doesn't help
|
||||
send a bug report using the form in the file BUG-REPORT.
|
231
INSTALL.gen
Normal file
231
INSTALL.gen
Normal file
@ -0,0 +1,231 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PREFIX', the package will
|
||||
use PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
LICENSE
|
||||
|
||||
The groff program is a free software project. It is licensed under
|
||||
the GNU General Public License (GNU GPL), version 2 or later.
|
||||
|
||||
The file COPYING in the top directory of the groff source package
|
||||
contains a copy of the GPL that was downloaded from the GNU web site
|
||||
http://www.gnu.org/copyleft/gpl.txt at 1 dec 2003.
|
||||
|
||||
All files of the groff source package are licensed under this version
|
||||
of the GPL (or licenses which are compatible with the GPL).
|
||||
You are free to choose version 2 or any subsequent version of the GPL.
|
||||
|
||||
The GPL names an address where you can get the actual version by
|
||||
normal post. Further information is found in the internet at
|
||||
http://www.gnu.org/copyleft.
|
||||
|
||||
The groff program is a GNU package, and the copyright of all files of
|
||||
the groff source package which are under the GPL has been assigned to
|
||||
the Free Sofware Foundation (FSF). Information on GNU and FSF is
|
||||
found at http://www.fsf.org/.
|
164
MANIFEST
Normal file
164
MANIFEST
Normal file
@ -0,0 +1,164 @@
|
||||
MANIFEST
|
||||
|
||||
Last update: 26 May 2005
|
||||
|
||||
This file is part of groff, the GNU roff type-setting system.
|
||||
|
||||
Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
written by Bernd Warken <bwarken@mayn.de>
|
||||
maintained by Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||
any later version published by the Free Software Foundation; with the
|
||||
Invariant Sections being this .ig-section and AUTHORS, with no
|
||||
Front-Cover Texts, and with no Back-Cover Texts.
|
||||
|
||||
A copy of the Free Documentation License is included as a file called
|
||||
FDL in the main directory of the groff source package.
|
||||
|
||||
########################################################################
|
||||
|
||||
This file gives an overview of the directories and the main files of
|
||||
the groff source distribution.
|
||||
|
||||
|
||||
1) The top directory.
|
||||
|
||||
BUG-REPORT A template for bug-reports.
|
||||
ChangeLog Log of the changes in the different groff versions.
|
||||
COPYING The GNU General Public License (GPL).
|
||||
FDL The Free Documentation License (FDL).
|
||||
INSTALL Information on compiling and installing groff.
|
||||
INSTALL.gen Generic information on configuration and compiling.
|
||||
LICENSE Licensing information.
|
||||
MANIFEST The file you are reading.
|
||||
MORE.STUFF Useful stuff in other packages.
|
||||
NEWS Recent user-visible changes in groff.
|
||||
PROBLEMS Tips to handle known critical situations.
|
||||
PROJECTS Long-term additions to groff.
|
||||
README Availability and contact information for groff.
|
||||
README.MinGW Build information for MinGW.
|
||||
TODO Things planned for future groff versions.
|
||||
|
||||
All other files in the top directory are related to the configuration,
|
||||
compilation, and install processes.
|
||||
|
||||
|
||||
2) The directory structure
|
||||
|
||||
./arch Data that is special for different architectures.
|
||||
djgpp Data special for the 32-bit DOS compiler djgpp.
|
||||
misc Data needed for various platforms.
|
||||
|
||||
./contrib Part of groff, but maintained by other people.
|
||||
eqn2graph Convert equations created with EQN into different
|
||||
graphical formats.
|
||||
gdiffmk An improved implementation of the diffmk command to mark
|
||||
differences between groff/nroff/troff files.
|
||||
grap2graph Convert grap diagraps into different graphical formats.
|
||||
groffer A wrapper to conveniently view roff files.
|
||||
mm The groff mm macro package.
|
||||
mom The groff mom macro package.
|
||||
pdfmark A package to add PDF marks to groff documents, together
|
||||
with a shell script (pdfroff) for easy creation of PDF
|
||||
documents.
|
||||
pic2graph Convert PIC diagrams into different graphical formats.
|
||||
|
||||
./doc Manuals and tutorials to groff aspects.
|
||||
|
||||
./font Device information and fonts.
|
||||
devX100 100dpi device for X Window System.
|
||||
devX100-12 100dpi device with narrower font (for 12pt base font).
|
||||
devX75 75dpi device for X Window System.
|
||||
devX75-12 75dpi device with narrower font (for 12pt base font).
|
||||
devascii Text device for ASCII output.
|
||||
devcp1047 EBCDIC device.
|
||||
devdvi TeX DVI device.
|
||||
devhtml HTML device.
|
||||
devlatin1 Text device for latin-1 (ISO 8859-1) output.
|
||||
devlbp Device for Canon CAPSL laser printers.
|
||||
devlj4 Device for HP Laserjet 4, PCL 5, and compatible printers.
|
||||
devps PostScript device.
|
||||
devutf8 Text device for Unicode output.
|
||||
|
||||
./man Some groff manual pages of more general character.
|
||||
|
||||
./src Everything written in programming languages.
|
||||
|
||||
./src/devices The postprocessors.
|
||||
grodvi TeX DVI output.
|
||||
grohtml HTML output.
|
||||
grolbp Canon printers.
|
||||
grolj4 HP Laserjet 4, PCL 5, and compatible printers.
|
||||
grops PostScript output.
|
||||
grotty Text output.
|
||||
xditview A groff (pre)viewer for the X Window system.
|
||||
|
||||
./src/include The *.h C/C++ include files.
|
||||
|
||||
./src/libs C++ code common to several parts of the groff sources.
|
||||
libbib Library of bibliographic functions.
|
||||
libdriver Parser for intermediate output and postprocessor code.
|
||||
libgroff Library for general support functions used everywhere.
|
||||
libxutil Utility functions for xditview and xtotroff.
|
||||
snprintf An implementation of snprintf() and friends.
|
||||
|
||||
./src/preproc Preprocessors.
|
||||
eqn Mathematical formulae.
|
||||
grn Gremlin pictures.
|
||||
html The preprocessor part of grohtml.
|
||||
pic Diagram drawer.
|
||||
refer Bibliographic references.
|
||||
soelim File inclusion using tmac path.
|
||||
tbl Tables.
|
||||
|
||||
./src/roff Front-end programs.
|
||||
groff Wrapper around troff. This is the main user program.
|
||||
grog Guess groff command line options.
|
||||
nroff Emulate classical nroff text formatter.
|
||||
troff Main roff formatter program.
|
||||
|
||||
./src/utils Utility programs around groff.
|
||||
addftinfo Add information to old troff font files for use with groff.
|
||||
afmtodit Create font description files for the PostScript device.
|
||||
hpftodit Create font description files for the LJ4 device.
|
||||
indxbib Make inverted index for bibliographic databases.
|
||||
lkbib Search bibliographic databases.
|
||||
lookbib Interactively search bibliographic databases.
|
||||
pfbtops Translate a PostScript font in PFB format to PFA.
|
||||
tfmtodit Create font description files for TeX DVI device.
|
||||
xtotroff Create font description files for xditview.
|
||||
|
||||
./tmac Macro files.
|
||||
|
||||
|
||||
3) Documentation
|
||||
|
||||
The groff documentation is scattered upon several places.
|
||||
|
||||
- The main directory contains documents related to the groff source.
|
||||
The README file contains the information needed to get the groff
|
||||
package, report bugs, and contact the developers.
|
||||
|
||||
- The man-page of each program (section 1) is kept in the source
|
||||
directory of the program.
|
||||
|
||||
- The man-pages for the other sections are found in `src/man'.
|
||||
|
||||
- Documentation in other formats are located in the `doc' directory,
|
||||
including the groff info file, tutorials, and manuals.
|
||||
|
||||
|
||||
4) The roff parser
|
||||
|
||||
The parsing of the roff language is done by troff. The input is converted
|
||||
to tokens in `src/roff/troff/input.cpp' and transformed into `nodes' by
|
||||
`src/roff/troff/env.cpp' and `src/roff/troff/node.cpp'. From these, the
|
||||
intermediate output is generated (also in `node.cpp').
|
||||
|
||||
|
||||
5) Postprocessing
|
||||
|
||||
The parser for the intermediate output and the postprocessing is in
|
||||
`src/libs/libdriver/input.cpp'. This is used by all postprocessors.
|
198
MORE.STUFF
Normal file
198
MORE.STUFF
Normal file
@ -0,0 +1,198 @@
|
||||
More stuff for groff
|
||||
====================
|
||||
|
||||
Windows 32
|
||||
----------
|
||||
|
||||
Here two ports using the gcc compiler and other GNU tools:
|
||||
|
||||
. Cygwin:
|
||||
|
||||
http://sources.redhat.com/cygwin/
|
||||
|
||||
Look for a convenient mirror site in
|
||||
|
||||
http://sources.redhat.com/cygwin/mirrors.html
|
||||
|
||||
At any of those mirrors, groff can be found in the directory
|
||||
latest/groff.
|
||||
|
||||
. Kees Zeelenberg <c.zeelenberg@hccnet.nl>:
|
||||
|
||||
http://gnuwin32.sourceforge.net/packages/groffl.htm
|
||||
|
||||
This port includes recent versions of grap and deroff.
|
||||
|
||||
dos
|
||||
---
|
||||
|
||||
Binaries for Eli Zaretskii's port using the djgpp compiler are available
|
||||
from
|
||||
|
||||
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gro*b.zip
|
||||
|
||||
and its mirrors; for installation details please read `arch/djgpp/README'.
|
||||
This port also runs on Windows 32 systems, except Windows 2000.
|
||||
|
||||
grap
|
||||
----
|
||||
|
||||
An implementation of Kernighan & Bentley's grap language for typesetting
|
||||
graphs. Written by Ted Faber <faber@lunabase.org>. The actual version
|
||||
can be found at
|
||||
|
||||
http://www.lunabase.org/~faber/Vault/software/grap/
|
||||
|
||||
A djgpp port which runs on dos and most Windows 32 systems (Windows 95,
|
||||
Windows 98, Windows NT) done by Kees Zeelenberg <c.zeelenberg@hccnet.nl>
|
||||
is available from
|
||||
|
||||
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
|
||||
|
||||
It is intended to be used with the djgpp port of groff.
|
||||
|
||||
A Windows 32 port is included in the groff package available from
|
||||
|
||||
http://gnuwin32.sourceforge.net/
|
||||
|
||||
plot2dev
|
||||
--------
|
||||
|
||||
This utility program can convert plot graphics to either pic or gremlin
|
||||
files. It has been written by Richard Murphey <richard-murphey@rice.edu>
|
||||
and Daniel Senderowicz <daniel@synchrods.com> (who has added the gremlin
|
||||
driver). The actual version can be found as
|
||||
|
||||
ftp://ftp.ffii.org/pub/groff/plot2dev-x.x.tar.gz
|
||||
|
||||
troffcvt
|
||||
--------
|
||||
|
||||
From the web page:
|
||||
|
||||
troffcvt is a translator that turns troff input into a form that can be
|
||||
more easily processed. The troffcvt distribution comes with
|
||||
postprocessors that turn troffcvt into various destination formats such
|
||||
as HTML (Hypertext Markup Language), RTF (Rich Text Format) or plain
|
||||
text.
|
||||
|
||||
Note that you need a lot of additional packages to compile troffcvt;
|
||||
everything is available from
|
||||
|
||||
http://www.primate.wisc.edu/software/troffcvt/
|
||||
|
||||
unroff
|
||||
------
|
||||
|
||||
From the README file:
|
||||
|
||||
Unroff is a Scheme-based, programmable, extensible troff translator with
|
||||
a back-end for the Hypertext Markup Language. Unroff is free software
|
||||
and is distributed both as source and as precompiled binaries.
|
||||
|
||||
http://www.informatik.uni-bremen.de/~net/unroff/unroff.html
|
||||
|
||||
You need als Elk, the Scheme based Extension Language Kit, which is
|
||||
available from
|
||||
|
||||
http://www.informatik.uni-bremen.de/~net/elk
|
||||
|
||||
deroff
|
||||
------
|
||||
|
||||
Deroff removes roff constructs from documents for the purpose of indexing,
|
||||
spell checking etc.
|
||||
|
||||
Michael Haardt's <michael@moria.de> implementation is a little smarter
|
||||
than traditional implementations, because it knows about certain -man and
|
||||
-mm macros. It is able to generate a word list for spell checking tools
|
||||
or omit headers for sentence analysis tools. It can further generate
|
||||
cpp-style #line lines.
|
||||
|
||||
http://www.moria.de/deroff/
|
||||
|
||||
Version 1.6 compiled with DJGPP (for MS-DOS and all Windows 32 systems,
|
||||
i.e. Windows 95, Windows 98, Windows NT) is available from
|
||||
|
||||
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
|
||||
|
||||
and its mirrors.
|
||||
|
||||
A Windows 32 port of version 1.8 is available from
|
||||
|
||||
http://gnuwin32.sourceforge.net/
|
||||
|
||||
David Frey <dfrey@debian.org> has also written a deroff implementation
|
||||
for Debian; it is available from
|
||||
|
||||
ftp://ftp.debian.org/debian/pool/main/d/deroff/
|
||||
|
||||
miscellaneous
|
||||
-------------
|
||||
|
||||
. Ralph Corderoy's excellent page on troff:
|
||||
|
||||
www.troff.org
|
||||
|
||||
There are links for virtually everything related to troff.
|
||||
|
||||
. Dr. Robert Hermann's groff gems are available from
|
||||
|
||||
http://www.eas.slu.edu/People/RBHerrmann/GROFF/index.html
|
||||
|
||||
At present there are examples for
|
||||
|
||||
o creating business cards
|
||||
o using groff to make large format posters for presentations
|
||||
|
||||
. Robert Marks's collection of useful macros and scripts is available from
|
||||
|
||||
http://www.agsm.edu.au/~bobm/odds+ends/scripts.html
|
||||
|
||||
Description:
|
||||
|
||||
o `polish': Is a sed (= the Unix stream editor) script that does many
|
||||
things to ASCII text. Amongst other things, it breaks lines at new
|
||||
sentences, reduces upper-case acronyms by one point size, adds
|
||||
diacriticals, changes simple quotes into smart quotes, and makes a few
|
||||
simple grammar checks. The best way to see what it does is to run it
|
||||
as a sed script file (or files) on a text file and then compare the
|
||||
output file with the original.
|
||||
|
||||
o `DropCaps' is a troff script which replaces the initial letters of
|
||||
paragraphs immediately after H1 and H2 headings with drop-capitals of
|
||||
specified point size, and automatically flows the text around the new
|
||||
drop cap.
|
||||
|
||||
o `AJM Header' is a set of troff macros used in production of the
|
||||
Australian Journal of Management. They use the Memorandum Macros (mm)
|
||||
of AT&T, and so should be invoked with the UNIX troff -mm flag; they
|
||||
should also work with the GNU troff -mm flag.
|
||||
|
||||
. Thomas Baruchel <baruchel@libertysurf.fr> has developed Meta-tbl, a tbl
|
||||
postprocessor to manipulate table cells (like adding gray shades). The
|
||||
latest version can be found at
|
||||
|
||||
http://perso.libertysurf.fr/baruchel/
|
||||
|
||||
. gpresent, written by Bob Diertens <bobd@science.uva.nl>. From the README
|
||||
file:
|
||||
|
||||
gpresent is a package for making presentation with groff and acroread.
|
||||
It consist of a set of macros to be used with groff and a post-processor
|
||||
for manipulating the PostScript output of groff. Without the use of the
|
||||
PAUSE macro, it can also be used for making slides.
|
||||
|
||||
It is available from
|
||||
|
||||
www.science.uva.nl/~bobd/useful/gpresent/
|
||||
|
||||
|
||||
documentation
|
||||
-------------
|
||||
|
||||
Many documents related to the original versions of troff, ditroff, pic,
|
||||
and others can be accessed from the following web pages:
|
||||
|
||||
http://www.cs.bell-labs.com/cm/cs/cstr.html
|
||||
http://www.cs.bell-labs.com/cm/cs/papers.html
|
25
Makefile
Normal file
25
Makefile
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright (C) 1989-2000 Free Software Foundation, Inc.
|
||||
# Written by James Clark (jjc@jclark.com)
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
SHELL=/bin/sh
|
||||
|
||||
.PHONY: all
|
||||
all:
|
||||
$(SHELL) configure
|
||||
$(MAKE) all
|
33
Makefile.ccpg
Normal file
33
Makefile.ccpg
Normal file
@ -0,0 +1,33 @@
|
||||
# Makefile.ccpg
|
||||
MAKEFILEPARTS=\
|
||||
$(top_srcdir)/Makefile.comm \
|
||||
$(top_builddir)/Makefile.cfg \
|
||||
$(srcdir)/Makefile.sub \
|
||||
$(top_srcdir)/Makefile.ccpg \
|
||||
Makefile.dep
|
||||
|
||||
all: $(PROG) $(MANPAGES)
|
||||
|
||||
$(PROG): $(OBJS) $(XLIBS)
|
||||
$(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
|
||||
|
||||
install_bin: install_prog
|
||||
install_prog: $(PROG)
|
||||
install_data: install_man
|
||||
install_man: $(MANPAGES)
|
||||
uninstall_sub: uninstall_prog uninstall_man
|
||||
depend: depend_src
|
||||
depend.temp: $(GENSRCS) $(YTABC)
|
||||
distfiles: $(YTABC)
|
||||
TAGS: TAGS_src
|
||||
TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
|
||||
Makefile: $(MAKEFILEPARTS)
|
||||
Makefile.dep:
|
||||
touch Makefile.dep
|
||||
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION
|
||||
|
||||
pure: $(PROG).pure
|
||||
|
||||
$(PROG).pure: $(OBJS) $(XLIBS)
|
||||
$(PURIFY) $(PURIFYCCFLAGS) \
|
||||
$(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)
|
304
Makefile.comm
Normal file
304
Makefile.comm
Normal file
@ -0,0 +1,304 @@
|
||||
# Copyright (C) 1989-2000, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
# Written by James Clark (jjc@jclark.com)
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# Makefile.comm
|
||||
#
|
||||
INCLUDES=-I. -I$(srcdir) \
|
||||
-I$(top_builddir)/src/include -I$(top_srcdir)/src/include
|
||||
ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS)
|
||||
COMPILE.cpp=$(CCC) $(ALL_CCFLAGS) -c
|
||||
ALL_CFLAGS=$(INCLUDES) $(CDEFINES) $(CFLAGS) $(CPPFLAGS)
|
||||
COMPILE.c=$(CC) $(ALL_CFLAGS) -c
|
||||
LINK.cpp=$(CCC) $(CCFLAGS) $(LDFLAGS)
|
||||
LINK.c=$(CC) $(CFLAGS) $(LDFLAGS)
|
||||
LIBGROFF=$(top_builddir)/src/libs/libgroff/libgroff.$(LIBEXT)
|
||||
LIBBIB=$(top_builddir)/src/libs/libbib/libbib.$(LIBEXT)
|
||||
LIBDRIVER=$(top_builddir)/src/libs/libdriver/libdriver.$(LIBEXT)
|
||||
LIBXUTIL=$(top_builddir)/src/libs/libxutil/libxutil.$(LIBEXT)
|
||||
MLIB=
|
||||
XLIBS=
|
||||
YTABH=
|
||||
YTABC=
|
||||
GRAM=
|
||||
LIBCLEAN=
|
||||
CLEANADD=
|
||||
CLEANDIRADD=
|
||||
CLEANNOTSRCDIRADD=
|
||||
MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \
|
||||
depend.temp core y.output $(CLEANADD)
|
||||
CLEANFILES=$(LIBCLEAN)
|
||||
DISTCLEANFILES=TAGS Makefile Makefile.dep
|
||||
REALCLEANFILES=$(YTABC) $(YTABH)
|
||||
NAMEPREFIX=
|
||||
HDRS=
|
||||
MANPAGES=$(MAN1) $(MAN5) $(MAN7)
|
||||
MANCLEAN=$(MANPAGES)
|
||||
fontsubdir=$(fontdir)/dev$(DEV)
|
||||
|
||||
all install install_bin install_data TAGS depend distfiles uninstall_sub:
|
||||
|
||||
install: prefix_must_exist install_bin install_data
|
||||
uninstall: uninstall_sub
|
||||
pure:
|
||||
|
||||
.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles
|
||||
.PHONY: install install_bin install_data prefix_must_exist
|
||||
.PHONY: uninstall uninstall_sub
|
||||
.PHONY: pure
|
||||
|
||||
prefix_must_exist:
|
||||
@test -d $(prefix) \
|
||||
|| (echo ; \
|
||||
echo The prefix directory \`$(prefix)\' doesn\'t exist; \
|
||||
echo ; \
|
||||
exit 1)
|
||||
|
||||
mostlyclean:
|
||||
-rm -f $(MOSTLYCLEANFILES)
|
||||
-rm -rf $(CLEANDIRADD)
|
||||
-@if test `cd $(srcdir); pwd` = `pwd`; then \
|
||||
:; \
|
||||
else \
|
||||
rm -f $(CLEANNOTSRCDIRADD); \
|
||||
fi
|
||||
|
||||
clean: mostlyclean
|
||||
-rm -f $(CLEANFILES)
|
||||
|
||||
distclean: clean
|
||||
-rm -f $(DISTCLEANFILES)
|
||||
-@if test `cd $(srcdir); pwd` = `pwd`; then \
|
||||
:; \
|
||||
else \
|
||||
rm -f $(YTABC) $(YTABH); \
|
||||
fi
|
||||
|
||||
realclean: distclean
|
||||
-rm -f $(REALCLEANFILES)
|
||||
|
||||
extraclean: distclean
|
||||
-rm -f \#* *~ =* core junk grot old temp tmp tem *.new *.old *.orig
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .o .obj .cpp .c .y .man .n
|
||||
|
||||
.cpp.o:
|
||||
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
|
||||
|
||||
.c.o:
|
||||
$(COMPILE.c) $(EXTRA_CFLAGS) $<
|
||||
|
||||
.cpp.obj:
|
||||
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
|
||||
|
||||
.c.obj:
|
||||
$(COMPILE.c) $(EXTRA_CFLAGS) $<
|
||||
|
||||
.y.cpp:
|
||||
if test -n "$(YTABH)"; then \
|
||||
$(YACC) $(YACCFLAGS) -d $<; \
|
||||
else \
|
||||
$(YACC) $(YACCFLAGS) $<; \
|
||||
fi
|
||||
-test -f y.tab.h && mv y.tab.h y_tab.h
|
||||
-test -f y.tab.c && mv y.tab.c y_tab.c
|
||||
mv y_tab.c $(YTABC)
|
||||
test -z "$(YTABH)" || mv y_tab.h $(YTABH)
|
||||
|
||||
# The next rule is needed for make of Solaris 2.5.1 to override its
|
||||
# built-in .y.o rule (which takes precedence over the .y.cpp rule above).
|
||||
.y.o:
|
||||
if test -n "$(YTABH)"; then \
|
||||
$(YACC) $(YACCFLAGS) -d $<; \
|
||||
else \
|
||||
$(YACC) $(YACCFLAGS) $<; \
|
||||
fi
|
||||
-test -f y.tab.h && mv y.tab.h y_tab.h
|
||||
-test -f y.tab.c && mv y.tab.c y_tab.c
|
||||
mv y_tab.c $(YTABC)
|
||||
test -z "$(YTABH)" || mv y_tab.h $(YTABH)
|
||||
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $(YTABC)
|
||||
|
||||
.man.n:
|
||||
@echo Making $@ from $<
|
||||
@-rm -f $@
|
||||
@sed -e "s|@BINDIR@|$(bindir)|g" \
|
||||
-e "s|@FONTDIR@|$(fontdir)|g" \
|
||||
-e "s|@LOCALFONTDIR@|$(localfontdir)|g" \
|
||||
-e "s|@LEGACYFONTDIR@|$(legacyfontdir)|g" \
|
||||
-e "s|@MACRODIR@|$(tmacdir)|g" \
|
||||
-e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \
|
||||
-e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \
|
||||
-e "s|@DOCDIR@|$(docdir)|g" \
|
||||
-e "s|@EXAMPLEDIR@|$(exampledir)|g" \
|
||||
-e "s|@HTMLDOCDIR@|$(htmldocdir)|g" \
|
||||
-e "s|@PDFDOCDIR@|$(pdfdocdir)|g" \
|
||||
-e "s|@DEVICE@|$(DEVICE)|g" \
|
||||
-e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
|
||||
-e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
|
||||
-e "s|@INDEX_SUFFIX@|$(indexext)|g" \
|
||||
-e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
|
||||
-e "s|@MAN1EXT@|$(man1ext)|g" \
|
||||
-e "s|@MAN5EXT@|$(man5ext)|g" \
|
||||
-e "s|@MAN7EXT@|$(man7ext)|g" \
|
||||
-e "s|@TMAC_S_PREFIX@|$(tmac_s_prefix)|g" \
|
||||
-e "s|@TMAC_M_PREFIX@|$(tmac_m_prefix)|g" \
|
||||
-e "s|@TMAC_AN_PREFIX@|$(tmac_an_prefix)|g" \
|
||||
-e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
|
||||
-e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
|
||||
-e "s|@VERSION@|$(version)$(revision)|g" \
|
||||
-e "s|@MDATE@|`$(SHELL) $(top_srcdir)/mdate.sh $<`|g" \
|
||||
-e "s|@g@|$(g)|g" \
|
||||
-e "s!@G@!`echo $(g) | tr [a-z] [A-Z]`!g" \
|
||||
$< >$@
|
||||
|
||||
.PHONY: install_man
|
||||
install_man:
|
||||
-test -d $(manroot) || $(mkinstalldirs) $(manroot)
|
||||
-test -d $(man1dir) || $(mkinstalldirs) $(man1dir)
|
||||
@-pages="$(MAN1)"; \
|
||||
for p in $$pages; do \
|
||||
prog=`basename $$p .n`; \
|
||||
target=$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \
|
||||
rm -f $$target; \
|
||||
echo $(INSTALL_DATA) $$p $$target; \
|
||||
$(INSTALL_DATA) $$p $$target; \
|
||||
done
|
||||
-test -d $(man5dir) || $(mkinstalldirs) $(man5dir)
|
||||
@-pages="$(MAN5)"; \
|
||||
for p in $$pages; do \
|
||||
target=$(man5dir)/`basename $$p .n`.$(man5ext); \
|
||||
rm -f $$target; \
|
||||
echo $(INSTALL_DATA) $$p $$target; \
|
||||
$(INSTALL_DATA) $$p $$target; \
|
||||
done
|
||||
-test -d $(man7dir) || $(mkinstalldirs) $(man7dir)
|
||||
@-pages="$(MAN7)"; \
|
||||
for p in $$pages; do \
|
||||
target=$(man7dir)/`basename $$p .n`.$(man7ext); \
|
||||
rm -f $$target; \
|
||||
echo $(INSTALL_DATA) $$p $$target; \
|
||||
$(INSTALL_DATA) $$p $$target; \
|
||||
done
|
||||
|
||||
.PHONY: uninstall_man
|
||||
uninstall_man:
|
||||
@-pages="$(MAN1)"; \
|
||||
for p in $$pages; do \
|
||||
target=$(man1dir)/$(NAMEPREFIX)`basename $$p .n`.$(man1ext); \
|
||||
echo rm -f $$target; \
|
||||
rm -f $$target; \
|
||||
done
|
||||
@-pages="$(MAN5)"; \
|
||||
for p in $$pages; do \
|
||||
target=$(man5dir)/`basename $$p .n`.$(man5ext); \
|
||||
echo rm -f $$target; \
|
||||
rm -f $$target; \
|
||||
done
|
||||
@-pages="$(MAN7)"; \
|
||||
for p in $$pages; do \
|
||||
target=$(man7dir)/`basename $$p .n`.$(man7ext); \
|
||||
echo rm -f $$target; \
|
||||
rm -f $$target; \
|
||||
done
|
||||
|
||||
.PHONY: install_prog
|
||||
install_prog:
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
rm -f $(bindir)/$(NAMEPREFIX)$(PROG)
|
||||
$(INSTALL_PROGRAM) $(PROG) $(bindir)/$(NAMEPREFIX)$(PROG)
|
||||
|
||||
.PHONY: uninstall_prog
|
||||
uninstall_prog:
|
||||
-rm -f $(bindir)/$(NAMEPREFIX)$(PROG)
|
||||
|
||||
.PHONY: install_dev
|
||||
install_dev:
|
||||
-test -d $(datadir) || $(mkinstalldirs) $(datadir)
|
||||
-test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir)
|
||||
-test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir)
|
||||
-test -d $(fontdir) || $(mkinstalldirs) $(fontdir)
|
||||
-test -d $(fontsubdir) || $(mkinstalldirs) $(fontsubdir)
|
||||
-if test -d $(srcdir)/generate; then \
|
||||
test -d $(fontsubdir)/generate \
|
||||
|| $(mkinstalldirs) $(fontsubdir)/generate; \
|
||||
fi
|
||||
-test -z "$(DEVFILES)" \
|
||||
|| for f in ""$(DEVFILES); do \
|
||||
rm -f $(fontsubdir)/$$f; \
|
||||
if test -f $$f; then \
|
||||
$(INSTALL_DATA) $$f $(fontsubdir)/$$f; \
|
||||
else \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(fontsubdir)/$$f; \
|
||||
fi; \
|
||||
done
|
||||
-test -z "$(DEVSCRIPTS)" \
|
||||
|| for f in ""$(DEVSCRIPTS); do \
|
||||
rm -f $(fontsubdir)/$$f; \
|
||||
if test -f $$f; then \
|
||||
$(INSTALL_SCRIPT) $$f $(fontsubdir)/$$f; \
|
||||
else \
|
||||
$(INSTALL_SCRIPT) $(srcdir)/$$f $(fontsubdir)/$$f; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
.PHONY: uninstall_dev
|
||||
uninstall_dev:
|
||||
-test -z "$(DEVFILES)$(DEVSCRIPTS)" \
|
||||
|| for f in ""$(DEVFILES) $(DEVSCRIPTS); do \
|
||||
rm -f $(fontsubdir)/$$f; \
|
||||
done
|
||||
-test -d $(fontsubdir)/generate && rmdir $(fontsubdir)/generate
|
||||
-rmdir $(fontsubdir)
|
||||
|
||||
.PHONY: depend_src
|
||||
depend_src: depend.temp
|
||||
mv depend.temp Makefile.dep
|
||||
|
||||
depend.temp: FORCE
|
||||
> depend.temp;
|
||||
if test -f "$(srcdir)/$(YTABC)"; then \
|
||||
ytabc="$(srcdir)/$(YTABC)"; \
|
||||
else \
|
||||
ytabc="$(YTABC)"; \
|
||||
fi; \
|
||||
test -z "$(CCSRCS)$(YTABC)" \
|
||||
|| $(CCC) $(ALL_CCFLAGS) -MM $(CCSRCS) $$ytabc >>depend.temp
|
||||
test -z "$(CSRCS)" \
|
||||
|| $(CC) $(ALL_CFLAGS) -MM $(CSRCS) >>depend.temp
|
||||
test -z "$(YTABH)" \
|
||||
|| (sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend1.temp; \
|
||||
mv depend1.temp depend.temp)
|
||||
|
||||
.PHONY: TAGS_src
|
||||
TAGS_src:
|
||||
$(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS)
|
||||
test -z "$(GRAM)$(HDRS)" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS)
|
||||
|
||||
# This rule is only considered for the subdir_Makefile target.
|
||||
Makefile:
|
||||
-rm -f Makefile
|
||||
echo srcdir=$(srcdir) >>Makefile
|
||||
echo VPATH=$(VPATH) >>Makefile
|
||||
cat $(MAKEFILEPARTS) /dev/null >>Makefile
|
||||
|
||||
FORCE:
|
||||
|
||||
.NOEXPORT:
|
27
Makefile.cpg
Normal file
27
Makefile.cpg
Normal file
@ -0,0 +1,27 @@
|
||||
# Makefile.cpg
|
||||
MAKEFILEPARTS=\
|
||||
$(top_srcdir)/Makefile.comm \
|
||||
$(top_builddir)/Makefile.cfg \
|
||||
$(srcdir)/Makefile.sub \
|
||||
$(top_srcdir)/Makefile.cpg \
|
||||
Makefile.dep
|
||||
|
||||
all: $(PROG) $(MANPAGES)
|
||||
|
||||
$(PROG): $(OBJS) $(XLIBS)
|
||||
$(LINK.c) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
|
||||
|
||||
install_bin: install_prog
|
||||
install_prog: $(PROG)
|
||||
install_data: install_man
|
||||
install_man: $(MANPAGES)
|
||||
uninstall_sub: uninstall_prog uninstall_man
|
||||
depend: depend_src
|
||||
depend.temp: $(GENSRCS) $(YTABC)
|
||||
distfiles: $(YTABC)
|
||||
TAGS: TAGS_src
|
||||
TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
|
||||
Makefile: $(MAKEFILEPARTS)
|
||||
Makefile.dep:
|
||||
touch Makefile.dep
|
||||
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION
|
4
Makefile.dev
Normal file
4
Makefile.dev
Normal file
@ -0,0 +1,4 @@
|
||||
all: $(DEVFILES) $(DEVSCRIPTS)
|
||||
install_data: install_dev
|
||||
uninstall_sub: uninstall_dev
|
||||
install_dev: $(DEVFILES) $(DEVSCRIPTS)
|
776
Makefile.in
Normal file
776
Makefile.in
Normal file
@ -0,0 +1,776 @@
|
||||
# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
# Written by James Clark (jjc@jclark.com)
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
SHELL=@SHELL@
|
||||
|
||||
srcdir=@srcdir@
|
||||
top_srcdir=@abs_top_srcdir@
|
||||
VPATH=@srcdir@
|
||||
top_builddir=@abs_top_builddir@
|
||||
|
||||
# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which
|
||||
# is to be used in runtime PATHs compiled into groff executables.
|
||||
RT_SEP=@GROFF_PATH_SEPARATOR@
|
||||
|
||||
# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell
|
||||
# scripts and makefile rules; it may be the same as `RT_SEP', but,
|
||||
# particularly in some Microsoft environments, it may differ.
|
||||
SH_SEP=@PATH_SEPARATOR@
|
||||
|
||||
version=`cat $(top_srcdir)/VERSION`
|
||||
# No additional number if revision is zero.
|
||||
revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
|
||||
|
||||
# Define `page' to be letter if your PostScript printer uses 8.5x11
|
||||
# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
|
||||
# world).
|
||||
PAGE=@PAGE@
|
||||
|
||||
# The name of the ghostscript program. Normally, gs, on GNU/Linux
|
||||
# but it might be different on MS-DOS/MS-WIN32 systems.
|
||||
GHOSTSCRIPT=@GHOSTSCRIPT@
|
||||
|
||||
# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names,
|
||||
# which can be tried if `GHOSTSCRIPT' cannot be found at run time.
|
||||
ALT_GHOSTSCRIPT_PROGS=@ALT_GHOSTSCRIPT_PROGS@
|
||||
|
||||
# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names,
|
||||
# which can be tried at run time, to identify the awk program.
|
||||
ALT_AWK_PROGS=@ALT_AWK_PROGS@
|
||||
|
||||
# Normally the Postscript driver, grops, produces output that conforms
|
||||
# to version 3.0 of the Adobe Document Structuring Conventions.
|
||||
# Unfortunately some spoolers and previewers can't handle such output.
|
||||
# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
|
||||
# make its output acceptable to such programs. This variable controls
|
||||
# only the default behaviour of grops; the behaviour can be changed at
|
||||
# runtime by the grops -b option (and so by groff -P-b).
|
||||
# Use a value of 0 if your spoolers and previewers are able to handle
|
||||
# conforming PostScript correctly.
|
||||
# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
|
||||
# this is needed for early versions of TranScript that get confused by
|
||||
# anything between the %%EndProlog line and the first %%Page: comment.
|
||||
# Add 2 if lines in included files beginning with %! should be
|
||||
# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
|
||||
# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
|
||||
# stripped out of included files; this is needed for spoolers that
|
||||
# don't understand the %%{Begin,End}Document comments. I suspect this
|
||||
# includes early versions of TranScript.
|
||||
# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0
|
||||
# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint
|
||||
# with a printer that requires page reversal.
|
||||
BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@
|
||||
|
||||
# `DEVICE' is the default device.
|
||||
DEVICE=ps
|
||||
|
||||
# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty.
|
||||
XDEVDIRS=@XDEVDIRS@
|
||||
|
||||
# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty.
|
||||
XPROGDIRS=@XPROGDIRS@
|
||||
|
||||
# `XLIBDIRS' is either `src/libs/libxutil' or empty.
|
||||
XLIBDIRS=@XLIBDIRS@
|
||||
|
||||
# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for
|
||||
# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8.
|
||||
TTYDEVDIRS=@TTYDEVDIRS@ font/devutf8
|
||||
|
||||
# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or
|
||||
# empty (for EBCDIC).
|
||||
OTHERDEVDIRS=@OTHERDEVDIRS@
|
||||
|
||||
# `PSPRINT' is the command to use for printing a PostScript file,
|
||||
# for example `lpr'.
|
||||
PSPRINT=@PSPRINT@
|
||||
|
||||
# `DVIPRINT' is the command to use for printing a TeX dvi file,
|
||||
# for example `lpr -d'.
|
||||
DVIPRINT=@DVIPRINT@
|
||||
|
||||
# Prefix for names of programs that have Unix counterparts.
|
||||
# For example, if `g' is `g' then troff will be installed as
|
||||
# gtroff. This doesn't affect programs like grops or groff that have
|
||||
# no Unix counterparts. Note that the groff versions of eqn and tbl
|
||||
# will not work with Unix troff.
|
||||
g=@g@
|
||||
|
||||
# Common prefix for installation directories.
|
||||
# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
|
||||
# This must already exist when you do make install.
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
|
||||
# `bindir' says where to install executables.
|
||||
bindir=@bindir@
|
||||
|
||||
# `libdir' says where to install platform-dependent data.
|
||||
libdir=@libdir@
|
||||
libprogramdir=$(libdir)/groff
|
||||
|
||||
# `datasubdir' says where to install platform-independent data files.
|
||||
datadir=@datadir@
|
||||
dataprogramdir=$(datadir)/groff
|
||||
datasubdir=$(dataprogramdir)/$(version)$(revision)
|
||||
|
||||
# `infodir' says where to install info files.
|
||||
infodir=@infodir@
|
||||
|
||||
# `docdir' says where to install documentation files.
|
||||
docdir=$(datadir)/doc/groff/$(version)$(revision)
|
||||
|
||||
# `exampledir' says where to install example files.
|
||||
exampledir=$(docdir)/examples
|
||||
|
||||
# `htmldocdir' says where to install documentation in HTML format.
|
||||
htmldocdir=$(docdir)/html
|
||||
|
||||
# `pdfdocdir' says where to install documentation in PDF format.
|
||||
pdfdocdir=$(docdir)/pdf
|
||||
|
||||
# `fontdir' says where to install dev*/*.
|
||||
fontdir=$(datasubdir)/font
|
||||
|
||||
# `localfontdir' says where local fonts will be installed (as dev*/*).
|
||||
localfontdir=$(dataprogramdir)/site-font
|
||||
|
||||
# `legacyfontdir' is for compatibility with non-GNU troff.
|
||||
legacyfontdir=/usr/lib/font
|
||||
|
||||
# `fontpath' says where to look for dev*/*.
|
||||
fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
|
||||
|
||||
# `tmacdir' says where to install macros.
|
||||
tmacdir=$(datasubdir)/tmac
|
||||
|
||||
# `systemtmacdir' says where to install platform-dependent macros.
|
||||
systemtmacdir=$(libprogramdir)/site-tmac
|
||||
|
||||
# `localtmacdir' says where local files will be installed.
|
||||
localtmacdir=$(dataprogramdir)/site-tmac
|
||||
|
||||
# `appresdir' says where to install the application resource file for
|
||||
# gxditview.
|
||||
appresdir=@appresdir@
|
||||
|
||||
# `tmacpath' says where to look for macro files.
|
||||
# The current directory will be prepended in unsafe mode only; the home
|
||||
# directory will be always added.
|
||||
# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
|
||||
# current nor in the home directory.
|
||||
tmacpath=$(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir)
|
||||
|
||||
# `sys_tmac_prefix' is prefix (if any) for system macro packages.
|
||||
sys_tmac_prefix=@sys_tmac_prefix@
|
||||
|
||||
# `pnmtops_nosetpage' is the command to be run to generate an eps
|
||||
# file. Some versions of pnmtops provide the -nosetpage option.
|
||||
# We detect this and use it if present.
|
||||
pnmtops_nosetpage=@pnmtops_nosetpage@
|
||||
|
||||
# `tmac_wrap' is list of system macro packages that should be made
|
||||
# available to groff by creating a corresponding macro package
|
||||
# in the groff macro directory that references the system macro
|
||||
# package.
|
||||
tmac_wrap=@tmac_wrap@
|
||||
|
||||
# If there is a groff version of a macro package listed in $(tmac_wrap),
|
||||
# then the groff version will be installed with a prefix of this.
|
||||
# Don't make this empty.
|
||||
tmac_prefix=g
|
||||
|
||||
# The groff -mm macros will be available as -m$(tmac_m_prefix)m.
|
||||
tmac_m_prefix=\
|
||||
`for i in $(tmac_wrap) ""; do case "$$i" in m) echo $(tmac_prefix);; esac; done`
|
||||
# The groff -ms macros will be available as -m$(tmac_s_prefix)s.
|
||||
tmac_s_prefix=\
|
||||
`for i in $(tmac_wrap) ""; do case "$$i" in s) echo $(tmac_prefix);; esac; done`
|
||||
# The groff -man macros will be available as -m$(tmac_an_prefix)an.
|
||||
tmac_an_prefix=\
|
||||
`for i in $(tmac_wrap) ""; do case "$$i" in an) echo $(tmac_prefix);; esac; done`
|
||||
|
||||
# Extension to be used for refer index files. Index files are not
|
||||
# sharable between different architectures, so you might want to use
|
||||
# different suffixes for different architectures. Choose an extension
|
||||
# that doesn't conflict with refer or any other indexing program.
|
||||
indexext=.i
|
||||
|
||||
# Directory containing the default index for refer.
|
||||
indexdir=/usr/dict/papers
|
||||
|
||||
# The filename (without suffix) of the default index for refer.
|
||||
indexname=Ind
|
||||
|
||||
# common_words_file is a file containing a list of common words.
|
||||
# If your system provides /usr/lib/eign it will be copied onto this,
|
||||
# otherwise the supplied eign file will be used.
|
||||
common_words_file=$(datasubdir)/eign
|
||||
|
||||
# `manroot' is the root of the man page directory tree.
|
||||
mandir=@mandir@
|
||||
manroot=$(mandir)
|
||||
|
||||
# `man1ext' is the man section for user commands.
|
||||
man1ext=1
|
||||
man1dir=$(manroot)/man$(man1ext)
|
||||
|
||||
# `man5ext' is the man section for file formats.
|
||||
man5ext=5
|
||||
man5dir=$(manroot)/man$(man5ext)
|
||||
|
||||
# `man7ext' is the man section for macros.
|
||||
man7ext=7
|
||||
man7dir=$(manroot)/man$(man7ext)
|
||||
|
||||
# The configure script checks whether all necessary utility programs for
|
||||
# grohtml are available -- only then we can build the HTML documentation.
|
||||
make_html=@make_html@
|
||||
make_install_html=@make_install_html@
|
||||
|
||||
# The configure script also checks whether all necessary utility programs
|
||||
# for pdfroff are available -- only then we can build PDF documentation.
|
||||
make_pdfdoc=@make_pdfdoc@
|
||||
make_install_pdfdoc=@make_install_pdfdoc@
|
||||
|
||||
# DEFINES should include the following:
|
||||
# -DHAVE_MMAP if you have mmap() and <sys/mman.h>
|
||||
# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []'
|
||||
# -DSYS_SIGLIST_DECLARED if you have sys_siglist[]
|
||||
# -DWCOREFLAG=0200 if the 0200 bit of the status returned by
|
||||
# wait() indicates whether a core image was
|
||||
# produced for a process that was terminated
|
||||
# by a signal
|
||||
#
|
||||
# -DHAVE_DIRENT_H if you have <dirent.h>
|
||||
# -DHAVE_LIMITS_H if you have <limits.h>
|
||||
# -DHAVE_CC_LIMITS_H if you have a C++ <limits.h>
|
||||
# -DHAVE_MATH_H if you have <math.h>
|
||||
# -DHAVE_CC_OSFCN_H if you have a C++ <osfcn.h>
|
||||
# -DHAVE_CC_INTTYPES_H if you have a C++ <inttypes.h>
|
||||
# -DHAVE_STDLIB_H if you have <stdlib.h>
|
||||
# -DHAVE_STRING_H if you have <string.h>
|
||||
# -DHAVE_STRINGS_H if you have <strings.h>
|
||||
# -DHAVE_SYS_DIR_H if you have <sys/dir.h>
|
||||
# -DHAVE_SYS_TIME_H if you have <sys/time.h>
|
||||
# -DHAVE_UNISTD_H if you have <unistd.h>
|
||||
#
|
||||
# -DHAVE_FMOD if you have fmod()
|
||||
# -DHAVE_GETCWD if you have getcwd()
|
||||
# -DHAVE_GETTIMEOFDAY if you have gettimeofday()
|
||||
# -DHAVE_ISATTY if you have isatty()
|
||||
# -DHAVE_KILL if you have kill()
|
||||
# -DHAVE_MKSTEMP if you have mkstemp()
|
||||
# -DHAVE_MMAP if you have mmap()
|
||||
# -DHAVE_PUTENV if you have putenv()
|
||||
# -DHAVE_RENAME if you have rename()
|
||||
# -DHAVE_SETLOCALE if you have setlocale()
|
||||
# -DHAVE_SNPRINTF if you have snprintf()
|
||||
# -DHAVE_STRCASECMP if you have strcasecmp()
|
||||
# -DHAVE_STRNCASECMP if you have strncasecmp()
|
||||
# -DHAVE_STRERROR if you have strerror()
|
||||
# -DHAVE_STRSEP if you have strsep()
|
||||
# -DHAVE_STRTOL if you have strtol()
|
||||
# -DHAVE_VSNPRINTF if you have vsnprintf()
|
||||
#
|
||||
# -DNEED_DECLARATION_GETTIMEOFTODAY
|
||||
# if your C++ <sys/time.h> doesn't declare
|
||||
# gettimeofday()
|
||||
# -DNEED_DECLARATION_HYPOT if your C++ <math.h> doesn't declare hypot()
|
||||
# -DNEED_DECLARATION_PCLOSE if your C++ <stdio.h> doesn't declare pclose()
|
||||
# -DNEED_DECLARATION_POPEN if your C++ <stdio.h> doesn't declare popen()
|
||||
# -DNEED_DECLARATION_PUTENV if your C++ <stdlib.h> doesn't declare
|
||||
# putenv()
|
||||
# -DNEED_DECLARATION_RAND if your C++ <stdlib.h> doesn't declare rand()
|
||||
# -DNEED_DECLARATION_SNPRINTF if your C++ <stdio.h> doesn't declare
|
||||
# snprintf()
|
||||
# -DNEED_DECLARATION_SRAND if your C++ <stdlib.h> doesn't declare srand()
|
||||
# -DNEED_DECLARATION_STRCASECMP if your C++ <string.h> doesn't declare
|
||||
# strcasecmp()
|
||||
# -DNEED_DECLARATION_STRNCASECMP
|
||||
# if your C++ <string.h> doesn't declare
|
||||
# strncasecmp()
|
||||
# -DNEED_DECLARATION_VFPRINTF if your C++ <stdio.h> doesn't declare
|
||||
# vfprintf()
|
||||
# -DNEED_DECLARATION_VSNPRINTF if your C++ <stdio.h> doesn't declare
|
||||
# vsnprintf()
|
||||
#
|
||||
# -DRET_TYPE_SRAND_IS_VOID if srand() returns void not int
|
||||
# -DHAVE_SYS_NERR if you have sysnerr in <errno.h> or <stdio.h>
|
||||
# -DHAVE_SYS_ERRLIST if you have sys_errlist in <errno.h> or
|
||||
# <stdio.h>
|
||||
# -DTRADITIONAL_CPP if your C++ compiler uses a traditional
|
||||
# (Reiser) preprocessor
|
||||
# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t *
|
||||
# -DHAVE_STRUCT_EXCEPTION if <math.h> defines struct exception
|
||||
# -DRETSIGTYPE=int if signal handlers return int not void
|
||||
# -DIS_EBCDIC_HOST if the host's encoding is EBCDIC
|
||||
# -DPAGE=A4 if the the printer's page size is A4
|
||||
# -DGHOSTSCRIPT=gs the name (and directory if required) of the
|
||||
# ghostscript program
|
||||
DEFINES=@DEFS@
|
||||
|
||||
# Include
|
||||
#
|
||||
# {fmod,getcwd,mkstemp,putenv,snprintf,strcasecmp,
|
||||
# strerror,strncasecmp,strtol}.$(OBJEXT)
|
||||
#
|
||||
# in LIBOBJS if your C library is missing the corresponding function.
|
||||
# vsnprintf is defined in the snprintf.$(OBJEXT) module.
|
||||
LIBOBJS=@LIBOBJS@
|
||||
|
||||
# `CCC' is the compiler for C++ (.cpp) files.
|
||||
CCC=@CXX@
|
||||
CC=@CC@
|
||||
# CCDEFINES are definitions for C++ compilations.
|
||||
CCDEFINES=$(DEFINES)
|
||||
# CDEFINES are definitions for C compilations.
|
||||
CDEFINES=$(DEFINES)
|
||||
|
||||
CCFLAGS=@CXXFLAGS@
|
||||
CFLAGS=@CFLAGS@
|
||||
CPPFLAGS=@CPPFLAGS@
|
||||
LDFLAGS=@LDFLAGS@
|
||||
|
||||
X_CFLAGS=@X_CFLAGS@
|
||||
X_LIBS=@X_LIBS@
|
||||
X_EXTRA_LIBS=@X_EXTRA_LIBS@
|
||||
X_PRE_LIBS=@X_PRE_LIBS@
|
||||
|
||||
YACC=@YACC@
|
||||
YACCFLAGS=-v
|
||||
|
||||
EXEEXT=@EXEEXT@
|
||||
OBJEXT=@OBJEXT@
|
||||
# a simple heuristic assumption
|
||||
LIBEXT=`case $(OBJEXT) in obj) echo lib;; *) echo a;; esac`
|
||||
LIBS=@LIBS@
|
||||
LIBM=@LIBM@
|
||||
RANLIB=@RANLIB@
|
||||
INSTALL=@INSTALL@
|
||||
INSTALL_PROGRAM=@INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT=@INSTALL_SCRIPT@
|
||||
INSTALL_DATA=@INSTALL_DATA@
|
||||
INSTALL_INFO=@INSTALL_INFO@
|
||||
LN_S=@LN_S@
|
||||
AR=ar
|
||||
ETAGS=etags
|
||||
ETAGSFLAGS=
|
||||
# Flag that tells etags to assume C++.
|
||||
ETAGSCCFLAG=-C
|
||||
# Full path to perl.
|
||||
PERLPATH=@PERLPATH@
|
||||
# Sed command with which to edit sh scripts.
|
||||
SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@
|
||||
# Sed script to deal with OS dependencies in sh scripts.
|
||||
SH_DEPS_SED_SCRIPT=$(top_builddir)/arch/misc/shdeps.sed
|
||||
|
||||
# The program to create directory hierarchies.
|
||||
mkinstalldirs= $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
|
||||
PURIFY=purify
|
||||
PURIFYCCFLAGS=
|
||||
#PURIFYCCFLAGS=-g++=yes \
|
||||
# -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld
|
||||
|
||||
# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second
|
||||
# copy of $(MDEFINES) when making individual directories; this could
|
||||
# cause the argument list to become too long on some systems.
|
||||
MDEFINES= \
|
||||
"ALT_AWK_PROGS=$(ALT_AWK_PROGS)" \
|
||||
"ALT_GHOSTSCRIPT_PROGS=$(ALT_GHOSTSCRIPT_PROGS)" \
|
||||
"AR=$(AR)" \
|
||||
"BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \
|
||||
"CC=$(CC)" \
|
||||
"CCC=$(CCC)" \
|
||||
"CCDEFINES=$(CCDEFINES)" \
|
||||
"CCFLAGS=$(CCFLAGS)" \
|
||||
"CDEFINES=$(CDEFINES)" \
|
||||
"CFLAGS=$(CFLAGS)" \
|
||||
"CPPFLAGS=$(CPPFLAGS)" \
|
||||
"DEVICE=$(DEVICE)" \
|
||||
"DVIPRINT=$(DVIPRINT)" \
|
||||
"ETAGS=$(ETAGS)" \
|
||||
"ETAGSCCFLAG=$(ETAGSCCFLAG)" \
|
||||
"ETAGSFLAGS=$(ETAGSFLAGS)" \
|
||||
"EXEEXT=$(EXEEXT)" \
|
||||
"INSTALL_DATA=$(INSTALL_DATA)" \
|
||||
"INSTALL_INFO=$(INSTALL_INFO)" \
|
||||
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
||||
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
||||
"LDFLAGS=$(LDFLAGS)" \
|
||||
"LIBEXT=$(LIBEXT)" \
|
||||
"LIBM=$(LIBM)" \
|
||||
"LIBOBJS=$(LIBOBJS)" \
|
||||
"LIBS=$(LIBS)" \
|
||||
"MAKEOVERRIDES=$(MAKEOVERRIDES)" \
|
||||
"OBJEXT=$(OBJEXT)" \
|
||||
"OTHERDEVDIRS=$(OTHERDEVDIRS)" \
|
||||
"PAGE=$(PAGE)" \
|
||||
"GHOSTSCRIPT=$(GHOSTSCRIPT)" \
|
||||
"PERLPATH=$(PERLPATH)" \
|
||||
"PSPRINT=$(PSPRINT)" \
|
||||
"PURIFY=$(PURIFY)" \
|
||||
"PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \
|
||||
"RANLIB=$(RANLIB)" \
|
||||
"RT_SEP=$(RT_SEP)" \
|
||||
"SH_SEP=$(SH_SEP)" \
|
||||
"SHELL=$(SHELL)" \
|
||||
"SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \
|
||||
"SH_DEPS_SED_SCRIPT=$(SH_DEPS_SED_SCRIPT)" \
|
||||
"TTYDEVDIRS=$(TTYDEVDIRS)" \
|
||||
"XDEVDIRS=$(XDEVDIRS)" \
|
||||
"XLIBDIRS=$(XLIBDIRS)" \
|
||||
"XPROGDIRS=$(XPROGDIRS)" \
|
||||
"X_CFLAGS=$(X_CFLAGS)" \
|
||||
"X_LIBS=$(X_LIBS)" \
|
||||
"X_EXTRA_LIBS=$(X_EXTRA_LIBS)" \
|
||||
"X_PRE_LIBS=$(X_PRE_LIBS)" \
|
||||
"YACC=$(YACC)" \
|
||||
"YACCFLAGS=$(YACCFLAGS)" \
|
||||
"appresdir=$(appresdir)" \
|
||||
"bindir=$(bindir)" \
|
||||
"common_words_file=$(common_words_file)" \
|
||||
"datadir=$(datadir)" \
|
||||
"dataprogramdir=$(dataprogramdir)" \
|
||||
"datasubdir=$(datasubdir)" \
|
||||
"docdir=$(docdir)" \
|
||||
"exampledir=$(exampledir)" \
|
||||
"exec_prefix=$(exec_prefix)" \
|
||||
"fontdir=$(fontdir)" \
|
||||
"fontpath=$(fontpath)" \
|
||||
"g=$(g)" \
|
||||
"htmldocdir=$(htmldocdir)" \
|
||||
"pdfdocdir=$(pdfdocdir)" \
|
||||
"indexdir=$(indexdir)" \
|
||||
"indexext=$(indexext)" \
|
||||
"indexname=$(indexname)" \
|
||||
"infodir=$(infodir)" \
|
||||
"legacyfontdir=$(legacyfontdir)" \
|
||||
"libdir=$(libdir)" \
|
||||
"libprogramdir=$(libprogramdir)" \
|
||||
"localfontdir=$(localfontdir)" \
|
||||
"localtmacdir=$(localtmacdir)" \
|
||||
"make_html=$(make_html)" \
|
||||
"make_install_html=$(make_install_html)" \
|
||||
"make_pdfdoc=$(make_pdfdoc)" \
|
||||
"make_install_pdfdoc=$(make_install_pdfdoc)" \
|
||||
"man1dir=$(man1dir)" \
|
||||
"man1ext=$(man1ext)" \
|
||||
"man5dir=$(man5dir)" \
|
||||
"man5ext=$(man5ext)" \
|
||||
"man7dir=$(man7dir)" \
|
||||
"man7ext=$(man7ext)" \
|
||||
"manroot=$(manroot)" \
|
||||
"mkinstalldirs=$(mkinstalldirs)" \
|
||||
"prefix=$(prefix)" \
|
||||
"revision=$(revision)" \
|
||||
"sys_tmac_prefix=$(sys_tmac_prefix)" \
|
||||
"pnmtops_nosetpage=$(pnmtops_nosetpage)" \
|
||||
"systemtmacdir=$(systemtmacdir)" \
|
||||
"tmac_an_prefix=$(tmac_an_prefix)" \
|
||||
"tmac_m_prefix=$(tmac_m_prefix)" \
|
||||
"tmac_s_prefix=$(tmac_s_prefix)" \
|
||||
"tmac_wrap=$(tmac_wrap)" \
|
||||
"tmacdir=$(tmacdir)" \
|
||||
"tmacpath=$(tmacpath)" \
|
||||
"top_builddir=$(top_builddir)" \
|
||||
"top_srcdir=$(top_srcdir)" \
|
||||
"version=$(version)"
|
||||
|
||||
INCDIRS=src/include
|
||||
LIBDIRS=\
|
||||
src/libs/libgroff \
|
||||
src/libs/libdriver \
|
||||
src/libs/libbib \
|
||||
$(XLIBDIRS)
|
||||
CCPROGDIRS=\
|
||||
src/roff/groff \
|
||||
src/roff/troff \
|
||||
src/preproc/tbl \
|
||||
src/preproc/pic \
|
||||
src/preproc/eqn \
|
||||
src/preproc/grn \
|
||||
src/preproc/refer \
|
||||
src/preproc/soelim \
|
||||
src/preproc/html \
|
||||
src/devices/grops \
|
||||
src/devices/grotty \
|
||||
src/devices/grodvi \
|
||||
src/devices/grolj4 \
|
||||
src/devices/grohtml \
|
||||
src/devices/grolbp \
|
||||
src/utils/tfmtodit \
|
||||
src/utils/hpftodit \
|
||||
src/utils/lookbib \
|
||||
src/utils/indxbib \
|
||||
src/utils/lkbib \
|
||||
src/utils/addftinfo
|
||||
CPROGDIRS=\
|
||||
src/utils/pfbtops \
|
||||
$(XPROGDIRS)
|
||||
PROGDEPDIRS=arch/misc
|
||||
PROGDIRS=$(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS)
|
||||
DEVDIRS=\
|
||||
font/devps \
|
||||
font/devdvi \
|
||||
font/devhtml
|
||||
ALLTTYDEVDIRS=\
|
||||
font/devascii \
|
||||
font/devlatin1 \
|
||||
font/devutf8 \
|
||||
font/devcp1047
|
||||
# `doc' must be processed before `contrib/pdfmark'.
|
||||
OTHERDIRS=\
|
||||
man \
|
||||
tmac \
|
||||
src/utils/afmtodit \
|
||||
src/roff/grog \
|
||||
src/roff/nroff \
|
||||
doc \
|
||||
contrib/mm \
|
||||
contrib/pic2graph \
|
||||
contrib/eqn2graph \
|
||||
contrib/grap2graph \
|
||||
contrib/groffer \
|
||||
contrib/mom \
|
||||
contrib/pdfmark \
|
||||
contrib/gdiffmk
|
||||
ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) \
|
||||
$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS) $(OTHERDIRS)
|
||||
EXTRADIRS=\
|
||||
font/devps/generate \
|
||||
font/devdvi/generate \
|
||||
font/devlj4/generate \
|
||||
doc
|
||||
NOMAKEDIRS=\
|
||||
arch/djgpp \
|
||||
contrib/mm/examples \
|
||||
contrib/mm/mm \
|
||||
contrib/mom/examples \
|
||||
contrib/mom/momdoc \
|
||||
contrib/gdiffmk/tests \
|
||||
src/libs/snprintf
|
||||
DISTDIRS=\
|
||||
$(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) \
|
||||
$(ALLTTYDEVDIRS) $(OTHERDIRS) $(EXTRADIRS) $(NOMAKEDIRS)
|
||||
TARGETS=all install install_bin install_data clean distclean mostlyclean \
|
||||
realclean extraclean distfiles TAGS depend uninstall_sub
|
||||
|
||||
# This ENVSETUP gork is required by the DJGPP build on Windows 9X,
|
||||
# where Make needs to be case-sensitive to find files like BI and VERSION.
|
||||
ENVSETUP=\
|
||||
if test -f $(srcdir)/makefile.ccpg* && \
|
||||
test -f $(srcdir)/Makefile.ccpg*; then \
|
||||
FNCASE=y; export FNCASE; \
|
||||
else :; \
|
||||
fi
|
||||
|
||||
do=all
|
||||
dodirs=$(ALLDIRS) dot
|
||||
# Default target for subdir_Makefile
|
||||
subdir=src/roff/troff
|
||||
|
||||
|
||||
$(TARGETS):
|
||||
@$(ENVSETUP); $(MAKE) $(MDEFINES) do=$@ $(dodirs)
|
||||
|
||||
dot: FORCE
|
||||
@$(ENVSETUP); \
|
||||
$(MAKE) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $(top_srcdir)/Makefile.sub $(do)
|
||||
|
||||
$(LIBDIRS): FORCE
|
||||
@$(ENVSETUP); \
|
||||
if test $(srcdir) = .; then \
|
||||
srcdir=.; \
|
||||
else \
|
||||
srcdir=`cd $(srcdir); pwd`/$@; \
|
||||
fi; \
|
||||
test -d $@ || $(mkinstalldirs) $@; \
|
||||
cd $@; \
|
||||
test -f Makefile.dep || touch Makefile.dep; \
|
||||
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $$srcdir/Makefile.sub \
|
||||
-f $(top_srcdir)/Makefile.lib \
|
||||
-f Makefile.dep $(do)
|
||||
|
||||
$(CPROGDIRS): FORCE
|
||||
@$(ENVSETUP); \
|
||||
if test $(srcdir) = .; then \
|
||||
srcdir=.; \
|
||||
else \
|
||||
srcdir=`cd $(srcdir); pwd`/$@; \
|
||||
fi; \
|
||||
test -d $@ || $(mkinstalldirs) $@; \
|
||||
cd $@; \
|
||||
test -f Makefile.dep || touch Makefile.dep; \
|
||||
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $$srcdir/Makefile.sub \
|
||||
-f $(top_srcdir)/Makefile.cpg \
|
||||
-f Makefile.dep $(do)
|
||||
|
||||
$(CCPROGDIRS): FORCE
|
||||
@$(ENVSETUP); \
|
||||
if test $(srcdir) = .; then \
|
||||
srcdir=.; \
|
||||
else \
|
||||
srcdir=`cd $(srcdir); pwd`/$@; \
|
||||
fi; \
|
||||
test -d $@ || $(mkinstalldirs) $@; \
|
||||
cd $@; \
|
||||
test -f Makefile.dep || touch Makefile.dep; \
|
||||
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $$srcdir/Makefile.sub \
|
||||
-f $(top_srcdir)/Makefile.ccpg \
|
||||
-f Makefile.dep $(do)
|
||||
|
||||
$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS): FORCE
|
||||
@$(ENVSETUP); \
|
||||
if test $(srcdir) = .; then \
|
||||
srcdir=.; \
|
||||
else \
|
||||
srcdir=`cd $(srcdir); pwd`/$@; \
|
||||
fi; \
|
||||
test -d $@ || $(mkinstalldirs) $@; \
|
||||
cd $@; \
|
||||
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $$srcdir/Makefile.sub \
|
||||
-f $(top_srcdir)/Makefile.dev $(do)
|
||||
|
||||
$(INCDIRS) $(PROGDEPDIRS) $(OTHERDIRS): FORCE
|
||||
@$(ENVSETUP); \
|
||||
if test $(srcdir) = .; then \
|
||||
srcdir=.; \
|
||||
else \
|
||||
srcdir=`cd $(srcdir); pwd`/$@; \
|
||||
fi; \
|
||||
test -d $@ || $(mkinstalldirs) $@; \
|
||||
cd $@; \
|
||||
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
|
||||
-f $(top_srcdir)/Makefile.comm \
|
||||
-f $$srcdir/Makefile.sub \
|
||||
-f $(top_srcdir)/Makefile.man $(do)
|
||||
|
||||
.PHONY: dist
|
||||
dist:
|
||||
-rm -fr tmp
|
||||
rm -f groff-$(version)$(revision).tar.gz
|
||||
mkdir tmp
|
||||
for d in $(DISTDIRS); do \
|
||||
$(mkinstalldirs) tmp/$$d; \
|
||||
done
|
||||
srcdir=`cd $(srcdir); pwd`; \
|
||||
cd tmp; \
|
||||
$(LN_S) ../Makefile .; \
|
||||
$(LN_S) $$srcdir/* . 2>/dev/null || true; \
|
||||
rm -rf CVS; \
|
||||
for d in $(DISTDIRS); do \
|
||||
(cd $$d; \
|
||||
$(LN_S) $$srcdir/$$d/* . 2>/dev/null; \
|
||||
rm -rf CVS || true); \
|
||||
done; \
|
||||
$(MAKE) srcdir=. VPATH=. distfiles; \
|
||||
$(MAKE) srcdir=. VPATH=. extraclean; \
|
||||
for d in $(EXTRADIRS); do \
|
||||
(cd $$d; \
|
||||
if test -f Makefile; then \
|
||||
$(MAKE) extraclean; \
|
||||
else \
|
||||
$(MAKE) -f $(top_builddir)/$$d/Makefile extraclean; \
|
||||
fi); \
|
||||
done; \
|
||||
rm -f Makefile; \
|
||||
$(LN_S) $$srcdir/Makefile.init Makefile
|
||||
mv tmp groff-$(version)$(revision)
|
||||
tar cfh - groff-$(version)$(revision) | \
|
||||
gzip -c >groff-$(version)$(revision).tar.gz
|
||||
rm -fr groff-$(version)$(revision)
|
||||
|
||||
# $(PROGDIRS): libgroff
|
||||
# grops grotty grodvi: libdriver
|
||||
# refer lookbib indxbib lkbib: libbib
|
||||
# $(LIBDIRS) $(PROGDIRS): include
|
||||
|
||||
.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE
|
||||
|
||||
# Create a Makefile in $(subdir). This is useful for development since it
|
||||
# avoids running make recursively.
|
||||
subdir_Makefile: Makefile.cfg
|
||||
$(MAKE) do=Makefile $(subdir)
|
||||
|
||||
Makefile.cfg: Makefile
|
||||
>Makefile.cfg
|
||||
for var in $(MDEFINES); do \
|
||||
echo "$$var" >>Makefile.cfg; \
|
||||
done
|
||||
|
||||
Makefile: Makefile.in
|
||||
$(SHELL) config.status
|
||||
|
||||
.PHONY: uninstall
|
||||
uninstall: uninstall_sub uninstall_dirs
|
||||
|
||||
.PHONY: uninstall_dirs
|
||||
uninstall_dirs:
|
||||
# Use `rmdir' here so that the directories are only removed if they are empty.
|
||||
-rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \
|
||||
$(tmacdir) $(systemtmacdir) $(localtmacdir) \
|
||||
$(fontdir) $(localfontdir) $(bindir) \
|
||||
$(datasubdir) $(dataprogramdir) $(infodir) \
|
||||
$(exampledir) $(htmldocdir) $(pdfdocdir) $(docdir) \
|
||||
$(libprogramdir) $(libdir) \
|
||||
$(datadir)/doc/groff $(datadir)/doc $(datadir) 2>/dev/null || :
|
||||
|
||||
.PHONY: check docheck
|
||||
check: site.exp docheck
|
||||
|
||||
docheck:
|
||||
if $(SHELL) -c "runtest --version" > /dev/null 2>&1; then \
|
||||
runtest; \
|
||||
else \
|
||||
echo "WARNING: could not find \`runtest'" 1>&2; \
|
||||
fi
|
||||
|
||||
# This snippet has been taken from the automake package.
|
||||
|
||||
site.exp:
|
||||
@echo "Making a new site.exp file..."
|
||||
@echo "## these variables are automatically generated by make ##" >site.tmp
|
||||
@echo "# Do not edit here. If you wish to override these values" >>site.tmp
|
||||
@echo "# edit the last section" >>site.tmp
|
||||
@echo "set tool groff" >>site.tmp
|
||||
@echo "set srcdir $(srcdir)/testsuite" >>site.tmp
|
||||
@echo "set objdir `pwd`" >> site.tmp
|
||||
@echo "## All variables above are generated by configure. Do not edit! ##" >> site.tmp
|
||||
@test ! -f site.exp \
|
||||
|| sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
|
||||
@-rm -f site.bak
|
||||
@test ! -f site.exp || mv site.exp site.bak
|
||||
@mv site.tmp site.exp
|
||||
|
||||
FORCE:
|
||||
|
||||
.NOEXPORT:
|
25
Makefile.init
Normal file
25
Makefile.init
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright (C) 1989-2000 Free Software Foundation, Inc.
|
||||
# Written by James Clark (jjc@jclark.com)
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
SHELL=/bin/sh
|
||||
|
||||
.PHONY: all
|
||||
all:
|
||||
$(SHELL) configure
|
||||
$(MAKE) all
|
20
Makefile.lib
Normal file
20
Makefile.lib
Normal file
@ -0,0 +1,20 @@
|
||||
LIBCLEAN=lib$(LIB).$(LIBEXT)
|
||||
MAKEFILEPARTS=\
|
||||
$(top_srcdir)/Makefile.comm \
|
||||
$(top_builddir)/Makefile.cfg \
|
||||
$(srcdir)/Makefile.sub \
|
||||
$(top_srcdir)/Makefile.lib \
|
||||
Makefile.dep
|
||||
|
||||
all: lib$(LIB).$(LIBEXT)
|
||||
|
||||
lib$(LIB).$(LIBEXT): $(OBJS)
|
||||
$(AR) r $@ $?
|
||||
$(RANLIB) $@
|
||||
|
||||
depend: depend_src
|
||||
depend.temp: $(GENSRCS)
|
||||
TAGS: $(CCSRCS) $(CSRCS)
|
||||
Makefile: $(MAKEFILEPARTS)
|
||||
Makefile.dep:
|
||||
touch Makefile.dep
|
5
Makefile.man
Normal file
5
Makefile.man
Normal file
@ -0,0 +1,5 @@
|
||||
all: $(MANPAGES)
|
||||
install_data: install_man
|
||||
install_man: $(MANPAGES)
|
||||
uninstall_sub: uninstall_man
|
||||
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION
|
35
Makefile.sub
Normal file
35
Makefile.sub
Normal file
@ -0,0 +1,35 @@
|
||||
DISTCLEANFILES=\
|
||||
config.status \
|
||||
config.log \
|
||||
config.cache \
|
||||
stamp-h \
|
||||
Makefile \
|
||||
test-groff \
|
||||
src/include/config.h \
|
||||
site.exp \
|
||||
site.bak \
|
||||
groff.sum \
|
||||
groff.log
|
||||
CLEANADD=Makefile.cfg conftest*
|
||||
|
||||
distfiles: configure
|
||||
|
||||
$(scrdir)/configure: configure.ac aclocal.m4
|
||||
cd $(srcdir) && autoconf
|
||||
|
||||
config.status: configure
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
# autoheader might not change config.hin, so touch a stamp file.
|
||||
$(srcdir)/config.hin: stamp-h.in
|
||||
$(srcdir)/stamp-h.in: configure.ac aclocal.m4
|
||||
cd $(srcdir) && autoheader
|
||||
echo timestamp > $(srcdir)/stamp-h.in
|
||||
|
||||
config.h: stamp-h
|
||||
stamp-h: config.hin config.status
|
||||
$(SHELL) config.status
|
||||
|
||||
# Always create the site-font directory as a guide to the user.
|
||||
install_data:
|
||||
-test -d $(localfontdir) || $(mkinstalldirs) $(localfontdir)
|
916
PROBLEMS
Normal file
916
PROBLEMS
Normal file
@ -0,0 +1,916 @@
|
||||
This file describes various problems that have been encountered in
|
||||
compiling, installing and running groff. Suggestions for additions or
|
||||
other improvements to this file are welcome.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
Generic Problems
|
||||
================
|
||||
|
||||
|
||||
|
||||
* Displaying a man page on a terminal with/without my favourite pager
|
||||
only gives garbage.
|
||||
|
||||
groff by default now uses SGR escape sequences (`ANSI color') to
|
||||
control the display attributes (bold, underlined, colour) on TTYs.
|
||||
Some terminals (e.g. `kterm') don't understand SGR, and some pagers
|
||||
(e.g. older versions of `less' or `less' without the -R option) don't
|
||||
understand SGR either. There are three solutions to fix this, in order
|
||||
of preference; please read the grotty man page for more details.
|
||||
|
||||
The fourth and probably best option is to update your terminal program
|
||||
and pager to versions which can handle SGR.
|
||||
|
||||
1. Set the GROFF_NO_SGR environment variable.
|
||||
|
||||
2. Pass option -c to grotty.
|
||||
|
||||
3. Append the following fragment to the `troffrc' file:
|
||||
|
||||
|
||||
--- start ---
|
||||
.if n \{\
|
||||
. nr _C \n(.C
|
||||
. cp 0
|
||||
.
|
||||
. \" The following code sets a top-of-page trap to disable grotty's TTY
|
||||
. \" mode. Since neither \X nor .output can be used before the first
|
||||
. \" page has started, we must use a trap. To make it work with troff's
|
||||
. \" -o option, we wait until the first printed page.
|
||||
.
|
||||
. de sgr@dummy
|
||||
. .
|
||||
.
|
||||
. rn wh wh@old
|
||||
.
|
||||
. \" The stand-alone version. If no other trap is set, we can safely
|
||||
. \" insert the truncated vertical space caused by the trap (if any).
|
||||
. \" Otherwise we assume that the document's main macro package takes
|
||||
. \" care of that. As soon as the trap has been executed, it is removed.
|
||||
. de1 no@sgr
|
||||
. if \\n[.P] \{\
|
||||
. if (\\n[.t] == \\n[.p]) \{\
|
||||
. rn wh@old wh
|
||||
. rm no@sgr
|
||||
. wh 0
|
||||
. sp \\n[.trunc]
|
||||
. nop \X'tty: sgr 0'
|
||||
. sp -1
|
||||
. \}\}
|
||||
. .
|
||||
.
|
||||
. wh@old 0 no@sgr
|
||||
.
|
||||
. \" The piggyback version to be appended to macros planted with the
|
||||
. \" modified `wh' request.
|
||||
. de1 no@sgr1
|
||||
. if \\n[.P] \{\
|
||||
. rn wh@old wh
|
||||
. ds no@sgr1
|
||||
. nop \X'tty: sgr 0'
|
||||
. sp -1
|
||||
. \}
|
||||
. .
|
||||
.
|
||||
. \" We redefine the `wh' request so that `no@sgr1' is appended to
|
||||
. \" the trap macro.
|
||||
. de1 wh
|
||||
. am1 \\$2 sgr@dummy
|
||||
. no@sgr1
|
||||
. sgr@dummy
|
||||
. wh@old \\$1 \\$2
|
||||
. .
|
||||
.
|
||||
. cp \n[_C]
|
||||
.\}
|
||||
--- end ---
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* The UTF-8 output of grotty has strange characters for the minus, the
|
||||
hyphen, and the right quote. Why?
|
||||
|
||||
The used Unicode characters (U+2212 for the minus sign and U+2010 for
|
||||
the hyphen) are the correct ones, but many programs can't search them
|
||||
properly. The same is true for the right quote (U+201D). To map those
|
||||
characters back to the ASCII characters, insert the following code
|
||||
snippet into the `troffrc' configuration file:
|
||||
|
||||
.if '\*[.T]'utf8' \{\
|
||||
. char \- \N'45'
|
||||
. char - \N'45'
|
||||
. char ' \N'39'
|
||||
.\}
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* My document says that the current year is 19100, not 2000.
|
||||
|
||||
In groff, as in traditional troff, the yr number register yields the
|
||||
year minus 1900. Unfortunately, there is a longstanding bug in the
|
||||
Troff User's Manual <http://cm.bell-labs.com/cm/cs/cstr/54.ps.gz>,
|
||||
which incorrectly claims that yr is the last two digits of the year.
|
||||
This claim was never true of either Unix troff or of groff.
|
||||
|
||||
If your text looks like this:
|
||||
|
||||
.\" Wrong:
|
||||
This document was formatted in 19\n(yr.
|
||||
|
||||
you can correct it as follows:
|
||||
|
||||
This document was formatted in \n[year].
|
||||
|
||||
or, if you want to be portable to older troff versions, as follows:
|
||||
|
||||
.nr y4 1900+\n(yr
|
||||
This document was formatted in \n(y4.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* groff can't handle my troff document. It works fine with AT&T
|
||||
troff.
|
||||
|
||||
Read the section on incompatibilities in groff_diff(7). Try using
|
||||
the -C option. Alternatively there's the sed script
|
||||
`tmac/fixmacros.sed' which will attempt to edit a file of macros so
|
||||
that it can be used with groff without the -C flag.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* gtroff doesn't understand lines like `.ce99' with no space between
|
||||
the name of the request or macro and the arguments.
|
||||
|
||||
gtroff requires a space between macro or request and its arguments
|
||||
because it allows the use of long names for macros and requests. You
|
||||
can use the -C option or the `cp' request to put gtroff into a
|
||||
compatibility mode in which it is not possible to use long names for
|
||||
macros but in which no space is required between macros and their
|
||||
arguments. The use of compatibility mode is strongly discouraged.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* groff -Tdvi produces dvi files that use fonts at weird
|
||||
magnifications.
|
||||
|
||||
Yes, it does. You may need to compile fonts with Metafont at these
|
||||
magnifications. The CompileFonts script in the devdvi/generate
|
||||
directory may help you to do this. (It will take a *long* time on
|
||||
slow computers.)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* Groff doesn't use the font names I'm used to.
|
||||
|
||||
Use the `ftr' request. See groff_diff(7).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* pic output is not centered horizontally; pictures sometimes run off
|
||||
the bottom of the page.
|
||||
|
||||
The macro package you are using is not supplying appropriate
|
||||
definitions of PS and PE. Give groff a -mpic option.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* gpic doesn't accept the syntax `chop N M' for chopping both ends of
|
||||
a line.
|
||||
|
||||
The correct syntax is `chop N chop M'.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* With gpic -t, when I print `line ->; box' using a dvi to ps program,
|
||||
the arrow head sticks through into the inside of the box.
|
||||
|
||||
The dvi to ps program should be modified to set the line cap and line
|
||||
join parameters to 1 while printing tpic specials.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* gtroff gives warnings about lines like
|
||||
.ev \" a comment
|
||||
(with a tab after the .ev).
|
||||
|
||||
A tab character cannot be used as a substitute for a space character
|
||||
(except in one case: between a control character at the beginning of a
|
||||
line and the name of a macro or request). For example, in Unix troff
|
||||
|
||||
.ps \" restore the previous point size
|
||||
|
||||
(with a tab after the .ps) will NOT restore the previous point-size;
|
||||
instead it will be silently ignored. Since this is very likely to be
|
||||
an error, gtroff can give a warning about it. If you want to align
|
||||
comments, you can do it like this:
|
||||
|
||||
.ev\" \" a comment
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I don't like the page headers and footers produced by groff -man.
|
||||
|
||||
There seem to be many different styles of page header and footer
|
||||
produced by different versions of the -man macros. You will need to
|
||||
put modified macros from tmac/an-old.tmac into man.local. More
|
||||
information is available in groff_man(7).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* Where can I get grap?
|
||||
|
||||
Ted Faber <faber@lunabase.org> has written a freely available grap:
|
||||
|
||||
http://www.lunabase.org/~faber/Vault/software/grap/
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* The \n(st and \n(sb registers don't seem to work. I thought \w set
|
||||
them to the height and depth of its argument, but the registers
|
||||
always seem to be 0.
|
||||
|
||||
\n(st and \n(sb aren't supposed to give the height and depth of the
|
||||
string rather they give the minimum and maximum vertical displacement
|
||||
of the baseline. For example for \v'2u'\v'-3u', \n(st will be 1 and
|
||||
\n(sb will be -2. The height and depth of the string is available in
|
||||
the \n[rst] and \n[rsb] registers: these are groff extensions.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* While formatting a manual page, groff complains about not being able
|
||||
to break lines. The problem seems to be caused by a line like:
|
||||
.TP \w'label'+2
|
||||
|
||||
The -man documentation says that the default scale indicator for TP
|
||||
macro is `n'. The groff -man macros implement this correctly, so that
|
||||
the argument will be evaluated as if it were
|
||||
|
||||
\w'label'n+2n
|
||||
|
||||
The Unix -man macros don't implement this correctly (probably because
|
||||
it's hard to do in Unix troff); they just append `n' to the entire
|
||||
argument, so that it will be evaluated as if it were
|
||||
|
||||
\w'label'u+2n
|
||||
|
||||
The solution is to fix the manual page:
|
||||
|
||||
.TP \w'label'u+2
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I'm having problems formatting man pages produced by the perl
|
||||
wrapman script.
|
||||
|
||||
Some versions of wrapman have a superfluous blank line before the .TH
|
||||
line. This must be deleted. Then either use groff -C, or apply the
|
||||
following patch:
|
||||
|
||||
*** wrapman.~2~ Sun Jan 19 12:10:24 1992
|
||||
--- wrapman Tue Aug 10 02:06:41 1993
|
||||
***************
|
||||
*** 35,41 ****
|
||||
$line1 .= <IN> if $line1 =~ /eval/;
|
||||
$line1 .= <IN> if $line1 =~ /argv/;
|
||||
$line2 = <IN>;
|
||||
! next if $line2 eq "'di';\n";
|
||||
|
||||
# Pull the old switcheroo.
|
||||
|
||||
--- 35,41 ----
|
||||
$line1 .= <IN> if $line1 =~ /eval/;
|
||||
$line1 .= <IN> if $line1 =~ /argv/;
|
||||
$line2 = <IN>;
|
||||
! next if $line2 eq "'di ';\n" || $line2 eq "'di';\n";
|
||||
|
||||
# Pull the old switcheroo.
|
||||
|
||||
***************
|
||||
*** 49,56 ****
|
||||
|
||||
print OUT $line1;
|
||||
print OUT <<EOF;
|
||||
! 'di';
|
||||
! 'ig00';
|
||||
#
|
||||
# $header
|
||||
#
|
||||
--- 49,58 ----
|
||||
|
||||
print OUT $line1;
|
||||
print OUT <<EOF;
|
||||
! 'di ';
|
||||
! 'ds 00 \\"';
|
||||
! 'eo ';
|
||||
! 'ig 00 ';
|
||||
#
|
||||
# $header
|
||||
#
|
||||
***************
|
||||
*** 72,85 ****
|
||||
|
||||
# These next few lines are legal in both Perl and nroff.
|
||||
|
||||
! $null.00; # finish .ig
|
||||
|
||||
'di \\" finish diversion--previous line must be blank
|
||||
.nr nl 0-1 \\" fake up transition to first page again
|
||||
.nr % 0 \\" start at page 1
|
||||
! '; __END__ ##### From here on it's a standard manual page #####
|
||||
.TH $PROG 1 "$month $mday, 19$year"
|
||||
- .AT 3
|
||||
.SH NAME
|
||||
$prog \\- whatever
|
||||
.SH SYNOPSIS
|
||||
--- 74,87 ----
|
||||
|
||||
# These next few lines are legal in both Perl and nroff.
|
||||
|
||||
! $null.00 ; # finish .ig
|
||||
! 'ec \\';
|
||||
|
||||
'di \\" finish diversion--previous line must be blank
|
||||
.nr nl 0-1 \\" fake up transition to first page again
|
||||
.nr % 0 \\" start at page 1
|
||||
! .\\"'; __END__ ##### From here on it's a standard manual page #####
|
||||
.TH $PROG 1 "$month $mday, 19$year"
|
||||
.SH NAME
|
||||
$prog \\- whatever
|
||||
.SH SYNOPSIS
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* groff uses up an enormous amount of memory processing large files.
|
||||
I'm using 386BSD 0.1.
|
||||
|
||||
386BSD includes an old version of g++, 1.39, which has a bug that
|
||||
causes a major memory leak in gtroff. Apply the following fix to g++
|
||||
and recompile groff:
|
||||
|
||||
*** cplus-decl.c.~1~ Mon Aug 6 05:28:59 1990
|
||||
--- cplus-decl.c Wed Jun 5 08:55:04 1991
|
||||
***************
|
||||
*** 7951,7961 ****
|
||||
|
||||
/* At the end, call delete if that's what's requested. */
|
||||
if (TREE_GETS_DELETE (current_class_type))
|
||||
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
|
||||
get_identifier (OPERATOR_DELETE_FORMAT),
|
||||
! build_tree_list (NULL_TREE, integer_zero_node),
|
||||
NULL_TREE, LOOKUP_NORMAL);
|
||||
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
|
||||
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
|
||||
else
|
||||
exprstmt = 0;
|
||||
--- 7951,7961 ----
|
||||
|
||||
/* At the end, call delete if that's what's requested. */
|
||||
if (TREE_GETS_DELETE (current_class_type))
|
||||
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
|
||||
get_identifier (OPERATOR_DELETE_FORMAT),
|
||||
! build_tree_list (NULL_TREE, current_class_decl),
|
||||
NULL_TREE, LOOKUP_NORMAL);
|
||||
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
|
||||
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
|
||||
else
|
||||
exprstmt = 0;
|
||||
|
||||
|
||||
|
||||
Printing and Display Problems
|
||||
=============================
|
||||
|
||||
|
||||
|
||||
* I'm having problems including PostScript illustrations (EPS) using
|
||||
the PSPIC macro and/or \X'ps: import ...'.
|
||||
|
||||
A PostScript document must meet three requirements in order to be
|
||||
included with the PSPIC macro: it must comply with the Adobe Document
|
||||
Structuring Conventions; it must contain a BoundingBox line; it must
|
||||
be `well-behaved'. The BoundingBox line should be of the form:
|
||||
|
||||
%%BoundingBox: llx lly urx ury
|
||||
|
||||
where llx, lly, urx, ury are the coordinates of the lower left x,
|
||||
lower left y, upper right x, upper right y of the bounding box of
|
||||
marks on the page expressed as integers in the default PostScript
|
||||
coordinate system (72 units per inch, origin at bottom left corner).
|
||||
|
||||
The most convenient program to get the bounding box of a document is
|
||||
the `ps2epsi' script coming with GhostScript.
|
||||
|
||||
If you can't use this program, another useful tactic is to print out
|
||||
the illustration by itself (you may need to add a `showpage' at the
|
||||
end), and physically measure the bounding box. For more detail on
|
||||
these requirements, read the specification of Encapsulated PostScript
|
||||
format. (This is available from the Adobe file server; send a message
|
||||
with a body of `help' to ps-file-server@adobe.com.)
|
||||
|
||||
If an EPS file to be included via \X'ps: import' does not start with
|
||||
`%!PS-Adobe-...', gtroff will still include the file, but grops will
|
||||
not add any fonts to the generated output file that are listed in the
|
||||
EPS file, even though the files are listed in the `download' file and
|
||||
are available in the devps directory.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I've configured groff for A4 paper, but gtroff still seems to think
|
||||
that the length of a page (as returned by `\n(.p') is 11 inches.
|
||||
|
||||
This is intentional. The PAGE option during configuration is used
|
||||
only by grops. For compatibility with ditroff, the default page
|
||||
length in gtroff is always 11 inches. The page length can be changed
|
||||
with the `pl' request.
|
||||
|
||||
A convenient way to set paper dimensions is to use the -dpaper option
|
||||
of groff, together with proper -P options for the postprocessor
|
||||
(overriding the default). For example, use the following for PS
|
||||
output on A4 paper in landscape orientation:
|
||||
|
||||
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
|
||||
|
||||
See groff_tmac(5) for more information.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I print the output of groff -Tps, the output is always shifted
|
||||
up by about 0.7 inches; I'm using 8.5x11 inch paper.
|
||||
|
||||
Make sure that the paper size is `letter'. See groff_tmac(5).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I try to run gxditview, I get the error:
|
||||
Error: Widget viewport has zero width and/or height
|
||||
|
||||
This error means you haven't correctly installed the application
|
||||
defaults file, GXditview.ad; `make install' does this for you
|
||||
automatically, so either you didn't do `make install', or you haven't
|
||||
passed a good `--appresdir=<DIR>' argument to groff's configure script.
|
||||
|
||||
See the X(7) man page for information how and where application resource
|
||||
files have to be located. Look for the XAPPLRESDIR and XUSERFILESEARCHPATH
|
||||
environment variables.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I preview documents using -TX75 or -TX100, the layout is not
|
||||
the same as when I print the document with -Tps: the line and page
|
||||
breaks come in different places.
|
||||
|
||||
Use `groff -X -Tps'.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I try to print the output of groff -Tps, I get no output at all
|
||||
from the printer, and the log file shows the error
|
||||
%%[ error: undefined; offendingcommand: BP ]%%
|
||||
I'm using TranScript spooling software.
|
||||
|
||||
This is a bug in the page reversal filter in early versions of
|
||||
TranScript. Change the `broken' parameter in
|
||||
/usr/local/lib/groff/font/devps/DESC to 7.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I preview groff -Tps output using the Sun OpenWindows 2.0
|
||||
pageview program, all the pages are displayed on top of each other.
|
||||
|
||||
This is a defect in pageview. Change the `broken' parameter in
|
||||
/usr/local/lib/groff/font/devps/DESC to 2.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* With groff -TX75, -TX100 or -X, I can only view the first page.
|
||||
|
||||
The left mouse button brings up a menu that allows you to view other
|
||||
pages.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When I print the output of groff -Tdvi, I just get a black dot in
|
||||
upper left corner.
|
||||
|
||||
Some dvi drivers (notably early versions of xtex) do not correctly
|
||||
handle dvi files that use a resolution different from that used by dvi
|
||||
files produced by TeX. Try getting a more up to date driver.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* How can I use groff with an old LaserJet printer that doesn't work
|
||||
with groff -Tlj4?
|
||||
|
||||
You have at least 3 options:
|
||||
|
||||
- use groff -Tps with GNU Ghostscript;
|
||||
|
||||
- use groff -Tdvi with a TeX .dvi to Laserjet driver;
|
||||
|
||||
- use groff with the LaserJet driver in Chris Lewis' psroff package
|
||||
(available for ftp from:
|
||||
ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* Groff seems to generate level 3 Postscript, but my printer is only a
|
||||
level 1 or 2 PostScript printer.
|
||||
|
||||
In fact groff generates only level 2 PostScript (or rather level 1
|
||||
with some extensions; see grops(1) for more information how to disable
|
||||
them). The `%!PS-Adobe-3.0' comment at the beginning of PostScript
|
||||
output generated by groff indicates that the file conforms to
|
||||
version 3.0 of the Adobe Document Structuring Conventions. The output
|
||||
generated by groff should be printable on any PostScript printer.
|
||||
Problems with groff output's not printing are most often caused by the
|
||||
spooling system.
|
||||
|
||||
|
||||
|
||||
Platform-Dependent Macro Problems
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
* I get lots of errors when I use groff with the AT&T -mm macros.
|
||||
|
||||
Use the groff -mm macros.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* groff produces wrapper macros for `ms' and friends which call the
|
||||
system's original macros. Then, to get groff's ms macro package I
|
||||
have to use `-mgs' instead `-ms'. Can I avoid this?
|
||||
|
||||
Yes. Configure and compile groff as usual, but install it with
|
||||
|
||||
make install tmac_wrap=""
|
||||
|
||||
Then no wrapper files are produced, and `-ms' will use groff's `ms'
|
||||
macros.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
|
||||
|
||||
Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and
|
||||
either put `.cp 1' at the beginning or filter it (and any files it
|
||||
.so's) through tmac/fixmacros.sed.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get errors using the Unix -ms macros with groff -e -C.
|
||||
|
||||
Apply this change:
|
||||
|
||||
*** /usr/lib/ms/ms.eqn Tue Apr 25 02:14:28 1989
|
||||
--- ms.eqn Sun Nov 11 10:33:59 1990
|
||||
***************
|
||||
*** 22,29 ****
|
||||
..
|
||||
. \" EN - end of a displayed equation
|
||||
.de EN
|
||||
! .if !\\*(10 .br
|
||||
.di
|
||||
.rm EZ
|
||||
.nr ZN \\n(dn
|
||||
.if \\n(ZN>0 .if \\n(YE=0 .LP
|
||||
--- 22,30 ----
|
||||
..
|
||||
. \" EN - end of a displayed equation
|
||||
.de EN
|
||||
! .if \\n(.k>0 .br
|
||||
.di
|
||||
+ .ds 10 \\*(EZ\\
|
||||
.rm EZ
|
||||
.nr ZN \\n(dn
|
||||
.if \\n(ZN>0 .if \\n(YE=0 .LP
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I'm having problems formatting Ultrix man pages with groff -man.
|
||||
|
||||
The Ultrix man pages use a number of non-standard extensions to the
|
||||
Unix man macros. One solution is to use the Ultrix -man macros with
|
||||
groff. Copy /usr/lib/tmac/tmac.an to
|
||||
/usr/local/share/groff/site-tmac/an.tmac and apply the following patch
|
||||
(from Frank Wortner):
|
||||
|
||||
*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992
|
||||
--- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992
|
||||
***************
|
||||
*** 489,495 ****
|
||||
. \" make special case of shift out of italic
|
||||
.de }S
|
||||
.ds ]F
|
||||
! .if \\$12 .if !\\$5 .ds ]F \^
|
||||
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
|
||||
.el \\$3
|
||||
.}f
|
||||
--- 489,495 ----
|
||||
. \" make special case of shift out of italic
|
||||
.de }S
|
||||
.ds ]F
|
||||
! .if \\$12 .if !\\$5 .ds ]F\^
|
||||
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
|
||||
.el \\$3
|
||||
.}f
|
||||
|
||||
Another possible solution is to install tmac/man.ultrix as
|
||||
/usr/local/share/groff/site-tmac/man.local.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* On an SGI system, how can I make the man command use groff?
|
||||
|
||||
From David Hinds <dhinds@allegro.stanford.edu> (some of these steps
|
||||
are unnecessary if you install with the `g' Makefile variable defined
|
||||
as empty):
|
||||
|
||||
Create a script called 'eqn':
|
||||
|
||||
> #! /bin/sh
|
||||
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
|
||||
> geqn $*
|
||||
|
||||
and a script called 'neqn':
|
||||
|
||||
> #! /bin/sh
|
||||
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
|
||||
> geqn -Tascii $*
|
||||
|
||||
and do:
|
||||
|
||||
> ln -s gnroff nroff
|
||||
|
||||
and edit the end of the gnroff script to be:
|
||||
|
||||
> rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
||||
> exec groff -Wall -mtty-char $T $opts $rest
|
||||
|
||||
To get PostScript output from 'man -t', you also need to create a
|
||||
'psroff' script similar to 'nroff'. Here are the context diffs:
|
||||
|
||||
*** /usr/local/bin/nroff Sat Feb 13 15:51:09 1993
|
||||
--- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993
|
||||
***************
|
||||
*** 1,8 ****
|
||||
#! /bin/sh
|
||||
! # Emulate nroff with groff.
|
||||
|
||||
prog="$0"
|
||||
! T=-Tascii
|
||||
opts=
|
||||
|
||||
for i
|
||||
--- 1,8 ----
|
||||
#! /bin/sh
|
||||
! # Emulate psroff with groff.
|
||||
|
||||
prog="$0"
|
||||
! T=-Tps
|
||||
opts=
|
||||
|
||||
for i
|
||||
***************
|
||||
*** 25,30 ****
|
||||
--- 25,33 ----
|
||||
-Tascii|-Tlatin1)
|
||||
T=$1
|
||||
;;
|
||||
+ -t)
|
||||
+ # ignore -- default is send to stdout
|
||||
+ ;;
|
||||
-T*)
|
||||
# ignore other devices
|
||||
;;
|
||||
***************
|
||||
*** 49,53 ****
|
||||
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
||||
|
||||
# This shell script is intended for use with man, so warnings are
|
||||
# probably not wanted. Also load nroff-style character definitions.
|
||||
! exec groff -Wall -mtty-char $T $opts $rest
|
||||
--- 52,56 ----
|
||||
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
|
||||
|
||||
# This shell script is intended for use with man, so warnings are
|
||||
! # probably not wanted.
|
||||
! exec groff -Wall $T $opts $rest
|
||||
|
||||
|
||||
|
||||
Compilation Problems
|
||||
====================
|
||||
|
||||
|
||||
|
||||
* Compilation dies with
|
||||
|
||||
y.tab.c: In function `int yyparse()':
|
||||
y.tab.c: `size_t' undeclared in namespace `std'
|
||||
|
||||
* bison reports conflicts (either on stderr or in the `pic.output'
|
||||
file) while processing `pic.y', and the produced pic binary doesn't
|
||||
work at all.
|
||||
|
||||
You need bison version 1.875b or greater. Alternatively, use yacc or
|
||||
byacc.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* There are many empty `Makefile.dep' files. Is this a bug?
|
||||
|
||||
No. Real dependency files are created with a `make depend' call.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* On HP-UX, the compiler complains about missing symbol `alloca'.
|
||||
|
||||
Say
|
||||
|
||||
export LDFLAGS=-lPW
|
||||
|
||||
before starting the configure script.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* The configure script fails on OS/390 (z/OS) Unix.
|
||||
|
||||
[This has been fixed in z/OS V1R3 (aka OS/390 R13).]
|
||||
|
||||
There is a bug in the Language Environment (LE) whereby the test
|
||||
program for static destructors fails. You will see the message
|
||||
`configure: error: a working C++ compiler is required'
|
||||
|
||||
Applying PTF UQ42006 is supposed to fix this, but the test program is
|
||||
still returning the wrong value (1). To work around this problem, you
|
||||
can comment out the following in the configure script (near line 2029).
|
||||
This will effectively bypass the test (static constructors and
|
||||
destructors do actually work properly):
|
||||
|
||||
#if { (eval echo "$as_me:2029: \"$ac_link\"") >&5
|
||||
# (eval $ac_link) 2>&5
|
||||
# ac_status=$?
|
||||
# echo "$as_me:2032: \$? = $ac_status" >&5
|
||||
# (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
# { (eval echo "$as_me:2034: \"$ac_try\"") >&5
|
||||
# (eval $ac_try) 2>&5
|
||||
# ac_status=$?
|
||||
# echo "$as_me:2037: \$? = $ac_status" >&5
|
||||
# (exit $ac_status); }; }; then
|
||||
# echo "$as_me:2039: result: yes" >&5
|
||||
#echo "${ECHO_T}yes" >&6
|
||||
#else
|
||||
# echo "$as_me: program exited with status $ac_status" >&5
|
||||
#echo "$as_me: failed program was:" >&5
|
||||
#cat conftest.$ac_ext >&5
|
||||
#echo "$as_me:2045: result: no" >&5
|
||||
#echo "${ECHO_T}no" >&6;{ { echo "$as_me:2046: error: a working C++ compiler is required" >&5
|
||||
#echo "$as_me: error: a working C++ compiler is required" >&2;}
|
||||
# { (exit 1); exit 1; }; }
|
||||
#fi
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get errors when I try to compile groff with DEC C++.
|
||||
|
||||
Fix the declaration of write() in <unistd.h> so that the second
|
||||
argument is a const char *. Fix the declaration of open() in
|
||||
<sys/file.h> so that the first argument is a const char *.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* On a host using Unix make (e.g. Solaris), if you are compiling for
|
||||
multiple architectures by building in a subdirectory, the make stops
|
||||
with a message like this:
|
||||
|
||||
make: Fatal error: Don't know how to make target `assert.o'
|
||||
|
||||
or like this:
|
||||
|
||||
make: Fatal error: Can't find /u/src/groff/src/include/Makefile.sub': No such file or directory
|
||||
|
||||
This occurs because GNU make and Unix make handle VPATH differently,
|
||||
and the groff build relies on GNU make's VPATH handling.
|
||||
|
||||
Use GNU make <http://www.gnu.org/software/make/> to work around this.
|
||||
In Solaris 8 and 9, GNU make is on the Software Companion CD in
|
||||
package SFWgmake and is installed as /opt/sfw/bin/gmake. Prebuilt
|
||||
versions of GNU make for Solaris are also available from
|
||||
sunfreeware.com.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* On Ultrix, the make program stops with the message
|
||||
|
||||
*** Error code 1
|
||||
|
||||
Stop.
|
||||
|
||||
for no apparent reason.
|
||||
|
||||
Use GNU make.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I'm having problems compiling groff on 386BSD 0.1.
|
||||
|
||||
If you're using ash as /bin/sh, you'll need the following patch.
|
||||
|
||||
*** gendef.sh.org Sun Jun 30 13:30:36 1991
|
||||
--- gendef.sh Sun Feb 28 10:23:49 1993
|
||||
***************
|
||||
*** 3,9 ****
|
||||
file=$1
|
||||
shift
|
||||
|
||||
! defs="#define $1"
|
||||
shift
|
||||
for def
|
||||
do
|
||||
--- 3,10 ----
|
||||
file=$1
|
||||
shift
|
||||
|
||||
! x=$1
|
||||
! defs="#define $x"
|
||||
shift
|
||||
for def
|
||||
do
|
||||
|
||||
You'll also need to change dirnamemax.c so that it doesn't use
|
||||
pathconf().
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* While compiling on Xenix, ranlib libgroff.a fails.
|
||||
|
||||
The system ranlib can't handle externals longer than 40 characters.
|
||||
Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1
|
||||
instead.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get errors when I try to compile groff with Sun C++ version 3 or
|
||||
earlier.
|
||||
|
||||
Groff requires header files that are moderately compatible with AT&T
|
||||
C++ and ANSI C. With some versions of Sun C++, the supplied header
|
||||
files need some of the following changes to meet this requirement:
|
||||
<string.h> must declare the mem* functions, (just add `#include
|
||||
<memory.h>' to <string.h>); the first argument to fopen and freopen
|
||||
should be declared as `const char *'; the first argument to fread
|
||||
should be declared as `void *'; the first argument to fwrite should be
|
||||
declared as `const void *'; malloc should be declared to return
|
||||
`void *'; in <alloca.h>, the declaration `extern "C" { void
|
||||
*__builtin_alloca(int); }' should be added; in <sys/signal.h> the
|
||||
return type and the second argument type of signal() should be changed
|
||||
to be `void (*)(int)'.
|
||||
|
||||
You can either change them in place, or copy them to some other
|
||||
directory and include that directory with a -I option.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get errors when I try to compile groff with Forte Development 6
|
||||
or 6u1, or Sun C++ version 5.0 through 5.2.
|
||||
|
||||
This is a known problem; see Sun bug #4301919. See Sun patches
|
||||
109482, 109490, 109508, and 109509 for fixes.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get warnings from the Sun linker while using gcc 3.4.0:
|
||||
|
||||
ld: warning: relocation error: R_SPARC_UA32:
|
||||
file groff/src/libs/libgroff/libgroff.a(getopt.o): symbol optarg:
|
||||
external symbolic relocation against non-allocatable
|
||||
section .debug_info; cannot be processed at runtime:
|
||||
relocation ignored
|
||||
|
||||
This seems to be a known problem (Sun bugs #4910101 and #4910810,
|
||||
filed in September 2003; gcc bug #15599, filed May 2004) without a
|
||||
public fix as of this writing. A work-around is to use option
|
||||
`-gstabs+' instead of `-g' (and a high probability that the output is
|
||||
only debuggable with gdb but not with Sun's debuggers).
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* I get lots of `numeric overflow' error messages whenever I run
|
||||
groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.
|
||||
|
||||
Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level
|
||||
Makefile. If that doesn't solve the problem, define INT_MIN as
|
||||
-INT_MAX in libgroff/lib.h.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* When compiling on MacOS X, groff compiles but does not run well,
|
||||
especially `eqn', causing many `can't break line' messages.
|
||||
|
||||
Use ./configure CXX=g++2 then make as usual.
|
14
PROJECTS
Normal file
14
PROJECTS
Normal file
@ -0,0 +1,14 @@
|
||||
Here are some things that would be useful additions to groff:
|
||||
|
||||
ideal preprocessor
|
||||
|
||||
-mv macros (for typesetting viewgraphs and slides)
|
||||
|
||||
a deroff that understands long names
|
||||
|
||||
a page-makeup postprocessor and associated macro package
|
||||
(like pm and -mpm)
|
||||
|
||||
If you want to work on one of these, you should probably post to
|
||||
gnu.groff.bug (or send email to bug-groff@gnu.org) to see if anyone else
|
||||
has gotten there first.
|
134
README
Normal file
134
README
Normal file
@ -0,0 +1,134 @@
|
||||
This is the GNU `groff' document formatting system. The version
|
||||
number is given in the file VERSION.
|
||||
|
||||
Included in this release are implementations of `troff', `pic', `eqn',
|
||||
`tbl', `grn', `refer', `-man', `-mdoc', `-mom', and `-ms' macros, and
|
||||
drivers for `PostScript', `TeX dvi' format, `HP LaserJet 4' printers,
|
||||
`Canon CAPSL' printers, `HTML' format (beta status), and
|
||||
typewriter-like devices. Also included is a modified version of the
|
||||
Berkeley `-me' macros, the enhanced version `gxditview' of the X11
|
||||
`xditview' previewer, and an implementation of the `-mm' macros
|
||||
contributed by Joergen Haegg (jh@axis.se).
|
||||
|
||||
See the file `INSTALL' for installation instructions. You will
|
||||
require a C++ compiler.
|
||||
|
||||
The file `NEWS' describes recent user-visible changes to `groff'.
|
||||
|
||||
`groff' is free software. See the file `COPYING' for copying
|
||||
permission.
|
||||
|
||||
The file `PROBLEMS' describes various problems that have been
|
||||
encountered in compiling, installing, and running `groff'.
|
||||
|
||||
The most recent released version of `groff' is always available by
|
||||
anonymous ftp from `ftp.gnu.org' in the directory `gnu/groff'.
|
||||
|
||||
The current development version of `groff' is available from a `CVS'
|
||||
repository. You can access it by first selecting a parent directory
|
||||
in which to create a working copy (call it, say, `~/cvswork'), and
|
||||
then executing the commands
|
||||
|
||||
cd ~/cvswork
|
||||
CVS_RSH=ssh; export CVS_RSH
|
||||
cvs -d:ext:anoncvs@savannah.gnu.org/cvsroot/groff -z5 co groff
|
||||
|
||||
(Note that you need an `ssh' client for security reasons.)
|
||||
|
||||
This will create a subdirectory, `~/cvswork/groff', with a "checked
|
||||
out" copy of the `CVS' repository. An update of this working copy may
|
||||
be achieved, at any later time by invoking the commands
|
||||
|
||||
cd ~/cvswork/groff
|
||||
CVS_RSH=ssh cvs -z5 update -dP
|
||||
|
||||
Please read the `CVS' info pages for further details.
|
||||
|
||||
Finally, it is possible to access the `CVS' with a web browser by
|
||||
pointing it to
|
||||
|
||||
http://savannah.gnu.org/cvs/?group=groff
|
||||
|
||||
Alternatively, you can download snapshots (which are updated twice a day).
|
||||
The complete `groff' source as a single file is available at
|
||||
|
||||
http://groff.ffii.org/groff/devel/groff-current.tar.gz
|
||||
|
||||
A diff file relative to `groff-<version>', the latest official `groff'
|
||||
release is available at
|
||||
|
||||
http://groff.ffii.org/groff/devel/groff-<version>-current.diff.gz
|
||||
|
||||
Assuming that `groff-<version>.tar.gz' and
|
||||
`groff-<version>-current.diff.gz' are in the same directory, do the
|
||||
following to apply the diff file:
|
||||
|
||||
tar xzvf groff-<version>.tar.gz
|
||||
cd groff-<version>
|
||||
gunzip -c ../groff-<version>-current.diff.gz | patch -p1
|
||||
|
||||
Depending on your requirements, you may need at least some of the
|
||||
following tools to build `groff' directly from its source:
|
||||
|
||||
ghostscript
|
||||
the psutils package
|
||||
the netpbm package
|
||||
texinfo 4.8
|
||||
bison >= 1.875b or byacc
|
||||
|
||||
Note that `texinfo' and `bison' or `byacc' are required only for
|
||||
building from `CVS' sources (either a checked out working copy, or a
|
||||
daily snapshot). They are not required for building from a stable
|
||||
release tarball. Also note that the version numbers stated are the
|
||||
minimum supported. No version of `texinfo' < 4.8 will work, and the
|
||||
original release of `bison' 1.875 is known not to work; you *may* find
|
||||
that `bison' releases < 1.875 will work, but in case of difficulty,
|
||||
please update to a later version *before* posting a bug report.
|
||||
|
||||
For *all* sources, you need ghostscript for creation of either `PDF' or
|
||||
`HTML' output; the `netpbm' and `psutils' packages are required only for
|
||||
`HTML' output. If you don't intend to produce output in either of these
|
||||
formats, then these packages are unnecessary.
|
||||
|
||||
In Linux Debian, the installation of `texinfo' is dangerous. For it
|
||||
creates a file `install-info' that will block the system installation.
|
||||
So the created `/usr/local/bin/install-info' must be renamed.
|
||||
|
||||
The `groff' configure script searches for the X11 headers and
|
||||
libraries `Xaw' and `Xmu'. So the corresponding developer packages of
|
||||
your system must be installed, otherwise `groff' does not install
|
||||
`gxditview' and the `-TX*' devices. In Debian, the developer packages
|
||||
are `libxaw7-dev' and `libxmu-dev'.
|
||||
|
||||
Please report bugs using the form in the file `BUG-REPORT'; the idea of
|
||||
this is to make sure that FSF has all the information it needs to fix
|
||||
the bug. At the very least, read the `BUG-REPORT' form and make sure
|
||||
that you supply all the information that it asks for. Even if you are
|
||||
not sure that something is a bug, report it using `BUG-REPORT': this will
|
||||
enable us to determine whether it really is a bug or not.
|
||||
|
||||
Three mailing lists are available:
|
||||
|
||||
bug-groff@gnu.org for reporting bugs
|
||||
groff@gnu.org for general discussion of groff
|
||||
groff-commit@gnu.org a read-only list showing commitments
|
||||
to the CVS repository
|
||||
|
||||
You can post mails directly to the `bug-groff' list, without subscribing;
|
||||
to post mails to the `groff' list you must subscribe to it.
|
||||
|
||||
To subscribe, send a mail to <list>-request@<domain> (example:
|
||||
groff-request@gnu.org for the `groff' list) with the word `subscribe'
|
||||
in either the subject or body of the email (don't include the quotes).
|
||||
Alternatively, you may subscribe by visiting the web pages at
|
||||
|
||||
http://lists.gnu.org/mailman/listinfo/bug-groff
|
||||
http://lists.gnu.org/mailman/listinfo/groff
|
||||
http://lists.gnu.org/mailman/listinfo/groff-commit
|
||||
|
||||
Each of these web pages also provides a link to a browseable archive of
|
||||
postings to the corresponding mailing list.
|
||||
|
||||
GNU `groff' was written by James Clark <jjc@jclark.com>. It is now
|
||||
maintained by Ted Harding <ted.harding@nessie.mcc.ac.uk> and Werner
|
||||
Lemberg <wl@gnu.org>.
|
277
README.MinGW
Normal file
277
README.MinGW
Normal file
@ -0,0 +1,277 @@
|
||||
README.MinGW
|
||||
============
|
||||
|
||||
Contributed by Keith Marshall (keith.d.marshall@ntlworld.com)
|
||||
|
||||
|
||||
INTRODUCTION
|
||||
------------
|
||||
|
||||
This file provides recommendations for building a Win32 implementation of
|
||||
GNU Groff, using the MinGW port of GCC for Microsoft (TM) Windows-32
|
||||
platforms. It is intended to supplement the standard installation
|
||||
instructions (see file INSTALL); it does not replace them.
|
||||
|
||||
You require both the MinGW implementation of GCC and its supporting MSYS
|
||||
toolkit, which provides a Win-32 implementation of the GNU bash shell, and a
|
||||
few other essential utilities; these may be obtained from
|
||||
|
||||
http://sourceforge.net/projects/mingw
|
||||
|
||||
by following the appropriate download links, where they are available as
|
||||
self-extracting executable installation packages. If installing both from
|
||||
scratch, it is recommended that MinGW is installed first, as the MSYS
|
||||
installer can then automatically set up the proper environment for running
|
||||
MinGW.
|
||||
|
||||
Additionally, if you wish to compile groff with support for its HTML output
|
||||
capability, some additional tools are required as decribed in the section
|
||||
PREREQUISITES FOR HTML OUTPUT later in this file.
|
||||
|
||||
|
||||
BUILDING GROFF WITH MINGW
|
||||
-------------------------
|
||||
|
||||
Assuming that you have obtained the appropriate groff distribution, and that
|
||||
you are already running an MSYS shell, then the configuration, compilation,
|
||||
and installation of groff, using MinGW, is performed in much the same way as
|
||||
it is described in the INSTALL file, which is provided with the groff
|
||||
distribution. The installation steps are summarised below:
|
||||
|
||||
1. Change working directory to any suitable location where you may unpack
|
||||
the groff distribution; you must be authorized for write access.
|
||||
Approximately 30MB of free disk space are needed.
|
||||
|
||||
2. Unpack the groff distribution:
|
||||
|
||||
tar xzf <download-path>/groff-<version>.tar.gz
|
||||
|
||||
This creates a new sub-directory, groff-<version>, containing an image of
|
||||
the groff source tree. You should now change directory, to make this
|
||||
./groff-<version> your working directory.
|
||||
|
||||
3. If you are intending to build groff with support for HTML output, then
|
||||
you must now ensure that the prerequisites described in the later section
|
||||
PREREQUISITES FOR HTML OUTPUT are satisfied, before proceeding to build
|
||||
groff; in particular, please ensure that all required support programs
|
||||
are installed in the current PATH.
|
||||
|
||||
4. You are now ready to configure, build, and install groff. This is
|
||||
accomplished using the conventional procedure, as described in the file
|
||||
INSTALL, i.e.
|
||||
|
||||
./configure --prefix=<win32-install-path> ...
|
||||
make
|
||||
make install
|
||||
|
||||
Please observe the syntax for the configure command, indicated above; the
|
||||
default value for --prefix is not suitable for use with MinGW, so the
|
||||
--prefix=<win32-install-path> option must be specified, where
|
||||
<win32-install-path> is the chosen MS-Windows directory in which the
|
||||
groff application files are to be installed (see the later section
|
||||
entitled CHOOSING AN INSTALLATION PATH). Any other desired configuration
|
||||
options may also be specified, as described in the standard groff
|
||||
installation instructions.
|
||||
|
||||
5. After completing the above, groff should be successfully installed; the
|
||||
build directory is no longer required; it may be simply deleted in its
|
||||
entirety. Alternatively, you may choose to keep it, but to remove all
|
||||
files which can be reproduced later, by repeating the configure, make and
|
||||
make install steps; this is readily accomplished by the command
|
||||
|
||||
make distclean
|
||||
|
||||
|
||||
This completes the installation of groff; please read the final sections of
|
||||
this file, GROFF RUNTIME ENVIRONMENT and CAVEATS AND BUGS, for advice on
|
||||
setting up the runtime environment, and avoiding known runtime problems,
|
||||
before running groff.
|
||||
|
||||
|
||||
CHOOSING AN INSTALLATION PATH
|
||||
-----------------------------
|
||||
|
||||
It may be noted that the above instructions indicate that the ./configure
|
||||
command must be invoked with an argument specifying a preference for
|
||||
--prefix=<win32-install-path>, whereas the standard groff installation
|
||||
instructions indicate that this may be omitted, in which case it defaults to
|
||||
--prefix=/usr/local.
|
||||
|
||||
In the case of building with MinGW, the default behaviour of configure is
|
||||
not appropriate for the following reasons.
|
||||
|
||||
o The MSYS environment creates a virtual UNIX-like file system, with its
|
||||
root mapped to the actual MS-Windows directory where MSYS itself is
|
||||
installed; /usr is also mapped to this MSYS installation directory.
|
||||
|
||||
o All of the MSYS tools, and the MinGW implementation of GCC, refer to files
|
||||
via this virtual file system representation; thus, if the
|
||||
--prefix=<win32-install-path> is not specified when groff is configured,
|
||||
`make install' causes groff to be installed in <MSYS-install-path>/local.
|
||||
|
||||
o groff needs to know its own installation path, so that it can locate its
|
||||
own installed components. This information is compiled in, using the
|
||||
exact form specified with the --prefix=<win32-install-path> option to
|
||||
configure.
|
||||
|
||||
o Knowledge of the MSYS virtual file system is not imparted to groff; it
|
||||
expects the compiled-in path to its components to be a fully qualified
|
||||
MS-Windows path name (although UNIX-style slashes are permitted, and
|
||||
preferred to the MS-Windows style backslashes, to demarcate the directory
|
||||
hierarchy). Thus, when configuring groff, if
|
||||
--prefix=<win32-install-path> is not correctly specified, then the
|
||||
installed groff application looks for its components in /usr/local, and
|
||||
most likely doesn't find them, because they are actually installed in
|
||||
<MSYS-install-path>/local.
|
||||
|
||||
It is actually convenient, but by no means a requirement, to have groff
|
||||
installed in the /usr/local directory of the MSYS virtual file system; this
|
||||
makes it easy to invoke groff from the MSYS shell, since the virtual
|
||||
/usr/local/bin is normally added automatically to the PATH (the default
|
||||
PATH, as set in MSYS's /etc/profile), when MSYS is started.
|
||||
|
||||
In order to install groff into MSYS's /usr/local directory, it is necessary
|
||||
to specify the fully qualified absolute MS-Windows path to this directory,
|
||||
when configuring groff, i.e.
|
||||
|
||||
./configure --prefix=<MSYS-install-path>/local ...
|
||||
|
||||
For example, on a system where MSYS is installed in the MS-Windows directory
|
||||
D:\MSYS\1.0, the MSYS virtual path /usr/local resolves to the absolute
|
||||
MS-Windows native path D:\MSYS\1.0\local (the /usr component of the MSYS
|
||||
virtual path does not appear in the resolved absolute native path name since
|
||||
MSYS maps this directly to the root of the MSYS virtual file system). Thus,
|
||||
the --prefix option should be specified to configure as
|
||||
|
||||
./configure --prefix=D:/MSYS/1.0/local ...
|
||||
|
||||
Note that the backslash characters, which appear in the native MS-Windows
|
||||
form of the path name, are replaced by UNIX-style slashes in the argument to
|
||||
configure; this is the preferred syntax.
|
||||
|
||||
Also note that the MS-Windows device designator (D: in this instance) is
|
||||
prepended to the specified path, in the normal MS-Windows format, and that,
|
||||
since upper and lower case distinctions are ignored in MS-Windows path
|
||||
names, any combination of upper and lower case is acceptable.
|
||||
|
||||
|
||||
PREREQUISITES FOR HTML OUTPUT
|
||||
-----------------------------
|
||||
|
||||
If you intend to use groff for production of HTML output, then there are a
|
||||
few dependencies which must be satisfied. Ideally, these should be resolved
|
||||
before attempting to configure and build groff, since the configuration
|
||||
script does check them.
|
||||
|
||||
In order to produce HTML output, you first require a working implementation
|
||||
of Ghostscript; either the AFPL Ghostscript or the GNU Ghostscript
|
||||
implementation for MS-Windows should be suitable, depending on your
|
||||
licensing preference. It is highly recommended to use version 8.11 or
|
||||
higher due to bugs in older versions. These may be obtained, in the form of
|
||||
self-installing binary packages, by following the download links for the
|
||||
chosen licensing option, from http://sourceforge.net/projects/ghostscript.
|
||||
|
||||
Please note that these packages install the Ghostscript interpreter required
|
||||
by groff in the ./bin subdirectory of the Ghostscript installation
|
||||
directory, with the name gswin32c.exe. However, groff expects this
|
||||
interpreter to be located in the system PATH, with the name gs.exe. Thus,
|
||||
to ensure that groff can correctly locate the Ghostscript interpreter, it is
|
||||
recommended that the file gswin32c.exe should be copied from the Ghostscript
|
||||
installation directory to the MSYS /usr/local/bin directory, where it should
|
||||
be renamed to gs.exe.
|
||||
|
||||
In addition to a working Ghostscript interpreter, you also require several
|
||||
image manipulation utilities, all of which may be scavenged from various
|
||||
packages available from http://sourceforge.net/projects/gnuwin32, and which
|
||||
should be installed in the MSYS /usr/local/bin directory, or any other
|
||||
suitable directory which is specified in the PATH. These additional
|
||||
prerequisites are
|
||||
|
||||
1. from the netpbm-<version>-bin.zip package:
|
||||
|
||||
netpbm.dll
|
||||
pnmcrop.exe
|
||||
pnmcut.exe
|
||||
pnmtopng.exe
|
||||
pnmtops.exe
|
||||
|
||||
2. from the libpng-<version>-bin.zip package:
|
||||
|
||||
libpng.dll
|
||||
|
||||
3. from the zlib-<version>-bin.zip package:
|
||||
|
||||
zlib-1.dll, which must be renamed to zlib.dll
|
||||
|
||||
4. from the psutils-<version>-bin.zip package:
|
||||
|
||||
psselect.exe
|
||||
|
||||
Note that it is not necessary to install the above four packages in their
|
||||
entirety; of course, you may do so if you wish.
|
||||
|
||||
|
||||
GROFF RUNTIME ENVIRONMENT
|
||||
-------------------------
|
||||
|
||||
The runtime environment, provided to groff by MSYS, is essentially the same
|
||||
as would be provided under a UNIX or GNU/Linux operating system; thus, any
|
||||
environment variables which may be used to customize the groff runtime
|
||||
environment have similar effects under MSYS, as they would in UNIX or
|
||||
GNU/Linux, with the exception that any variable specifying a path should
|
||||
adopt the same syntax as a native MS-Windows PATH specification.
|
||||
|
||||
There is, however, one known problem which is associated with the
|
||||
implementation of the MS-Windows file system, and the manner in which the
|
||||
Microsoft runtime library (which is used by the MinGW implementation of GCC)
|
||||
generates names for temporary files. This known problem arises when groff
|
||||
is invoked with a current working directory which refers to a network share,
|
||||
for which the user does not have write access in the root directory, and
|
||||
there is no environment variable set to define a writeable location for
|
||||
creating temporary files. When these conditions arise, groff fails with a
|
||||
`permission denied' error, as soon as it tries to create any temporary file.
|
||||
|
||||
To specify the location for creating temporary files, the standard UNIX or
|
||||
GNU/Linux implementation of groff provides the GROFF_TMPDIR or TMPDIR
|
||||
environment variables, whereas MS-Windows applications generally use TMP or
|
||||
TEMP; furthermore, the MS-Windows implementations of Ghostscript apparently
|
||||
support the use of only TEMP or TMPDIR.
|
||||
|
||||
To avoid problems with creation of temporary files, it is recommended that
|
||||
you ensure that both TMP and TEMP are defined, with identical values, to
|
||||
point to a suitable location for creating temporary files; many MS-Windows
|
||||
boxes have them set already, and groff has been adapted to honour them, when
|
||||
built in accordance with the preceding instructions, using MinGW.
|
||||
|
||||
|
||||
CAVEATS AND BUGS
|
||||
----------------
|
||||
|
||||
There are two known issues, observed when running groff in the MinGW/MSYS
|
||||
environment, which would not affect groff in its native UNIX environment:
|
||||
|
||||
o Running groff with the working directory set to a subdirectory of a
|
||||
network share, where the user does not have write permission in the root
|
||||
directory of the share, causes groff to fail with a `permission denied'
|
||||
exception, if the TMP environment variable is not appropriately defined;
|
||||
it may also be necessary to define the TEMP environment variable, to avoid
|
||||
a similar failure mode, when using the -Thtml output mode of groff. This
|
||||
problem is more fully discussed in the preceding section, GROFF RUNTIME
|
||||
ENVIRONMENT.
|
||||
|
||||
o When running groff (or nroff) to process standard input, where the
|
||||
standard input stream is obtained directly from the RXVT console provided
|
||||
with MSYS, groff cannot detect the end-of-file condition for the standard
|
||||
input stream, and hangs. This appears to be caused by a fault in the MSYS
|
||||
implementation of RXVT; it may be worked around by either starting MSYS
|
||||
without RXVT (see the comments in the MSYS.BAT startup script); in this
|
||||
case standard input is terminated by typing <Ctrl-Z> followed by <RETURN>,
|
||||
on a new input line. Alternatively, if you prefer to use MSYS with RXVT,
|
||||
you can enter the interactive groff command in the form
|
||||
|
||||
cat | groff ...
|
||||
|
||||
in which case <Ctrl-D> terminates the standard input stream, in just the
|
||||
same way it does on a UNIX system; the cat executable provided with MSYS
|
||||
does seem to trap the end-of-file condition, and properly signals groff
|
||||
that the input stream has terminated.
|
25
TODO
Normal file
25
TODO
Normal file
@ -0,0 +1,25 @@
|
||||
Unicode input:
|
||||
Making groff 21bit input-clean.
|
||||
|
||||
Make -Tlj4 work with -X.
|
||||
|
||||
Guess man5ext and man7ext variables.
|
||||
|
||||
Provide man.sun implementing .TX.
|
||||
|
||||
Improve GROFF_PRINT macro in aclocal.m4.
|
||||
|
||||
Provide a `check' target.
|
||||
|
||||
Provide a `bindist' target.
|
||||
|
||||
Implement tmac.bib in terms of tmac.s.
|
||||
|
||||
Support long options using GNU getopt.
|
||||
|
||||
Catch the following error in -me:
|
||||
.(z
|
||||
.(l C
|
||||
.)z
|
||||
|
||||
Arrows for next/previous page from R5 xditview.
|
1152
aclocal.m4
vendored
Normal file
1152
aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
346
arch/djgpp/README
Normal file
346
arch/djgpp/README
Normal file
@ -0,0 +1,346 @@
|
||||
This is a port of GNU Groff to DJGPP v2.03 or later.
|
||||
Groff is the GNU version of document formatting tools related to
|
||||
`troff'.
|
||||
|
||||
This README file describes how to build and install Groff on MS-DOS or
|
||||
MS-Windows systems using the DJGPP port of GNU C/C++ compiler and
|
||||
development tools.
|
||||
|
||||
|
||||
I. Installing the pre-compiled binary package
|
||||
------------------------------------------
|
||||
|
||||
1. Unzip the file groNNNb.zip (where NNN is the version number)
|
||||
preserving the directory structure (-d switch to PKUNZIP) from
|
||||
the main DJGPP installation directory. If you will use Groff
|
||||
on Windows 9X or Windows2000, use an unzip program which
|
||||
supports long filenames.
|
||||
|
||||
2. Groff binaries were configured so that they will look for their
|
||||
standard directories under the directory pointed to by the
|
||||
DJDIR environment variable, so it should work automatically if
|
||||
you have DJGPP installed. If you don't have a standard DJGPP
|
||||
installation, set the variable DJDIR to point to the directory
|
||||
where you unzip Groff. In this latter case, you will need to
|
||||
set additional environment variables:
|
||||
|
||||
GROFF_TMAC_PATH=%DJDIR%/share/groff/<version>/tmac:%DJDIR%/share/groff/site-tmac
|
||||
GROFF_TYPESETTER=ascii
|
||||
GROFF_FONT_PATH=%DJDIR%/share/groff/<version>/font
|
||||
|
||||
<version> is something like `1.16.1' or `1.17'.
|
||||
|
||||
In addition, you can set the variable GROFF_TMPDIR to point to
|
||||
a directory where you want Groff to create temporary files it
|
||||
needs for running its jobs (these files are automatically
|
||||
deleted when Groff exits).
|
||||
|
||||
All of those variables are automatically set in the file
|
||||
DJGPP.ENV that is part of the standard DJGPP distribution
|
||||
djdevNNN.zip (where NNN is the DJGPP version number), so you
|
||||
only need to set them manually if you don't have DJGPP
|
||||
installed.
|
||||
|
||||
Note that the GROFF_TYPESETTER variable sets the default Groff
|
||||
device to be `ascii', which is suitable for formatting man
|
||||
pages to be viewed on the terminal. Use the -T switch to
|
||||
generate output for other devices (e.g., -Tps for PostScript).
|
||||
|
||||
3. If your TMPDIR environment variable points to a RAM drive, you
|
||||
might consider changing GROFF_TMPDIR to point to a directory on
|
||||
a real disk drive, especially if you intend to generate
|
||||
PostScript output, because RAM disks are typically small (2-3
|
||||
MBytes) which might be not enough for formatting large
|
||||
documents.
|
||||
|
||||
4. Read the docs. It comes as formatted manual pages called *.1,
|
||||
*.5 and *.7 which unzip into your man/ subdirectory. You
|
||||
can read them with a pager such as GNU Less (recommended, as
|
||||
Less will use colors for bold and underlined text) or with
|
||||
Info (which will remove the bold/underline attributes).
|
||||
Another alternative is to use Emacs built-in man page reader;
|
||||
the DJGPP FAQ lists other possibilities.
|
||||
|
||||
Beginning with version 1.15, Groff comes with an Info manual;
|
||||
type "info -f groff" to read it. The Info manual is still
|
||||
under construction, so some sections are empty.
|
||||
|
||||
If you want to add a Groff entry to the main Info menu in the
|
||||
file DIR, chdir to the `info' subdirectory of the main Groff
|
||||
installation directory and run this command:
|
||||
|
||||
install-info --dir-file=dir groff.info
|
||||
|
||||
After you do that, "info groff" will also work.
|
||||
|
||||
5. For those who only need Groff to format man pages and don't
|
||||
like reading the docs, here's a minimal cookbook:
|
||||
|
||||
groff -man -s foo.1 > foo.man
|
||||
|
||||
where `foo.1' is the troff source of the man page and `foo.man'
|
||||
is the formatted page. If you need to view the man page, say
|
||||
this:
|
||||
|
||||
groff -man -s foo.1 | less
|
||||
|
||||
You can also use the DJGPP clone of the Unix `man' command, in
|
||||
which case `man' runs the above command for you automatically.
|
||||
|
||||
Here's how you print man pages on a PostScript printer:
|
||||
|
||||
groff -man -s -Tps foo.1 > prn
|
||||
|
||||
And this is for a LaserJet4 printer:
|
||||
|
||||
groff -man -s -Tlj4 foo.1 > prn
|
||||
|
||||
Printing the documents produced by Groff is possible either by
|
||||
redirecting Groff's standard output to the local printer
|
||||
device, like shown above, or by using the `-l' switch to Groff.
|
||||
The latter possibility causes Groff to pipe its output to a
|
||||
program whose name and arguments appear in the files named
|
||||
`DESC' in each of the `devFOO' subdirectories of the
|
||||
%DJDIR%/share/groff/<version>/font directory; for example, the
|
||||
file devps/DESC is used by "groff -Tps". The relevant line in
|
||||
these files begins with the word "print".
|
||||
|
||||
As configured, when invoked with the `-l' switch, Groff will
|
||||
call `cat' (from GNU Textutils) to pipe its output to the
|
||||
default printer device for -Tps, -Tlbp and -Tlj4 options, and
|
||||
it will call `dvilj4' (from the dvljNNNb.zip package) for -Tdvi
|
||||
option. If you don't have these programs installed, you can
|
||||
edit the respective `DESC' files to replace these commands with
|
||||
something else. The replacement program must be able to read
|
||||
its standard input and send its output to whatever printer you
|
||||
want. The "print" entry is assumed to be a shell command, so
|
||||
it can use redirection, pipes, and other shell features.
|
||||
|
||||
Beginning with version 1.15, Groff can create HTML output, like
|
||||
this:
|
||||
|
||||
groff -man -s -Thtml foo.1 > foo.html
|
||||
|
||||
Producing HTML files sometimes requires Ghostscript to be
|
||||
installed, and, for gif images, ppmquant and ppmtogif as well.
|
||||
If you do not have these programs installed, Groff will print
|
||||
an error message, and the produced file will have links which
|
||||
will fail to resolve when you view it with a Web browser.
|
||||
|
||||
6. Some programs in the package are supplied as Unix shell
|
||||
scripts. While it is relatively easy to write a DOS batch file
|
||||
which will do the same, DOS doesn't allow to redirect input and
|
||||
output of a batch file. Since Groff tools are meant to be
|
||||
invoked in a pipe, the batch files are not very useful. The
|
||||
batch files are included in the binary distribution
|
||||
nonetheless.
|
||||
|
||||
These scripts need the following utilities to run (in addition
|
||||
to the Groff programs they invoke):
|
||||
|
||||
- bash
|
||||
- gawk
|
||||
- egrep
|
||||
- sed
|
||||
|
||||
The `afmtodit' and `mmroff' utilities are Perl scripts, so you
|
||||
will need a Perl port to run them.
|
||||
|
||||
All of these ports should be available from the DJGPP sites.
|
||||
|
||||
If you need to run these scripts and batch files, you have to
|
||||
install the port of bash (or another Unix-like shell) and the
|
||||
above-mentioned utilities called by the script. Alternatively,
|
||||
just look inside the shell script and invoke the programs it
|
||||
calls manually.
|
||||
|
||||
To run the scripts with redirection, invoke them via the shell,
|
||||
like this: "sh mmroff > foo".
|
||||
|
||||
7. Note that Groff programs use floating point, so you will need
|
||||
an FP emulator if your machine doesn't have an FPU. The binary
|
||||
distribution includes the emulator, in case you don't have the
|
||||
DJGPP development environment installed. Please refer to the
|
||||
DJGPP FAQ list in case you have any problems with the emulator.
|
||||
|
||||
8. The package does not include the directories under
|
||||
share/groff/<version>/font whose names begin with "devX": these
|
||||
are needed on X-Windows for running the gxditview program, which
|
||||
is not supported by this port.
|
||||
|
||||
9. Due to 8+3 limitations of DOS filesystems, several files were
|
||||
renamed:
|
||||
|
||||
- groff_mdoc.samples.7 was renamed to groff-mdoc_samples.7
|
||||
and groff_mmse.7 to groff-mmse.7. The latter was also
|
||||
converted from Latin-1 encoding to codepage 437.
|
||||
|
||||
|
||||
|
||||
II. Building Groff from sources
|
||||
---------------------------
|
||||
|
||||
1. To build Groff, you will need the following tools (the file
|
||||
name in parentheses is what you need to download from one of
|
||||
the DJGPP sites):
|
||||
|
||||
- Standard DJGPP development environment (djdev203.zip)
|
||||
- GNU C compiler (gcc2721b.zip)
|
||||
- GNU C++ compiler (gpp2721b.zip)
|
||||
- GNU Make 3.79 (mak379b.zip)
|
||||
- Bash v2.03 (bsh203b.zip)
|
||||
- Fileutils 3.16 (fil316b.zip)
|
||||
- Textutils 2.0 (txt20b.zip)
|
||||
- Sh-utils 1.12 (shl112b.zip)
|
||||
- Sed 3.02 (sed302b.zip)
|
||||
- Gawk 3.04 (gwk304b.zip)
|
||||
- Grep 2.4 (grep24b.zip)
|
||||
- Bison (only if you change one of the *.y files)
|
||||
|
||||
Note that you don't need to install libg++ (lgpNNNb.zip) since
|
||||
Groff doesn't use any C++ classes except its own.
|
||||
|
||||
Any versions of the utilities later than what's mentioned above
|
||||
should also do; in particular, GCC 2.95.2 was tested and Groff
|
||||
built okay with it. Versions older than in the above list
|
||||
might also work, but I don't guarantee that; you are on your
|
||||
own.
|
||||
|
||||
Special considerations apply if you have GCC 2.8.1 installed,
|
||||
and cannot upgrade to a later version. See paragraph 4 below.
|
||||
|
||||
After you install these tools, make sure you have a ``symlink''
|
||||
to bash.exe called sh.exe and a ``symlink'' to gawk.exe called
|
||||
awk.exe. If not, go to the DJGPP bin/ subdirectory and type
|
||||
the following words of wisdom from the DOS prompt:
|
||||
|
||||
ln -s bash.exe sh.exe
|
||||
ln -s gawk.exe awk.exe
|
||||
|
||||
(`ln' is part of GNU Fileutils, see above.)
|
||||
|
||||
2. Unzip the source distribution groXYZs.zip (where XYZ is the
|
||||
version number) preserving the directory structure (-d switch
|
||||
to PKUNZIP) from the main DJGPP installation directory. (If
|
||||
you are building Groff on Windows 9X or Windows 2000, use an
|
||||
unzip program which supports long filenames.) This creates
|
||||
directory gnu/groff-X.YZ and unzips the sources there.
|
||||
|
||||
If you are building from the official GNU distribution, unpack
|
||||
the .tar.gz archive like this:
|
||||
|
||||
djtar -x groff-X.YZ.tar.gz
|
||||
|
||||
(DJTAR is part of the standard DJGPP development distribution.)
|
||||
|
||||
3. Groff sources on DJGPP sites are already configured for the
|
||||
current version of DJGPP. If that is the version you have,
|
||||
then you can just chdir to gnu/groff-X.YZ and say "make" to
|
||||
build the entire package (if you have GCC 2.8.1, see the next
|
||||
paragraph).
|
||||
|
||||
If you have version of DJGPP other than the current one, or if
|
||||
you build the official GNU distribution, or if you prefer to
|
||||
configure the package so that it defaults to the directory
|
||||
structure on your machine, or need to change some options
|
||||
(e.g., compile with different optimization options), you will
|
||||
have to reconfigure Groff. To this end, use the CONFIG.BAT
|
||||
batch file in the DJGPP subdirectory:
|
||||
|
||||
arch\djgpp\config
|
||||
|
||||
You can configure and build Groff from outside its source
|
||||
directory. In that case, you need to pass the full path to the
|
||||
source directory as an argument to CONFIG.BAT, like this:
|
||||
|
||||
d:\gnu\groff-1.16\arch\djgpp\config d:/gnu/groff-1.16
|
||||
|
||||
Note that you MUST use forward slashes in the path you pass to
|
||||
CONFIG.BAT, or else it may fail. (For versions of Groff other
|
||||
than 1.16, change the above command accordingly.)
|
||||
|
||||
4. If your version of GCC is 2.8.1, you cannot build the
|
||||
preconfigured package without some tinkering. The DJGPP port
|
||||
of GCC 2.8.1 had a bug in its C++ configuration, whereby the
|
||||
file _G_config.h erroneously indicated that the header
|
||||
<sys/socket.h> is available, and also undefined the symbol
|
||||
NULL. This causes several files in the Groff distribution to
|
||||
fail to compile.
|
||||
|
||||
The easiest way to solve this is to upgrade to a later version
|
||||
of GCC; then you can simply say "make" to build the
|
||||
preconfigured package. If this is not an option, you will have
|
||||
to edit the file lang/cxx/_G_config.h and change this line:
|
||||
|
||||
#define _G_HAVE_SYS_SOCKET 1
|
||||
|
||||
to say this instead:
|
||||
|
||||
#define _G_HAVE_SYS_SOCKET 0
|
||||
|
||||
The problem with redefining NULL should not happen with DJGPP
|
||||
v2.03 or later. But if you still see compilation errors which
|
||||
say "`NULL' undeclared", comment out the line in _G_config.h
|
||||
that says this:
|
||||
|
||||
#undef NULL
|
||||
|
||||
Alternatively, you can reconfigure the package as described in
|
||||
the previous paragraph, before building it.
|
||||
|
||||
5. After the configure script exits, say "make" to build Groff.
|
||||
Groff is a large package, and it might take a few minutes to
|
||||
build, depending on your CPU, so you might as well go for a
|
||||
coffee while it grinds away.
|
||||
|
||||
6. Test the package that you have built. A batch file T-GROFF.BAT
|
||||
in the DJGPP subdirectory is supplied for that purpose. Most
|
||||
of the commands there are commented out, since I cannot
|
||||
possibly know what kind of printer do you have and which
|
||||
additional programs, such as Less, do you have installed. The
|
||||
only command that runs by default will format a large document
|
||||
and print it to the screen. Read the comments in the batch
|
||||
file, uncomment additional lines as you see fit and run the
|
||||
batch file to see that you get the document printed as you'd
|
||||
expect. (Btw, the document that the batch file prints is an
|
||||
introduction to the entire Groff package, so you might as well
|
||||
read it to make yourself familiar with the programs.)
|
||||
|
||||
Note that the batch file sets a lot of environment variables;
|
||||
if you get ``Out of environment space'' messages, launch a
|
||||
subsidiary COMMAND.COM with plenty of environment space, like
|
||||
so:
|
||||
|
||||
command.com /e:3000
|
||||
|
||||
then invoke T-GROFF.BAT from that COMMAND.COM.
|
||||
|
||||
7. Install the package by typing "make install". This will copy
|
||||
all the binaries, the auxiliary files (fonts, macros, etc.) and
|
||||
the docs into their places. If you configured the package for
|
||||
your system, these are precisely the directories where the
|
||||
files should remain (with the exception of the man pages, see
|
||||
below). If you use the default configuration, the files will
|
||||
be installed under the top DJGPP installation directory.
|
||||
|
||||
Alternatively, you could instruct Make explicitly where to
|
||||
install the package by setting the `prefix' variable. For
|
||||
example:
|
||||
|
||||
make install prefix=c:/groff
|
||||
|
||||
"make install" doesn't format the man pages, it just copies
|
||||
them into subdirectories of the %DJDIR%\MAN directory. If you
|
||||
need to keep formatted pages in your man/ subdirectory, you
|
||||
will need to format them. Use the commands shown in chapter I,
|
||||
section 5 above to do that, and redirect its output to the
|
||||
appropriate catN subdirectory. Alternatively, you could format
|
||||
the pages when you need to view them (the DJGPP clone of `man'
|
||||
will automatically format them).
|
||||
|
||||
Consult the installation instructions for pre-compiled binaries
|
||||
above, for more info about installing and using Groff.
|
||||
|
||||
8. You can safely delete the directories under
|
||||
share/groff/<version>/font whose names begin with "devX": these
|
||||
are needed on X-Windows which is not supported by this port.
|
95
arch/djgpp/config.bat
Normal file
95
arch/djgpp/config.bat
Normal file
@ -0,0 +1,95 @@
|
||||
@echo off
|
||||
echo Configuring GNU Groff for DJGPP v2.x...
|
||||
|
||||
Rem The SmallEnv tests protect against fixed and too small size
|
||||
Rem of the environment in stock DOS shell.
|
||||
|
||||
Rem Find out where the sources are
|
||||
set XSRC=.
|
||||
if not "%XSRC%" == "." goto SmallEnv
|
||||
if "%1" == "" goto InPlace
|
||||
set XSRC=%1
|
||||
if not "%XSRC%" == "%1" goto SmallEnv
|
||||
redir -e /dev/null update %XSRC%/configure.orig ./configure
|
||||
if not exist configure update %XSRC%/configure ./configure
|
||||
|
||||
:InPlace
|
||||
Rem Update configuration files
|
||||
echo Updating configuration scripts...
|
||||
if not exist configure.orig update configure configure.orig
|
||||
sed -f %XSRC%/arch/djgpp/config.sed configure.orig > configure
|
||||
if errorlevel 1 goto SedError
|
||||
|
||||
Rem Make sure they have a config.site file
|
||||
set CONFIG_SITE=%XSRC%/arch/djgpp/config.site
|
||||
if not "%CONFIG_SITE%" == "%XSRC%/arch/djgpp/config.site" goto SmallEnv
|
||||
|
||||
Rem This is required because DOS/Windows are case-insensitive
|
||||
Rem to file names, and "make install" will do nothing if Make
|
||||
Rem finds a file called `install'.
|
||||
if exist INSTALL ren INSTALL INSTALL.txt
|
||||
|
||||
Rem Set HOSTNAME so it shows in config.status
|
||||
if not "%HOSTNAME%" == "" goto hostdone
|
||||
if "%windir%" == "" goto msdos
|
||||
set OS=MS-Windows
|
||||
if not "%OS%" == "MS-Windows" goto SmallEnv
|
||||
goto haveos
|
||||
:msdos
|
||||
set OS=MS-DOS
|
||||
if not "%OS%" == "MS-DOS" goto SmallEnv
|
||||
:haveos
|
||||
if not "%USERNAME%" == "" goto haveuname
|
||||
if not "%USER%" == "" goto haveuser
|
||||
echo No USERNAME and no USER found in the environment, using default values
|
||||
set HOSTNAME=Unknown PC
|
||||
if not "%HOSTNAME%" == "Unknown PC" goto SmallEnv
|
||||
:haveuser
|
||||
set HOSTNAME=%USER%'s PC
|
||||
if not "%HOSTNAME%" == "%USER%'s PC" goto SmallEnv
|
||||
goto userdone
|
||||
:haveuname
|
||||
set HOSTNAME=%USERNAME%'s PC
|
||||
if not "%HOSTNAME%" == "%USERNAME%'s PC" goto SmallEnv
|
||||
:userdone
|
||||
set _HOSTNAME=%HOSTNAME%, %OS%
|
||||
if not "%_HOSTNAME%" == "%HOSTNAME%, %OS%" goto SmallEnv
|
||||
set HOSTNAME=%_HOSTNAME%
|
||||
:hostdone
|
||||
set _HOSTNAME=
|
||||
set OS=
|
||||
|
||||
Rem install-sh is required by the configure script but clashes with the
|
||||
Rem various Makefile install-foo targets, so we MUST have it before the
|
||||
Rem script runs and rename it afterwards
|
||||
test -f install-sh
|
||||
if not errorlevel 1 goto noren1
|
||||
test -f install-sh.sh
|
||||
if not errorlevel 1 mv -f install-sh.sh install-sh
|
||||
:noren1
|
||||
echo Running the ./configure script...
|
||||
sh ./configure --src=%XSRC% --disable-nls --without-x
|
||||
if errorlevel 1 goto CfgError
|
||||
test -f install-sh.sh
|
||||
if not errorlevel 1 goto noren2
|
||||
test -f install-sh
|
||||
if not errorlevel 1 mv -f install-sh install-sh.sh
|
||||
:noren2
|
||||
echo Done.
|
||||
goto End
|
||||
|
||||
:SedError
|
||||
echo ./configure script editing failed!
|
||||
goto End
|
||||
|
||||
:CfgError
|
||||
echo ./configure script exited abnormally!
|
||||
goto End
|
||||
|
||||
:SmallEnv
|
||||
echo Your environment size is too small. Enlarge it and run me again.
|
||||
echo Configuration NOT done!
|
||||
:End
|
||||
set XSRC=
|
||||
set CONFIG_SITE=
|
||||
set HOSTNAME=
|
16
arch/djgpp/config.sed
Normal file
16
arch/djgpp/config.sed
Normal file
@ -0,0 +1,16 @@
|
||||
# Additional editing of Makefiles and atconfig
|
||||
/ac_given_INSTALL=/,/^CEOF/ {
|
||||
/^s%@g@%/a\
|
||||
/path=/s,:,;,g
|
||||
}
|
||||
|
||||
# DOS-style absolute file names should be supported as well
|
||||
/\*) srcdir=/s,/\*,[\\\\/]* | [A-z]:[\\\\/]*,
|
||||
/\$]\*) INSTALL=/s,\[/\$\]\*,[\\\\/$]* | [A-z]:[\\\\/]*,
|
||||
|
||||
# Who said each line has only \012 at its end?
|
||||
/DEFS=`sed -f/s,'\\012','\\012\\015',
|
||||
|
||||
# Switch the order of the two Sed commands, since DOS path names
|
||||
# could include a colon
|
||||
/ac_file_inputs=/s,\( -e "s%\^%\$ac_given_srcdir/%"\)\( -e "s%:% $ac_given_srcdir/%g"\),\2\1,
|
33
arch/djgpp/config.site
Normal file
33
arch/djgpp/config.site
Normal file
@ -0,0 +1,33 @@
|
||||
#! /bin/sh
|
||||
|
||||
# This is the config.site file for configuring GNU packages
|
||||
# which are to be built with DJGPP tools.
|
||||
|
||||
# These two variables are required, otherwise looking for
|
||||
# programs along the PATH will not work.
|
||||
PATH_SEPARATOR=:
|
||||
PATH_EXPAND=y
|
||||
|
||||
# This is required in for "test -f foo" to find foo.exe
|
||||
export TEST_FINDS_EXE=y
|
||||
|
||||
# The root of the DJGPP tree serves as the default prefix
|
||||
test "x$prefix" = xNONE && prefix='/dev/env/DJDIR'
|
||||
|
||||
# This is required for config.status script to be run, since
|
||||
# ./configure runs it by invoking ${CONFIG_SHELL-/bin/sh}
|
||||
CONFIG_SHELL=${CONFIG_SHELL='sh'}
|
||||
|
||||
# These are set here so the generated Makefile's will be good
|
||||
# for every DJGPP installation, not only the one where the
|
||||
# package was configured.
|
||||
# $INSTALL must be an absolute path name, otherwise config.status
|
||||
# will try to prepend ./ and ../ to it when it goes into subdirs.
|
||||
INSTALL=${INSTALL='/dev/env/DJDIR/bin/ginstall -c'}
|
||||
RANLIB=${RANLIB='ranlib'}
|
||||
LPR=${LPR='cat >>PRN'}
|
||||
DVIPRINT=${DVIPRINT='dvilj4 - >>PRN'}
|
||||
PERLPATH=${PERLPATH='/usr/bin/perl'}
|
||||
|
||||
# Force `cp' to be used instead of "ln -s".
|
||||
ac_cv_prog_LN_S="cp -p"
|
64
arch/djgpp/t-groff.bat
Normal file
64
arch/djgpp/t-groff.bat
Normal file
@ -0,0 +1,64 @@
|
||||
@echo off
|
||||
Rem This script runs groff without requiring that it be installed.
|
||||
Rem The current directory must be the build directory.
|
||||
|
||||
test -d ./src/roff/groff
|
||||
if not errorlevel 1 goto dirOk
|
||||
echo this batch file must be run with the build directory as the current directory
|
||||
goto end
|
||||
:dirOk
|
||||
test -x ./src/roff/groff/groff
|
||||
if not errorlevel 1 goto groffOk
|
||||
echo this batch file must be run with the build directory as the current directory
|
||||
goto end
|
||||
:groffOk
|
||||
Rem chdir to src, to avoid overflowing the DOS limits with a long PATH.
|
||||
cd src
|
||||
set GROFF_FONT_PATH=..;../font
|
||||
set GROFF_TMAC_PATH=../tmac
|
||||
set PATH1=%PATH%
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grotty;%PATH1%
|
||||
Rem
|
||||
echo I will use this command to format a document and print it on the screen:
|
||||
roff\groff\groff -V -e -s -t -p -R -m ttchar -me -Tascii ../doc/meintro.me
|
||||
pause
|
||||
Rem Make the following command pipe to Less if you have Less installed:
|
||||
roff\groff\groff -e -s -t -p -R -m ttchar -me -Tascii ../doc/meintro.me
|
||||
Rem
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grops;%PATH1%
|
||||
echo I will use this command to format a document and print it on PS printer:
|
||||
roff\groff\groff -V -e -s -t -p -R -me -Tps ../doc/meintro.me
|
||||
pause
|
||||
Rem Uncomment the following command if you have a PostScript printer:
|
||||
REM roff\groff\groff -e -s -t -p -R -me -Tps ../doc/meintro.me >>prn
|
||||
Rem
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grolj4;%PATH1%
|
||||
echo I will use this command to format a document and print it on LJ4 printer:
|
||||
roff\groff\groff -V -e -s -t -p -R -me -Tlj4 ../doc/meintro.me
|
||||
pause
|
||||
Rem Uncomment the following command if you have a LaserJet4 printer:
|
||||
REM roff\groff\groff -e -s -t -p -R -me -Tlj4 ../doc/meintro.me >>prn
|
||||
Rem
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grodvi;%PATH1%
|
||||
echo I will use this command to format a document into a DVI format:
|
||||
roff\groff\groff -V -e -s -t -p -R -me -Tdvi ../doc/meintro.me
|
||||
pause
|
||||
roff\groff\groff -e -s -t -p -R -me -Tdvi ../doc/meintro.me > meintro.dvi
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grohtml;%PATH1%
|
||||
echo I will use this command to format a document into HTML format:
|
||||
roff\groff\groff -V -e -s -t -p -R -me -Thtml ../doc/meintro.me
|
||||
pause
|
||||
roff\groff\groff -e -s -t -p -R -me -Thtml ../doc/meintro.me > meintro.html
|
||||
set PATH=roff\troff;preproc\pic;preproc\eqn;preproc\tbl;preproc\grn;preproc\refer;preproc\soelim;devices\grolbp;%PATH1%
|
||||
echo I will use this command to format a document and print it on an LBP printer:
|
||||
roff\groff\groff -V -e -s -t -p -R -me -Tlbp ../doc/meintro.me
|
||||
pause
|
||||
Rem Uncomment the following if you have a Canon CAPSL LBP-4 or LBP-8 printer:
|
||||
REM roff\groff\groff -e -s -t -p -R -me -Tlbp ../doc/meintro.me >>prn
|
||||
Rem
|
||||
set PATH=%PATH1%
|
||||
set GROFF_FONT_PATH=
|
||||
set GROFF_TMAC_PATH=
|
||||
set PATH1=
|
||||
cd ..
|
||||
:exit
|
27
arch/misc/Makefile.sub
Normal file
27
arch/misc/Makefile.sub
Normal file
@ -0,0 +1,27 @@
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Written by Keith Marshall (keith.d.marshall@ntlworld.com)
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
CLEANADD=shdeps.sed
|
||||
|
||||
all: shdeps.sed
|
||||
|
||||
shdeps.sed: $(srcdir)/shdeps.sh
|
||||
$(SHELL) $(srcdir)/shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > $@
|
||||
|
||||
# eof
|
118
arch/misc/shdeps.sh
Normal file
118
arch/misc/shdeps.sh
Normal file
@ -0,0 +1,118 @@
|
||||
#! /bin/sh
|
||||
# shdeps.sh: Generate OS dependency fixups, for `groff' shell scripts
|
||||
#
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
# Written by Keith Marshall (keith.d.marshall@ntlworld.com)
|
||||
#
|
||||
# Invoked only by `make', as:
|
||||
# $(SHELL) shdeps.sh "$(RT_SEP)" "$(SH_SEP)" "$(bindir)" > shdeps.sed
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
cat << ETX
|
||||
# shdeps.sed: Script generated automatically by \`make' -- do not modify!
|
||||
|
||||
/^$/N
|
||||
/@GROFF_BIN_PATH_SETUP@/c\\
|
||||
ETX
|
||||
|
||||
if [ "$1$2" = "::" ]
|
||||
then
|
||||
# `PATH_SEPARATOR' is `:' both at `groff' run time, and in `make',
|
||||
# implying an implementation which is completely POSIX compliant.
|
||||
# Simply apply the `GROFF_BIN_PATH' and `PATH_SEPARATOR' values
|
||||
# determined by `configure', in all cases.
|
||||
|
||||
cat << ETX
|
||||
\\
|
||||
GROFF_RUNTIME="\${GROFF_BIN_PATH=$3}:"
|
||||
/@PATH_SEARCH_SETUP@/d
|
||||
ETX
|
||||
|
||||
else
|
||||
# `PATH_SEPARATOR' is NOT always `:',
|
||||
# which suggests an implementation for a Microsoft platform.
|
||||
# We need to choose the `GROFF_BIN_PATH' format and `PATH_SEPARATOR'
|
||||
# which will suit the user's choice of shell.
|
||||
#
|
||||
# Note that some Windows users may specify the `--prefix' path
|
||||
# using backslash characters, instead of `/', preferred by POSIX,
|
||||
# so we will also fix that up.
|
||||
|
||||
POSIX_BINDIR=`echo $3 | tr '\\\\' /`
|
||||
cat << ETX
|
||||
# (The value required is dependent on the user's choice of shell,\\
|
||||
# and its associated POSIX emulation capabilities.)\\
|
||||
\\
|
||||
case "\$OSTYPE" in\\
|
||||
msys)\\
|
||||
GROFF_RUNTIME=\${GROFF_BIN_PATH="`
|
||||
case "$POSIX_BINDIR" in
|
||||
[a-zA-Z]:*)
|
||||
IFS=':'
|
||||
set -- $POSIX_BINDIR
|
||||
case "$2" in
|
||||
/*) POSIX_BINDIR="/$1$2" ;;
|
||||
*) POSIX_BINDIR="/$1/$2" ;;
|
||||
esac
|
||||
shift 2
|
||||
for dir
|
||||
do
|
||||
POSIX_BINDIR="$POSIX_BINDIR:$dir"
|
||||
done
|
||||
;;
|
||||
esac
|
||||
echo "$POSIX_BINDIR"`"}":" ;;\\
|
||||
cygwin)\\
|
||||
: \${GROFF_BIN_PATH="\`cygpath -w '$POSIX_BINDIR'\`"}\\
|
||||
GROFF_RUNTIME=\`cygpath "\$GROFF_BIN_PATH"\`":" ;;\\
|
||||
*)\\
|
||||
GROFF_RUNTIME=\${GROFF_BIN_PATH="$POSIX_BINDIR"}";" ;;\\
|
||||
esac
|
||||
ETX
|
||||
# On Microsoft platforms, we may also need to configure
|
||||
# the PATH search function, used in the `pdfroff' script,
|
||||
# to use ';', instead of ':', as the PATH_SEPARATOR.
|
||||
|
||||
cat << ETX
|
||||
/@PATH_SEARCH_SETUP@/c\\
|
||||
#\\
|
||||
# This implementation is configured for a Microsoft platform.\\
|
||||
# Thus, the default PATH_SEPARATOR is ';', although some shells may\\
|
||||
# use the POSIX standard ':' instead. Therefore, we need to examine\\
|
||||
# the OSTYPE environment variable, to identify which is appropriate\\
|
||||
# to make PATH searches work correctly.\\
|
||||
#\\
|
||||
case "\$OSTYPE" in\\
|
||||
#\\
|
||||
msys | cygwin)\\
|
||||
#\\
|
||||
# These emulate POSIX, and use ':'\\
|
||||
#\\
|
||||
PATH_SEPARATOR=\${PATH_SEPARATOR-':'} ;;\\
|
||||
#\\
|
||||
*)\\
|
||||
#\\
|
||||
# For anything else, default to ';'\\
|
||||
#\\
|
||||
PATH_SEPARATOR=\${PATH_SEPARATOR-';'} ;;\\
|
||||
esac
|
||||
ETX
|
||||
|
||||
fi
|
||||
|
||||
# eof
|
126
configure.ac
Normal file
126
configure.ac
Normal file
@ -0,0 +1,126 @@
|
||||
# Autoconf configuration file for groff.
|
||||
# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of groff.
|
||||
#
|
||||
# groff is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
# Software Foundation; either version 2, or (at your option) any later
|
||||
# version.
|
||||
#
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
# for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with groff; see the file COPYING. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT
|
||||
AC_PREREQ(2.59)
|
||||
|
||||
AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin])
|
||||
AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp])
|
||||
|
||||
# checks for programs
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
GROFF_CXX_CHECK
|
||||
GROFF_EBCDIC
|
||||
GROFF_OS390
|
||||
GROFF_X11
|
||||
GROFF_APPRESDIR_OPTION
|
||||
GROFF_APPRESDIR_DEFAULT
|
||||
GROFF_PRINT
|
||||
AC_PATH_PROG([PERLPATH], [perl], [/usr/bin/perl])
|
||||
GROFF_PROG_YACC
|
||||
AC_PROG_RANLIB
|
||||
GROFF_INSTALL_SH
|
||||
GROFF_INSTALL_INFO
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
|
||||
# use a dummy substitution if no csh hack is necessary to avoid errors
|
||||
# with non-GNU sed programs
|
||||
GROFF_CSH_HACK([SH_SCRIPT_SED_CMD='1s/.*/:/'], [SH_SCRIPT_SED_CMD='1s/a/a/'])
|
||||
AC_SUBST([SH_SCRIPT_SED_CMD])
|
||||
|
||||
# checks for headers
|
||||
AC_CHECK_HEADERS([stdlib.h unistd.h dirent.h limits.h sys/dir.h \
|
||||
string.h strings.h math.h sys/time.h direct.h process.h])
|
||||
GROFF_ISC_SYSV3
|
||||
GROFF_POSIX
|
||||
|
||||
# checks for header stuff
|
||||
GROFF_SRAND
|
||||
GROFF_NEED_DECLARATION([gettimeofday])
|
||||
GROFF_NEED_DECLARATION([hypot])
|
||||
GROFF_NEED_DECLARATION([popen])
|
||||
GROFF_NEED_DECLARATION([pclose])
|
||||
GROFF_NEED_DECLARATION([putenv])
|
||||
GROFF_NEED_DECLARATION([rand])
|
||||
GROFF_NEED_DECLARATION([snprintf])
|
||||
GROFF_NEED_DECLARATION([srand])
|
||||
GROFF_NEED_DECLARATION([strcasecmp])
|
||||
GROFF_NEED_DECLARATION([strncasecmp])
|
||||
GROFF_NEED_DECLARATION([vfprintf])
|
||||
GROFF_NEED_DECLARATION([vsnprintf])
|
||||
GROFF_SYS_NERR
|
||||
GROFF_SYS_ERRLIST
|
||||
GROFF_OSFCN_H
|
||||
GROFF_LIMITS_H
|
||||
GROFF_INTTYPES_H
|
||||
|
||||
# checks for typedefs
|
||||
GROFF_UNSIGNED_LONG_LONG
|
||||
GROFF_UINTMAX_T
|
||||
GROFF_TIME_T
|
||||
GROFF_TYPE_SIGNAL
|
||||
GROFF_STRUCT_EXCEPTION
|
||||
|
||||
# checks for libraries
|
||||
GROFF_LIBC
|
||||
GROFF_LIBM
|
||||
|
||||
# checks for functions
|
||||
AC_FUNC_MMAP
|
||||
saved_libs="$LIBS"
|
||||
LIBS="$LIBS $LIBC $LIBM"
|
||||
AC_REPLACE_FUNCS([fmod getcwd putenv snprintf strcasecmp \
|
||||
strerror strncasecmp strtol])
|
||||
# vsnprintf is in the same source file as snprintf
|
||||
AC_CHECK_FUNCS([vsnprintf], [], [AC_LIBOBJ([snprintf])])
|
||||
LIBS="$saved_libs"
|
||||
AC_CHECK_FUNCS([gettimeofday isatty kill rename setlocale strsep])
|
||||
GROFF_MKSTEMP
|
||||
AC_CHECK_DECLS([sys_siglist])
|
||||
|
||||
# checks for compiler characteristics
|
||||
GROFF_ARRAY_DELETE
|
||||
GROFF_TRADITIONAL_CPP
|
||||
|
||||
# checks for operating system services
|
||||
GROFF_WCOREFLAG
|
||||
|
||||
# other random stuff
|
||||
GROFF_BROKEN_SPOOLER_FLAGS
|
||||
GROFF_PAGE
|
||||
GROFF_G
|
||||
GROFF_TMAC
|
||||
GROFF_TARGET_PATH_SEPARATOR
|
||||
GROFF_HTML_PROGRAMS
|
||||
GROFF_PDFDOC_PROGRAMS
|
||||
GROFF_PNMTOPS_NOSETPAGE
|
||||
|
||||
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
|
||||
AC_CONFIG_FILES([Makefile doc/Makefile src/utils/xtotroff/Makefile])
|
||||
AC_CONFIG_FILES([contrib/gdiffmk/tests/runtests],
|
||||
[chmod +x contrib/gdiffmk/tests/runtests])
|
||||
AC_CONFIG_FILES([test-groff], [chmod +x test-groff])
|
||||
AC_OUTPUT
|
||||
|
||||
GROFF_APPRESDIR_CHECK
|
19
contrib/eqn2graph/Makefile.sub
Normal file
19
contrib/eqn2graph/Makefile.sub
Normal file
@ -0,0 +1,19 @@
|
||||
MAN1=eqn2graph.n
|
||||
CLEANADD=eqn2graph
|
||||
|
||||
all: eqn2graph
|
||||
|
||||
eqn2graph: eqn2graph.sh
|
||||
rm -f $@; \
|
||||
sed -e "s|@g@|$(g)|g" \
|
||||
-e "s|@VERSION@|$(version)$(revision)|" \
|
||||
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/eqn2graph.sh >$@; \
|
||||
chmod +x $@
|
||||
|
||||
install_data: eqn2graph
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
-rm -f $(bindir)/eqn2graph
|
||||
$(INSTALL_SCRIPT) eqn2graph $(bindir)/eqn2graph
|
||||
|
||||
uninstall_sub:
|
||||
-rm -f $(bindir)/eqn2graph
|
115
contrib/eqn2graph/eqn2graph.man
Normal file
115
contrib/eqn2graph/eqn2graph.man
Normal file
@ -0,0 +1,115 @@
|
||||
.\" $Id: eqn2graph.man,v 1.4 2003/10/28 07:46:23 wlemb Exp $
|
||||
.\" This documentation is released to the public domain.
|
||||
.
|
||||
.
|
||||
.\" Like TP, but if specified indent is more than half
|
||||
.\" the current line-length - indent, use the default indent.
|
||||
.de Tp
|
||||
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
|
||||
.el .TP "\\$1"
|
||||
..
|
||||
.
|
||||
.
|
||||
.TH EQN2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
|
||||
.IX eqn2graph
|
||||
.SH NAME
|
||||
eqn2graph \- convert an EQN equation into a cropped image
|
||||
.
|
||||
.
|
||||
.SH SYNOPSIS
|
||||
.B eqn2graph
|
||||
[
|
||||
.B \-unsafe
|
||||
]
|
||||
[
|
||||
.BI \-format\ fmt
|
||||
]
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
Reads an EQN equation (one line) as input; produces an image
|
||||
file (by default in Portable Network Graphics format) suitable for the
|
||||
Web as output.
|
||||
.P
|
||||
Your input EQN code should \fInot\fR have the \&.EQ/.EN preamble that
|
||||
that normally precedes it within
|
||||
.BR groff (@MAN1EXT@)
|
||||
macros; nor do you need to have dollar-sign or other delimiters
|
||||
around the equation.
|
||||
.P
|
||||
The output image will be a black-on-white graphic clipped to the
|
||||
smallest possible bounding box that contains all the black pixels.
|
||||
By specifying command-line options to be passed to
|
||||
.BR convert (1)
|
||||
you can give it a border, set the background transparent, set the
|
||||
image's pixel density, or perform other useful transformations.
|
||||
.P
|
||||
This program uses
|
||||
.BR @g@eqn (@MAN1EXT@),
|
||||
.BR groff (@MAN1EXT@),
|
||||
and the ImageMagick
|
||||
.BR convert (1)
|
||||
program.
|
||||
These programs must be installed on your system and accessible on your
|
||||
$PATH for \fBeqn2graph\fR to work.
|
||||
.
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-unsafe
|
||||
Run
|
||||
.BR groff (@MAN1EXT@)
|
||||
in the `unsafe' mode enabling the PIC macro
|
||||
.B sh
|
||||
to execute arbitrary commands.
|
||||
The default is to forbid this.
|
||||
.TP
|
||||
.BI \-format\ fmt
|
||||
Specify an output format; the default is PNG (Portable Network Graphics).
|
||||
Any format that
|
||||
.BR convert (1)
|
||||
can emit is supported.
|
||||
.PP
|
||||
Command-line switches and arguments not listed above are passed to
|
||||
.BR convert (1).
|
||||
.
|
||||
.
|
||||
.SH FILES
|
||||
.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
|
||||
.B @MACRODIR@/eqnrc
|
||||
The
|
||||
.BR @g@eqn (@MAN1EXT@)
|
||||
initialization file.
|
||||
.
|
||||
.
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
.B GROFF_TMPDIR
|
||||
The directory in which temporary files will be created.
|
||||
If this is not set
|
||||
.B eqn2graph
|
||||
searches the environment variables
|
||||
.BR \%TMPDIR ,
|
||||
.BR TMP ,
|
||||
and
|
||||
.B TEMP
|
||||
(in that order).
|
||||
Otherwise, temporary files will be created in
|
||||
.BR /tmp .
|
||||
.
|
||||
.
|
||||
.SH "SEE ALSO"
|
||||
.BR pic2graph (@MAN1EXT@),
|
||||
.BR grap2graph (@MAN1EXT@),
|
||||
.BR @g@eqn (@MAN1EXT@),
|
||||
.BR groff (@MAN1EXT@),
|
||||
.BR gs (1),
|
||||
.BR convert (1).
|
||||
.
|
||||
.
|
||||
.SH AUTHOR
|
||||
Eric S. Raymond <esr@thyrsus.com>.
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" End:
|
91
contrib/eqn2graph/eqn2graph.sh
Normal file
91
contrib/eqn2graph/eqn2graph.sh
Normal file
@ -0,0 +1,91 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# eqn2graph -- compile EQN equation descriptions to bitmap images
|
||||
#
|
||||
# by Eric S. Raymond <esr@thyrsus.com>, July 2002
|
||||
#
|
||||
# In Unixland, the magic is in knowing what to string together...
|
||||
#
|
||||
# Take an eqn equation on stdin, emit cropped bitmap on stdout.
|
||||
# The pic markup should *not* be wrapped in .EQ/.EN, this script will do that.
|
||||
# A -U option on the command line enables gpic/groff "unsafe" mode.
|
||||
# A -format FOO option changes the image output format to any format
|
||||
# supported by convert(1). All other options are passed to convert(1).
|
||||
# The default format is PNG.
|
||||
#
|
||||
# This is separate from pic2graph because pic processing has some weird
|
||||
# clipping effect on the output, mangling equations that are very wide
|
||||
# or deep. Besides, this tool can supply its own delimiters.
|
||||
#
|
||||
|
||||
# Requires the groff suite and the ImageMagick tools. Both are open source.
|
||||
# This code is released to the public domain.
|
||||
#
|
||||
# Here are the assumptions behind the option processing:
|
||||
#
|
||||
# 1. None of the options of eqn(1) are relevant.
|
||||
#
|
||||
# 2. Only the -U option of groff(1) is relevant.
|
||||
#
|
||||
# 3. Many options of convert(1) are potentially relevant, (especially
|
||||
# -density, -interlace, -transparency, -border, and -comment).
|
||||
#
|
||||
# Thus, we pass -U to groff(1), and everything else to convert(1).
|
||||
#
|
||||
# $Id: eqn2graph.sh,v 1.5 2005/05/18 07:03:06 wl Exp $
|
||||
#
|
||||
groff_opts=""
|
||||
convert_opts=""
|
||||
format="png"
|
||||
|
||||
while [ "$1" ]
|
||||
do
|
||||
case $1 in
|
||||
-unsafe)
|
||||
groff_opts="-U";;
|
||||
-format)
|
||||
format=$2
|
||||
shift;;
|
||||
-v | --version)
|
||||
echo "GNU eqn2graph (groff) version @VERSION@"
|
||||
exit 0;;
|
||||
--help)
|
||||
echo "usage: eqn2graph [ option ...] < in > out"
|
||||
exit 0;;
|
||||
*)
|
||||
convert_opts="$convert_opts $1";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# create temporary directory
|
||||
tmp=
|
||||
for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
|
||||
test -z "$d" && continue
|
||||
|
||||
tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \
|
||||
&& test -n "$tmp" && test -d "$tmp" \
|
||||
&& break
|
||||
|
||||
tmp=$d/eqn2graph$$-$RANDOM
|
||||
(umask 077 && mkdir $tmp) 2> /dev/null && break
|
||||
done;
|
||||
if test -z "$tmp"; then
|
||||
echo "$0: cannot create temporary directory" >&2
|
||||
{ (exit 1); exit 1; }
|
||||
fi
|
||||
|
||||
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
|
||||
|
||||
# Here goes:
|
||||
# 1. Add .EQ/.EN.
|
||||
# 2. Process through eqn(1) to emit troff markup.
|
||||
# 3. Process through groff(1) to emit Postscript.
|
||||
# 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
|
||||
read equation
|
||||
(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \
|
||||
groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \
|
||||
&& convert -trim -crop 0x0 $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \
|
||||
&& cat $tmp/eqn2graph.$format
|
||||
|
||||
# End
|
63
contrib/gdiffmk/ChangeLog
Normal file
63
contrib/gdiffmk/ChangeLog
Normal file
@ -0,0 +1,63 @@
|
||||
2005-01-16 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
* gdiffmk.sh (Usage): Fix typos.
|
||||
<top>: Allow `-M<arg1> <arg2>' also.
|
||||
|
||||
* gdiffmk.man: Updated.
|
||||
|
||||
2005-01-13 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
* gdiffmk.sh: Add the -D, -M, and -B options, which provide actions
|
||||
akin to nrchbar.
|
||||
Thanks to Larry Kollar (http://home.alltel.net/kollar/groff/).
|
||||
|
||||
* gdiffmk.man: Updated.
|
||||
|
||||
* tests/runtests.in: Added tests for gdiffmk's -D, -M, and -B
|
||||
options.
|
||||
|
||||
* tests/baseline8, tests/baseline9, tests/baseline10: New files.
|
||||
|
||||
2004-12-16 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
* tests/runtests.in: Fix typo (s/$(srcdir)/${srcdir}/).
|
||||
|
||||
2004-12-15 Werner LEMBERG <wl@gnu.org>
|
||||
|
||||
The configure script now generates tests/runtests.
|
||||
|
||||
* tests/tests.sh: Renamed to...
|
||||
* tests/runtests.in: This.
|
||||
Add proper $srcdir prefixes to make it run from build directory.
|
||||
* README, Makefile.sub (CLEANADD), tests/test_baseline7: Updated.
|
||||
|
||||
2004-12-14 Werner LEMBERG <wl@gnu.org>
|
||||
|
||||
* gdiffmk.sh: Make sed pattern work with alternate result of GNU
|
||||
diff's -D option, using `!' instead of `not' in #endif comments.
|
||||
(Exit): Use prefix for each emitted message line.
|
||||
|
||||
2004-12-14 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
* tests/*: New files for testing gdiffmk.
|
||||
|
||||
* README, gdiffmk.man, gdiffmk.sh: Updated.
|
||||
Minor fixes.
|
||||
|
||||
2004-12-13 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
Add `-x' command line option to select a diff program.
|
||||
|
||||
* gdiffmk.sh: Add code to handle `-x'.
|
||||
Move test for working `diff' down.
|
||||
Fix sed pattern -- `.mc *' needs to be followed by `.mc .'.
|
||||
(Usage): Updated.
|
||||
* gdiffmk.man: Updated.
|
||||
|
||||
2004-12-12 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
* README: New file.
|
||||
|
||||
2004-12-11 Mike Bianchi <MBianchi@Foveal.com>
|
||||
|
||||
First import of gdiffmk files.
|
47
contrib/gdiffmk/Makefile.sub
Normal file
47
contrib/gdiffmk/Makefile.sub
Normal file
@ -0,0 +1,47 @@
|
||||
# Makefile.sub for `gdiffmk' (integration into the groff source tree)
|
||||
|
||||
# File position: <groff-source>/contrib/gdiffmk/Makefile.sub
|
||||
|
||||
# Last update: 12 December 2004
|
||||
|
||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
||||
# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
|
||||
|
||||
# This file is part of the gdiffmk utility, which is part of groff.
|
||||
|
||||
# groff is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
# License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with groff; see the files COPYING and LICENSE in the top
|
||||
# directory of the groff source. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
########################################################################
|
||||
|
||||
MAN1=gdiffmk.n
|
||||
CLEANADD=gdiffmk tests/runtests
|
||||
|
||||
all: gdiffmk
|
||||
|
||||
gdiffmk: gdiffmk.sh
|
||||
rm -f $@; \
|
||||
sed -e "s|@BINDIR@|$(bindir)|g" \
|
||||
-e "s|@VERSION@|$(version)$(revision)|g" \
|
||||
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/gdiffmk.sh >$@; \
|
||||
chmod +x $@
|
||||
|
||||
install_data: gdiffmk
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
-rm -f $(bindir)/gdiffmk
|
||||
$(INSTALL_SCRIPT) gdiffmk $(bindir)/gdiffmk
|
||||
|
||||
uninstall_sub:
|
||||
-rm -f $(bindir)/gdiffmk
|
46
contrib/gdiffmk/README
Normal file
46
contrib/gdiffmk/README
Normal file
@ -0,0 +1,46 @@
|
||||
gdiffmk is approximately a recreation of the original Bell Labs/AT&T diffmk
|
||||
command for troff/nroff documents, with enhancements.
|
||||
|
||||
It should not be confused with `diffmk' commands that operate on XML.
|
||||
|
||||
The inspiration for this code was a Perl 2 version written in 1989 by Randal
|
||||
L. Schwartz. See
|
||||
landfield.com/software/comp.sources.misc/archive-name/volume06/diffmk.p.gz
|
||||
|
||||
The command also attempts to reproduce some of the functionality of the old
|
||||
`nrchbar' command. See
|
||||
open-systems.ufl.edu/mirrors/ftp.isc.org/usenet/comp.sources.unix/volume10/nrchbar.Z
|
||||
|
||||
Thanks to Werner Lemberg for help in making the package more portable and
|
||||
fit into the GNU groff source structure.
|
||||
|
||||
Gnu diff(1) with the -Dname option does all of the work and sed(1)
|
||||
translates the output into something groff/troff/nroff can handle.
|
||||
|
||||
Note the BUGS on the man page.
|
||||
|
||||
The `tests' directory contains simple tests. `runtests run' runs them and
|
||||
compares the output against baseline files. Calling `runtests' without
|
||||
argument gives the usage.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
|
||||
|
||||
This file is part of the gdiffmk utility, which is part of groff.
|
||||
|
||||
groff is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
groff is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with groff; see the files COPYING and LICENSE in the top
|
||||
directory of the groff source. If not, write to the Free Software
|
||||
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
281
contrib/gdiffmk/gdiffmk.man
Normal file
281
contrib/gdiffmk/gdiffmk.man
Normal file
@ -0,0 +1,281 @@
|
||||
.ig \"-*- nroff -*-
|
||||
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the gdiffmk utility, which is part of groff.
|
||||
Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the
|
||||
entire resulting derived work is distributed under the terms of a
|
||||
permission notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this
|
||||
manual into another language, under the above conditions for modified
|
||||
versions, except that this permission notice may be included in
|
||||
translations approved by the Free Software Foundation instead of in
|
||||
the original English.
|
||||
..
|
||||
.
|
||||
.do mso www.tmac
|
||||
.
|
||||
.TH GDIFFMK @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
|
||||
.
|
||||
.
|
||||
.SH NAME
|
||||
gdiffmk \- mark differences between groff/nroff/troff files
|
||||
.
|
||||
.
|
||||
.SH SYNOPSIS
|
||||
.nr a \n(.j
|
||||
.ad l
|
||||
.nr i \n(.i
|
||||
.in +\w'\fBgdiffmk 'u
|
||||
.ti \niu
|
||||
.B gdiffmk
|
||||
.de OP
|
||||
. ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
|
||||
. el .RB "[\ " "\\$1" "\ ]"
|
||||
..
|
||||
.OP \-a \%addmark
|
||||
.OP \-c \%changemark
|
||||
.OP \-d \%deletemark
|
||||
[\ \c
|
||||
.B \-D
|
||||
.OP \-B
|
||||
.OP \-M "mark1 mark2"
|
||||
]
|
||||
.OP \-x \%diffcmd
|
||||
.OP \-\-
|
||||
.OP \-\-help
|
||||
.OP \%\-\-version
|
||||
.I \%file1
|
||||
.I \%file2
|
||||
[\ \c
|
||||
.IR \%output \ \c
|
||||
]
|
||||
.br
|
||||
.ad \na
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
.B gdiffmk
|
||||
compares two
|
||||
.BR groff (1),
|
||||
.BR nroff (1),
|
||||
or
|
||||
.BR troff (1)
|
||||
documents,
|
||||
.I file1
|
||||
and
|
||||
.IR file2 ,
|
||||
and creates an output which is
|
||||
.I file2
|
||||
with added `margin character' (.mc) commands that indicate the differences.
|
||||
.
|
||||
.LP
|
||||
If the
|
||||
.I output
|
||||
filename is present,
|
||||
the output is written there.
|
||||
If it is
|
||||
.B \-
|
||||
or absent the output is written to the standard output.
|
||||
.
|
||||
.LP
|
||||
If the
|
||||
.I file1
|
||||
or
|
||||
.I file2
|
||||
argument is
|
||||
.B \-
|
||||
the standard input is read for that input.
|
||||
Clearly both cannot be
|
||||
.BR \- .
|
||||
.
|
||||
.LP
|
||||
Note that the output is not necessarily compatible with all macro packages
|
||||
and all preprocessors.
|
||||
See the
|
||||
.B BUGS
|
||||
section below.
|
||||
.
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI \-a addmark
|
||||
Use the
|
||||
.I addmark
|
||||
for source lines not in
|
||||
.I file1
|
||||
but present in
|
||||
.IR file2 .
|
||||
Default:
|
||||
.BR + .
|
||||
.
|
||||
.TP
|
||||
.B \-B
|
||||
By default, the deleted texts marked by the
|
||||
.B \-D
|
||||
option end
|
||||
with an added troff break command,
|
||||
.BR .br ,
|
||||
to ensure that the deletions are marked properly.
|
||||
This is the only way to guarantee that deletions and small
|
||||
changes get flagged.
|
||||
This option directs the program not to insert these breaks; it makes no
|
||||
sense to use it without
|
||||
.BR \-D .
|
||||
.
|
||||
.TP
|
||||
.BI \-c changemark
|
||||
Use the
|
||||
.I changemark
|
||||
for changed source lines.
|
||||
Default:
|
||||
.BR | .
|
||||
.
|
||||
.TP
|
||||
.BI \-d deletemark
|
||||
Use the
|
||||
.I deletemark
|
||||
for deleted source lines.
|
||||
Default:
|
||||
.BR * .
|
||||
.
|
||||
.TP
|
||||
.B \-D
|
||||
Show the deleted portions from changed and deleted text.
|
||||
Default delimiting marks:
|
||||
.BR "[[" " .\&.\&.\&. " "]]" .
|
||||
.
|
||||
.TP
|
||||
.BI \-M "mark1 mark2"
|
||||
Change the delimiting marks for the
|
||||
.B \-D
|
||||
option.
|
||||
It makes no sense to use this option without
|
||||
.BR \-D .
|
||||
.
|
||||
.TP
|
||||
.BI \-x diffcmd
|
||||
Use the
|
||||
.I diffcmd
|
||||
command to perform the comparison of
|
||||
.I file1
|
||||
and
|
||||
.IR file2 .
|
||||
In particular,
|
||||
.I diffcmd
|
||||
should accept the GNU
|
||||
.B diff
|
||||
.BI \-D name
|
||||
option.
|
||||
Default:
|
||||
.BR diff (1).
|
||||
.
|
||||
.TP
|
||||
.B \-\-
|
||||
All the following arguments are treated as file names,
|
||||
even if they begin with
|
||||
.BR \- .
|
||||
.
|
||||
.TP
|
||||
.B \-\-help
|
||||
Print a usage message on standard error output and exit.
|
||||
.
|
||||
.TP
|
||||
.B \-\-version
|
||||
Print version information on the standard output and exit.
|
||||
.
|
||||
.
|
||||
.SH BUGS
|
||||
The output is not necessarily compatible with all macro packages
|
||||
and all preprocessors.
|
||||
A workaround that is often successful against preprocessor problems
|
||||
is to run
|
||||
.B gdiffmk
|
||||
on the output of all the preprocessors instead of the input source.
|
||||
.
|
||||
.LP
|
||||
.B gdiffmk
|
||||
relies on the
|
||||
.BI \-D name
|
||||
option of GNU
|
||||
.BR diff (1)
|
||||
to make a merged `#ifdef' output format.
|
||||
It hasn't been tested whether other versions of
|
||||
.BR diff (1)
|
||||
do support this option.
|
||||
See also the
|
||||
.BI \-x diffcmd
|
||||
option.
|
||||
.
|
||||
.LP
|
||||
Report bugs to bug-groff@gnu.org.
|
||||
Include a complete, self-contained example that will allow the bug to
|
||||
be reproduced, and say which version of
|
||||
.B gdiffmk
|
||||
you are using.
|
||||
.
|
||||
.
|
||||
.SH AUTHORS
|
||||
This document was written and is maintained by
|
||||
.MTO MBianchi@Foveal.com "Mike Bianchi" .
|
||||
.
|
||||
.LP
|
||||
This document is distributed under the terms of the FDL (GNU Free
|
||||
Documentation License) version 1.1 or later.
|
||||
You should have received a copy of the FDL on your system, it is also
|
||||
available on-line at the
|
||||
.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
|
||||
.
|
||||
.LP
|
||||
.B gdiffmk
|
||||
is part of the
|
||||
.I groff
|
||||
GNU free software project.
|
||||
All parts of the
|
||||
.I groff package
|
||||
are protected by GNU copyleft licenses.
|
||||
The software files are distributed under the terms of the GNU General
|
||||
Public License (GPL), while the documentation files mostly use the GNU
|
||||
Free Documentation License (FDL).
|
||||
.
|
||||
.
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004, 2005 Free Software Foundation, Inc.
|
||||
.
|
||||
.LP
|
||||
.B gdiffmk
|
||||
is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 2, or (at your option) any later
|
||||
version.
|
||||
.
|
||||
.LP
|
||||
.B gdiffmk
|
||||
is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
.
|
||||
.LP
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with groff; see the file COPYING.
|
||||
If not, write to the Free Software
|
||||
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
.
|
||||
.
|
||||
.SH "SEE ALSO"
|
||||
.BR groff (@MAN1EXT@),
|
||||
.BR nroff (@MAN1EXT@),
|
||||
.BR gtroff (@MAN1EXT@),
|
||||
.BR diff (@MAN1EXT@)
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" End:
|
346
contrib/gdiffmk/gdiffmk.sh
Normal file
346
contrib/gdiffmk/gdiffmk.sh
Normal file
@ -0,0 +1,346 @@
|
||||
#! /bin/sh
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
|
||||
|
||||
# This file is part of the gdiffmk utility, which is part of groff.
|
||||
|
||||
# groff is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# groff is distributed in the hope that it will be useful, but WITHOUT
|
||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
# License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with groff; see the files COPYING and LICENSE in the top
|
||||
# directory of the groff source. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
# This file is part of GNU gdiffmk.
|
||||
|
||||
|
||||
cmd=$( basename $0 )
|
||||
|
||||
function Usage {
|
||||
if test "$#" -gt 0
|
||||
then
|
||||
echo >&2 "${cmd}: $@"
|
||||
fi
|
||||
echo >&2 "\
|
||||
|
||||
Usage: ${cmd} [ OPTIONS ] FILE1 FILE2 [ OUTPUT ]
|
||||
Place difference marks into the new version of a groff/nroff/troff document.
|
||||
FILE1 and FILE2 are compared, using \`diff', and FILE2 is output with
|
||||
groff \`.mc' requests added to indicate how it is different from FILE1.
|
||||
|
||||
FILE1 Previous version of the groff file. \`-' means standard input.
|
||||
FILE2 Current version of the groff file. \`-' means standard input.
|
||||
Either FILE1 or FILE2 can be standard input, but not both.
|
||||
OUTPUT Copy of FILE2 with \`.mc' commands added.
|
||||
\`-' means standard output (the default).
|
||||
|
||||
OPTIONS:
|
||||
-a ADDMARK Mark for added groff source lines. Default: \`+'.
|
||||
-c CHANGEMARK Mark for changed groff source lines. Default: \`|'.
|
||||
-d DELETEMARK Mark for deleted groff source lines. Default: \`*'.
|
||||
|
||||
-D Show the deleted portions from changed and deleted text.
|
||||
Default delimiting marks: \`[[' .... \`]]'.
|
||||
-B By default, the deleted texts marked by the \`-D' option end
|
||||
with an added troff \`.br' command. This option prevents
|
||||
the added \`.br'.
|
||||
-M MARK1 MARK2 Change the delimiting marks for the \`-D' option.
|
||||
|
||||
-x DIFFCMD Use a different diff(1) command;
|
||||
one that accepts the \`-Dname' option, such as GNU diff.
|
||||
--version Print version information on the standard output and exit.
|
||||
--help Print this message on the standard error.
|
||||
"
|
||||
exit 255
|
||||
}
|
||||
|
||||
|
||||
function Exit {
|
||||
exitcode=$1
|
||||
shift
|
||||
for arg
|
||||
do
|
||||
echo >&2 "${cmd}: $1"
|
||||
shift
|
||||
done
|
||||
exit ${exitcode}
|
||||
}
|
||||
|
||||
# Usage: FileRead exit_code filename
|
||||
#
|
||||
# Check for existence and readability of given file name.
|
||||
# If not found or not readable, print message and exit with EXIT_CODE.
|
||||
function FileRead {
|
||||
case "$2" in
|
||||
-)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
if test ! -e "$2"
|
||||
then
|
||||
Exit $1 "File \`$2' not found."
|
||||
fi
|
||||
if test ! -r "$2"
|
||||
then
|
||||
Exit $1 "File \`$2' not readable."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Usage: FileCreate exit_code filename
|
||||
#
|
||||
# Create the given filename if it doesn't exist.
|
||||
# If unable to create or write, print message and exit with EXIT_CODE.
|
||||
function FileCreate {
|
||||
case "$2" in
|
||||
-)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
if ! touch "$2" 2>/dev/null
|
||||
then
|
||||
if test ! -e "$2"
|
||||
then
|
||||
Exit $1 "File \`$2' not created; " \
|
||||
"Cannot write directory \`$( dirname "$2" )'."
|
||||
fi
|
||||
Exit $1 "File \`$2' not writeable."
|
||||
fi
|
||||
}
|
||||
|
||||
function WouldClobber {
|
||||
case "$2" in
|
||||
-)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$1" -ef "$3"
|
||||
then
|
||||
Exit 3 \
|
||||
"The $2 and OUTPUT arguments both point to the same file," \
|
||||
"\`$1', and it would be overwritten."
|
||||
fi
|
||||
}
|
||||
|
||||
ADDMARK='+'
|
||||
CHANGEMARK='|'
|
||||
DELETEMARK='*'
|
||||
MARK1='[['
|
||||
MARK2=']]'
|
||||
|
||||
function RequiresArgument {
|
||||
# Process flags that take either concatenated or
|
||||
# separated values.
|
||||
case "$1" in
|
||||
-??*)
|
||||
expr "$1" : '-.\(.*\)'
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$#" -lt 2
|
||||
then
|
||||
Exit 255 "Option \`$1' requires a value."
|
||||
fi
|
||||
|
||||
echo "$2"
|
||||
return 0
|
||||
}
|
||||
|
||||
badoption=
|
||||
DIFFCMD=diff
|
||||
D_option=
|
||||
br=.br
|
||||
for OPTION
|
||||
do
|
||||
case "${OPTION}" in
|
||||
-a*)
|
||||
ADDMARK=$( RequiresArgument "${OPTION}" $2 ) &&
|
||||
shift
|
||||
;;
|
||||
-c*)
|
||||
CHANGEMARK=$( RequiresArgument "${OPTION}" $2 ) &&
|
||||
shift
|
||||
;;
|
||||
-d*)
|
||||
DELETEMARK=$( RequiresArgument "${OPTION}" $2 ) &&
|
||||
shift
|
||||
;;
|
||||
-D )
|
||||
D_option=D_option
|
||||
;;
|
||||
-M* )
|
||||
MARK1=$( RequiresArgument "${OPTION}" $2 ) &&
|
||||
shift
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
Usage "Option \`-M' is missing the MARK2 value."
|
||||
fi
|
||||
MARK2=$2
|
||||
shift
|
||||
;;
|
||||
-B )
|
||||
br=.
|
||||
;;
|
||||
-x* )
|
||||
DIFFCMD=$( RequiresArgument "${OPTION}" $2 ) &&
|
||||
shift
|
||||
;;
|
||||
--version)
|
||||
echo "GNU ${cmd} (groff) version @VERSION@"
|
||||
exit 0
|
||||
;;
|
||||
--help)
|
||||
Usage
|
||||
;;
|
||||
--)
|
||||
# What follows -- are file arguments
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-)
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
badoption="${cmd}: invalid option \`$1'"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
${DIFFCMD} -Dx /dev/null /dev/null >/dev/null 2>&1 ||
|
||||
Usage "The \`${DIFFCMD}' program does not accept" \
|
||||
"the required \`-Dname' option.
|
||||
Use GNU diff instead. See the \`-x DIFFCMD' option."
|
||||
|
||||
if test -n "${badoption}"
|
||||
then
|
||||
Usage "${badoption}"
|
||||
fi
|
||||
|
||||
if test "$#" -lt 2 -o "$#" -gt 3
|
||||
then
|
||||
Usage "Incorrect number of arguments."
|
||||
fi
|
||||
|
||||
if test "1$1" = 1- -a "2$2" = 2-
|
||||
then
|
||||
Usage "Both FILE1 and FILE2 are \`-'."
|
||||
fi
|
||||
|
||||
FILE1=$1
|
||||
FILE2=$2
|
||||
|
||||
FileRead 1 "${FILE1}"
|
||||
FileRead 2 "${FILE2}"
|
||||
|
||||
if test "$#" = 3
|
||||
then
|
||||
case "$3" in
|
||||
-)
|
||||
# output goes to standard output
|
||||
;;
|
||||
*)
|
||||
# output goes to a file
|
||||
WouldClobber "${FILE1}" FILE1 "$3"
|
||||
WouldClobber "${FILE2}" FILE2 "$3"
|
||||
|
||||
FileCreate 3 "$3"
|
||||
exec >$3
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# To make a very unlikely label even more unlikely ...
|
||||
label=__diffmk_$$__
|
||||
|
||||
sed_script='
|
||||
/^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
|
||||
/^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/
|
||||
/^#endif \/\* '"${label}"'/ s/.*/.mc/
|
||||
p
|
||||
d
|
||||
}
|
||||
/^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
|
||||
/^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
|
||||
/^#else \/\* '"${label}"'/ s/.*/.mc '"${CHANGEMARK}"'/
|
||||
/^#endif \/\* '"${label}"'/ s/.*/.mc/
|
||||
p
|
||||
d
|
||||
}
|
||||
/^#endif \/\* \(not\|!\) '"${label}"'/ {
|
||||
s/.*/.mc '"${DELETEMARK}"'/p
|
||||
a\
|
||||
.mc
|
||||
}
|
||||
d
|
||||
}
|
||||
p
|
||||
'
|
||||
|
||||
if [ ${D_option} ]
|
||||
then
|
||||
sed_script='
|
||||
/^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
|
||||
/^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/
|
||||
/^#endif \/\* '"${label}"'/ s/.*/.mc/
|
||||
p
|
||||
d
|
||||
}
|
||||
/^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
|
||||
/^#ifndef '"${label}"'/ {
|
||||
i\
|
||||
'"${MARK1}"'
|
||||
d
|
||||
}
|
||||
/^#else \/\* '"${label}"'/ ! {
|
||||
/^#endif \/\* [!not ]*'"${label}"'/ ! {
|
||||
p
|
||||
d
|
||||
}
|
||||
}
|
||||
/^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
|
||||
/^#else \/\* '"${label}"'/ {
|
||||
i\
|
||||
'"${MARK2}"'\
|
||||
'"${br}"'
|
||||
s/.*/.mc '"${CHANGEMARK}"'/
|
||||
a\
|
||||
.mc '"${CHANGEMARK}"'
|
||||
d
|
||||
}
|
||||
/^#endif \/\* '"${label}"'/ s/.*/.mc/
|
||||
p
|
||||
d
|
||||
}
|
||||
/^#endif \/\* \(not\|!\) '"${label}"'/ {
|
||||
i\
|
||||
'"${MARK2}"'\
|
||||
'"${br}"'
|
||||
s/.*/.mc '"${DELETEMARK}"'/p
|
||||
a\
|
||||
.mc
|
||||
}
|
||||
d
|
||||
}
|
||||
p
|
||||
'
|
||||
fi
|
||||
|
||||
diff -D"${label}" -- ${FILE1} ${FILE2} |
|
||||
sed -n "${sed_script}"
|
||||
|
||||
# EOF
|
11
contrib/gdiffmk/tests/file1
Normal file
11
contrib/gdiffmk/tests/file1
Normal file
@ -0,0 +1,11 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
file1 only
|
||||
file1 and file2 #2
|
||||
file1 and file2 #3
|
||||
file1 only
|
||||
file1 only
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
11
contrib/gdiffmk/tests/file2
Normal file
11
contrib/gdiffmk/tests/file2
Normal file
@ -0,0 +1,11 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
file2 only
|
||||
file2 only
|
||||
file1 and file2 #2
|
||||
file2 only
|
||||
file1 and file2 #3
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
98
contrib/gdiffmk/tests/runtests.in
Normal file
98
contrib/gdiffmk/tests/runtests.in
Normal file
@ -0,0 +1,98 @@
|
||||
#! /bin/sh
|
||||
# A very simple function test for gdiffmk.sh.
|
||||
|
||||
srcdir=@srcdir@
|
||||
|
||||
command=../gdiffmk
|
||||
|
||||
# Test the number of arguments and the first argument.
|
||||
case $#-$1 in
|
||||
1-clean )
|
||||
rm -fv test_result* tmp_file*
|
||||
exit 0
|
||||
;;
|
||||
1-run )
|
||||
;;
|
||||
* )
|
||||
echo >&2 "$0 [ clean | run ]
|
||||
Run a few simple tests on \`${command}'."'
|
||||
|
||||
clean Remove the test_result? and tmp_file? files.
|
||||
run Run the tests.
|
||||
'
|
||||
exit 255
|
||||
;;
|
||||
esac
|
||||
|
||||
function TestResult {
|
||||
if cmp -s $1 $2
|
||||
then
|
||||
echo $2 PASSED
|
||||
else
|
||||
echo ''
|
||||
echo $2 TEST FAILED
|
||||
diff $1 $2
|
||||
echo ''
|
||||
fi
|
||||
}
|
||||
|
||||
tmpfile=/tmp/$$
|
||||
trap 'rm -f ${tmpfile}' 0 1 2 3 15
|
||||
|
||||
# Run tests.
|
||||
|
||||
# 3 file arguments
|
||||
ResultFile=test_result1
|
||||
${command} ${srcdir}/file1 ${srcdir}/file2 ${ResultFile} 2>${tmpfile}
|
||||
cat ${tmpfile} >>${ResultFile}
|
||||
TestResult ${srcdir}/test_baseline ${ResultFile}
|
||||
|
||||
# OUTPUT to stdout by default
|
||||
ResultFile=test_result2
|
||||
${command} ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline ${ResultFile}
|
||||
|
||||
# OUTPUT to stdout via - argument
|
||||
ResultFile=test_result3
|
||||
${command} ${srcdir}/file1 ${srcdir}/file2 - >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline ${ResultFile}
|
||||
|
||||
# FILE1 from standard input via - argument
|
||||
ResultFile=test_result4
|
||||
${command} - ${srcdir}/file2 <${srcdir}/file1 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline ${ResultFile}
|
||||
|
||||
# FILE2 from standard input via - argument
|
||||
ResultFile=test_result5
|
||||
${command} ${srcdir}/file1 - <${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline ${ResultFile}
|
||||
|
||||
# Different values for addmark, changemark, deletemark
|
||||
ResultFile=test_result6
|
||||
${command} -aA -cC -dD ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline6 ${ResultFile}
|
||||
|
||||
# Test for accidental file overwrite.
|
||||
ResultFile=test_result7
|
||||
cp ${srcdir}/file2 tmp_file7
|
||||
${command} -aA -dD -cC ${srcdir}/file1 tmp_file7 tmp_file7 \
|
||||
>${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline7 ${ResultFile}
|
||||
|
||||
# Test -D option
|
||||
ResultFile=test_result8
|
||||
${command} -D ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline8 ${ResultFile}
|
||||
|
||||
# Test -D and -M options
|
||||
ResultFile=test_result9
|
||||
${command} -D -M '<<<<' '>>>>' \
|
||||
${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline9 ${ResultFile}
|
||||
|
||||
# Test -D and -B options
|
||||
ResultFile=test_result10
|
||||
${command} -D -B ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
|
||||
TestResult ${srcdir}/test_baseline10 ${ResultFile}
|
||||
|
||||
# EOF
|
17
contrib/gdiffmk/tests/test_baseline
Normal file
17
contrib/gdiffmk/tests/test_baseline
Normal file
@ -0,0 +1,17 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
.mc |
|
||||
file2 only
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #2
|
||||
.mc +
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #3
|
||||
.mc *
|
||||
.mc
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
26
contrib/gdiffmk/tests/test_baseline10
Normal file
26
contrib/gdiffmk/tests/test_baseline10
Normal file
@ -0,0 +1,26 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
[[
|
||||
file1 only
|
||||
]]
|
||||
.
|
||||
.mc |
|
||||
file2 only
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #2
|
||||
.mc +
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #3
|
||||
[[
|
||||
file1 only
|
||||
file1 only
|
||||
]]
|
||||
.
|
||||
.mc *
|
||||
.mc
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
17
contrib/gdiffmk/tests/test_baseline6
Normal file
17
contrib/gdiffmk/tests/test_baseline6
Normal file
@ -0,0 +1,17 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
.mc C
|
||||
file2 only
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #2
|
||||
.mc A
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #3
|
||||
.mc D
|
||||
.mc
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
2
contrib/gdiffmk/tests/test_baseline7
Normal file
2
contrib/gdiffmk/tests/test_baseline7
Normal file
@ -0,0 +1,2 @@
|
||||
gdiffmk: The FILE2 and OUTPUT arguments both point to the same file,
|
||||
gdiffmk: `tmp_file7', and it would be overwritten.
|
26
contrib/gdiffmk/tests/test_baseline8
Normal file
26
contrib/gdiffmk/tests/test_baseline8
Normal file
@ -0,0 +1,26 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
[[
|
||||
file1 only
|
||||
]]
|
||||
.br
|
||||
.mc |
|
||||
file2 only
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #2
|
||||
.mc +
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #3
|
||||
[[
|
||||
file1 only
|
||||
file1 only
|
||||
]]
|
||||
.br
|
||||
.mc *
|
||||
.mc
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
26
contrib/gdiffmk/tests/test_baseline9
Normal file
26
contrib/gdiffmk/tests/test_baseline9
Normal file
@ -0,0 +1,26 @@
|
||||
.ll 25
|
||||
.pl 20
|
||||
.nf
|
||||
file1 and file2 #1
|
||||
<<<<
|
||||
file1 only
|
||||
>>>>
|
||||
.br
|
||||
.mc |
|
||||
file2 only
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #2
|
||||
.mc +
|
||||
file2 only
|
||||
.mc
|
||||
file1 and file2 #3
|
||||
<<<<
|
||||
file1 only
|
||||
file1 only
|
||||
>>>>
|
||||
.br
|
||||
.mc *
|
||||
.mc
|
||||
file1 and file2 #4
|
||||
file1 and file2 #5
|
19
contrib/grap2graph/Makefile.sub
Normal file
19
contrib/grap2graph/Makefile.sub
Normal file
@ -0,0 +1,19 @@
|
||||
MAN1=grap2graph.n
|
||||
CLEANADD=grap2graph
|
||||
|
||||
all: grap2graph
|
||||
|
||||
grap2graph: grap2graph.sh
|
||||
rm -f $@; \
|
||||
sed -e "s|@g@|$(g)|g" \
|
||||
-e "s|@VERSION@|$(version)$(revision)|" \
|
||||
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/grap2graph.sh >$@; \
|
||||
chmod +x $@
|
||||
|
||||
install_data: grap2graph
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
-rm -f $(bindir)/grap2graph
|
||||
$(INSTALL_SCRIPT) grap2graph $(bindir)/grap2graph
|
||||
|
||||
uninstall_sub:
|
||||
-rm -f $(bindir)/grap2graph
|
105
contrib/grap2graph/grap2graph.man
Normal file
105
contrib/grap2graph/grap2graph.man
Normal file
@ -0,0 +1,105 @@
|
||||
.\" $Id: grap2graph.man,v 1.3 2003/10/28 07:46:23 wlemb Exp $
|
||||
.\" This documentation is released to the public domain.
|
||||
.
|
||||
.
|
||||
.TH GRAP2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
|
||||
.IX grap2graph
|
||||
.SH NAME
|
||||
grap2graph \- convert a grap diagram into a cropped bitmap image
|
||||
.
|
||||
.
|
||||
.SH SYNOPSIS
|
||||
.B grap2graph
|
||||
[
|
||||
.B \-unsafe
|
||||
]
|
||||
[
|
||||
.BI \-resolution\ M\fR|\fPMxN
|
||||
]
|
||||
[
|
||||
.BI \-format\ fmt
|
||||
]
|
||||
.
|
||||
.
|
||||
.SH DESCRIPTION
|
||||
Reads a grap program as input; produces an image file (by default in
|
||||
Portable Network Graphics format) suitable for the Web as output.
|
||||
For a description of the grap language, see
|
||||
.BR grap (1).
|
||||
.P
|
||||
Your graph specification should \fInot\fR be wrapped with the \&.G1 and
|
||||
\&.G2 macros that normally guard it within
|
||||
.BR groff (@MAN1EXT@)
|
||||
macros.
|
||||
.P
|
||||
The output image will be a black-on-white graphic clipped to the
|
||||
smallest possible bounding box that contains all the black pixels.
|
||||
By specifying command-line options to be passed to
|
||||
.BR convert (1)
|
||||
you can give it a border, set the background transparent, set the
|
||||
image's pixel density, or perform other useful transformations.
|
||||
.P
|
||||
This program uses
|
||||
.BR grap (1),
|
||||
.BR @g@pic (@MAN1EXT@),
|
||||
.BR groff (@MAN1EXT@),
|
||||
and the ImageMagick
|
||||
.BR convert (1)
|
||||
program.
|
||||
These programs must be installed on your system and accessible on your
|
||||
$PATH for \fBgrap2graph\fR to work.
|
||||
.
|
||||
.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-unsafe
|
||||
Run
|
||||
.BR @g@pic (@MAN1EXT@)
|
||||
and
|
||||
.BR groff (@MAN1EXT@)
|
||||
in the `unsafe' mode enabling the PIC macro
|
||||
.B sh
|
||||
to execute arbitrary commands.
|
||||
The default is to forbid this.
|
||||
.TP
|
||||
.BI \-format\ fmt
|
||||
Specify an output format; the default is PNG (Portable Network Graphics).
|
||||
Any format that
|
||||
.BR convert (1)
|
||||
can emit is supported.
|
||||
.PP
|
||||
Command-line switches and arguments not listed above are passed to
|
||||
.BR convert (1).
|
||||
.
|
||||
.
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
.B GROFF_TMPDIR
|
||||
The directory in which temporary files will be created.
|
||||
If this is not set
|
||||
.B grap2graph
|
||||
searches the environment variables
|
||||
.BR \%TMPDIR ,
|
||||
.BR TMP ,
|
||||
and
|
||||
.B TEMP
|
||||
(in that order).
|
||||
Otherwise, temporary files will be created in
|
||||
.BR /tmp .
|
||||
.
|
||||
.
|
||||
.SH "SEE ALSO"
|
||||
.BR pic2graph (@MAN1EXT@),
|
||||
.BR eqn2graph (@MAN1EXT@),
|
||||
.BR @g@pic (@MAN1EXT@),
|
||||
.BR groff (@MAN1EXT@),
|
||||
.BR gs (1),
|
||||
.BR convert (1).
|
||||
.
|
||||
.
|
||||
.SH AUTHOR
|
||||
Eric S. Raymond <esr@thyrsus.com>
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" End:
|
85
contrib/grap2graph/grap2graph.sh
Normal file
85
contrib/grap2graph/grap2graph.sh
Normal file
@ -0,0 +1,85 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# grap2graph -- compile graph description descriptions to bitmap images
|
||||
#
|
||||
# by Eric S. Raymond <esr@thyrsus.com>, May 2003
|
||||
#
|
||||
# In Unixland, the magic is in knowing what to string together...
|
||||
#
|
||||
# Take grap description on stdin, emit cropped bitmap on stdout.
|
||||
# The pic markup should *not* be wrapped in .G1/.G2, this script will do that.
|
||||
# A -U option on the command line enables gpic/groff "unsafe" mode.
|
||||
# A -format FOO option changes the image output format to any format
|
||||
# supported by convert(1). All other options are passed to convert(1).
|
||||
# The default format is PNG.
|
||||
#
|
||||
|
||||
# Requires the groff suite and the ImageMagick tools. Both are open source.
|
||||
# This code is released to the public domain.
|
||||
#
|
||||
# Here are the assumptions behind the option processing:
|
||||
#
|
||||
# 1. None of the options of grap(1) are relevant.
|
||||
#
|
||||
# 2. Only the -U option of groff(1) is relevant.
|
||||
#
|
||||
# 3. Many options of convert(1) are potentially relevant, (especially
|
||||
# -density, -interlace, -transparency, -border, and -comment).
|
||||
#
|
||||
# Thus, we pass -U to groff(1), and everything else to convert(1).
|
||||
#
|
||||
# $Id: grap2graph.sh,v 1.4 2005/05/18 07:03:06 wl Exp $
|
||||
#
|
||||
groff_opts=""
|
||||
convert_opts=""
|
||||
format="png"
|
||||
|
||||
while [ "$1" ]
|
||||
do
|
||||
case $1 in
|
||||
-unsafe)
|
||||
groff_opts="-U";;
|
||||
-format)
|
||||
format=$2
|
||||
shift;;
|
||||
-v | --version)
|
||||
echo "GNU grap2graph (groff) version @VERSION@"
|
||||
exit 0;;
|
||||
--help)
|
||||
echo "usage: grap2graph [ option ...] < in > out"
|
||||
exit 0;;
|
||||
*)
|
||||
convert_opts="$convert_opts $1";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# create temporary directory
|
||||
tmp=
|
||||
for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
|
||||
test -z "$d" && continue
|
||||
|
||||
tmp=`(umask 077 && mktemp -d -q "$d/grap2graph-XXXXXX") 2> /dev/null` \
|
||||
&& test -n "$tmp" && test -d "$tmp" \
|
||||
&& break
|
||||
|
||||
tmp=$d/grap2graph$$-$RANDOM
|
||||
(umask 077 && mkdir $tmp) 2> /dev/null && break
|
||||
done;
|
||||
if test -z "$tmp"; then
|
||||
echo "$0: cannot create temporary directory" >&2
|
||||
{ (exit 1); exit 1; }
|
||||
fi
|
||||
|
||||
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
|
||||
|
||||
# Here goes:
|
||||
# 1. Add .G1/.G2.
|
||||
# 2. Process through grap(1) to emit pic markup.
|
||||
# 3. Process through groff(1) with pic preprocessing to emit Postscript.
|
||||
# 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
|
||||
(echo ".G1"; cat; echo ".G2") | grap | groff -p $groff_opts -Tps -P-pletter | \
|
||||
convert -trim -crop 0x0 $convert_opts - $tmp/grap2graph.$format \
|
||||
&& cat $tmp/grap2graph.$format
|
||||
|
||||
# End
|
1546
contrib/groffer/ChangeLog
Normal file
1546
contrib/groffer/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
60
contrib/groffer/Makefile.sub
Normal file
60
contrib/groffer/Makefile.sub
Normal file
@ -0,0 +1,60 @@
|
||||
# Makefile.sub for `groffer' (integration into the `groff' source tree)
|
||||
|
||||
# File position: <groff-source>/contrib/groffer/Makefile.sub
|
||||
|
||||
# Copyright (C) 2001,2002,2005 Free Software Foundation, Inc.
|
||||
# Written by Werner Lemberg <wl@gnu.org> and Bernd Warken.
|
||||
|
||||
# Last update: 15 August 2005
|
||||
|
||||
# This file is part of `groffer' which is part of `groff'.
|
||||
|
||||
# `groff' is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# `groff' is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with `groff'; see the files COPYING and LICENSE in the top
|
||||
# directory of the `groff' source. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
########################################################################
|
||||
|
||||
MAN1=groffer.n
|
||||
CLEANADD=groffer
|
||||
|
||||
# not all make programs have $(RM) predefined.
|
||||
RM=rm -f
|
||||
|
||||
all: groffer
|
||||
|
||||
groffer: groffer.sh groffer2.sh $(SH_DEPS_SED_SCRIPT)
|
||||
$(RM) $@;
|
||||
sed -f $(SH_DEPS_SED_SCRIPT) \
|
||||
-e "s|@g@|$(g)|g" \
|
||||
-e "s|@BINDIR@|$(bindir)|g" \
|
||||
-e "s|@libdir@|$(libdir)|g" \
|
||||
-e "s|@VERSION@|$(version)$(revision)|g" \
|
||||
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/groffer.sh >$@;
|
||||
chmod +x $@
|
||||
|
||||
install_data: groffer
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
-$(RM) $(bindir)/groffer
|
||||
$(INSTALL_SCRIPT) groffer $(bindir)/groffer
|
||||
-test -d $(libdir)/groff/groffer || \
|
||||
$(mkinstalldirs) $(libdir)/groff/groffer
|
||||
-$(RM) $(libdir)/groff/groffer/groffer2.sh
|
||||
$(INSTALL_SCRIPT) $(srcdir)/groffer2.sh \
|
||||
$(libdir)/groff/groffer/groffer2.sh
|
||||
|
||||
uninstall_sub:
|
||||
-$(RM) $(bindir)/groffer
|
||||
-$(RM) $(libdir)/groff/groffer/groffer2.sh
|
||||
-rmdir $(libdir)/groff/groffer
|
104
contrib/groffer/README
Normal file
104
contrib/groffer/README
Normal file
@ -0,0 +1,104 @@
|
||||
README
|
||||
|
||||
The `groffer' program is the easiest way to read documents written in
|
||||
some `roff' language, such as the `man pages', the manual pages in
|
||||
many operating systems.
|
||||
|
||||
|
||||
Input
|
||||
|
||||
Input comes from either standard input or command line parameters that
|
||||
represent names of exisiting roff files or standardized specifications
|
||||
for searching man pages. All of these can be compressed in a format
|
||||
that is decompressible by `gzip', including `.gz', `bz2', and `.Z'.
|
||||
|
||||
`groffer' has many built-in `man' functionalities to find and read the
|
||||
manual pages on UNIX and similar operating systems. It accepts the
|
||||
information from an installed `man' program, but tries to find a man
|
||||
path by itself.
|
||||
|
||||
`groffer' bundles all filespec parameters into a single output file in
|
||||
the same way as `groff'. The disadvantage of this is that all file
|
||||
name arguments must use the same groff language. To change this, the
|
||||
option parsing must be revised for large parts. It seems that this
|
||||
would create incompatibilities, so the actual option strategy is kept.
|
||||
|
||||
|
||||
Output
|
||||
|
||||
All input is first sent to `grog' to determine the necessary `groff'
|
||||
options and then to `groff'. So no special `groff' arguments must be
|
||||
given. But all `groff' options can be specified when this seems to be
|
||||
appropriate.
|
||||
|
||||
The following displaying modes for the output are available:
|
||||
- Display formatted input with
|
||||
-- the X `roff' viewer `gxditview',
|
||||
-- a Postcript viewer,
|
||||
-- a PDF viewer,
|
||||
-- a DVI viewer,
|
||||
-- a web browser,
|
||||
-- a pager in a text terminal (tty).
|
||||
- Generate `groff' output on stdout without a viewer.
|
||||
- Generate the `groff intermediate output' on standard output without
|
||||
postprocessing.
|
||||
- Output the source code without any `groff' processing.
|
||||
- There are some information outputs without `groff' processing, such
|
||||
as by option `-V' and the `man' like `whatis' and `apropos'
|
||||
outputs.
|
||||
|
||||
By default, the program tries to display with `gxditview' as graphical
|
||||
device in X; on non-X text terminals, the `tty' text mode with a pager
|
||||
is tried by default.
|
||||
|
||||
|
||||
Compatibility
|
||||
|
||||
`groffer' consists of two shell scripts. It should run on any POSIX
|
||||
or Bourne style shell that supports shell functions. See file
|
||||
`README_SH' for more information.
|
||||
|
||||
|
||||
Mailing lists
|
||||
|
||||
For reporting bugs of `groffer', groff's free mailing list
|
||||
<bug-groff@gnu.org> can be used.
|
||||
|
||||
For a general discussion, the mailing list <groff@gnu.org> is more
|
||||
useful, but one has to subscribe to this list at
|
||||
http://lists.gnu.org/mailman/listinfo/groff.
|
||||
|
||||
See the `README' file in the top directory of the `groff' source
|
||||
package for more details on these mailing lists.
|
||||
|
||||
|
||||
####### License
|
||||
|
||||
Last update: 2 August 2005
|
||||
|
||||
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
|
||||
Written by Bernd Warken
|
||||
|
||||
This file is part of `groffer', which is part of `groff'.
|
||||
|
||||
`groff' is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
`groff' is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with `groff'; see the files COPYING and LICENSE in the top
|
||||
directory of the `groff' source. If not, write to the Free Software
|
||||
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
####### Emacs settings
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
End:
|
268
contrib/groffer/README_SH
Normal file
268
contrib/groffer/README_SH
Normal file
@ -0,0 +1,268 @@
|
||||
Additional description for the shell version of `groffer'
|
||||
|
||||
|
||||
Scripts
|
||||
|
||||
The shell version of `groffer' contains two files, `groffer.sh' and
|
||||
`groffer2.sh'.
|
||||
|
||||
`groffer.sh' is a short introductory script without any functions. I
|
||||
can be run with a very poor Bourne shell. It just contains some basic
|
||||
variables, the reading of the configuration files, and the
|
||||
determination of the shell for `groffer2.sh'. This script is
|
||||
transformed by `make' into `groffer' which will be installed into
|
||||
@bindir@, which is usually /usr/local/bin.
|
||||
|
||||
`groffer2.sh' is a long main script with all functions; it is called
|
||||
by `groffer.sh' (`groffer' after installation). It is installed
|
||||
unchanged into @libdir@/groff/groffer, which is usually
|
||||
/usr/local/lib/groff/groffer. This script can be called with a
|
||||
different shell, using the `groffer' option `--shell'.
|
||||
|
||||
|
||||
Options
|
||||
|
||||
The `groffer' script provides its own option parser. It is compatible
|
||||
to the usual GNU style command line This includes long option names
|
||||
with two signs such as `--option', clusters of short options, the
|
||||
mixing of options and non-option file names, the option `--' to close
|
||||
the option handling, and it is possible to abbreviate the long option
|
||||
names.
|
||||
|
||||
The flexible mixing of options and file names in GNU style is always
|
||||
possible, even if the environment variable `$POSIXLY_CORRECT' is set
|
||||
to a non-empty value. This disables the rather wicked POSIX behavior
|
||||
to terminate option parsing when the first non-option command line
|
||||
argument is found.
|
||||
|
||||
|
||||
Error Handling
|
||||
|
||||
Error handling and exit behavior is complicated by the fact that
|
||||
`exit' can only escape from the current shell; trouble occurs in
|
||||
subshells. This was solved by sending kill signals, see $_PROCESS_ID
|
||||
and error().
|
||||
|
||||
|
||||
Function Definitions in `groffer2.sh'
|
||||
|
||||
Each funtion in groffer2.sh has a description that starts with the
|
||||
function name and symbols for its arguments in paranthesis `()'. Each
|
||||
`<>' construction gives an argument name that just gives a hint on
|
||||
what the argument is meant to be; these argument names are otherwise
|
||||
irrelevant. The `>' sign can be followed by another character that
|
||||
shows how many of these arguments are possible.
|
||||
|
||||
<arg> exactly 1 of this argument
|
||||
<arg>? 0 or 1 of these arguments
|
||||
<arg>* arbitrarily many such arguments, incl. none
|
||||
<arg>+ one or more such arguments
|
||||
<arg>... one or more such arguments
|
||||
[...] optional arguments
|
||||
|
||||
A function that starts with an underscore `_' is an internal function
|
||||
for some other function. The internal functions are defined just
|
||||
after their corresponding function.
|
||||
|
||||
|
||||
External Environment Variables
|
||||
|
||||
The groffer.sh script uses the following external system variables.
|
||||
It is supposed that these variables are already exported outside of
|
||||
groffer.sh; otherwise they do not have a value within the script.
|
||||
|
||||
external system environment variables that are explicitly used
|
||||
$DISPLAY: Presets the X display.
|
||||
$LANG: For language specific man pages.
|
||||
$LC_ALL: For language specific man pages.
|
||||
$LC_MESSAGES: For language specific man pages.
|
||||
$PAGER: Paging program for tty mode.
|
||||
$PATH: Path for the programs called (`:' separated list).
|
||||
|
||||
groffer native environment variables
|
||||
$GROFFER_OPT preset options for groffer.
|
||||
|
||||
all groff environment variables are used, see groff(1)
|
||||
$GROFF_BIN_PATH: Path for all groff programs.
|
||||
$GROFF_COMMAND_PREFIX: '' (normally) or 'g' (several troffs).
|
||||
$GROFF_FONT_PATH: Path to non-default groff fonts.
|
||||
$GROFF_TMAC_PATH: Path to non-default groff macro files.
|
||||
$GROFF_TMPDIR: Directory for groff temporary files.
|
||||
$GROFF_TYPESETTER: Preset default device.
|
||||
|
||||
all GNU man environment variables are used, see man(1).
|
||||
$MANOPT: Preset options for man pages.
|
||||
$MANPATH: Search path for man pages (: list).
|
||||
$MANROFFSEQ: Ignored because of grog guessing.
|
||||
$MANSECT: Search man pages only in sections (:).
|
||||
$SYSTEM: Man pages for different OS's (, list).
|
||||
|
||||
|
||||
Object-oriented Functions
|
||||
|
||||
The groffer script provides an object-oriented construction (OOP). In
|
||||
object-oriented terminology, a type of object is called a `class'; a
|
||||
function that handles objects from a class is named `method'.
|
||||
|
||||
In the groffer script, the object is a variable name whose content is
|
||||
the object's data. Methods are functions that have an object as first
|
||||
argument.
|
||||
|
||||
The basic functions for object handling are obj_*().
|
||||
|
||||
The class `list' represents an array structure, see list_*().
|
||||
|
||||
|
||||
Shell Compatibility
|
||||
|
||||
The `groffer' shell scripts are compatible to both the GNU and the
|
||||
POSIX shell and utilities. Care was taken to restrict the programming
|
||||
technics used here in order to achieve POSIX compatibility as far back
|
||||
as POSIX P1003.2 Draft 11.2 of September 1991. This draft is
|
||||
available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 in the
|
||||
internet.
|
||||
|
||||
The POSIX draft does not include `local' variables for functions. So
|
||||
this concept was replaced by global variables with a prefix that
|
||||
differs for each function. The prefix is chosen from the function
|
||||
name. These quasi-local variables are unset before each return of the
|
||||
function.
|
||||
|
||||
The `groffer' scripts were tested under the shells `ash', `bash',
|
||||
`bash-minimal', `dash', 'ksh', `mksh', `pdksh', 'posh', and `zsh'
|
||||
without problems in Linux Debian. A shell can be tested by the
|
||||
`groffer' option `--shell', but that will run only with groffer2.sh.
|
||||
To start it directly from the beginning under this shell the following
|
||||
command can be used.
|
||||
|
||||
<shell-name> groffer.sh --shell=<shell-name> <argument>...
|
||||
|
||||
|
||||
Some shells are not fully POSIX compatible. For them the following
|
||||
restrictions were done. For more information look at the
|
||||
documentation `Portable shells' in the `info' page of `autoconf'
|
||||
(look-up in Emacs-Help-Manuals_Info).
|
||||
|
||||
- The command parts `then', `else', and `do' must be written each on a
|
||||
line of their own.
|
||||
|
||||
- Replace `for i in "$@"' by `for i' and remove internal `;' (kah).
|
||||
|
||||
- Replace `set -- ...' by `set x ...; shift'. After the first
|
||||
non-option argument, all arguments including those starting with `-'
|
||||
are accepted as non-option. For variables or `$()' constructs with
|
||||
line-breaks, use `eval set' without quotes. That transforms a
|
||||
line-break within a variable to a space.
|
||||
|
||||
- The name of the variable in `for' is chosen as a single character
|
||||
(old ash). The content of such variables is not safe because it can
|
||||
also occur in other functions. So it is often stored in an
|
||||
additional quasi-local variable.
|
||||
|
||||
- `echo' is not portable on options; some `echo' commands have many
|
||||
options, others have none. So `echo -n' cannot be used, such that
|
||||
the output of each function has complete lines. There are two
|
||||
methods to avoid having `-' as the first character of any argument.
|
||||
Either a character such as `x' can be prepended to the argument;
|
||||
this must later on be removed by `sed'. Otherwise, `echo' can be
|
||||
replaced by `cat <<EOF'.
|
||||
|
||||
- `ls' has problems. Old UNIX systems echoed the error message to
|
||||
standard output. So handle the output with `sed'. If the output
|
||||
contains `not found' map it to an empty string.
|
||||
|
||||
- As `test -e' is not available in Solaris 2.5 replace it by
|
||||
`test -f || test -d'.
|
||||
|
||||
- As `unset' is not supported by all shells replace it by `eval
|
||||
${_UNSET}' where this variable is `unset' if it exists and `:'
|
||||
otherwise.
|
||||
|
||||
- Some shells have problems with options in `eval'. So quoting must
|
||||
be done right to hide the options from `eval'.
|
||||
|
||||
- In backquote calls `` avoid the backquote ` in comments.
|
||||
|
||||
- Replace `true' by `:', `false' isn't used.
|
||||
|
||||
- Do not redefine builtins as functions (ash).
|
||||
|
||||
- Avoid `[^...]' in `case' patterns (ash).
|
||||
|
||||
- `trap' does not allow error code 127.
|
||||
|
||||
The scripts call the following commands with all options used:
|
||||
.
|
||||
:
|
||||
apropos
|
||||
break
|
||||
bzip2 -c -d -t
|
||||
cat
|
||||
catz
|
||||
cd
|
||||
continue
|
||||
echo
|
||||
eval
|
||||
expr
|
||||
grep
|
||||
groff -v
|
||||
grog -T -X -Z
|
||||
gs -c -d -f -q -s
|
||||
gzip -c -d -f
|
||||
less -r -R
|
||||
ls
|
||||
man -k --apropos
|
||||
mkdir
|
||||
mv
|
||||
pwd
|
||||
return
|
||||
rm -f -r
|
||||
rmdir
|
||||
sed -e -n
|
||||
set -e
|
||||
sh -c
|
||||
shift
|
||||
test -c -d -f -r -s -w -x
|
||||
trap
|
||||
umask
|
||||
unset
|
||||
|
||||
|
||||
Bugs
|
||||
|
||||
If the `groffer' run is interrupted by Crtl-C the clean up is not done
|
||||
by all shells. The `trap' commands work for the shells `bash',
|
||||
`bash-minimal', and 'ksh'; they do not work for `ash', `dash',
|
||||
`pdksh', `posh', and `zsh'.
|
||||
|
||||
|
||||
####### License
|
||||
|
||||
Last update: 19 August 2005
|
||||
|
||||
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
|
||||
Written by Bernd Warken
|
||||
|
||||
This file is part of `groffer', which is part of `groff'.
|
||||
|
||||
`groff' is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
`groff' is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with `groff'; see the files COPYING and LICENSE in the top
|
||||
directory of the `groff' source. If not, write to the Free Software
|
||||
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
####### Emacs settings
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
End:
|
58
contrib/groffer/TODO
Normal file
58
contrib/groffer/TODO
Normal file
@ -0,0 +1,58 @@
|
||||
TODO file for `groffer'
|
||||
|
||||
File position: <groff-source>/contrib/groffer/TODO
|
||||
|
||||
|
||||
####### TODO
|
||||
|
||||
Revision:
|
||||
|
||||
Optimization:
|
||||
- Optimize `man' path determination in manpath_add_lang_sys() for speed
|
||||
by building-up the `man' path only by and by as far as necessary
|
||||
(not trivial).
|
||||
- To increase the running speed write part of the `groffer' shell
|
||||
script in C/C++.
|
||||
|
||||
Features of external programs:
|
||||
- Revise option handling of `grog'.
|
||||
|
||||
Documentation:
|
||||
- Improve the documentation of the search algorithm for `man' pages in
|
||||
both the `groffer' scripts and the `man' page `groffer.man'.
|
||||
- In `groffer.man', add more documentation for parts that were taken
|
||||
over from GNU `man'.
|
||||
- The documentation in the headers for some function definitions in
|
||||
`groffer2.sh' needs to be updated.
|
||||
|
||||
|
||||
####### License
|
||||
|
||||
Last update: 16 August 2005
|
||||
|
||||
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
|
||||
Written by Bernd Warken
|
||||
|
||||
This file is part of `groffer', which is part of `groff'.
|
||||
|
||||
`groff' is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
`groff' is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with `groff'; see the files COPYING and LICENSE in the top
|
||||
directory of the `groff' source. If not, write to the Free Software
|
||||
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
|
||||
####### Emacs settings
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
End:
|
4018
contrib/groffer/groffer.man
Normal file
4018
contrib/groffer/groffer.man
Normal file
File diff suppressed because it is too large
Load Diff
299
contrib/groffer/groffer.sh
Normal file
299
contrib/groffer/groffer.sh
Normal file
@ -0,0 +1,299 @@
|
||||
#! /bin/sh
|
||||
|
||||
# groffer - display groff files
|
||||
|
||||
# Source file position: <groff-source>/contrib/groffer/groffer.sh
|
||||
|
||||
# Copyright (C) 2001,2002,2003,2004,2005
|
||||
# Free Software Foundation, Inc.
|
||||
# Written by Bernd Warken
|
||||
|
||||
# This file is part of `groffer', which is part of `groff' version
|
||||
# @VERSION@. See $_GROFF_VERSION.
|
||||
|
||||
# `groff' is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# `groff' is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with `groff'; see the files COPYING and LICENSE in the top
|
||||
# directory of the `groff' source. If not, write to the Free Software
|
||||
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301,
|
||||
# USA.
|
||||
|
||||
########################################################################
|
||||
|
||||
_PROGRAM_VERSION='0.9.22';
|
||||
_LAST_UPDATE='22 August 2005';
|
||||
|
||||
export _PROGRAM_VERSION;
|
||||
export _LAST_UPDATE;
|
||||
|
||||
export GROFFER_OPT; # option environment for groffer
|
||||
|
||||
export _CONF_FILE_ETC; # configuration file in /etc
|
||||
export _CONF_FILE_HOME; # configuration file in $HOME
|
||||
export _CONF_FILES; # configuration files
|
||||
_CONF_FILE_ETC='/etc/groff/groffer.conf';
|
||||
_CONF_FILE_HOME="${HOME}/.groff/groffer.conf";
|
||||
_CONF_FILES="${_CONF_FILE_ETC} ${_CONF_FILE_HOME}";
|
||||
|
||||
# characters
|
||||
|
||||
export _AT;
|
||||
export _SP;
|
||||
export _SQ;
|
||||
export _TAB;
|
||||
|
||||
_AT='@';
|
||||
_SP=' ';
|
||||
_SQ="'";
|
||||
_TAB=' ';
|
||||
|
||||
export _ERROR;
|
||||
_ERROR='7'; # for syntax errors; no `-1' in `ash'
|
||||
|
||||
# @...@ constructs
|
||||
|
||||
export _GROFF_VERSION
|
||||
_GROFF_VERSION='@VERSION@';
|
||||
if test _@VERSION@_ = _${_AT}VERSION${_AT}_
|
||||
then
|
||||
_GROFF_VERSION='1.19.2';
|
||||
fi;
|
||||
|
||||
export _AT_BINDIR_AT;
|
||||
export _AT_G_AT;
|
||||
export _AT_LIBDIR_AT;
|
||||
export _GROFFER_LIBDIR;
|
||||
if test _@BINDIR@_ = _${_AT}BINDIR${_AT}_
|
||||
then
|
||||
# script before `make'
|
||||
_AT_BINDIR_AT='.';
|
||||
_AT_G_AT='';
|
||||
_AT_LIBDIR_AT='';
|
||||
_GROFFER_LIBDIR='.';
|
||||
else
|
||||
_AT_BINDIR_AT='@BINDIR@';
|
||||
_AT_G_AT='@g@';
|
||||
_AT_LIBDIR_AT='@libdir@';
|
||||
_GROFFER_LIBDIR="${_AT_LIBDIR_AT}"'/groff/groffer';
|
||||
fi;
|
||||
|
||||
export _GROFFER_SH; # file name of this shell script
|
||||
case "$0" in
|
||||
*groffer*)
|
||||
_GROFFER_SH="$0";
|
||||
# was: _GROFFER_SH="${_AT_BINDIR_AT}/groffer";
|
||||
;;
|
||||
*)
|
||||
echo 'The groffer script should be started directly.' >&2
|
||||
exit 1;
|
||||
;;
|
||||
esac;
|
||||
|
||||
export _GROFFER2_SH; # file name of the script that follows up
|
||||
_GROFFER2_SH="${_GROFFER_LIBDIR}"/groffer2.sh;
|
||||
|
||||
export _NULL_DEV;
|
||||
if test -c /dev/null
|
||||
then
|
||||
_NULL_DEV="/dev/null";
|
||||
else
|
||||
_NULL_DEV="NUL";
|
||||
fi;
|
||||
|
||||
|
||||
# Test of the `$()' construct.
|
||||
if test _"$(echo "$(echo 'test')")"_ \
|
||||
!= _test_
|
||||
then
|
||||
echo 'The "$()" construct did not work.' >&2;
|
||||
exit "${_ERROR}";
|
||||
fi;
|
||||
|
||||
# Test of sed program
|
||||
if test _"$(echo red | sed -e 's/r/s/')"_ != _sed_
|
||||
then
|
||||
echo 'The sed program did not work.' >&2;
|
||||
exit "${_ERROR}";
|
||||
fi;
|
||||
|
||||
|
||||
########################### configuration
|
||||
|
||||
# read and transform the configuration files, execute the arising commands
|
||||
for f in "${_CONF_FILE_HOME}" "${_CONF_FILE_ETC}"
|
||||
do
|
||||
if test -f "$f"
|
||||
then
|
||||
o=""; # $o means groffer option
|
||||
# use "" quotes because of ksh and posh
|
||||
eval "$(cat "$f" | sed -n -e '
|
||||
# Ignore comments
|
||||
/^['"${_SP}${_TAB}"']*#/d
|
||||
# Delete leading and final space
|
||||
s/^['"${_SP}${_TAB}"']*//
|
||||
s/['"${_SP}${_TAB}"']*$//
|
||||
# Print all shell commands
|
||||
/^[^-]/p
|
||||
# Replace empty arguments
|
||||
s/^\(-[^ ]*\)=$/o="${o} \1 '"${_SQ}${_SQ}"'"/p
|
||||
# Replace division between option and argument by single space
|
||||
s/[='"${_SP}${_TAB}"']['"${_SP}${_TAB}"']*/'"${_SP}"'/
|
||||
# Handle lines without spaces
|
||||
s/^\(-[^'"${_SP}"']*\)$/o="${o} \1"/p
|
||||
# Print options that have their argument encircled with single quotes
|
||||
/^-[^ ]* '"${_SQ}"'.*'"${_SQ}"'$/s/^.*$/o="${o} &"/p
|
||||
# Replace encircled double quotes by single quotes and print the result
|
||||
s/^\(-[^ ]*\) "\(.*\)"$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
|
||||
# Encircle the remaining arguments with single quotes
|
||||
s/^\(-[^ ]*\) \(.*\)$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
|
||||
')"
|
||||
if test _"${o}"_ != __
|
||||
then
|
||||
if test _"{GROFFER_OPT}"_ = __
|
||||
then
|
||||
GROFFER_OPT="${o}";
|
||||
else
|
||||
GROFFER_OPT="${o} ${GROFFER_OPT}";
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
|
||||
# integrate $GROFFER_OPT into the command line; it isn't needed any more
|
||||
if test _"${GROFFER_OPT}"_ != __
|
||||
then
|
||||
eval set x "${GROFFER_OPT}" '"$@"';
|
||||
shift;
|
||||
GROFFER_OPT='';
|
||||
fi;
|
||||
|
||||
|
||||
########################### Determine the shell
|
||||
|
||||
export _SHELL;
|
||||
|
||||
# use "``" instead of "$()" for using the case ")" construct
|
||||
# do not use "" quotes because of ksh
|
||||
_SHELL=`
|
||||
# $x means list.
|
||||
# $s means shell.
|
||||
# The command line arguments are taken over.
|
||||
# Shifting herein does not have an effect outside.
|
||||
export x;
|
||||
case " $*" in
|
||||
*\ --sh*) # abbreviation for --shell
|
||||
x='';
|
||||
s='';
|
||||
# determine all --shell arguments, store them in $x in reverse order
|
||||
while test $# != 0
|
||||
do
|
||||
case "$1" in
|
||||
--shell|--sh|--she|--shel)
|
||||
if test "$#" -ge 2
|
||||
then
|
||||
s="$2";
|
||||
shift;
|
||||
fi;
|
||||
;;
|
||||
--shell=*|--sh=*|--she=*|--shel=*)
|
||||
# delete up to first "=" character
|
||||
s="$(echo x"$1" | sed -e 's/^x[^=]*=//')";
|
||||
;;
|
||||
*)
|
||||
shift;
|
||||
continue;
|
||||
esac;
|
||||
if test _"${x}"_ = __
|
||||
then
|
||||
x="'${s}'";
|
||||
else
|
||||
x="'${s}' ${x}";
|
||||
fi;
|
||||
shift;
|
||||
done;
|
||||
|
||||
# from all possible shells in $x determine the first being a shell
|
||||
# or being empty
|
||||
s="$(
|
||||
# "" quotes because of posh
|
||||
eval set x "${x}";
|
||||
shift;
|
||||
if test $# != 0
|
||||
then
|
||||
for i
|
||||
do
|
||||
if test _"$i"_ = __
|
||||
then
|
||||
# use the empty argument as the default shell
|
||||
echo empty;
|
||||
break;
|
||||
else
|
||||
# test $i on being a shell program;
|
||||
# use this kind of quoting for posh
|
||||
if test _"$(eval "$i -c 'echo ok'" 2>${_NULL_DEV})"_ = _ok_ >&2
|
||||
then
|
||||
# shell found
|
||||
cat <<EOF
|
||||
${i}
|
||||
EOF
|
||||
break;
|
||||
else
|
||||
# if not being a shell go on searching
|
||||
continue;
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
fi;
|
||||
)";
|
||||
if test _"${s}"_ != __
|
||||
then
|
||||
cat <<EOF
|
||||
${s}
|
||||
EOF
|
||||
fi;
|
||||
;;
|
||||
esac;
|
||||
`
|
||||
|
||||
########################### test fast shells for automatic run
|
||||
|
||||
if test _"${_SHELL}"_ = __
|
||||
then
|
||||
for s in ksh ash dash pdksh zsh posh
|
||||
do
|
||||
if test _"$(eval "$s -c 'echo ok'" 2>${_NULL_DEV})"_ = _ok_ >&2
|
||||
then
|
||||
_SHELL="$s";
|
||||
break;
|
||||
fi;
|
||||
done;
|
||||
fi;
|
||||
|
||||
|
||||
########################### start groffer2.sh
|
||||
|
||||
if test _"${_SHELL}"_ = _empty_
|
||||
then
|
||||
_SHELL='';
|
||||
fi;
|
||||
|
||||
if test _"${_SHELL}"_ = __
|
||||
then
|
||||
# no shell found, so start groffer2.sh normally
|
||||
eval exec "'${_GROFFER2_SH}'" '"$@"';
|
||||
exit;
|
||||
else
|
||||
# start groffer2.sh with the found $_SHELL
|
||||
# do not quote $_SHELL to allow arguments
|
||||
eval exec "${_SHELL} '${_GROFFER2_SH}'" '"$@"';
|
||||
exit;
|
||||
fi;
|
5854
contrib/groffer/groffer2.sh
Normal file
5854
contrib/groffer/groffer2.sh
Normal file
File diff suppressed because it is too large
Load Diff
679
contrib/mm/ChangeLog
Normal file
679
contrib/mm/ChangeLog
Normal file
@ -0,0 +1,679 @@
|
||||
Thu May 26 08:23:40 2005 Werner LEMBERG <wl@gnu.org>
|
||||
|
||||
* m.tmac: Load devtag.tmac.
|
||||
|
||||
Wed Mar 16 06:56:02 2005 Larry Kollar <kollar@alltel.net>
|
||||
|
||||
Add rudimentary support for grohtml.
|
||||
|
||||
* m.tmac (H): Call DEVTAG-NH and DEVTAG-EO-H.
|
||||
(pg@enable-trap, pg@header): Do nothing for devhtml.
|
||||
|
||||
Sun Mar 7 16:34:46 2004 Jeff Conrad <jeff_conrad@msn.com>
|
||||
|
||||
* m.tmac (S): Improve debug message.
|
||||
|
||||
Wed Mar 05:38:57 2004 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* Changed default value for Hy in manual to 0
|
||||
* Check Hy at each new page
|
||||
|
||||
Mon Mar 1 22:16:38 2004 Jeff Conrad <jeff_conrad@msn.com>
|
||||
|
||||
* m.tmac (S): Fix scaling indicator for vertical spacing.
|
||||
|
||||
Tue Nov 05:14:45 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* another patch from ulrich lauther to fix the
|
||||
TOC up to 14 heading levels.
|
||||
|
||||
Mon Oct 13:48:25 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* problem with more than 7 levels of headings fixed with
|
||||
patch from ulrich lauther.
|
||||
|
||||
Wed Apr 06:42:35 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* the footer was not adjusted by VM due to a missing
|
||||
pg*extra-footer-size in the calculation of pg*last-pos
|
||||
|
||||
Wed Apr 06:04:58 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* space adjustments in 4.MT to make it more like
|
||||
the original
|
||||
|
||||
Sun Mar 21:45:10 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* removed error check i 4.MT, .AF is not mandatory anymore
|
||||
|
||||
Sat Mar 21:56:57 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* cov*firm now defined only if arg to AF is non-empty
|
||||
That will also enable cov*default-firm from the mm locale-file
|
||||
to work.
|
||||
|
||||
Sat Mar 21:05:29 2003 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* added .ll in pg@set-env to initialize the
|
||||
header environment properly
|
||||
|
||||
Wed Mar 19 23:02:16 2003 Werner LEMBERG <wl@gnu.org>
|
||||
|
||||
* groff_mm.man: Some fixes from Robert D. Goulding
|
||||
<goulding@Princeton.EDU>.
|
||||
|
||||
Wed Sep 09:53:06 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* added implicit -mm to mmroff, it's now possible
|
||||
to use mmroff with or without -mm as argument.
|
||||
|
||||
Thu Aug 08 00:31:00 Bob Diertens <bobd@science.uva.nl>
|
||||
|
||||
* m.tmac (VM): Add missing backslash.
|
||||
|
||||
Fri Jun 10:37:58 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* added init@reset for LT-macros so .S works for letters
|
||||
|
||||
Thu May 06:30:06 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* adding -T to VM for setting the total
|
||||
header and footer size.
|
||||
* changing pg*extra-header-size unit from v to u in DS-size
|
||||
calculation
|
||||
|
||||
Mon May 05:40:16 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* All lists now get an empty line before the list
|
||||
even if there is no empty lines between the items (bug in LB)
|
||||
|
||||
Sat May 07:36:08 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* PIC is now drawn 1v higher, making it
|
||||
possible to put a picture at 0,0.
|
||||
* Indentbug in P fixed, Pt=2 now behaves as it should
|
||||
|
||||
Wed May 10:18:26 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* added L, W and O in groff_mm.man
|
||||
* extra space in expression removed in EPIC
|
||||
* EPIC can leftadjust with -L
|
||||
* EPIC was drawing 1v down
|
||||
* forgot to add mmse.tmac and mm.tmac to cvs
|
||||
|
||||
Fri May 20:35:32 2002 Joergen Haegg <jh@axis.com>
|
||||
|
||||
* Clarified manual about INITR
|
||||
* Added mm.tmac and mmse.tmac wrappers
|
||||
* Fixed bug in mmroff so a .qrf-file always will be created
|
||||
* .EQ mark was not correctly positioned anymore.
|
||||
* changed SP to sp in DS/DE to further correct .EQ
|
||||
|
||||
Sun Dec 9 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* Makefile.sim, groff_mm.man, groff_mmse.man: Minor fixes.
|
||||
* mmroff.man: This is a section 1 man page.
|
||||
Minor fixes.
|
||||
* Makefile.sub: Install mmroff.man in section 1.
|
||||
|
||||
Wed Nov 28 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* m.tmac: Assure that the macro package is loaded only once.
|
||||
|
||||
Wed Sep 5 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* m.tmac: Enable all warnings only if no -W or -w option is given on
|
||||
the command line (or rather, if only the default warnings are
|
||||
set).
|
||||
|
||||
Mon Sep 3 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* groff_mm.man: Don't use .ne for TTY devices.
|
||||
|
||||
Thu Jul 26 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* groff_mm.man: Start always a new line after end of sentence. Add
|
||||
some compatibility info to the HF variable.
|
||||
|
||||
Thu Jul 26 00:00:00 2001 Larry Jones (larry.jones@sdrc.com)
|
||||
|
||||
* m.tmac: Fix initialization of Hps1 and Hps2.
|
||||
|
||||
Wed May 16 00:00:00 2001 Bruce Lilly (blilly@erols.com)
|
||||
|
||||
* m.tmac (TH): Fix incorrect error message.
|
||||
|
||||
Thu Apr 12 00:00:00 2001 Ruslan Ermilov (ru@FreeBSD.org)
|
||||
|
||||
* groff_mm.man: Fixing some typos.
|
||||
|
||||
Mon Mar 5 09:30:18 2001 Jörgen Hägg (jh@axis.com)
|
||||
|
||||
* S didn't reset to default point size
|
||||
* (dummy line to force cvs update...)
|
||||
|
||||
Sat Jan 06 10:30:00 2001 Werner LEMBERG (wl@gnu.org)
|
||||
|
||||
* Fixed assignment of page offset given as a command line argument.
|
||||
|
||||
Fri Nov 17 05:34:17 2000 Jörgen Hägg (jh@axis.com)
|
||||
|
||||
* Renamed tmac.m and tmac.mse to m.tmac and mse.tmac
|
||||
|
||||
Thu Sep 14 05:52:48 2000 Jörgen Hägg (jh@axis.com)
|
||||
|
||||
* New Changelog-format, it will show changes better.
|
||||
Easier for other to use. (Somehow I didn't really
|
||||
understand why the e-mail address was supposed to be
|
||||
'jh at axis.com' in the Changelog. :-)
|
||||
|
||||
Mon Aug 28 00:00:00 2000 Bruno Haible (haible at clisp.cons.org)
|
||||
|
||||
* Makefile.sub: New target 'all', makes all prerequisites of
|
||||
'install'.
|
||||
|
||||
Thu Sep 7 06:17:42 2000 Jörgen Hägg (jh at axis.com)
|
||||
|
||||
* version 2.0
|
||||
* Had to do something about my version numbering.
|
||||
The main CVS archive was not in sync with mine.
|
||||
So, now it is 2.0. :-)
|
||||
|
||||
Sat Jun 17 23:00:00 2000 Eli Zaretskii (eliz@is.elta.co.il)
|
||||
|
||||
* Makefile.sim (.man.n): Replace `;' with `|', since DOS/Windows
|
||||
path lists use the semicolon as a separator.
|
||||
|
||||
Sun Jun 4 21:39:00 2000 Kaneda Hiroshi (vanitas at ma3.seikyou.ne.jp)
|
||||
|
||||
* Fixing a lot of typos in groff_mm.man
|
||||
|
||||
Tue Mar 7 00:00:00 2000 OKAZAKI Tetsurou (okazaki at be.to)
|
||||
|
||||
* Makefile.sub: Use $(INSTALL_SCRIPT) for script files.
|
||||
|
||||
Sun Jan 30 22:52:20 2000 Jörgen Hägg (jh at axis.com)
|
||||
|
||||
* version 1.34
|
||||
* Changed the version number in the CVS repository
|
||||
* MC had a bug in column calculation, (thanks to T. Kurt Bond)
|
||||
|
||||
Fri Sep 3 07:33:14 1999 Jörgen Hägg (jh at axis.com)
|
||||
|
||||
* version 1.33
|
||||
* At last! I finally tracked down the PGFORM bug!
|
||||
It didn't setup the @pl, @ll and @po as it should, now it does.
|
||||
* mgm_ref/mgm_roff renamed to mmroff [-x]
|
||||
* fixed y2k-bug in \*[DT]
|
||||
* \n[cov*year] removed, hope noone used that.
|
||||
* ISODATE added with Iso as command line flag
|
||||
(iso-date suggested by Paul Eggert)
|
||||
* Added ISODATE to tmac.mse and removed local settings
|
||||
of new-date.
|
||||
* INITI syntax changed and enhanced. Index processing is now
|
||||
done with mmroff.
|
||||
* A few examples has been added, new subdirectory 'examples'.
|
||||
* Fixed bug with SETR, header references are now only saved
|
||||
when Ref > 0
|
||||
* Problem with register H1h fixed
|
||||
* Added test for missing abstract in 4.MT
|
||||
* Updated Makefile.sub, using tmac_m_prefix.
|
||||
|
||||
Mon Mar 15 22:22:42 1999 Jörgen Hägg (jh at axis.com)
|
||||
|
||||
* OK, let's release this as a beta, 1.33 will be better. :-)
|
||||
* version 1.32
|
||||
* fixed .el-error
|
||||
* Added number variable Hss
|
||||
* Changed Hps1 and Hps2 to units
|
||||
* added hd*h1-text to be used in user defined macro TP.
|
||||
* -U needed for SETR (I really need 'mv', 'echo', 'rm'
|
||||
and 'test' builtin!)
|
||||
* Rewritten the reference system, SETR now prints to stderr
|
||||
if the number register Qrf > 0. Store in the filename
|
||||
that is the argument to .INITR
|
||||
The old behaviour is returned if number register Initr > 0.
|
||||
* Fixed bug with List of XXXX, long lines messed up the result.
|
||||
* added number register H1dot.
|
||||
* added string variable H1txt
|
||||
* added string variable Tcst
|
||||
* added number register Dsp.
|
||||
* added alias APPX for user-defined appendix title.
|
||||
* added string variable Apptxt
|
||||
* added H1h for use in TP in headers
|
||||
* added macro EPIC
|
||||
* added macro PIC (safe replacement for PSPIC)
|
||||
* fixed Hps-bug, should be 1, not 1v.
|
||||
* fixed bug with APPSK, variable not set.
|
||||
|
||||
Wed Feb 4 15:46:04 1998 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.31
|
||||
* .LI will now honor a space mark.
|
||||
* Another fix for .AU to let it be used without arguments.
|
||||
* uninitialized eq*label fixed
|
||||
|
||||
Fri Sep 6 07:13:07 1996 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.30
|
||||
* This is more like a beta-release, bugs might pop up. :-)
|
||||
* last line in TOC was not correctly terminated (missing .br)
|
||||
* changed the indentation for displays, it will now
|
||||
indent to the current indent, not the one at the definition
|
||||
of the display.
|
||||
* Equation marks should now work better, indentation also.
|
||||
* included these bug fixes from Larry Jones:
|
||||
* The documentation for the argument to .AS was incorrect for MT 4.
|
||||
* \*(EM should be a double-dash for nroff.
|
||||
* \nS is in points, not units.
|
||||
* If \nO isn't set, the default page offset should be .75i for nroff
|
||||
and .963i for troff.
|
||||
* .S D should set the point size to \nS, not 10.
|
||||
* .S was setting the vertical spacing based on the old point size
|
||||
instead of the new point size.
|
||||
* Got rid of a spurrious .br that prevented run-in headings from
|
||||
working.
|
||||
* Reset the .SP counters in pg@header so that spacing on one page
|
||||
won't affect spacing on subsequent pages.
|
||||
* Allow .AU and .AF with no arguments (real mm does, even though it
|
||||
isn't documented).
|
||||
* Do .init@reset first thing to initialize the default environment.
|
||||
* For MT 4, the title should be 4 points larger than the default size,
|
||||
not 12 point.
|
||||
* The cover environment needs to be initialized.
|
||||
* Printing the abstract on the first page needs to be controlled by
|
||||
the .AS argument.
|
||||
* Heading eject should be suppressed if the heading immediately
|
||||
follows the first page stuff (title, author, etc.).
|
||||
* support for table of contents numbering style (.nr Oc)
|
||||
* changes the troff empty line height from .25v to .5v
|
||||
* fixed section page numbering
|
||||
* fixed a really nasty bug in footnotes that could cause you
|
||||
to lose the page footer completely if the very first
|
||||
footnote on the page occurred at just the wrong place
|
||||
|
||||
|
||||
Wed May 15 07:39:32 1996 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.29
|
||||
* Syntax and scaling errror fixed, (thanks to Frazer Williams)
|
||||
* DF/DE will now do a line-break before printing the display.
|
||||
* Updated the manual for TB,FG,EX and EC.
|
||||
* Added support for the ms- (and mgs-)macro .IX
|
||||
* Added indexmacro IX, INITI, IND and INDP, support for
|
||||
TXIND, TYIND and TZIND.
|
||||
* PGFORM will now always really reset to the default
|
||||
values for unspecified arguments.
|
||||
* Floating displays tested and repaired, it should
|
||||
now (finanlly) work exactly as the original (I hope :-).
|
||||
* Should now set year correctly even after 2000.
|
||||
* Stupid bug in PGNH fixed.
|
||||
* Corrected line length for figure caption (FG and friends)
|
||||
|
||||
|
||||
Mon Apr 24 07:37:52 1995 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.28
|
||||
* Added AVL (AV without date)
|
||||
* Fixed nroff scaling for W and L.
|
||||
* Added support for register E and roman/bold
|
||||
for all Subject/Date/From strings.
|
||||
* Added support for register C (1-4), (for DRAFTs and other types)
|
||||
* Will protest if not used with groff.
|
||||
* Change of the internal number registers @ps and @vs, they
|
||||
are now in units, and is set in the new macros .@ps and .@vs.
|
||||
@ps and @vs is now corrected to the real point and vertical size.
|
||||
* Macro EQ has now correct pointsize.
|
||||
* Figures should now get the right page number in the index.
|
||||
* User-defined macros can now be defined for list of
|
||||
figures, tables, equations and exhibits (T{X,Y}{FG,TB,EC,EX}.
|
||||
* Space may be omitted between prefix and mark in automatic lists (.AL)
|
||||
See .LI
|
||||
|
||||
Tue Jan 10 07:51:37 1995 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.27
|
||||
* Manual updated
|
||||
* More bugs fixed in DS/DF
|
||||
* added alias for :g
|
||||
* LC can now be used without argument (as the manual says. :-)
|
||||
* Register :R now supported (RS/RF)
|
||||
* footnote line was printed even if there was no room for
|
||||
any footnotes. Fixed.
|
||||
* Fixed 1C so that it can be used without page eject
|
||||
* Added support for EOP (TPs twin)
|
||||
* Hyphenation turned off by default. (Hy == 0)
|
||||
|
||||
Fri Nov 4 08:14:50 1994 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.25
|
||||
* DS/DF separated and several bugs fixed. Watch out for new though. :-)
|
||||
* string DT was emptied by mistake in the previous version.
|
||||
* RD made prettier.
|
||||
* typo in AV and let@print-head fixed.
|
||||
|
||||
Mon Oct 31 08:19:24 1994 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.24
|
||||
* Bug fixed and format extended in .SG and .FC.
|
||||
* date is always printed unless .ND without argument is used.
|
||||
(I wonder what's the right thing to do, this might change.)
|
||||
* Swedish letter-standards implemented in tmac.mse.
|
||||
* .ND can be used to turn off the date. (Empty argument)
|
||||
|
||||
Mon Oct 31 08:14:09 1994 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.23
|
||||
* An attempt to get in sync with RCS. This is the distributed
|
||||
version.
|
||||
|
||||
Thu Oct 27 08:29:34 1994 Jörgen Hägg (jh at axis.se)
|
||||
|
||||
* version 1.22
|
||||
* (version 1.21 lost... :-)
|
||||
* Letter macros added!!
|
||||
* The following macros are added:
|
||||
* AV, FC, IA ,IE, LT, LO, NE, NS, SG, WA, WE
|
||||
* nP also added.
|
||||
|
||||
Tue Dec 14 16:26:36 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.20
|
||||
* spelling-corrections
|
||||
* Makefile.sim updated to the correct version, and a uninstall
|
||||
target added.
|
||||
* @cur-lib removed from tmac.m (obsolete)
|
||||
* fixed check for references i .TC, .RP now resets the flag correctly.
|
||||
* floating display should now be printed if there is space.
|
||||
* first version using RCS. I've been avoiding version control until it
|
||||
became necessary.
|
||||
* WC WD now works in two-column-mode.
|
||||
|
||||
Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se)
|
||||
|
||||
* version 1.19
|
||||
* .lt is called in the header for .TP also.
|
||||
* Variable Pgps added to control the header and footer point-size.
|
||||
* Error-text printed with .APP removed.
|
||||
* Error with .FG, .TB, .EC and .EX indentation fixed.
|
||||
* header and footer line-length is not changed by MC or 2C.
|
||||
* Default for page-length and page-offset is now taken from
|
||||
\n[.p] and \n[.o].
|
||||
* Argument to .ab (abort) is supplied.
|
||||
* Argument to .1C added.
|
||||
* Argument to .PGFORM added.
|
||||
* RP/RS/RF totally rewritten. Should work with 2C now.
|
||||
|
||||
Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.18
|
||||
* Height of display is now more exactly calculated.
|
||||
* tabs and blankspaces where wrong in .VERBON.
|
||||
* error in manual for escape-character in VERBON.
|
||||
* Makefile.sub: installed tmac.m as tmac.m and tmac.mse
|
||||
* Installation of tmac.mse now supports TMAC_M.
|
||||
* bug with N fixed.
|
||||
|
||||
Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.17
|
||||
* MULB preserves size.
|
||||
* bug in VERBON fixed, causing strange errors.
|
||||
* section-page footer fixed.
|
||||
* added support for numberregister S
|
||||
* fixed bug with floating displays wich made floats to
|
||||
generate space on a page, but broke page anyway.
|
||||
* end-of-page trap reinstalled.
|
||||
|
||||
Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.16
|
||||
* MUL* now use the previous font and family.
|
||||
* extra blank page at end-of-text eliminated.
|
||||
|
||||
Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.15
|
||||
* Didn't restore pointsize to current size in .H.
|
||||
* B1/B2 did not work with indent. (MULE and friends)
|
||||
* fixed old problem with trailing empty pages.
|
||||
|
||||
Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.14
|
||||
* Sigh. Amazing what a missing \} can do. If the string
|
||||
HP was set, then all text disappeared...
|
||||
|
||||
Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.13
|
||||
* Fixed bug with handling ps/vs in .H. (again, sigh... )
|
||||
|
||||
Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.12
|
||||
* Line-break added to PGFORM.
|
||||
* added more features to VERBON
|
||||
* .S is not used anymore in H, it caused confusion with
|
||||
normal text, but it will still set .vs.
|
||||
* SK was broken, will now produce the requested number of
|
||||
empty pages.
|
||||
* dotted lines added to LIST OF FIGURES adn friends.
|
||||
Also better linespacing.
|
||||
|
||||
Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.11
|
||||
* missing left-parenthesis gave ") .sp" when N=4.
|
||||
* N=4 removed user-specified header also.
|
||||
* MOVE made linelength pageoffset wider than wanted.
|
||||
* fixed (again) parenthesis in RP.
|
||||
|
||||
Thu Jan 21 12:10:39 1993 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.10
|
||||
* changed PROG_PREFIX to g in the manual-pages.
|
||||
* Better check if new page is needed in .H, when Ej>0.
|
||||
* Usage of variable Lsp now more complete.
|
||||
* Space added in TOC when mark is equal to size.
|
||||
* Usermacro HY moved after font-calulations.
|
||||
* .S used instead of .ps, which will use .vs correct.
|
||||
* Now possible to set Hps1/2 inside HX.
|
||||
* .FD "" 1 is now fixed.
|
||||
* section-page numbering bug fixed.
|
||||
* several bugs in VERBON/OFF fixed.
|
||||
|
||||
Tue Dec 8 16:43:15 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.09
|
||||
* N==4 gives no default header
|
||||
|
||||
Sat Nov 21 14:28:20 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.08
|
||||
* Escape-character disabled between
|
||||
VERBON/VERBOFF (turned on by an argument).
|
||||
Pointsize and fontchange also added as arguments.
|
||||
* MULB, MULN and MULE added to get multicolumn output
|
||||
with different width.
|
||||
* Number register N can now use 1-5.
|
||||
* Register Sectp and Sectf added.
|
||||
* Register P is now updated correctly for "section-page" numbering.
|
||||
|
||||
Thu Nov 19 11:19:33 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.07
|
||||
* .OP fixed to eject a blank page if not odd.
|
||||
|
||||
Fri Nov 13 09:46:09 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.06
|
||||
* Macro TL rewritten. TL depends now on a following .AU.
|
||||
* NOTES updated.
|
||||
* .lt is now used more frequent when linelength is changed.
|
||||
* macro AST added.
|
||||
* removed PH/EH/OH not needed in ?.MT.
|
||||
|
||||
Wed Oct 28 14:35:43 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.05
|
||||
* .VM implemented.
|
||||
* Possible bug in page heading fixed. Changed .sp to 'sp in HEADER.
|
||||
|
||||
Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.04
|
||||
* page-break in .EQ moved.
|
||||
* changed unit for footer-size and header-size from units to lines.
|
||||
Fixes problems with .S and page-breaks.
|
||||
* \n[%] is now treated as a string, wich makes it possible
|
||||
to assign new formats to it. Unfortunately, it was necessary
|
||||
to change the page-number-variable in GETPN to a string.
|
||||
* Makefile.sub included. (Thank you, James)
|
||||
|
||||
Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.03
|
||||
* Typo and centering in DS/DE fixed.
|
||||
Even and odd pageheaders were reversed.
|
||||
* LI: pad and mark-indent was lost in some earlier versions. Now fixed.
|
||||
* fixed bug in reference to .FG, .TB, ...
|
||||
* APP did not clear headercounters.
|
||||
* Pointsize in titles is now only set at the beginning and
|
||||
when PH, PF, OH, OF, EH and EF are used.
|
||||
|
||||
Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.02
|
||||
* OP fixed.
|
||||
|
||||
Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.01
|
||||
* two .LI without text between should not be printed
|
||||
on the same row. Now fixed.
|
||||
* figure titles and friends fixed, now possible with many .FG
|
||||
in a DS/DE. Didn't always position correctly in previous version,
|
||||
but is now always printed as it should.
|
||||
* Makefile fixed for Ultrix.
|
||||
* DS/DF could not handle empty arguments correct
|
||||
* Missing .br i EQ added.
|
||||
|
||||
Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 1.00
|
||||
* No betaversion anymore!
|
||||
* Fixed headernumbers within appendixes.
|
||||
* DS did not keep the same font as before DS.
|
||||
* mmse did a line break.
|
||||
|
||||
Fri Jan 24 14:38:16 1992 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 0.16
|
||||
* bug in TC, multiple line headers did not wrap correctly.
|
||||
* added support for mm/locale and mm/language_locale.
|
||||
* cov*default-firm in locale sets name of firm in the MT covers.
|
||||
* cov*location-xxxx in locale sets location xxxx to the contents
|
||||
of cov*location-xxxx. Used in the MT covers.
|
||||
* hanging indent in lists fixed.
|
||||
* use larger empty lines if .nroff is defined.
|
||||
* macros, like .P, can now be used inside abstracts.
|
||||
* .S do not reset indentation anymore.
|
||||
* .RS aA now sets a string, not an integer.
|
||||
* appendix with .APP or .APPSK added.
|
||||
|
||||
Thu Nov 28 22:00:59 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 0.15
|
||||
* Fixed .AU in MT 0-3, added support for variable Au.
|
||||
* Bug in the positioning of the foot-notes.
|
||||
* lists not indented properly.
|
||||
* Hps1 and Hps2 added.
|
||||
* COVER had to have an argument.
|
||||
* table of contents can now have multiline header.
|
||||
* .HU now increments headingvariable H?
|
||||
* added the inclusion of a locale file.
|
||||
|
||||
Sat Nov 23 14:40:17 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 0.14
|
||||
* bug when using -rO fixed.
|
||||
* MT 1-4 added.
|
||||
* default is now MT 1
|
||||
* .EQ/.EN can be used outside of .DS/.DE without complaints. But
|
||||
I don't recommend it. Neither does the DWB books.
|
||||
* LI don't break lines now if arg too big.
|
||||
* PGFORM did not reset indent.
|
||||
* Added the numbervariable Hps.
|
||||
* Rewritten and added MT 0-5 + "string".
|
||||
* Added TM.
|
||||
* Indent to AS added
|
||||
|
||||
Wed Nov 6 15:18:40 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 0.13
|
||||
* ds*format nod defined if PS/PE is used without DS/DE.
|
||||
* GETST added, fourth argument to EX, FG, TB and EC added.
|
||||
|
||||
Mon Nov 4 13:38:01 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
|
||||
* version 0.12
|
||||
* Fixed C,D,P,+-size in .S
|
||||
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* Next version will have ChangeLog entries...
|
||||
* Bug in INITR fixed.
|
||||
* VERBON/VERBOFF added to include programlistings
|
||||
* Bug in .DE fixed, addition overflow
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* spelling error in month-names.
|
||||
* WC should work now (no warranty :-)
|
||||
* FD almost finished, some details missing.
|
||||
* incorrect calculation of foot-notes fixed.
|
||||
* DS/DE did not break page when the size was smaller than the paper
|
||||
* Forward/backward referencesystem added. Se .INITR in README.
|
||||
* mgmsw changed name to mgmse.
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* embarrassing bug in .P fixed
|
||||
* .H did always eject page, now fixed.
|
||||
* lost floating displays now found.
|
||||
* accents added (from mgs)
|
||||
* empty line in .EQ/.EN removed
|
||||
* indentation in .TC corrected.
|
||||
* indentation of DS/DE in lists fixed.
|
||||
* .TB and friends now work inside DS/DE and outside.
|
||||
* .WC partially implemented (WF and WD). Still working on it.
|
||||
* .mso used if version>=1.02
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* register P was not working.
|
||||
* support for register Fg, Tb, Ec and Ex.
|
||||
* list items was left on the previous page at a page break.
|
||||
* tlevel in .TC now defaults to 2.
|
||||
* string DT, EM and Tm supported.
|
||||
* new macro: PGNH, see comments.
|
||||
* bug in MOVE fixed.
|
||||
* pagenumber in .TC fixed.
|
||||
* a blank page was ejected if Ej==1, now fixed
|
||||
* bug in floating display fixed (did break and SP wrong)
|
||||
* bug in .SP fixed, no lines is now printed at top of page
|
||||
* There are still problems with footnotes and displays in two column mode.
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* register P added (same as %)
|
||||
* bug in floating displays fixed
|
||||
* MOVE added
|
||||
* MT added, see comment below
|
||||
* COVER/COVEND added
|
||||
* fixed bug in figure titles
|
||||
* extended S, se comment below
|
||||
* MT 0 added
|
||||
* ms-cover added (COVER ms)
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* bugs in RD and comb. fonts fixed
|
||||
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
|
||||
* HC added
|
||||
* Combined fonts (IB,BI...)
|
||||
* HM added
|
||||
* RD added
|
||||
* OP added
|
||||
* TP&PX supported
|
||||
* warnings for unimplemented macros
|
66
contrib/mm/Makefile.sim
Normal file
66
contrib/mm/Makefile.sim
Normal file
@ -0,0 +1,66 @@
|
||||
#
|
||||
# $Id: Makefile.sim,v 2.3 2002/05/22 06:26:12 jhaegg Exp $
|
||||
#
|
||||
# To install mgm separately as gm.tmac:
|
||||
# make -f Makefile.sub tmacdir=/usr/local/lib/groff/tmac srcdir=. \
|
||||
# INSTALL_DATA='install -m 644' tmac_m=gm install
|
||||
#
|
||||
# or as m.tmac:
|
||||
#
|
||||
# tmacdir is the destination for your groff/tmac-directory, srcdir is
|
||||
# this directory and INSTALL_DATA is the command to install a file with.
|
||||
# If you dont have 'install': use 'cp'.
|
||||
|
||||
|
||||
# change this to whatever you like
|
||||
tmacdir=/usr/local/lib/groff/tmac
|
||||
#tmac_m = gm
|
||||
tmac_m = m
|
||||
indexdir = xx
|
||||
install = install -m 644
|
||||
|
||||
# Do not change anything below this line
|
||||
srcdir = .
|
||||
version = 2.8
|
||||
mdate = 2002-05-11
|
||||
|
||||
.SUFFIXES: .n .man
|
||||
|
||||
all:
|
||||
|
||||
|
||||
install: groff_mm.n groff_mmse.n
|
||||
$(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
|
||||
INSTALL_DATA='$(install)' tmac_m=$(tmac_m) install
|
||||
|
||||
uninstall: groff_mm.n groff_mmse.n
|
||||
$(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
|
||||
INSTALL_DATA='$(install)' tmac_m=$(tmac_m) uninstall_sub
|
||||
|
||||
|
||||
.man.n:
|
||||
@echo Making $@ from $<
|
||||
@-rm -f $@
|
||||
@sed -e "s|@HYPHENFILE@|$(hyphenfile)|g" \
|
||||
-e "s|@FONTDIR@|$(fontdir)|g" \
|
||||
-e "s|@FONTPATH@|$(fontpath)|g" \
|
||||
-e "s|@MACRODIR@|$(tmacdir)|g" \
|
||||
-e "s|@MACROPATH@|$(tmacpath)|g" \
|
||||
-e "s|@DEVICE@|$(DEVICE)|g" \
|
||||
-e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
|
||||
-e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
|
||||
-e "s|@INDEX_SUFFIX@|$(indexext)|g" \
|
||||
-e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
|
||||
-e "s|@MAN1EXT@|$(man1ext)|g" \
|
||||
-e "s|@MAN5EXT@|$(man5ext)|g" \
|
||||
-e "s|@MAN7EXT@|$(man7ext)|g" \
|
||||
-e "s|@TMAC_S@|$(tmac_s)|g" \
|
||||
-e "s|@TMAC_M@|$(tmac_m)|g" \
|
||||
-e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
|
||||
-e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
|
||||
-e "s|@VERSION@|$(version)|g" \
|
||||
-e "s|@MDATE@|$(mdate)|g" \
|
||||
-e "s|@g@|$(g)|g" \
|
||||
-e "s!@G@;`echo $(g) | tr [a-z] [A-Z]`!g" \
|
||||
$< >$@
|
||||
|
62
contrib/mm/Makefile.sub
Normal file
62
contrib/mm/Makefile.sub
Normal file
@ -0,0 +1,62 @@
|
||||
#
|
||||
# $Id: Makefile.sub,v 2.3 2002/05/22 06:26:12 jhaegg Exp $
|
||||
#
|
||||
PROG=mmroff
|
||||
MAN1=\
|
||||
mmroff.n
|
||||
MAN7=\
|
||||
groff_mm.n \
|
||||
groff_mmse.n
|
||||
FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
|
||||
# Local configuration files with default values.
|
||||
LOCALE=locale se_locale
|
||||
CLEANADD=temp
|
||||
|
||||
all: mmroff
|
||||
|
||||
install: install_mm
|
||||
|
||||
install_mm: install_mmroff install_m
|
||||
-test -d $(tmacdir)/mm || $(mkinstalldirs) $(tmacdir)/mm
|
||||
-for f in $(FILES); do \
|
||||
rm -f $(tmacdir)/mm/$$f; \
|
||||
$(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \
|
||||
done
|
||||
-for f in $(LOCALE); do \
|
||||
test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \
|
||||
done
|
||||
|
||||
install_m:
|
||||
-test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir)
|
||||
-rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
|
||||
-rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
|
||||
$(INSTALL_DATA) $(srcdir)/m.tmac $(tmacdir)/$(tmac_m_prefix)m.tmac
|
||||
@sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
|
||||
$(srcdir)/mse.tmac > $(tmacdir)/$(tmac_m_prefix)mse.tmac
|
||||
@sed -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \
|
||||
$(srcdir)/mmse.tmac > $(tmacdir)/$(tmac_m_prefix)mmse.tmac
|
||||
@sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
|
||||
$(srcdir)/mm.tmac > $(tmacdir)/$(tmac_m_prefix)mm.tmac
|
||||
|
||||
install_mmroff: mmroff
|
||||
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
|
||||
-rm -f $(bindir)/mmroff
|
||||
$(INSTALL_SCRIPT) mmroff $(bindir)/mmroff
|
||||
|
||||
mmroff: mmroff.pl
|
||||
-rm -f $@
|
||||
-sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/mmroff.pl >$@
|
||||
-chmod +x $@
|
||||
|
||||
uninstall_sub:
|
||||
-for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done
|
||||
-for f in $(LOCALE); do \
|
||||
test -s $(tmacdir)/mm/$$f || rm -f $(tmacdir)/mm/$$f; \
|
||||
done
|
||||
-rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
|
||||
-rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
|
||||
-rm -f $(tmacdir)/$(tmac_m_prefix)mm.tmac
|
||||
-rm -f $(tmacdir)/$(tmac_m_prefix)mse.tmac
|
||||
-rm -f $(tmacdir)/$(tmac_m_prefix)mmse.tmac
|
||||
-rmdir $(tmacdir)/mm
|
||||
-rm -f $(bindir)/mmroff
|
105
contrib/mm/NOTES
Normal file
105
contrib/mm/NOTES
Normal file
@ -0,0 +1,105 @@
|
||||
######################################################################
|
||||
$Id: NOTES,v 2.0 2000/09/14 03:40:24 jhaegg Exp $
|
||||
|
||||
Beware!
|
||||
This may be old information. Trust only the source. :-)
|
||||
|
||||
Implementation notes. (Or how to make your own national mm)
|
||||
|
||||
Different commands:
|
||||
|
||||
COVER [arg]
|
||||
MT [arg [addressee]]
|
||||
The arg is part of a filename in mm/*.MT or mm/*.cov.
|
||||
This file is read when the macro is executed. Therefore it must be
|
||||
put before any text output.
|
||||
In each file there are definitions of all extra macros needed for the
|
||||
cover sheet. MT files is only for compatibility reasons, and has several
|
||||
limits due to that it don't know when the cover starts, and cannot
|
||||
change sizes. Use COVER for new coversheet macros.
|
||||
|
||||
But with MT it is possible to write all of the AT&T covers.
|
||||
An example can be found in mm/0.MT.
|
||||
|
||||
When writing a new cover using COVER, have in mind that the cover
|
||||
should print the page with the COVEND macro. This macro
|
||||
should be defined by the new macrofile.
|
||||
|
||||
Here is a part of ms.cov:
|
||||
> .\"-----------------
|
||||
> .de COVEND
|
||||
> .sp |4.2c
|
||||
> .cov@print-title
|
||||
> .cov@print-authors
|
||||
> .cov@print-firm
|
||||
> .cov@print-abstract
|
||||
> .cov@print-date
|
||||
This is important, since COVER disables the page header.
|
||||
> .pg@enable-top-trap
|
||||
Should begin with page one (normally).
|
||||
> .bp 1
|
||||
And enable the trap at the page footer.
|
||||
> .pg@enable-trap
|
||||
> ..
|
||||
|
||||
#########################
|
||||
|
||||
Variables for covers:
|
||||
I = integer
|
||||
S = string
|
||||
D = diversion
|
||||
M = macro
|
||||
|
||||
Name Type Desc.
|
||||
cov*au I The number of authors.
|
||||
|
||||
cov*title M Title collected with .TL.
|
||||
|
||||
cov*au!x!y S Author(s) given to .AU
|
||||
cov*at!x!y S Author(s) title given to .AT
|
||||
x is the author-index [1-cov*au],
|
||||
y is the argument-index [1-9].
|
||||
Look at the table with indexes.
|
||||
|
||||
cov*firm I Author(s) firm.
|
||||
|
||||
cov*abs-arg I Argument to abstract.
|
||||
|
||||
cov*abs-ind I Indent for abstract.
|
||||
|
||||
cov*abs-name S The string 'ABSTRACT', changed with .AST
|
||||
|
||||
cov*abstract M The abstract.
|
||||
|
||||
cov*new-date S The date (todays date if ND is not used)
|
||||
|
||||
cov*mt-type S MT type
|
||||
cov*mt-addresse S MT addressee
|
||||
|
||||
|
||||
##########################
|
||||
Argument-index for cov*au:
|
||||
|
||||
Index Desc.
|
||||
1 name
|
||||
2 initials
|
||||
3 location
|
||||
4 department
|
||||
5 extension
|
||||
6 room
|
||||
7 arg 7
|
||||
8 arg 8
|
||||
9 arg 9
|
||||
|
||||
The location is set to the contents of string cov*location-xxxx
|
||||
if location is equal to xxxx and cov*location-xxxx is defined
|
||||
in the file locale.
|
||||
|
||||
|
||||
Argument-index for cov*at:
|
||||
|
||||
Index Desc.
|
||||
1 title 1
|
||||
. .
|
||||
. .
|
||||
9 title 9
|
31
contrib/mm/README
Normal file
31
contrib/mm/README
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
$Id: README,v 2.2 2002/05/22 06:26:12 jhaegg Exp $
|
||||
|
||||
This is mgm, a macro package for groff.
|
||||
|
||||
It is supposed to be compatible with the DWB mm macros,
|
||||
and has several extensions.
|
||||
|
||||
Send bug reports to jh@axis.com with a description of the problem
|
||||
and a sample of text which reproduces the error.
|
||||
|
||||
Don't forget to mention the version of mgm (look in the beginning
|
||||
of m.tmac) and the version of groff.
|
||||
|
||||
Any new ideas or improvements are welcome.
|
||||
|
||||
Newest version is available here or at the groff CVS repository.
|
||||
ftp://ftp.axis.se/pub/groff/mm<something>.gz
|
||||
|
||||
You can install mgm as a separate package without the configure in groff
|
||||
with the following command:
|
||||
|
||||
make -f Makefile.sim install
|
||||
|
||||
This README should be bigger :-)
|
||||
|
||||
/Jörgen Hägg
|
||||
|
||||
Thanks to everyone who have sent me bug-reports and fixes.
|
||||
|
||||
|
352
contrib/mm/examples/APP
Normal file
352
contrib/mm/examples/APP
Normal file
@ -0,0 +1,352 @@
|
||||
.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
|
||||
granary
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.H 2 "grapefruit grapevine graph grapheme graphic graphite"
|
||||
granary
|
||||
grand
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.H 3 "grapple"
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grandma
|
||||
grandmother
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.H 1 "Graves gravestone graveyard gravid gravitate gravy gray"
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.H 1 "greensward greenware Greenwich greenwood Greer greet"
|
||||
graven
|
||||
Graves
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
.APP "" "Graves app a gravestone graveyard gravid gravitate gravy gray"
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.APP "" "Greenfield app b greengrocer greenhouse greenish Greenland Greensboro"
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
|
||||
.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic"
|
||||
.H 2 "granny granola grant grantee grantor granular granulate"
|
||||
.H 2 "granule Granville grape"
|
||||
.H 2 "grapefruit grapevine graph grapheme graphic graphite"
|
||||
.H 3 "grapple"
|
||||
grandfather
|
||||
grandiloquent
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.APP ABC "greensward app abc greenware Greenwich greenwood Greer greet"
|
||||
graven
|
||||
Graves
|
||||
.APP "" "handstand app f handwrite handwritten handy handyman handymen"
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
.APPSK "" 10 "Handel app c 10 handhold handicap handicapped handicapper"
|
||||
.APPSK "" 23 "handicapping app d 23 handicraftsmen handiwork"
|
||||
.APPSK "" 99 "handmade app e 99 handset handshake handsome handspike"
|
||||
.nr Aph 0
|
||||
.APP "" "handstand app f handwrite handwritten handy handyman handymen"
|
||||
headsmen
|
||||
headstand
|
||||
headstone
|
||||
headstrong
|
||||
headwall
|
||||
headwater
|
||||
headway
|
||||
headwind
|
||||
.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
|
||||
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
|
||||
.H 2 "Greenblatt Greenbriar Greene greenery"
|
||||
.H 3 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
|
||||
.H 3 "greensward greenware Greenwich greenwood Greer greet"
|
||||
heady
|
||||
heal
|
||||
Healey
|
||||
health
|
||||
healthful
|
||||
healthy
|
||||
Healy
|
||||
heap
|
||||
hear
|
||||
heard
|
||||
hearken
|
||||
hearsay
|
||||
hearse
|
||||
Hearst
|
||||
heart
|
||||
heartbeat
|
||||
heartbreak
|
||||
hearten
|
||||
heartfelt
|
||||
hearth
|
||||
hearty
|
||||
heat
|
||||
heater
|
||||
heath
|
||||
heathen
|
||||
heathenish
|
||||
Heathkit
|
||||
heave
|
||||
heaven
|
||||
heavenward
|
||||
heavy
|
||||
heavyweight
|
||||
Hebe
|
||||
hebephrenic
|
||||
Hebraic
|
||||
Hebrew
|
||||
Hecate
|
||||
hecatomb
|
||||
heck
|
||||
heckle
|
||||
Heckman
|
||||
hectic
|
||||
hector
|
||||
.APP "" "hang hangable app f hangar hangman hangmen hangout hangover hank"
|
||||
Hecuba
|
||||
he'd
|
||||
hedge
|
||||
.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
|
||||
hedgehog
|
||||
hedonism
|
||||
hedonist
|
||||
heed
|
||||
heel
|
||||
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
|
||||
heft
|
||||
hefty
|
||||
Hegelian
|
||||
hegemony
|
||||
Heidelberg
|
||||
heigh
|
||||
height
|
||||
heighten
|
||||
Heine
|
||||
Heinrich
|
||||
Heinz
|
||||
heir
|
||||
heiress
|
||||
Heisenberg
|
||||
held
|
||||
Helen
|
||||
Helena
|
||||
Helene
|
||||
Helga
|
||||
helical
|
||||
helicopter
|
||||
heliocentric
|
||||
heliotrope
|
||||
helium
|
||||
helix
|
||||
he'll
|
||||
hell
|
||||
hellbender
|
||||
hellebore
|
||||
Hellenic
|
||||
hellfire
|
||||
hellgrammite
|
||||
hellish
|
||||
hello
|
||||
helm
|
||||
helmet
|
||||
Helmholtz
|
||||
helmsman
|
||||
helmsmen
|
||||
Helmut
|
||||
help
|
||||
helpful
|
||||
helpmate
|
||||
.APP "" "Hankel app g Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover"
|
||||
Helsinki
|
||||
Helvetica
|
||||
hem
|
||||
hematite
|
||||
Hemingway
|
||||
hemisphere
|
||||
hemispheric
|
||||
hemlock
|
||||
hemoglobin
|
||||
hemolytic
|
||||
hemorrhage
|
||||
hemorrhoid
|
||||
hemosiderin
|
||||
hemp
|
||||
Hempstead
|
||||
hen
|
||||
henbane
|
||||
hence
|
||||
henceforth
|
||||
henchman
|
||||
henchmen
|
||||
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
|
||||
Henderson
|
||||
Hendrick
|
||||
Hendricks
|
||||
Hendrickson
|
||||
henequen
|
||||
Henley
|
||||
henpeck
|
||||
Henri
|
||||
Henrietta
|
||||
henry
|
||||
hepatica
|
||||
hepatitis
|
||||
Hepburn
|
||||
heptane
|
||||
her
|
||||
Hera
|
||||
Heraclitus
|
||||
herald
|
||||
herb
|
||||
Herbert
|
||||
Herculean
|
||||
Hercules
|
||||
herd
|
||||
herdsman
|
||||
here
|
||||
hereabout
|
||||
hereafter
|
||||
hereby
|
||||
hereditary
|
||||
.TC
|
91
contrib/mm/examples/B1B2
Normal file
91
contrib/mm/examples/B1B2
Normal file
@ -0,0 +1,91 @@
|
||||
abetting
|
||||
abeyance
|
||||
abeyant
|
||||
abhorred
|
||||
abhorrent
|
||||
abide
|
||||
Abidjan
|
||||
Abigail
|
||||
abject
|
||||
ablate
|
||||
ablaze
|
||||
able
|
||||
ablution
|
||||
Abner
|
||||
abnormal
|
||||
Abo
|
||||
aboard
|
||||
abode
|
||||
abolish
|
||||
.B1
|
||||
abolition
|
||||
abominable
|
||||
abominate
|
||||
aboriginal
|
||||
AAA
|
||||
ABORIGINE
|
||||
ABORNING
|
||||
ABORT
|
||||
ABOUND
|
||||
ABOUT
|
||||
ABOVE
|
||||
ABOVEBOARD
|
||||
ABOVEGROUND
|
||||
abovementioned
|
||||
abrade
|
||||
Abraham
|
||||
Abram
|
||||
Abramson
|
||||
abrasion
|
||||
abrasive
|
||||
abreact
|
||||
.B2
|
||||
abreast
|
||||
abrogate
|
||||
abrupt
|
||||
abscess
|
||||
abscissa
|
||||
abscissae
|
||||
absence
|
||||
absent
|
||||
absentee
|
||||
absenteeism
|
||||
absentia
|
||||
absentminded
|
||||
absinthe
|
||||
absolute
|
||||
absolution
|
||||
absolve
|
||||
absorb
|
||||
absorbent
|
||||
absorption
|
||||
absorptive
|
||||
abstain
|
||||
abstention
|
||||
abstract
|
||||
abstracter
|
||||
abstractor
|
||||
ABSURD
|
||||
ABUILDING
|
||||
ABUNDANT
|
||||
ABUSABLE
|
||||
ABUSE
|
||||
ABUSIVE
|
||||
ABUT
|
||||
ABUTTED
|
||||
ABUTTING
|
||||
ABYSMAL
|
||||
ABYSS
|
||||
ABYSSINIA
|
||||
AC
|
||||
ACADEME
|
||||
ACADEMIA
|
||||
ACADEMIC
|
||||
ACADEMICIAN
|
||||
ACADEMY
|
||||
ACADIA
|
||||
ACANTHUS
|
||||
ACAPULCO
|
||||
ACCEDE
|
||||
ACCELERATE
|
||||
ACCELEROMETER
|
235
contrib/mm/examples/COVER
Normal file
235
contrib/mm/examples/COVER
Normal file
@ -0,0 +1,235 @@
|
||||
.COVER
|
||||
.ND 911123
|
||||
.TL "charge" "filing"
|
||||
This is a test
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grandma
|
||||
grandmother
|
||||
grandnephew
|
||||
grandniece
|
||||
grandpa
|
||||
grandparent
|
||||
grandson
|
||||
.AU "Nisse Svensson" "DGY" "BF" "Computer Center" "5488" "5-2115" "nisse@vira.sture.elm"
|
||||
.AF "MT GRANDSTAND GRANITE GRANITIC"
|
||||
.AS 1 10
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
graven
|
||||
Graves
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
greasy
|
||||
great
|
||||
greatcoat
|
||||
greater
|
||||
grebe
|
||||
Grecian
|
||||
.AE
|
||||
.COVEND
|
||||
Greece
|
||||
greed
|
||||
greedy
|
||||
Greek
|
||||
green
|
||||
Greenbelt
|
||||
Greenberg
|
||||
Greenblatt
|
||||
Greenbriar
|
||||
Greene
|
||||
greenery
|
||||
Greenfield
|
||||
greengrocer
|
||||
greenhouse
|
||||
greenish
|
||||
Greenland
|
||||
Greensboro
|
||||
greensward
|
||||
greenware
|
||||
Greenwich
|
||||
greenwood
|
||||
Greer
|
||||
greet
|
||||
Greg
|
||||
gregarious
|
||||
Gregg
|
||||
Gregory
|
||||
gremlin
|
||||
grenade
|
||||
Grendel
|
||||
Grenoble
|
||||
Gresham
|
||||
Greta
|
||||
Gretchen
|
||||
grew
|
||||
grey
|
||||
greyhound
|
||||
greylag
|
||||
grid
|
||||
griddle
|
||||
gridiron
|
||||
grief
|
||||
grievance
|
||||
grieve
|
||||
grievous
|
||||
griffin
|
||||
Griffith
|
||||
grill
|
||||
grille
|
||||
grilled
|
||||
grillwork
|
||||
grim
|
||||
grimace
|
||||
Grimaldi
|
||||
grime
|
||||
Grimes
|
||||
Grimm
|
||||
grin
|
||||
grind
|
||||
grindstone
|
||||
grip
|
||||
gripe
|
||||
grippe
|
||||
grisly
|
||||
grist
|
||||
gristmill
|
||||
Griswold
|
||||
grit
|
||||
gritty
|
||||
grizzle
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grandma
|
||||
grandmother
|
||||
grandnephew
|
||||
grandniece
|
||||
grandpa
|
||||
grandparent
|
||||
grandson
|
||||
grandstand
|
||||
granite
|
||||
granitic
|
||||
granny
|
||||
granola
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
graven
|
||||
Graves
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
greasy
|
||||
great
|
||||
greatcoat
|
||||
greater
|
||||
grebe
|
||||
Grecian
|
||||
Greece
|
||||
greed
|
||||
greedy
|
||||
Greek
|
||||
green
|
||||
Greenbelt
|
||||
Greenberg
|
||||
Greenblatt
|
||||
Greenbriar
|
||||
Greene
|
||||
greenery
|
||||
Greenfield
|
||||
greengrocer
|
||||
greenhouse
|
||||
greenish
|
||||
Greenland
|
||||
Greensboro
|
||||
greensward
|
||||
greenware
|
4191
contrib/mm/examples/IND
Normal file
4191
contrib/mm/examples/IND
Normal file
File diff suppressed because it is too large
Load Diff
1058
contrib/mm/examples/LT
Normal file
1058
contrib/mm/examples/LT
Normal file
File diff suppressed because it is too large
Load Diff
1062
contrib/mm/examples/LT.se
Normal file
1062
contrib/mm/examples/LT.se
Normal file
File diff suppressed because it is too large
Load Diff
169
contrib/mm/examples/ML
Normal file
169
contrib/mm/examples/ML
Normal file
@ -0,0 +1,169 @@
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grandma
|
||||
grandmother
|
||||
grandnephew
|
||||
grandniece
|
||||
grandpa
|
||||
.ML MARK
|
||||
.LI "LOCALMARK"
|
||||
granola
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
.LI
|
||||
.DS
|
||||
Where shall we put this.
|
||||
Where shall we put this.
|
||||
Where shall we put this.
|
||||
.DE
|
||||
.LI
|
||||
granola
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
.LI
|
||||
.DS
|
||||
Where shall we put this.
|
||||
.DE
|
||||
.LI
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
.LI
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
.LI
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
.LE
|
||||
.SP 3
|
||||
.ML $ 1c
|
||||
.LI
|
||||
graven
|
||||
Graves
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
.LI
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
greasy
|
||||
great
|
||||
greatcoat
|
||||
.LI
|
||||
greater
|
||||
grebe
|
||||
Grecian
|
||||
Greece
|
||||
greed
|
||||
greedy
|
||||
Greek
|
||||
green
|
||||
.LI
|
||||
Greenbelt
|
||||
Greenberg
|
||||
Greenblatt
|
||||
Greenbriar
|
||||
Greene
|
||||
greenery
|
||||
.LE
|
||||
.SP 3
|
||||
.ML X 1c 1
|
||||
.LI
|
||||
Greenfield
|
||||
greengrocer
|
||||
grandson
|
||||
grandstand
|
||||
granite
|
||||
granitic
|
||||
granny
|
||||
graph
|
||||
.LI
|
||||
grapheme
|
||||
greenhouse
|
||||
greenish
|
||||
Greenland
|
||||
Greensboro
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
.LI
|
||||
grandma
|
||||
grandmother
|
||||
grandnephew
|
||||
grandniece
|
||||
grandpa
|
||||
grandparent
|
||||
grandson
|
||||
grandstand
|
||||
granite
|
||||
granitic
|
||||
granny
|
||||
.LI
|
||||
granola
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
.LI
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
.LE
|
175
contrib/mm/examples/MOVE
Normal file
175
contrib/mm/examples/MOVE
Normal file
@ -0,0 +1,175 @@
|
||||
.PH "'hej'hopp'i skogen'"
|
||||
.PF "'livet'är'härligt'"
|
||||
.OH "'ojämn'%'sida'"
|
||||
.EH "'ojämn'%'sida'"
|
||||
.OF "'ojämn'%'sida'"
|
||||
.EF "'ojämn'%'sida'"
|
||||
10th
|
||||
1st
|
||||
2nd
|
||||
3rd
|
||||
4th
|
||||
5th
|
||||
6th
|
||||
7th
|
||||
8th
|
||||
9th
|
||||
a
|
||||
AAA
|
||||
AAAS
|
||||
Aarhus
|
||||
Aaron
|
||||
AAU
|
||||
ABA
|
||||
Ababa
|
||||
aback
|
||||
abacus
|
||||
abalone
|
||||
abandon
|
||||
abase
|
||||
abash
|
||||
abate
|
||||
abater
|
||||
abbas
|
||||
abbe
|
||||
abbey
|
||||
abbot
|
||||
Abbott
|
||||
abbreviate
|
||||
abc
|
||||
abdicate
|
||||
abdomen
|
||||
abdominal
|
||||
abet
|
||||
abetted
|
||||
abetting
|
||||
abeyance
|
||||
abeyant
|
||||
abhorred
|
||||
abhorrent
|
||||
abide
|
||||
Abidjan
|
||||
Abigail
|
||||
abject
|
||||
ablate
|
||||
ablaze
|
||||
able
|
||||
ablution
|
||||
Abner
|
||||
.MOVE 50 20
|
||||
abnormal
|
||||
Abo
|
||||
aboard
|
||||
abode
|
||||
abolish
|
||||
abolition
|
||||
abominable
|
||||
abominate
|
||||
aboriginal
|
||||
AAA
|
||||
ABORIGINE
|
||||
ABORNING
|
||||
ABORT
|
||||
ABOUND
|
||||
ABOUT
|
||||
ABOVE
|
||||
ABOVEBOARD
|
||||
ABOVEGROUND
|
||||
abovementioned
|
||||
abrade
|
||||
Abraham
|
||||
Abram
|
||||
Abramson
|
||||
abrasion
|
||||
abrasive
|
||||
abreact
|
||||
abreast
|
||||
BBB
|
||||
ABRIDGE
|
||||
ABRIDGMENT
|
||||
ABROAD
|
||||
abrogate
|
||||
abrupt
|
||||
abscess
|
||||
abscissa
|
||||
abscissae
|
||||
absence
|
||||
absent
|
||||
absentee
|
||||
absenteeism
|
||||
absentia
|
||||
absentminded
|
||||
.MOVE 30 10
|
||||
absinthe
|
||||
absolute
|
||||
absolution
|
||||
absolve
|
||||
absorb
|
||||
absorbent
|
||||
absorption
|
||||
absorptive
|
||||
abstain
|
||||
abstention
|
||||
abstinent
|
||||
abstract
|
||||
abstracter
|
||||
abstractor
|
||||
CCC
|
||||
ABSTRUSE
|
||||
ABSURD
|
||||
ABUILDING
|
||||
ABUNDANT
|
||||
ABUSABLE
|
||||
ABUSE
|
||||
ABUSIVE
|
||||
ABUT
|
||||
ABUTTED
|
||||
ABUTTING
|
||||
ABYSMAL
|
||||
ABYSS
|
||||
ABYSSINIA
|
||||
AC
|
||||
ACADEME
|
||||
ACADEMIA
|
||||
ACADEMIC
|
||||
ACADEMICIAN
|
||||
ACADEMY
|
||||
ACADIA
|
||||
ACANTHUS
|
||||
ACAPULCO
|
||||
ACCEDE
|
||||
ACCELERATE
|
||||
ACCELEROMETER
|
||||
ACCENT
|
||||
ACCENTUAL
|
||||
ACCENTUATE
|
||||
ACCEPT
|
||||
ACCEPTANT
|
||||
acceptor
|
||||
access
|
||||
.MOVE 62 0 20
|
||||
accessible
|
||||
accession
|
||||
accessory
|
||||
accident
|
||||
accidental
|
||||
accipiter
|
||||
acclaim
|
||||
acclamation
|
||||
acclimate
|
||||
accolade
|
||||
accommodate
|
||||
accompaniment
|
||||
accompanist
|
||||
accompany
|
||||
accomplice
|
||||
accomplish
|
||||
accord
|
||||
accordant
|
||||
DDD
|
||||
ACCORDION
|
||||
ACCOST
|
||||
ACCOUNT
|
||||
ACCOUNTANT
|
||||
ACCRA
|
||||
.PGFORM
|
535
contrib/mm/examples/MUL
Normal file
535
contrib/mm/examples/MUL
Normal file
@ -0,0 +1,535 @@
|
||||
inject
|
||||
injudicious
|
||||
Injun
|
||||
injunct
|
||||
injunction
|
||||
injure
|
||||
injurious
|
||||
injury
|
||||
injustice
|
||||
ink
|
||||
inkling
|
||||
inlaid
|
||||
inland
|
||||
inlay
|
||||
inlet
|
||||
Inman
|
||||
inmate
|
||||
inn
|
||||
innards
|
||||
innate
|
||||
inner
|
||||
innermost
|
||||
innkeeper
|
||||
innocent
|
||||
innocuous
|
||||
innovate
|
||||
innuendo
|
||||
innumerable
|
||||
inoculate
|
||||
inoffensive
|
||||
inoperable
|
||||
inoperative
|
||||
inopportune
|
||||
inordinate
|
||||
inorganic
|
||||
input
|
||||
inputting
|
||||
inquest
|
||||
inquire
|
||||
inquiry
|
||||
inquisition
|
||||
inquisitive
|
||||
inquisitor
|
||||
inroad
|
||||
insane
|
||||
insatiable
|
||||
inscribe
|
||||
inscription
|
||||
inscrutable
|
||||
insect
|
||||
insecticide
|
||||
insecure
|
||||
inseminate
|
||||
insensible
|
||||
insensitive
|
||||
inseparable
|
||||
insert
|
||||
inset
|
||||
inshore
|
||||
inside
|
||||
insidious
|
||||
insight
|
||||
insightful
|
||||
insignia
|
||||
insignificant
|
||||
insincere
|
||||
insinuate
|
||||
insipid
|
||||
insist
|
||||
insistent
|
||||
insofar
|
||||
insolent
|
||||
insoluble
|
||||
insolvable
|
||||
insolvent
|
||||
insomnia
|
||||
insomniac
|
||||
insouciant
|
||||
inspect
|
||||
inspector
|
||||
inspiration
|
||||
inspire
|
||||
instable
|
||||
install
|
||||
installation
|
||||
instalment
|
||||
instance
|
||||
instant
|
||||
instantaneous
|
||||
instantiate
|
||||
instead
|
||||
instep
|
||||
instigate
|
||||
instill
|
||||
instillation
|
||||
instinct
|
||||
instinctual
|
||||
institute
|
||||
institution
|
||||
instruct
|
||||
instructor
|
||||
instrument
|
||||
instrumentation
|
||||
insubordinate
|
||||
insubstantial
|
||||
insufferable
|
||||
insufficient
|
||||
insular
|
||||
insulate
|
||||
insulin
|
||||
insult
|
||||
insuperable
|
||||
insupportable
|
||||
insuppressible
|
||||
insurance
|
||||
insure
|
||||
insurgent
|
||||
insurmountable
|
||||
insurrect
|
||||
insurrection
|
||||
intact
|
||||
intake
|
||||
intangible
|
||||
integer
|
||||
integrable
|
||||
.MULB 4c 1 5c 1 4c 1 3c
|
||||
Grenoble
|
||||
Gresham
|
||||
Greta
|
||||
Gretchen
|
||||
grew
|
||||
grieve
|
||||
grievous
|
||||
griffin
|
||||
Griffith
|
||||
grill
|
||||
grille
|
||||
grilled
|
||||
grillwork
|
||||
grim
|
||||
grimace
|
||||
Grimaldi
|
||||
grime
|
||||
Grimes
|
||||
Grimm
|
||||
grin
|
||||
grind
|
||||
grindstone
|
||||
grip
|
||||
gripe
|
||||
grippe
|
||||
grisly
|
||||
grist
|
||||
gristmill
|
||||
Griswold
|
||||
grit
|
||||
gritty
|
||||
grizzle
|
||||
grizzly
|
||||
groan
|
||||
groat
|
||||
grocer
|
||||
grocery
|
||||
groggy
|
||||
groin
|
||||
grommet
|
||||
groom
|
||||
groove
|
||||
grope
|
||||
grosbeak
|
||||
gross
|
||||
.MULN
|
||||
h
|
||||
ha
|
||||
Haag
|
||||
Haas
|
||||
habeas
|
||||
haberdashery
|
||||
Haberman
|
||||
Habib
|
||||
habit
|
||||
habitant
|
||||
habitat
|
||||
habitation
|
||||
habitual
|
||||
habituate
|
||||
hacienda
|
||||
hack
|
||||
hackberry
|
||||
Hackett
|
||||
hackle
|
||||
hackmatack
|
||||
hackney
|
||||
hackneyed
|
||||
hacksaw
|
||||
had
|
||||
Hadamard
|
||||
Haddad
|
||||
haddock
|
||||
Hades
|
||||
Hadley
|
||||
hadn't
|
||||
Hadrian
|
||||
hadron
|
||||
hafnium
|
||||
Hagen
|
||||
Hager
|
||||
haggard
|
||||
haggle
|
||||
Hagstrom
|
||||
Hague
|
||||
Hahn
|
||||
Haifa
|
||||
haiku
|
||||
hail
|
||||
hailstone
|
||||
hailstorm
|
||||
Haines
|
||||
hair
|
||||
haircut
|
||||
hairdo
|
||||
hairpin
|
||||
hairy
|
||||
Haiti
|
||||
Haitian
|
||||
Hal
|
||||
halcyon
|
||||
hale
|
||||
Haley
|
||||
half
|
||||
halfback
|
||||
halfhearted
|
||||
halfway
|
||||
halibut
|
||||
halide
|
||||
Halifax
|
||||
halite
|
||||
hall
|
||||
hallelujah
|
||||
Halley
|
||||
hallmark
|
||||
hallow
|
||||
Halloween
|
||||
hallucinate
|
||||
hallway
|
||||
halma
|
||||
halo
|
||||
halocarbon
|
||||
halogen
|
||||
Halpern
|
||||
Halsey
|
||||
Halstead
|
||||
halt
|
||||
halvah
|
||||
halve
|
||||
Halverson
|
||||
ham
|
||||
Hamal
|
||||
Hamburg
|
||||
hamburger
|
||||
Hamilton
|
||||
hamlet
|
||||
Hamlin
|
||||
hammerhead
|
||||
hammock
|
||||
Hammond
|
||||
hamper
|
||||
Hampshire
|
||||
Hampton
|
||||
hamster
|
||||
Han
|
||||
Hancock
|
||||
hand
|
||||
handbag
|
||||
handbook
|
||||
handclasp
|
||||
handcuff
|
||||
.MULN
|
||||
coliform
|
||||
coliseum
|
||||
collaborate
|
||||
collage
|
||||
collagen
|
||||
collapse
|
||||
collapsible
|
||||
collar
|
||||
collarbone
|
||||
collard
|
||||
collate
|
||||
collateral
|
||||
colleague
|
||||
collect
|
||||
collectible
|
||||
collector
|
||||
college
|
||||
collegial
|
||||
collegian
|
||||
collegiate
|
||||
collet
|
||||
collide
|
||||
collie
|
||||
Collier
|
||||
collimate
|
||||
collinear
|
||||
Collins
|
||||
collision
|
||||
collocation
|
||||
colloidal
|
||||
Colloq
|
||||
colloquia
|
||||
colloquial
|
||||
colloquium
|
||||
colloquy
|
||||
command
|
||||
commandant
|
||||
commandeer
|
||||
commando
|
||||
commemorate
|
||||
commend
|
||||
commendation
|
||||
commendatory
|
||||
commensurable
|
||||
commensurate
|
||||
comment
|
||||
commentary
|
||||
commentator
|
||||
commerce
|
||||
commercial
|
||||
commingle
|
||||
commiserate
|
||||
commissariat
|
||||
commissary
|
||||
commission
|
||||
commit
|
||||
committable
|
||||
committal
|
||||
committed
|
||||
committee
|
||||
committeeman
|
||||
committeemen
|
||||
committeewoman
|
||||
committeewomen
|
||||
committing
|
||||
commodious
|
||||
commodity
|
||||
commodore
|
||||
common
|
||||
commonality
|
||||
.MULN
|
||||
locoweed
|
||||
lunch
|
||||
luncheon
|
||||
lunchroom
|
||||
lunchtime
|
||||
Lund
|
||||
Lundberg
|
||||
Lundquist
|
||||
lung
|
||||
lunge
|
||||
lupine
|
||||
Lura
|
||||
lurch
|
||||
lure
|
||||
lurid
|
||||
lurk
|
||||
Lusaka
|
||||
luscious
|
||||
lush
|
||||
lust
|
||||
lustful
|
||||
lustrous
|
||||
lusty
|
||||
lutanist
|
||||
lute
|
||||
lutetium
|
||||
Luther
|
||||
Lutheran
|
||||
Lutz
|
||||
lymphocyte
|
||||
lymphoma
|
||||
lynch
|
||||
Lynchburg
|
||||
Lynn
|
||||
lynx
|
||||
Lyon
|
||||
Lyons
|
||||
Lyra
|
||||
lyric
|
||||
lyricism
|
||||
Lysenko
|
||||
lysergic
|
||||
lysine
|
||||
.MULE
|
||||
m
|
||||
ma
|
||||
Mabel
|
||||
Mac
|
||||
macabre
|
||||
macaque
|
||||
MacArthur
|
||||
Macassar
|
||||
Macbeth
|
||||
MacDonald
|
||||
MacDougall
|
||||
mace
|
||||
Macedon
|
||||
Macedonia
|
||||
MacGregor
|
||||
Mach
|
||||
Machiavelli
|
||||
machination
|
||||
machine
|
||||
machinelike
|
||||
machinery
|
||||
machismo
|
||||
macho
|
||||
macintosh
|
||||
mack
|
||||
MacKenzie
|
||||
mackerel
|
||||
Mackey
|
||||
Mackinac
|
||||
Mackinaw
|
||||
mackintosh
|
||||
MacMillan
|
||||
Macon
|
||||
macrame
|
||||
macro
|
||||
macromolecular
|
||||
macromolecule
|
||||
macrophage
|
||||
macroprocessor
|
||||
macroscopic
|
||||
macrostructure
|
||||
mad
|
||||
Madagascar
|
||||
madam
|
||||
Madame
|
||||
madcap
|
||||
madden
|
||||
Maddox
|
||||
made
|
||||
Madeira
|
||||
Madeleine
|
||||
Madeline
|
||||
madhouse
|
||||
Madison
|
||||
madman
|
||||
madmen
|
||||
Madonna
|
||||
Madras
|
||||
Madrid
|
||||
madrigal
|
||||
Madsen
|
||||
madstone
|
||||
Mae
|
||||
Maelstrom
|
||||
maestro
|
||||
Mafia
|
||||
magazine
|
||||
Magdalene
|
||||
magenta
|
||||
Maggie
|
||||
maggot
|
||||
maggoty
|
||||
magi
|
||||
magic
|
||||
magician
|
||||
magisterial
|
||||
magistrate
|
||||
magma
|
||||
magna
|
||||
magnanimity
|
||||
magnanimous
|
||||
magnate
|
||||
magnesia
|
||||
magnesite
|
||||
magnesium
|
||||
magnet
|
||||
magnetic
|
||||
magnetite
|
||||
magneto
|
||||
magnetron
|
||||
magnificent
|
||||
magnify
|
||||
magnitude
|
||||
magnolia
|
||||
magnum
|
||||
Magnuson
|
||||
Magog
|
||||
magpie
|
||||
Magruder
|
||||
Mahayana
|
||||
Mahayanist
|
||||
mahogany
|
||||
Mahoney
|
||||
maid
|
||||
maiden
|
||||
maidenhair
|
||||
maidservant
|
||||
Maier
|
||||
mail
|
||||
mailbox
|
||||
mailman
|
||||
mailmen
|
||||
maim
|
||||
main
|
||||
Maine
|
||||
mainland
|
||||
mainline
|
||||
mainstay
|
||||
mainstream
|
||||
maintain
|
||||
maintenance
|
||||
maitre
|
||||
majestic
|
||||
majesty
|
||||
major
|
||||
make
|
||||
makeshift
|
||||
makeup
|
||||
Malabar
|
||||
maladapt
|
||||
maladaptive
|
||||
maladjust
|
||||
maladroit
|
||||
malady
|
||||
Malagasy
|
||||
malaise
|
||||
malaprop
|
||||
malaria
|
||||
malarial
|
||||
Malawi
|
||||
Malay
|
||||
Malaysia
|
196
contrib/mm/examples/NCOL
Normal file
196
contrib/mm/examples/NCOL
Normal file
@ -0,0 +1,196 @@
|
||||
granary
|
||||
grand
|
||||
grandchild
|
||||
grandchildren
|
||||
granddaughter
|
||||
grandeur
|
||||
grandfather
|
||||
grandiloquent
|
||||
grandiose
|
||||
grandma
|
||||
grandmother
|
||||
grandnephew
|
||||
grandniece
|
||||
grandpa
|
||||
grandparent
|
||||
grandson
|
||||
grandstand
|
||||
granite
|
||||
granitic
|
||||
granny
|
||||
granola
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
granule
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
.MC 3c
|
||||
grata
|
||||
grate
|
||||
grateful
|
||||
grater
|
||||
gratify
|
||||
gratis
|
||||
gratitude
|
||||
gratuitous
|
||||
gratuity
|
||||
grave
|
||||
gravel
|
||||
graven
|
||||
Graves
|
||||
gravestone
|
||||
graveyard
|
||||
gravid
|
||||
gravitate
|
||||
gravy
|
||||
gray
|
||||
graybeard
|
||||
grayish
|
||||
Grayson
|
||||
graywacke
|
||||
graze
|
||||
grease
|
||||
greasy
|
||||
great
|
||||
greatcoat
|
||||
greater
|
||||
grebe
|
||||
Grecian
|
||||
Greece
|
||||
greed
|
||||
greedy
|
||||
.NCOL
|
||||
Greek
|
||||
green
|
||||
Greenbelt
|
||||
Greenberg
|
||||
Greenblatt
|
||||
Greenbriar
|
||||
Greene
|
||||
greenery
|
||||
Greenfield
|
||||
greengrocer
|
||||
greenhouse
|
||||
greenish
|
||||
Greenland
|
||||
Greensboro
|
||||
greensward
|
||||
greenware
|
||||
Greenwich
|
||||
greenwood
|
||||
Greer
|
||||
greet
|
||||
Greg
|
||||
gregarious
|
||||
Gregg
|
||||
Gregory
|
||||
gremlin
|
||||
grenade
|
||||
Grendel
|
||||
Grenoble
|
||||
Gresham
|
||||
Greta
|
||||
Gretchen
|
||||
grew
|
||||
grey
|
||||
greyhound
|
||||
greylag
|
||||
grid
|
||||
griddle
|
||||
gridiron
|
||||
grief
|
||||
grievance
|
||||
grieve
|
||||
grievous
|
||||
griffin
|
||||
Griffith
|
||||
grill
|
||||
grille
|
||||
grilled
|
||||
grillwork
|
||||
.NCOL
|
||||
grim
|
||||
grimace
|
||||
Grimaldi
|
||||
grime
|
||||
Grimes
|
||||
Grimm
|
||||
grin
|
||||
grind
|
||||
grindstone
|
||||
grip
|
||||
gripe
|
||||
grippe
|
||||
grisly
|
||||
grist
|
||||
gristmill
|
||||
Griswold
|
||||
grit
|
||||
gritty
|
||||
grizzle
|
||||
grizzly
|
||||
groan
|
||||
groat
|
||||
grocer
|
||||
grocery
|
||||
groggy
|
||||
groin
|
||||
grommet
|
||||
groom
|
||||
groove
|
||||
grope
|
||||
grosbeak
|
||||
gross
|
||||
Grosset
|
||||
Grossman
|
||||
Grosvenor
|
||||
grotesque
|
||||
Groton
|
||||
ground
|
||||
groundsel
|
||||
groundskeep
|
||||
groundwork
|
||||
group
|
||||
groupoid
|
||||
grout
|
||||
grove
|
||||
grovel
|
||||
Grover
|
||||
grow
|
||||
growl
|
||||
grown
|
||||
grownup
|
||||
growth
|
||||
grub
|
||||
grubby
|
||||
grudge
|
||||
gruesome
|
||||
gruff
|
||||
grumble
|
||||
Grumman
|
||||
grunt
|
||||
gryphon
|
||||
g's
|
||||
GSA
|
||||
GU
|
||||
Guam
|
||||
guanidine
|
||||
guanine
|
||||
guano
|
||||
guarantee
|
||||
guaranteeing
|
||||
guarantor
|
17
contrib/mm/examples/ND
Normal file
17
contrib/mm/examples/ND
Normal file
@ -0,0 +1,17 @@
|
||||
.nf
|
||||
----------------------------------------------------------------------
|
||||
.ce
|
||||
Testing
|
||||
----------------------------------------------------------------------
|
||||
Date = \*[DT]
|
||||
.ISODATE
|
||||
Date = \*[DT]
|
||||
.ISODATE 0
|
||||
|
||||
.ND "13 August 1992"
|
||||
Date = \*[DT]
|
||||
|
||||
.ISODATE
|
||||
.ND "14 August 1992"
|
||||
Date = \*[DT]
|
||||
----------------------------------------------------------------------
|
32
contrib/mm/examples/README
Normal file
32
contrib/mm/examples/README
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
This directory contains examples of my enhancements to MM.
|
||||
|
||||
APP The appendix macro
|
||||
B1B2 Box macro with text
|
||||
COVER My general cover macro, this example is using
|
||||
ms.cov.
|
||||
IND A general indexing method, see manual for INITI
|
||||
LT The letter macro
|
||||
LT.se A swedish example with the extra
|
||||
swedish macros for getting a letter conforming
|
||||
to swedish standard letter, both left and right adjusted.
|
||||
ML Marked list, an extended list type
|
||||
MOVE The MOVE macro, how to begin to print on an exact position.
|
||||
MUL Enhanced multicolumn mode.
|
||||
NCOL Start on next column. (Not for MUL*)
|
||||
ND New date, with iso date example
|
||||
References How to use references
|
||||
SETR General reference system, see manual for INITR
|
||||
|
||||
|
||||
Examples that I should have:
|
||||
|
||||
PIC How to include postscript pictures, see manual for PIC
|
||||
VERBON Begin verbatim output
|
||||
|
||||
|
||||
And remember, check the manual for all string and number registers,
|
||||
I've made shure that mgm will be useful in several languages
|
||||
and all english output can be redefined.
|
||||
Check the manual for groff_mse (swedish format) and the
|
||||
macro file, tmac.mse.
|
975
contrib/mm/examples/References
Normal file
975
contrib/mm/examples/References
Normal file
@ -0,0 +1,975 @@
|
||||
.PH "'this'is'a header'"
|
||||
.PF "'this'is'a footer'"
|
||||
.OH "'odd'%'page'"
|
||||
.EH "'even'%'page'"
|
||||
.OF "'odd'%'page'"
|
||||
.EF "'even'%'page'"
|
||||
10th
|
||||
1st
|
||||
2nd
|
||||
3rd
|
||||
4th
|
||||
5th
|
||||
6th
|
||||
7th
|
||||
8th
|
||||
9th
|
||||
a
|
||||
AAA
|
||||
.B
|
||||
AAAS
|
||||
Aarhus
|
||||
Aaron
|
||||
.R
|
||||
AAU
|
||||
ABA
|
||||
Ababa
|
||||
aback
|
||||
abacus
|
||||
abalone
|
||||
abandon
|
||||
abase
|
||||
.H 1 "hej hopp"
|
||||
abash
|
||||
abate
|
||||
abater
|
||||
abbas
|
||||
abbe
|
||||
abbey
|
||||
abbot
|
||||
Abbott
|
||||
abbreviate
|
||||
abc
|
||||
abdicate
|
||||
abdomen
|
||||
abet
|
||||
abetted
|
||||
abetting
|
||||
abeyance
|
||||
abeyant
|
||||
.H 2 "hej hopp"
|
||||
abhorred
|
||||
abhorrent
|
||||
abide
|
||||
Abidjan
|
||||
Abigail
|
||||
abject
|
||||
ablate
|
||||
ablaze
|
||||
able
|
||||
ablution
|
||||
Abner
|
||||
abnormal
|
||||
.H 2 "hej hopp"
|
||||
Abo
|
||||
aboard
|
||||
abode
|
||||
abolish
|
||||
.HU "hej hopp"
|
||||
.B1
|
||||
abolition
|
||||
abominable
|
||||
abominate\*(Rf
|
||||
aboriginal
|
||||
.RS
|
||||
AAA
|
||||
ABORIGINE
|
||||
ABORNING
|
||||
ABORT
|
||||
ABOUND
|
||||
ABOUT
|
||||
ABOVE
|
||||
ABOVEBOARD
|
||||
ABOVEGROUND
|
||||
.RF
|
||||
abovementioned
|
||||
abrade
|
||||
Abraham\*(Rf
|
||||
Abram\*(Rf
|
||||
Abramson\*(Rf
|
||||
abrasion\*(Rf
|
||||
abrasive\*(Rf
|
||||
abreact\*(Rf
|
||||
.B2
|
||||
abreast\*(Rf
|
||||
.RS
|
||||
BBB
|
||||
ABRIDGE
|
||||
ABRIDGMENT
|
||||
ABROAD
|
||||
.RF
|
||||
abrogate
|
||||
abrupt
|
||||
abscess\*(Rf
|
||||
abscissa\*(Rf
|
||||
abscissae\*(Rf
|
||||
absence\*(Rf
|
||||
absent
|
||||
absentee
|
||||
absenteeism
|
||||
absentia
|
||||
.H 3 "hej hopp"
|
||||
absentminded
|
||||
absinthe
|
||||
absolute
|
||||
absolution
|
||||
absolve
|
||||
absorb
|
||||
absorbent
|
||||
absorption
|
||||
absorptive
|
||||
abstain
|
||||
abstention
|
||||
abstinent\*(Rf
|
||||
abstract
|
||||
abstracter
|
||||
abstractor
|
||||
.RS nisse
|
||||
CCC
|
||||
ABSTRUSE
|
||||
ABSURD
|
||||
ABUILDING
|
||||
ABUNDANT
|
||||
ABUSABLE
|
||||
ABUSE
|
||||
ABUSIVE
|
||||
ABUT
|
||||
ABUTTED
|
||||
ABUTTING
|
||||
ABYSMAL
|
||||
ABYSS
|
||||
ABYSSINIA
|
||||
AC
|
||||
ACADEME
|
||||
ACADEMIA
|
||||
ACADEMIC
|
||||
ACADEMICIAN
|
||||
ACADEMY
|
||||
ACADIA
|
||||
ACANTHUS
|
||||
ACAPULCO
|
||||
ACCEDE
|
||||
ACCELERATE
|
||||
ACCELEROMETER
|
||||
ACCENT
|
||||
ACCENTUAL
|
||||
ACCENTUATE
|
||||
ACCEPT
|
||||
ACCEPTANT
|
||||
.RF
|
||||
acceptor
|
||||
access
|
||||
accessible
|
||||
accession
|
||||
Ref \*[nisse]
|
||||
accessory
|
||||
.H 4 "hej hopp"
|
||||
accident
|
||||
accidental
|
||||
accipiter
|
||||
acclaim
|
||||
acclamation
|
||||
acclimate
|
||||
accolade
|
||||
accommodate
|
||||
accompaniment
|
||||
accompanist
|
||||
accompany
|
||||
accomplice
|
||||
accomplish\*(Rf
|
||||
accord
|
||||
accordant
|
||||
.RS
|
||||
DDD
|
||||
ACCORDION
|
||||
ACCOST
|
||||
ACCOUNT
|
||||
ACCOUNTANT
|
||||
ACCRA
|
||||
ACCREDIT
|
||||
ACCREDITATE
|
||||
ACCREDITATION
|
||||
ACCRETION
|
||||
ACCRUAL
|
||||
ACCRUE
|
||||
.RF
|
||||
acculturate
|
||||
accumulate
|
||||
accuracy
|
||||
accurate
|
||||
accusation
|
||||
accusative
|
||||
accusatory
|
||||
accuse
|
||||
accustom
|
||||
ace
|
||||
acerbic
|
||||
acerbity
|
||||
acetate
|
||||
acetic
|
||||
acetone
|
||||
acetylene
|
||||
ache
|
||||
achieve
|
||||
Achilles
|
||||
aching
|
||||
achromatic
|
||||
acid
|
||||
acidic
|
||||
acidulous
|
||||
.H 5 "hej hopp"
|
||||
Ackerman
|
||||
Ackley
|
||||
acknowledge
|
||||
acknowledgeable
|
||||
ACM
|
||||
acme
|
||||
acolyte
|
||||
acorn
|
||||
acoustic
|
||||
acquaint
|
||||
acquaintance
|
||||
acquiesce
|
||||
acquiescent
|
||||
acquire
|
||||
acquisition
|
||||
acquisitive
|
||||
acquit
|
||||
acquittal
|
||||
acquitting
|
||||
acre
|
||||
acreage
|
||||
acrid
|
||||
acrimonious
|
||||
acrimony
|
||||
acrobacy
|
||||
acrobat
|
||||
acrobatic
|
||||
acronym
|
||||
acropolis
|
||||
across
|
||||
acrylate
|
||||
acrylic
|
||||
ACS
|
||||
act
|
||||
Actaeon
|
||||
actinic
|
||||
actinide
|
||||
actinium
|
||||
actinolite
|
||||
actinometer
|
||||
activate
|
||||
activation
|
||||
activism
|
||||
Acton
|
||||
actor
|
||||
actress
|
||||
Acts
|
||||
actual
|
||||
actuarial
|
||||
actuate
|
||||
.H 6 "hej hopp"
|
||||
acuity
|
||||
acumen
|
||||
acute
|
||||
acyclic
|
||||
ad
|
||||
Ada
|
||||
adage
|
||||
adagio
|
||||
Adair
|
||||
Adam
|
||||
adamant
|
||||
Adams
|
||||
Adamson
|
||||
adapt
|
||||
adaptation
|
||||
adaptive
|
||||
add
|
||||
added
|
||||
addend
|
||||
addenda
|
||||
addendum
|
||||
addict
|
||||
Addis
|
||||
Addison
|
||||
addition
|
||||
additional
|
||||
additive
|
||||
addle
|
||||
address
|
||||
addressee
|
||||
Addressograph
|
||||
adduce
|
||||
Adelaide
|
||||
Adele
|
||||
Adelia
|
||||
Aden
|
||||
adenine
|
||||
adenoma
|
||||
adenosine
|
||||
adept
|
||||
adequacy
|
||||
adequate
|
||||
adhere
|
||||
adherent
|
||||
adhesion
|
||||
adhesive
|
||||
adiabatic
|
||||
adieu
|
||||
adipic
|
||||
Adirondack
|
||||
.H 7 "hej hopp"
|
||||
adjacent
|
||||
adject
|
||||
adjectival
|
||||
adjective
|
||||
adjoin
|
||||
adjoint
|
||||
adjourn
|
||||
adjudge
|
||||
adjudicate
|
||||
adjunct
|
||||
adjust
|
||||
adjutant
|
||||
Adkins
|
||||
Adler
|
||||
administer
|
||||
administrable
|
||||
administrate
|
||||
administratrix
|
||||
admiral
|
||||
admiralty
|
||||
admiration
|
||||
admire
|
||||
admissible
|
||||
admission
|
||||
admit
|
||||
admittance
|
||||
admitted
|
||||
admitting
|
||||
admix
|
||||
admixture
|
||||
admonish
|
||||
admonition
|
||||
ado
|
||||
adobe
|
||||
adolescent
|
||||
Adolph
|
||||
Adolphus
|
||||
Adonis
|
||||
adopt
|
||||
adoption
|
||||
adoptive
|
||||
adore
|
||||
adorn
|
||||
adposition
|
||||
adrenal
|
||||
adrenaline
|
||||
Adrian
|
||||
Adriatic
|
||||
Adrienne
|
||||
adrift
|
||||
adroit
|
||||
adsorb
|
||||
adsorbate
|
||||
adsorption
|
||||
adsorptive
|
||||
adulate
|
||||
adult
|
||||
adulterate
|
||||
adulterous
|
||||
adultery
|
||||
adulthood
|
||||
advance
|
||||
advantage
|
||||
advantageous
|
||||
advent
|
||||
adventitious
|
||||
adventure
|
||||
adventurous
|
||||
adverb
|
||||
adverbial
|
||||
adversary
|
||||
adverse
|
||||
advert
|
||||
advertise
|
||||
advice
|
||||
advisable
|
||||
advise
|
||||
advisee
|
||||
advisor
|
||||
advisory
|
||||
advocacy
|
||||
advocate
|
||||
Aegean
|
||||
aegis
|
||||
Aeneas
|
||||
Aeneid
|
||||
aeolian
|
||||
Aeolus
|
||||
aerate
|
||||
aerial
|
||||
Aerobacter
|
||||
aerobic
|
||||
aerodynamic
|
||||
aerogene
|
||||
aeronautic
|
||||
aerosol
|
||||
aerospace
|
||||
Aeschylus
|
||||
aesthete
|
||||
aesthetic
|
||||
10th
|
||||
1st
|
||||
2nd
|
||||
3rd
|
||||
4th
|
||||
5th
|
||||
6th
|
||||
7th
|
||||
8th
|
||||
9th
|
||||
a
|
||||
AAA
|
||||
AAAS
|
||||
Aarhus
|
||||
Aaron
|
||||
AAU
|
||||
ABA
|
||||
Ababa
|
||||
aback
|
||||
abacus
|
||||
abalone
|
||||
abandon
|
||||
abase
|
||||
.H 1 "hej hopp"
|
||||
abash
|
||||
abate
|
||||
abater
|
||||
abbas
|
||||
abbe
|
||||
abbey
|
||||
abbot
|
||||
Abbott
|
||||
abbreviate
|
||||
abc
|
||||
abdicate
|
||||
abdomen
|
||||
abdominal
|
||||
abduct
|
||||
Abe
|
||||
abed
|
||||
Abel
|
||||
Abelian
|
||||
Abelson
|
||||
Aberdeen
|
||||
Abernathy
|
||||
aberrant
|
||||
aberrate
|
||||
abet
|
||||
abetted
|
||||
abetting
|
||||
abeyance
|
||||
abeyant
|
||||
.H 2 "hej hopp"
|
||||
abhorred
|
||||
abhorrent
|
||||
abide
|
||||
Abidjan
|
||||
Abigail
|
||||
abject
|
||||
ablate
|
||||
ablaze
|
||||
able
|
||||
ablution
|
||||
Abner
|
||||
abnormal
|
||||
Abo
|
||||
aboard
|
||||
abode
|
||||
abolish
|
||||
abolition
|
||||
abominable
|
||||
abominate
|
||||
aboriginal
|
||||
aborigine
|
||||
aborning
|
||||
abort
|
||||
abound
|
||||
about
|
||||
above
|
||||
aboveboard
|
||||
aboveground
|
||||
abovementioned
|
||||
abrade
|
||||
Abraham
|
||||
Abram
|
||||
Abramson
|
||||
abrasion
|
||||
abrasive
|
||||
abreact
|
||||
abreast
|
||||
abridge
|
||||
abridgment
|
||||
abroad
|
||||
abrogate
|
||||
abrupt
|
||||
abscess
|
||||
abscissa
|
||||
abscissae
|
||||
absence
|
||||
absent
|
||||
absentee
|
||||
absenteeism
|
||||
absentia
|
||||
.H 3 "hej hopp"
|
||||
absentminded
|
||||
absinthe
|
||||
absolute
|
||||
absolution
|
||||
absolve
|
||||
absorb
|
||||
absorbent
|
||||
absorption
|
||||
absorptive
|
||||
abstain
|
||||
abstention
|
||||
abstinent
|
||||
abstract
|
||||
abstracter
|
||||
abstractor
|
||||
abstruse
|
||||
absurd
|
||||
abuilding
|
||||
abundant
|
||||
abusable
|
||||
abuse
|
||||
abusive
|
||||
abut
|
||||
abutted
|
||||
abutting
|
||||
abysmal
|
||||
abyss
|
||||
Abyssinia
|
||||
AC
|
||||
academe
|
||||
academia
|
||||
academic
|
||||
academician
|
||||
academy
|
||||
Acadia
|
||||
acanthus
|
||||
Acapulco
|
||||
accede
|
||||
accelerate
|
||||
accelerometer
|
||||
accent
|
||||
accentual
|
||||
accentuate
|
||||
accept
|
||||
acceptant
|
||||
acceptor
|
||||
access
|
||||
accessible
|
||||
accession
|
||||
accessory
|
||||
.H 4 "hej hopp"
|
||||
accident
|
||||
accidental
|
||||
accipiter
|
||||
acclaim
|
||||
acclamation
|
||||
acclimate
|
||||
accolade
|
||||
accommodate
|
||||
accompaniment
|
||||
accompanist
|
||||
accompany
|
||||
accomplice
|
||||
accomplish
|
||||
accord
|
||||
accordant
|
||||
accordion
|
||||
accost
|
||||
account
|
||||
accountant
|
||||
Accra
|
||||
accredit
|
||||
accreditate
|
||||
accreditation
|
||||
accretion
|
||||
accrual
|
||||
accrue
|
||||
acculturate
|
||||
accumulate
|
||||
accuracy
|
||||
accurate
|
||||
accusation
|
||||
accusative
|
||||
accusatory
|
||||
accuse
|
||||
accustom
|
||||
ace
|
||||
acerbic
|
||||
acerbity
|
||||
acetate
|
||||
acetic
|
||||
acetone
|
||||
acetylene
|
||||
ache
|
||||
achieve
|
||||
Achilles
|
||||
aching
|
||||
achromatic
|
||||
acid
|
||||
acidic
|
||||
acidulous
|
||||
.H 5 "hej hopp"
|
||||
Ackerman
|
||||
Ackley
|
||||
acknowledge
|
||||
acknowledgeable
|
||||
ACM
|
||||
acme
|
||||
acolyte
|
||||
acorn
|
||||
acoustic
|
||||
acquaint
|
||||
acquaintance
|
||||
acquiesce
|
||||
acquiescent
|
||||
acquire
|
||||
acquisition
|
||||
acquisitive
|
||||
acquit
|
||||
acquittal
|
||||
acquitting
|
||||
acre
|
||||
acreage
|
||||
acrid
|
||||
acrimonious
|
||||
acrimony
|
||||
acrobacy
|
||||
acrobat
|
||||
acrobatic
|
||||
acronym
|
||||
acropolis
|
||||
across
|
||||
acrylate
|
||||
acrylic
|
||||
ACS
|
||||
act
|
||||
Actaeon
|
||||
actinic
|
||||
actinide
|
||||
actinium
|
||||
actinolite
|
||||
actinometer
|
||||
activate
|
||||
activation
|
||||
activism
|
||||
Acton
|
||||
actor
|
||||
actress
|
||||
Acts
|
||||
actual
|
||||
actuarial
|
||||
actuate
|
||||
.H 6 "hej hopp"
|
||||
acuity
|
||||
acumen
|
||||
acute
|
||||
acyclic
|
||||
ad
|
||||
Ada
|
||||
adage
|
||||
adagio
|
||||
Adair
|
||||
Adam
|
||||
adamant
|
||||
Adams
|
||||
Adamson
|
||||
adapt
|
||||
adaptation
|
||||
adaptive
|
||||
add
|
||||
added
|
||||
addend
|
||||
addenda
|
||||
addendum
|
||||
addict
|
||||
Addis
|
||||
Addison
|
||||
addition
|
||||
additional
|
||||
additive
|
||||
addle
|
||||
address
|
||||
addressee
|
||||
Addressograph
|
||||
adduce
|
||||
Adelaide
|
||||
Adele
|
||||
Adelia
|
||||
Aden
|
||||
adenine
|
||||
adenoma
|
||||
adenosine
|
||||
adept
|
||||
adequacy
|
||||
adequate
|
||||
adhere
|
||||
adherent
|
||||
adhesion
|
||||
adhesive
|
||||
adiabatic
|
||||
adieu
|
||||
adipic
|
||||
Adirondack
|
||||
.H 7 "hej hopp"
|
||||
adjacent
|
||||
adject
|
||||
adjectival
|
||||
adjective
|
||||
adjoin
|
||||
adjoint
|
||||
adjourn
|
||||
adjudge
|
||||
adjudicate
|
||||
adjunct
|
||||
adjust
|
||||
adjutant
|
||||
Adkins
|
||||
Adler
|
||||
administer
|
||||
administrable
|
||||
administrate
|
||||
administratrix
|
||||
admiral
|
||||
admiralty
|
||||
admiration
|
||||
admire
|
||||
admissible
|
||||
admission
|
||||
admit
|
||||
admittance
|
||||
admitted
|
||||
admitting
|
||||
admix
|
||||
admixture
|
||||
admonish
|
||||
admonition
|
||||
ado
|
||||
adobe
|
||||
adolescent
|
||||
Adolph
|
||||
Adolphus
|
||||
Adonis
|
||||
adopt
|
||||
adoption
|
||||
adoptive
|
||||
adore
|
||||
adorn
|
||||
adposition
|
||||
adrenal
|
||||
adrenaline
|
||||
Adrian
|
||||
Adriatic
|
||||
Adrienne
|
||||
adrift
|
||||
adroit
|
||||
adsorb
|
||||
adsorbate
|
||||
adsorption
|
||||
adsorptive
|
||||
adulate
|
||||
adult
|
||||
adulterate
|
||||
adulterous
|
||||
adultery
|
||||
adulthood
|
||||
advance
|
||||
advantage
|
||||
advantageous
|
||||
advent
|
||||
adventitious
|
||||
adverse
|
||||
advert
|
||||
advertise
|
||||
advice
|
||||
advisable
|
||||
advise
|
||||
advisee
|
||||
advisor
|
||||
advisory
|
||||
advocacy
|
||||
advocate
|
||||
Aegean
|
||||
aegis
|
||||
Aeneas
|
||||
Aeneid
|
||||
aeolian
|
||||
Aeolus
|
||||
aerate
|
||||
aerial
|
||||
Aerobacter
|
||||
aerobic
|
||||
aerodynamic
|
||||
aerogene
|
||||
aeronautic
|
||||
aerosol
|
||||
aerospace
|
||||
Aeschylus
|
||||
aesthete
|
||||
aesthetic
|
||||
.H 1 "hej hopp"
|
||||
acuity
|
||||
acumen
|
||||
acute
|
||||
acyclic
|
||||
ad
|
||||
Ada
|
||||
adage
|
||||
adagio
|
||||
Adair
|
||||
Adam
|
||||
adamant
|
||||
Adams
|
||||
Adamson
|
||||
adapt
|
||||
adaptation
|
||||
adaptive
|
||||
add
|
||||
added
|
||||
addend
|
||||
addenda
|
||||
addendum
|
||||
addict
|
||||
Addis
|
||||
Addison
|
||||
addition
|
||||
additional
|
||||
additive
|
||||
addle
|
||||
address
|
||||
addressee
|
||||
Addressograph
|
||||
adduce
|
||||
Adelaide
|
||||
Adele
|
||||
Adelia
|
||||
Aden
|
||||
adenine
|
||||
adenoma
|
||||
adenosine
|
||||
adept
|
||||
adequacy
|
||||
adequate
|
||||
adhere
|
||||
adherent
|
||||
adhesion
|
||||
adhesive
|
||||
adiabatic
|
||||
adieu
|
||||
adipic
|
||||
Adirondack
|
||||
.H 2 "hej hopp"
|
||||
adjacent
|
||||
adject
|
||||
adjectival
|
||||
adjective
|
||||
adjoin
|
||||
adjoint
|
||||
adjourn
|
||||
adjudge
|
||||
adjudicate
|
||||
.H 2 "hej hopp"
|
||||
adjunct
|
||||
adjust
|
||||
adjutant
|
||||
Adkins
|
||||
Adler
|
||||
administer
|
||||
administrable
|
||||
administrate
|
||||
administratrix
|
||||
admiral
|
||||
admiralty
|
||||
admiration
|
||||
admire
|
||||
admissible
|
||||
admission
|
||||
admit
|
||||
admittance
|
||||
admitted
|
||||
admitting
|
||||
admix
|
||||
admixture
|
||||
admonish
|
||||
admonition
|
||||
ado
|
||||
adobe
|
||||
adolescent
|
||||
Adolph
|
||||
Adolphus
|
||||
Adonis
|
||||
adopt
|
||||
adoption
|
||||
adoptive
|
||||
adore
|
||||
adorn
|
||||
adposition
|
||||
adrenal
|
||||
adrenaline
|
||||
Adrian
|
||||
Adriatic
|
||||
Adrienne
|
||||
adrift
|
||||
adroit
|
||||
adsorb
|
||||
adsorbate
|
||||
adsorption
|
||||
adsorptive
|
||||
adulate
|
||||
adult
|
||||
adulterate
|
||||
adulterous
|
||||
adultery
|
||||
adulthood
|
||||
advance
|
||||
advantage
|
||||
advantageous
|
||||
advent
|
||||
adventitious
|
||||
adverse
|
||||
advert
|
||||
advertise
|
||||
advice
|
||||
advisable
|
||||
advise
|
||||
advisee
|
||||
advisor
|
||||
advisory
|
||||
advocacy
|
||||
advocate
|
||||
Aegean
|
||||
aegis
|
||||
Aeneas
|
||||
Aeneid
|
||||
aeolian
|
||||
Aeolus
|
||||
aerate
|
||||
aerial
|
||||
Aerobacter
|
||||
aerobic
|
||||
aerodynamic
|
||||
aerogene
|
||||
aeronautic
|
||||
aerosol
|
||||
aerospace
|
||||
Aeschylus
|
||||
aesthete
|
||||
aesthetic
|
||||
.RP 0 1
|
||||
.TC
|
109
contrib/mm/examples/SETR
Normal file
109
contrib/mm/examples/SETR
Normal file
@ -0,0 +1,109 @@
|
||||
.nr Cl 6
|
||||
.INITR setr
|
||||
.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
|
||||
.SETR ref1
|
||||
.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
|
||||
.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic"
|
||||
.H 2 "granny granola grant grantee grantor granular granulate"
|
||||
.SETR ref2
|
||||
.H 2 "granule Granville grape"
|
||||
grant
|
||||
grantee
|
||||
grantor
|
||||
granular
|
||||
granulate
|
||||
.br
|
||||
granule
|
||||
.B
|
||||
REF 9:
|
||||
.GETHN ref9
|
||||
, page number
|
||||
.GETPN ref9
|
||||
.R
|
||||
Granville
|
||||
grape
|
||||
.br
|
||||
grapefruit
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
graphic
|
||||
graphite
|
||||
\fBExhibit\fP
|
||||
.GETHN ex1
|
||||
|
||||
grapple
|
||||
grasp
|
||||
grass
|
||||
grassland
|
||||
grassy
|
||||
grata
|
||||
grate
|
||||
.H 2 "grapefruit grapevine graph grapheme graphic graphite"
|
||||
.H 3 "grapple"
|
||||
.SETR ref3
|
||||
.H 3 "grasp grass grassland grassy grata grate grateful"
|
||||
.H 3 "grater gratify gratis gratitude"
|
||||
.H 4 "gratuitous gratuity grave"
|
||||
.H 4 "gravel graven"
|
||||
.SETR ref4
|
||||
.H 1 "Graves gravestone graveyard gravid gravitate gravy gray"
|
||||
.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
|
||||
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
|
||||
.H 2 "Greenblatt Greenbriar Greene greenery"
|
||||
.SETR ref5
|
||||
.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
|
||||
.H 1 "greensward greenware Greenwich greenwood Greer greet"
|
||||
grant
|
||||
grantee
|
||||
.DS
|
||||
|
||||
Advertisements contain the only truths to be relied on in a newspaper.
|
||||
-- Thomas Jefferson
|
||||
.EX fortune "" "" ex1
|
||||
.DE
|
||||
grantor
|
||||
granular
|
||||
.GETR ref1
|
||||
granulate
|
||||
granule
|
||||
.H 2 "Using variables"
|
||||
.B
|
||||
REF 2:
|
||||
.GETHN ref2 c
|
||||
.GETPN ref2 bbb
|
||||
\*c, page number \*[bbb]
|
||||
.R
|
||||
Granville
|
||||
grape
|
||||
grapefruit
|
||||
grapevine
|
||||
graph
|
||||
grapheme
|
||||
.H 2 "Greg gregarious Gregg Gregory gremlin grenade Grendel"
|
||||
.H 2 "Grenoble Gresham Greta Gretchen"
|
||||
.SETR ref6
|
||||
.H 2 "grew"
|
||||
.H 1 "grey greyhound greylag grid griddle gridiron grief"
|
||||
.H 1 "grievance grieve grievous griffin Griffith grill grille grilled grillwork"
|
||||
.H 3 "grim grimace Grimaldi grime Grimes Grimm grin grind grindstone"
|
||||
.H 3 "grip gripe grippe grisly grist gristmill Griswold grit"
|
||||
.SETR ref7
|
||||
.H 3 "gritty grizzle grizzly groan groat grocer grocery groggy groin"
|
||||
.H 1 "grommet groom groove grope grosbeak gross Grosset Grossman Grosvenor grotesque"
|
||||
.H 1 "Groton ground groundsel groundskeep groundwork group groupoid"
|
||||
.H 4 "grout grove grovel Grover grow growl grown grownup growth grub grubby"
|
||||
.H 4 "grudge gruesome gruff grumble Grumman grunt gryphon g's"
|
||||
.SETR ref8
|
||||
.H 4 "GSA GU Guam guanidine guanine guano guarantee guaranteeing guarantor"
|
||||
.H 4 "guaranty"
|
||||
.H 1 "guard guardhouse Guardia guardian Guatemala gubernatorial Guelph Guenther"
|
||||
.H 1 "guerdon guernsey guerrilla guess guesswork guest guffaw Guggenheim"
|
||||
.SETR ref9
|
||||
.H 1 "Guiana guidance guide guidebook guideline guidepost guiding"
|
||||
.H 1 "guignol"
|
||||
.GETR ref6
|
||||
.H 1 "guild guildhall guile Guilford guillemot guillotine guilt"
|
||||
.SETR ref10
|
||||
.H 1 "guilty guinea guise guitar gules gulf gull Gullah"
|
||||
.H 1 "gullet gullible gully gulp gum gumbo gumdrop gummy gumption"
|
2104
contrib/mm/groff_mm.man
Normal file
2104
contrib/mm/groff_mm.man
Normal file
File diff suppressed because it is too large
Load Diff
86
contrib/mm/groff_mmse.man
Normal file
86
contrib/mm/groff_mmse.man
Normal file
@ -0,0 +1,86 @@
|
||||
.\"
|
||||
.\" $Id: groff_mmse.man,v 2.2 2001/12/09 12:15:09 wlemb Exp $
|
||||
.\" Skrivet av Jörgen Hägg, Lund, Sverige
|
||||
.\"
|
||||
.TH GROFF_MMSE @MAN7EXT@ "@MDATE@" "Groff Version @VERSION@"
|
||||
.SH NAMN
|
||||
groff_mmse \- svenska mm makro för groff
|
||||
.SH SYNTAX
|
||||
.B groff
|
||||
.B \-m@TMAC_M_PREFIX@mse
|
||||
[
|
||||
.IR flaggor .\|.\|.
|
||||
]
|
||||
[
|
||||
.IR filer .\|.\|.
|
||||
]
|
||||
.SH BESKRIVNING
|
||||
\fBm@TMAC_M_PREFIX@mse\fP är en svensk variant av \fBm@TMAC_M_PREFIX@m\fP. Alla texter
|
||||
är översatta. En A4 sida får text som är 13 cm bred, 3.5 cm indragning
|
||||
samt är 28.5 cm hög.
|
||||
Det finns stöd för brevuppställning enligt svensk standard
|
||||
för vänster och högerjusterad text.
|
||||
.LP
|
||||
\fBCOVER\fP kan använda \fIse_ms\fP som argument. Detta ger ett
|
||||
svenskt försättsblad.
|
||||
Se \fBgroff_mm(@MAN7EXT@)\fP för övriga detaljer.
|
||||
.SH BREV
|
||||
Tillgängliga brevtyper:
|
||||
.TP
|
||||
.B ".LT SVV"
|
||||
Vänsterställd löptext med adressat i position T0 (vänsterställt).
|
||||
.TP
|
||||
.B ".LT SVH"
|
||||
Högerställd löptext med adressat i position T4 (passar
|
||||
fönsterkuvert).
|
||||
.LP
|
||||
Följande extra LO-variabler används.
|
||||
.TP
|
||||
.B ".LO DNAMN\fI namn\fP"
|
||||
Anger dokumentets namn.
|
||||
.TP
|
||||
.br
|
||||
.B ".LO MDAT\fI datum\fP"
|
||||
Mottagarens datum, anges under \fBErt datum:\fP (\fBLetMDAT\fP).
|
||||
.TP
|
||||
.br
|
||||
.B ".LO BIL\fI sträng\fP"
|
||||
Anger bilaga, nummer eller sträng med \fBBilaga\fP (\fBLetBIL\fP)
|
||||
som prefix.
|
||||
.TP
|
||||
.br
|
||||
.B ".LO KOMP\fI text\fP"
|
||||
Anger kompletteringsuppgift.
|
||||
.TP
|
||||
.br
|
||||
.B ".LO DBET\fI beteckning\fP"
|
||||
Anger dokumentbeteckning eller dokumentnummer.
|
||||
.TP
|
||||
.br
|
||||
.B ".LO BET\fI beteckning\fP"
|
||||
Anger beteckning (ärendebeteckning i form av diarienummer eller liknande).
|
||||
.TP
|
||||
.br
|
||||
.B ".LO SIDOR\fI antal\fP"
|
||||
Anger totala antalet sidor och skrivs ut efter sidnumret inom
|
||||
parenteser.
|
||||
.LP
|
||||
Om makrot \fB.TP\fP är definierat anropas det efter utskrift av brevhuvudet.
|
||||
Där lägger man lämpligen in postadress och annat som brevfot.
|
||||
.SH "SKRIVET AV"
|
||||
Jörgen Hägg, Lund, Sweden <Jorgen.Hagg@axis.se>
|
||||
.SH FILER
|
||||
.B @MACRODIR@/tmac.@TMAC_M_PREFIX@mse
|
||||
.B @TMAC_MDIR@/se_*.cov
|
||||
.SH "SE OCKSÅ"
|
||||
.BR groff (@MAN1EXT@),
|
||||
.BR @g@troff (@MAN1EXT@),
|
||||
.BR @g@tbl (@MAN1EXT@),
|
||||
.BR @g@pic (@MAN1EXT@),
|
||||
.BR @g@eqn (@MAN1EXT@)
|
||||
.br
|
||||
.BR groff_mm (@MAN7EXT@)
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" End:
|
3536
contrib/mm/m.tmac
Normal file
3536
contrib/mm/m.tmac
Normal file
File diff suppressed because it is too large
Load Diff
3
contrib/mm/mm.tmac
Normal file
3
contrib/mm/mm.tmac
Normal file
@ -0,0 +1,3 @@
|
||||
.\" mm.tmac
|
||||
.\"
|
||||
.do mso m.tmac
|
146
contrib/mm/mm/0.MT
Normal file
146
contrib/mm/mm/0.MT
Normal file
@ -0,0 +1,146 @@
|
||||
.\"------------
|
||||
.\" $Id: 0.MT,v 2.0 2000/09/14 03:40:25 jhaegg Exp $
|
||||
.\" Cover sheet. Memorandum type 0-3 and "string".
|
||||
.\"------------
|
||||
.if !r Au .nr Au 1
|
||||
.nr cov*mt0-ind 1.1c
|
||||
.de cov@print-title
|
||||
.MOVE 4.8c 1.5c
|
||||
.S 8
|
||||
subject:
|
||||
.sp -1.1
|
||||
.S
|
||||
.PGFORM
|
||||
.ft \\*[@sdf_font]
|
||||
.ll 9c
|
||||
.fi
|
||||
.cov*title
|
||||
.ft
|
||||
.ll
|
||||
.nf
|
||||
.if d cov*title-charge-case \fBCharge Case \\*[cov*title-charge-case]\fP
|
||||
.if d cov*title-file-case \fBFile Case \\*[cov*title-file-case]\fP
|
||||
.fi
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-authors
|
||||
.MOVE 5.7c 13.3c
|
||||
.nf
|
||||
.S 8
|
||||
\\$1:
|
||||
.br
|
||||
.S
|
||||
.sp -1
|
||||
.in 0.8c
|
||||
.ft \\*[@sdf_font]
|
||||
.nr cov*i 0 1
|
||||
.while \\n+[cov*i]<=\\n[cov*au] \{\
|
||||
. cov@print-au1 \\n[cov*i] 1
|
||||
. if \\n[Au] \{\
|
||||
. cov@print-au2 \\n[cov*i] 3 4
|
||||
. cov@print-au2 \\n[cov*i] 6 5
|
||||
. cov@print-au1 \\n[cov*i] 7
|
||||
. cov@print-au1 \\n[cov*i] 8
|
||||
. cov@print-au1 \\n[cov*i] 9
|
||||
. \}
|
||||
. if \\n[cov*i]<\\n[cov*au] .SP 1
|
||||
.\}
|
||||
.ft
|
||||
.if r cov*mt-tm-max \{\
|
||||
. SP 1
|
||||
. nr cov*i 0 1
|
||||
. ft \\*[@sdf_font]
|
||||
TM
|
||||
. in 1.5c
|
||||
. sp -1
|
||||
. while \\n+[cov*i]<\\n[cov*mt-tm-max] \\*[cov*mt-tm!\\n[cov*i]]
|
||||
. in
|
||||
. ft
|
||||
.\}
|
||||
.fi
|
||||
.PGFORM
|
||||
..
|
||||
.\"------------
|
||||
.\" index arg1
|
||||
.de cov@print-au1
|
||||
.if d cov*au!\\$1!\\$2 \\*[cov*au!\\$1!\\$2]
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-au2
|
||||
.\" index arg1 arg2
|
||||
.if d cov*au!\\$1!\\$2 \\*[cov*au!\\$1!\\$2] \c
|
||||
.if \\$3=5 .if d cov*au!\\$1!\\$3 x\c
|
||||
.if d cov*au!\\$1!\\$3 \\*[cov*au!\\$1!\\$3]\c
|
||||
.br
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-date
|
||||
.MOVE 4.8c 13.3c
|
||||
.S 8
|
||||
.nf
|
||||
\\$1:
|
||||
.br
|
||||
.S
|
||||
.sp -1
|
||||
.in 0.8c
|
||||
\f[\\*[@sdf_font]]\\*[cov*new-date]\fP
|
||||
.br
|
||||
.fi
|
||||
.PGFORM
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-firm
|
||||
.if d cov*firm \{\
|
||||
. MOVE 2.8c 0 17.7c
|
||||
. S 18
|
||||
. rj 1
|
||||
\fB\\*[cov*firm]\fP
|
||||
. S
|
||||
. PGFORM
|
||||
.\}
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-abstract
|
||||
.SP 3
|
||||
.if d cov*abstract \{\
|
||||
. misc@ev-keep cov*ev
|
||||
. if \\n[cov*abs-ind]>0 \{\
|
||||
. in +\\n[cov*abs-ind]u
|
||||
. ll -\\n[cov*abs-ind]u
|
||||
. \}
|
||||
. ce
|
||||
\fI\\$1\fP
|
||||
. SP 1.5
|
||||
. fi
|
||||
. cov*abstract
|
||||
. br
|
||||
. ev
|
||||
.\}
|
||||
..
|
||||
.\"-----------------
|
||||
.ds cov*mt0-txt!1 MEMORANDUM FOR FILE
|
||||
.ds cov*mt0-txt!2 PROGRAMMER'S NOTES
|
||||
.ds cov*mt0-txt!3 ENGINEER'S NOTES
|
||||
.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm]
|
||||
.\"
|
||||
.if !d cov*mt-printed \{\
|
||||
. cov@print-firm
|
||||
. cov@print-title subject
|
||||
. cov@print-date date
|
||||
. cov@print-authors from
|
||||
. cov@print-abstract \\*[cov*abs-name]
|
||||
. SP 3
|
||||
. if (\*[cov*mt-type]>=1)&(\*[cov*mt-type]<=3) \{\
|
||||
. ce
|
||||
\fI\*[cov*mt0-txt!\*[cov*mt-type]]\fP
|
||||
. SP 1.5
|
||||
. \}
|
||||
. if \*[cov*mt-type]=6 \{\
|
||||
. ce
|
||||
\fI\*[cov*mt-type-text]\fP
|
||||
. SP 1.5
|
||||
. \}
|
||||
. pg@enable-top-trap
|
||||
. pg@enable-trap
|
||||
. ds cov*mt-printed
|
||||
.\}
|
82
contrib/mm/mm/4.MT
Normal file
82
contrib/mm/mm/4.MT
Normal file
@ -0,0 +1,82 @@
|
||||
.\"------------
|
||||
.\" $Id: 4.MT,v 2.2 2003/04/02 04:06:40 jhaegg Exp $
|
||||
.\" Cover sheet. Memorandum type 4
|
||||
.\"------------
|
||||
.de cov@print-title
|
||||
.if !d cov*title .@error title (.TL) not defined!
|
||||
.MOVE 2.8c
|
||||
.S +2
|
||||
.ad c
|
||||
.fi
|
||||
.B
|
||||
.cov*title
|
||||
.br
|
||||
.S
|
||||
.R
|
||||
.ad b
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-authors
|
||||
.SP 0.5
|
||||
.I
|
||||
.S +1
|
||||
.nr cov*i 0 1
|
||||
.while \\n+[cov*i]<=\\n[cov*au] \{\
|
||||
.ce
|
||||
\\*[cov*au!\\n[cov*i]!1]
|
||||
.br
|
||||
.\}
|
||||
.S
|
||||
.R
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-firm
|
||||
.if d cov*firm \{\
|
||||
. SP 0.5
|
||||
. ce
|
||||
\\*[cov*firm]
|
||||
.\}
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-abstract
|
||||
.SP 2
|
||||
.if d cov*abstract \{\
|
||||
. misc@ev-keep cov*ev
|
||||
. init@reset
|
||||
. if \\n[cov*abs-ind]>0 \{\
|
||||
. in +\\n[cov*abs-ind]u
|
||||
. ll -\\n[cov*abs-ind]u
|
||||
. \}
|
||||
. ce
|
||||
\fI\\*[cov*abs-name]\fP
|
||||
. SP 2
|
||||
. fi
|
||||
. cov*abstract
|
||||
. br
|
||||
. ev
|
||||
.\}
|
||||
..
|
||||
.\"-----------------
|
||||
.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm]
|
||||
.if !d cov*mt-printed \{\
|
||||
. cov@print-title
|
||||
. cov@print-authors
|
||||
. cov@print-firm
|
||||
. if d cov*abstract \{\
|
||||
. if !\n[cov*abs-arg] .cov@print-abstract
|
||||
. \}
|
||||
. SP 2
|
||||
. nr hd*cur-bline \n[nl]
|
||||
. ds cov*mt-printed
|
||||
. pg@enable-top-trap
|
||||
. pg@enable-trap
|
||||
.\}
|
||||
.de CS
|
||||
.pg@disable-top-trap
|
||||
.SK
|
||||
.cov@print-title
|
||||
.cov@print-authors
|
||||
.cov@print-firm
|
||||
.cov@print-abstract
|
||||
..
|
||||
|
34
contrib/mm/mm/5.MT
Normal file
34
contrib/mm/mm/5.MT
Normal file
@ -0,0 +1,34 @@
|
||||
.\"------------
|
||||
.\" $Id: 5.MT,v 2.0 2000/09/14 03:40:25 jhaegg Exp $
|
||||
.\" Cover sheet. Memorandum type 5
|
||||
.\"------------
|
||||
.nr cov*mt0-ind 1.1c
|
||||
.de cov@print-title
|
||||
.B
|
||||
.ll 9c
|
||||
.fi
|
||||
.cov*title
|
||||
.R
|
||||
.ll
|
||||
.nf
|
||||
.if d cov*title-charge-case \fBCharge Case \\*[cov*title-charge-case]\fP
|
||||
.if d cov*title-file-case \fBFile Case \\*[cov*title-file-case]\fP
|
||||
.fi
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-date
|
||||
.rj 1
|
||||
\f[\\*[@sdf_font]]\\*[cov*new-date]\fP
|
||||
.br
|
||||
..
|
||||
.\"------------
|
||||
.if !d cov*mt-printed \{\
|
||||
. SP 1.9c
|
||||
. cov@print-title
|
||||
. SP 1.2c
|
||||
. cov@print-date
|
||||
. SP 3
|
||||
. pg@enable-top-trap
|
||||
. pg@enable-trap
|
||||
. ds cov*mt-printed
|
||||
.\}
|
84
contrib/mm/mm/ms.cov
Normal file
84
contrib/mm/mm/ms.cov
Normal file
@ -0,0 +1,84 @@
|
||||
.\"------------
|
||||
.\" $Id: ms.cov,v 2.0 2000/09/14 03:40:25 jhaegg Exp $
|
||||
.\" Cover sheet. Mostly like ms cover.
|
||||
.\"------------
|
||||
.de cov@print-title
|
||||
.in 0
|
||||
.misc@ev-keep cov*ev
|
||||
.init@reset
|
||||
.ad c
|
||||
.hy 0
|
||||
.fi
|
||||
.B
|
||||
.cov*title
|
||||
.br
|
||||
.ad b
|
||||
.R
|
||||
.ev
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-authors
|
||||
.SP
|
||||
.nr cov*i 0 1
|
||||
.while \\n+[cov*i]<=\\n[cov*au] \{\
|
||||
. ce
|
||||
\fI\\*[cov*au!\\n[cov*i]!1]\fP
|
||||
. nr cov*j 0 1
|
||||
. while \\n+[cov*j]<=9 \{\
|
||||
. if d cov*at!\\n[cov*i]!\\n[cov*j] \{\
|
||||
. if \w'\\*[cov*at!\\n[cov*i]!\\n[cov*j]]' \{\
|
||||
. ce
|
||||
\s-1\\*[cov*at!\\n[cov*i]!\\n[cov*j]]\s0
|
||||
. .\}
|
||||
. \}
|
||||
. \}
|
||||
.\}
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-firm
|
||||
.SP .5
|
||||
.ce
|
||||
\\*[cov*firm]
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-abstract
|
||||
.SP 2
|
||||
.if d cov*abstract \{\
|
||||
. misc@ev-keep cov*ev
|
||||
. init@reset
|
||||
. if \\n[cov*abs-ind]>0 \{\
|
||||
. in +\\n[cov*abs-ind]u
|
||||
. ll -\\n[cov*abs-ind]u
|
||||
. \}
|
||||
. ce
|
||||
\fI\\$1\fP
|
||||
. SP 1.5
|
||||
. fi
|
||||
. cov*abstract
|
||||
. br
|
||||
. ev
|
||||
.\}
|
||||
..
|
||||
.\"------------
|
||||
.de cov@print-date
|
||||
.SP 2
|
||||
\f[\\*[@sdf_font]]\\*[cov*new-date]\fP
|
||||
..
|
||||
.\"-----------------
|
||||
.de COVEND
|
||||
.br
|
||||
.if d cov*default-firm .if !d cov*firm .ds cov*firm \\*[cov*default-firm]
|
||||
.sp |4.2c
|
||||
.cov@print-title
|
||||
.cov@print-authors
|
||||
.cov@print-firm
|
||||
.cov@print-abstract \\*[cov*abs-name]
|
||||
.cov@print-date
|
||||
.pg@enable-top-trap
|
||||
.bp 1
|
||||
.pg@enable-trap
|
||||
.if d cov*abs-arg .if \\n[cov*abs-arg] \{\
|
||||
. cov@print-abstract ABSTRACT
|
||||
. SP 2
|
||||
.\}
|
||||
..
|
3
contrib/mm/mm/se_ms.cov
Normal file
3
contrib/mm/mm/se_ms.cov
Normal file
@ -0,0 +1,3 @@
|
||||
.\" $Id: se_ms.cov,v 2.0 2000/09/14 03:40:25 jhaegg Exp $
|
||||
.mso mm/ms.cov
|
||||
.nr cur*abstract-ll 11c
|
49
contrib/mm/mmroff.man
Normal file
49
contrib/mm/mmroff.man
Normal file
@ -0,0 +1,49 @@
|
||||
.\"
|
||||
.\" $Id: mmroff.man,v 2.2 2001/12/09 12:15:09 wlemb Exp $
|
||||
.\"
|
||||
.TH MMROFF @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
|
||||
.SH NAME
|
||||
mmroff \- reference preprocessor
|
||||
.SH SYNOPSIS
|
||||
.B mmroff
|
||||
[
|
||||
.I -x
|
||||
]
|
||||
.I groff_arguments
|
||||
.SH DESCRIPTION
|
||||
\fBmmroff\fP is a simple preprocessor for \fBgroff\fP, it is
|
||||
used for expanding references in \fBm@TMAC_M_PREFIX@m\fP, see
|
||||
\fBgroff_mm(@MAN7EXT@)\fP.
|
||||
\fBgroff\fP is executed twice, first with \fB-z\fP and \fB-rRef=1\fR
|
||||
to collect all references and then to do the real processing
|
||||
when the reference file is up to date.
|
||||
.TP
|
||||
\fB\-x\fR
|
||||
Just create the reference file. This can be used to refresh
|
||||
the reference file, it isn't always needed to have accurate
|
||||
references and by using this option \fBgroff\fP will only
|
||||
be run once.
|
||||
.\".SH BUGS
|
||||
.SH AUTHOR
|
||||
Jörgen Hägg, Lund, Sweden <jh@axis.se>.
|
||||
.SH FILES
|
||||
.TP
|
||||
.B @MACRODIR@/tmac.@TMAC_M_PREFIX@m
|
||||
.TP
|
||||
.B @TMAC_MDIR@/*.cov
|
||||
.TP
|
||||
.B @TMAC_MDIR@/*.MT
|
||||
.TP
|
||||
.B @TMAC_MDIR@/locale
|
||||
.SH "SEE ALSO"
|
||||
.BR groff_mm(@MAN7EXT@),
|
||||
.BR groff_mmse(@MAN7EXT@),
|
||||
.BR groff (@MAN1EXT@),
|
||||
.BR @g@troff (@MAN1EXT@),
|
||||
.BR @g@tbl (@MAN1EXT@),
|
||||
.BR @g@pic (@MAN1EXT@),
|
||||
.BR @g@eqn (@MAN1EXT@)
|
||||
.
|
||||
.\" Local Variables:
|
||||
.\" mode: nroff
|
||||
.\" End:
|
137
contrib/mm/mmroff.pl
Normal file
137
contrib/mm/mmroff.pl
Normal file
@ -0,0 +1,137 @@
|
||||
#! /usr/bin/perl
|
||||
|
||||
use strict;
|
||||
# runs groff in safe mode, that seems to be the default
|
||||
# installation now. That means that I have to fix all nice
|
||||
# features outside groff. Sigh.
|
||||
# I do agree however that the previous way opened a whole bunch
|
||||
# of security holes.
|
||||
|
||||
my $no_exec;
|
||||
# check for -x and remove it
|
||||
if (grep(/^-x$/, @ARGV)) {
|
||||
$no_exec++;
|
||||
@ARGV = grep(!/^-x$/, @ARGV);
|
||||
}
|
||||
|
||||
# mmroff should always have -mm, but not twice
|
||||
@ARGV = grep(!/^-mm$/, @ARGV);
|
||||
my $check_macro = "groff -rRef=1 -z -mm @ARGV";
|
||||
my $run_macro = "groff -mm @ARGV";
|
||||
|
||||
my (%cur, $rfilename, $max_height, $imacro, $max_width, @out, @indi);
|
||||
open(MACRO, "$check_macro 2>&1 |") || die "run $check_macro:$!";
|
||||
while(<MACRO>) {
|
||||
if (m#^\.\\" Rfilename: (\S+)#) {
|
||||
# remove all directories just to be more secure
|
||||
($rfilename = $1) =~ s#.*/##;
|
||||
next;
|
||||
}
|
||||
if (m#^\.\\" Imacro: (\S+)#) {
|
||||
# remove all directories just to be more secure
|
||||
($imacro = $1) =~ s#.*/##;
|
||||
next;
|
||||
}
|
||||
if (m#^\.\\" Index: (\S+)#) {
|
||||
# remove all directories just to be more secure
|
||||
my $f;
|
||||
($f = $1) =~ s#.*/##;
|
||||
&print_index($f, \@indi, $imacro);
|
||||
@indi = ();
|
||||
$imacro = '';
|
||||
next;
|
||||
}
|
||||
my $x;
|
||||
if (($x) = m#^\.\\" IND (.+)#) {
|
||||
$x =~ s#\\##g;
|
||||
my @x = split(/\t/, $x);
|
||||
grep(s/\s+$//, @x);
|
||||
push(@indi, join("\t", @x));
|
||||
next;
|
||||
}
|
||||
if (m#^\.\\" PIC id (\d+)#) {
|
||||
%cur = ('id', $1);
|
||||
next;
|
||||
}
|
||||
if (m#^\.\\" PIC file (\S+)#) {
|
||||
&psbb($1);
|
||||
&ps_calc($1);
|
||||
next;
|
||||
}
|
||||
if (m#^\.\\" PIC (\w+)\s+(\S+)#) {
|
||||
eval "\$cur{'$1'} = '$2'";
|
||||
next;
|
||||
}
|
||||
s#\\ \\ $##;
|
||||
push(@out, $_);
|
||||
}
|
||||
close(MACRO);
|
||||
|
||||
|
||||
if ($rfilename) {
|
||||
push(@out, ".nr pict*max-height $max_height\n") if defined $max_height;
|
||||
push(@out, ".nr pict*max-width $max_width\n") if defined $max_width;
|
||||
|
||||
open(OUT, ">$rfilename") || "create $rfilename:$!";
|
||||
print OUT '.\" references', "\n";
|
||||
my $i;
|
||||
for $i (@out) {
|
||||
print OUT $i;
|
||||
}
|
||||
close(OUT);
|
||||
}
|
||||
|
||||
exit 0 if $no_exec;
|
||||
exit system($run_macro);
|
||||
|
||||
sub print_index {
|
||||
my ($f, $ind, $macro) = @_;
|
||||
|
||||
open(OUT, ">$f") || "create $f:$!";
|
||||
my $i;
|
||||
for $i (sort @$ind) {
|
||||
if ($macro) {
|
||||
$i = '.'.$macro.' "'.join('" "', split(/\t/, $i)).'"';
|
||||
}
|
||||
print OUT "$i\n";
|
||||
}
|
||||
close(OUT);
|
||||
}
|
||||
|
||||
sub ps_calc {
|
||||
my ($f) = @_;
|
||||
|
||||
my $w = abs($cur{'llx'}-$cur{'urx'});
|
||||
my $h = abs($cur{'lly'}-$cur{'ury'});
|
||||
$max_width = $w if $w > $max_width;
|
||||
$max_height = $h if $h > $max_height;
|
||||
|
||||
my $id = $cur{'id'};
|
||||
push(@out, ".ds pict*file!$id $f\n");
|
||||
push(@out, ".ds pict*id!$f $id\n");
|
||||
push(@out, ".nr pict*llx!$id $cur{'llx'}\n");
|
||||
push(@out, ".nr pict*lly!$id $cur{'lly'}\n");
|
||||
push(@out, ".nr pict*urx!$id $cur{'urx'}\n");
|
||||
push(@out, ".nr pict*ury!$id $cur{'ury'}\n");
|
||||
push(@out, ".nr pict*w!$id $w\n");
|
||||
push(@out, ".nr pict*h!$id $h\n");
|
||||
}
|
||||
|
||||
|
||||
sub psbb {
|
||||
my ($f) = @_;
|
||||
|
||||
unless (open(IN, $f)) {
|
||||
print STDERR "Warning: Postscript file $f:$!";
|
||||
next;
|
||||
}
|
||||
while(<IN>) {
|
||||
if (/^%%BoundingBox:\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
|
||||
$cur{'llx'} = $1;
|
||||
$cur{'lly'} = $2;
|
||||
$cur{'urx'} = $3;
|
||||
$cur{'ury'} = $4;
|
||||
}
|
||||
}
|
||||
close(IN);
|
||||
}
|
3
contrib/mm/mmse.tmac
Normal file
3
contrib/mm/mmse.tmac
Normal file
@ -0,0 +1,3 @@
|
||||
.\" mmse.tmac
|
||||
.\"
|
||||
.do mso mse.tmac
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user