diff options
author | ru <ru@FreeBSD.org> | 2003-05-02 00:48:41 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2003-05-02 00:48:41 +0000 |
commit | 97e8efa8f6d09766ed24f0d06f8c3321ba2c5e60 (patch) | |
tree | f8415845d58f365cb4e107a243356bf07108edd7 | |
parent | a954908b3534f6488e4e563f6d2912c3df9d750e (diff) | |
parent | 374ada20ea75e5e2d1945e7896180bea1f752477 (diff) | |
download | FreeBSD-src-97e8efa8f6d09766ed24f0d06f8c3321ba2c5e60.zip FreeBSD-src-97e8efa8f6d09766ed24f0d06f8c3321ba2c5e60.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r114472,
which included commits to RCS files with non-trunk default branches.
105 files changed, 4948 insertions, 3056 deletions
diff --git a/contrib/texinfo/AUTHORS b/contrib/texinfo/AUTHORS index ead862a..d14143e 100644 --- a/contrib/texinfo/AUTHORS +++ b/contrib/texinfo/AUTHORS @@ -1,3 +1,12 @@ +$Id: AUTHORS,v 1.4 2002/10/09 22:23:44 karl Exp $ +Texinfo authors. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + Richard Stallman, Brian Fox, Bob Chassell, Noah Friedman, Paul Rubin, -Karl Berry, Eli Zaretskii, and many others. +Karl Berry, Eli Zaretskii, Philippe Martin, and many others. +Please see http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for +the translation teams for a given language LL. diff --git a/contrib/texinfo/COPYING b/contrib/texinfo/COPYING index d60c31a..e81facd 100644 --- a/contrib/texinfo/COPYING +++ b/contrib/texinfo/COPYING @@ -1,340 +1,11 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 +The files in here are all Copyright (C) Free Software Foundation, and +are under three different licenses: - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. +* GPL - (text in doc/COPYING) +* LGPL - (text in doc/COPYING.LIB) +* FDL - (text in doc/COPYING.DOC and doc/fdl.texi) - Preamble +The source files are grouped by license into their respective +directories. All documents in doc/ contain the relevant licensing +information. - 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. diff --git a/contrib/texinfo/COPYING.DOC b/contrib/texinfo/COPYING.DOC index b42936b..32a6b2f 100644 --- a/contrib/texinfo/COPYING.DOC +++ b/contrib/texinfo/COPYING.DOC @@ -1,7 +1,8 @@ GNU Free Documentation License - Version 1.1, March 2000 + Version 1.2, November 2002 - Copyright (C) 2000 Free Software Foundation, Inc. + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -10,12 +11,12 @@ 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other -written 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. +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 @@ -33,11 +34,15 @@ principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The "Document", below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as "you". +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 @@ -47,7 +52,7 @@ 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. (For example, if the Document is in part a +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, @@ -56,33 +61,40 @@ 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. +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. +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, whose contents can be viewed and edited directly and +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 has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not "Transparent" is called "Opaque". +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 designed for human modification. Opaque formats include -PostScript, PDF, proprietary formats that can be read and edited only -by proprietary word processors, SGML or XML for which the DTD and/or +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 produced by some word processors for output -purposes only. +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 @@ -91,6 +103,21 @@ 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 @@ -110,9 +137,10 @@ you may publicly display copies. 3. COPYING IN QUANTITY -If you publish printed copies 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 +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 @@ -130,16 +158,15 @@ 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 publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. 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. +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 @@ -163,7 +190,8 @@ A. Use in the Title Page (and on the covers, if any) a title distinct 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 less than five). + 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. @@ -175,10 +203,10 @@ F. Include, immediately after the copyright notices, a license notice 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", and its title, and add to - it an item stating at least the title, year, new authors, and +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 + 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. @@ -189,17 +217,18 @@ J. Preserve the network location, if any, given in the Document for 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. In any section entitled "Acknowledgements" or "Dedications", - preserve the section's title, and preserve in the section all the - substance and tone of each of the contributor acknowledgements +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 +M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. -N. Do not retitle any existing section as "Endorsements" +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 @@ -208,7 +237,7 @@ 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 +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 @@ -236,7 +265,7 @@ 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. +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 @@ -247,11 +276,11 @@ 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." +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 @@ -272,18 +301,20 @@ other respects regarding verbatim copying of that document. 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, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an "aggregate", and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. +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 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 quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. +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 @@ -294,10 +325,17 @@ 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 provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. +translation of this License, and all the license notices in the +Document, and any Warrany 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 @@ -335,19 +373,23 @@ 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.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have no Invariant Sections, write "with no Invariant Sections" -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write "no Front-Cover Texts" instead of -"Front-Cover Texts being LIST"; likewise for Back-Cover Texts. + 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 diff --git a/contrib/texinfo/ChangeLog b/contrib/texinfo/ChangeLog index 75bd489..45597d0 100644 --- a/contrib/texinfo/ChangeLog +++ b/contrib/texinfo/ChangeLog @@ -1,3 +1,1146 @@ +2003-02-04 <karl@gnu.org> + + * Version 4.5 (that info bug was a killer). + + * configure.ac (AC_CHECK_HEADERS): test for sys/stream.h. + (sys/ptem.h): write separate test since it needs + sys/stream.h on Solaris. From: Lars Hecking + <lhecking@nmrc.ucc.ie>, 4 Feb 2003 19:47:54 +0000. + + * doc/texinfo.txi: comment about using @example instead of + @verbatim due to automake doesn't apply any more. + +2003-02-03 <karl@gnu.org> + + * doc/texinfo.tex (\verbatiminclude): use \other instead of 12. + +2003-02-02 <karl@gnu.org> + + * doc/texinfo.tex (\cartouche): explicit \par, as @cartouche does + not work inside a paragraph. + Bug report from: Stephen Gildea <gildea@intouchsys.com>, + 15 Oct 1999 09:25:31 EDT. + +2003-02-01 <karl@gnu.org> + + * util/fix-info-dir, util/gen-dir-node, util/install-info-html, + util/tex3patch, util/txitextest: test && test instead of test -a, etc. + From: Paul Eggert <eggert@twinsun.com>, + 31 Jan 2003 22:59:35 -0800. + +2003-01-31 <karl@gnu.org> + + * doc/texinfo.tex (\groupbox): \newbox. + (\vfilllimit): new \def. + (\group): insert an explicit \page if the group is + big, and doesn't fit on the current page. + Otherwise, the previous page gets stretched unreasonably. + From: Werner LEMBERG <wl@gnu.org>, + 31 Jan 2003 19:19:33 +0100. + + * doc/texinfo.tex (\defargscommonending): insert \penalty10002. + (\parsebodycommon): check for \penalty10002 to + allow a breakpoint between @def's, not 10000. + + * doc/texinfo.tex (\defargscommonending): new macro. + (\defunargs, etc.): call it, instead of repeating code. + (No functional change.) + + * info/filesys.c (extract_colon_unit): return last colon unit + before claiming we're done. Report from: Alexandre Duret-Lutz + <duret_g@lrde.epita.fr>, 31 Jan 2003 18:18:22 +0100. + + * Version 4.4. + +2003-01-30 <karl@gnu.org> + + * doc/texinfo.tex (\dosubind): need full expansion of the index + sort string. + + * doc/texinfo.tex (\startcontents,\contents,\shortcontents): + assignments to \pageno must be \global; otherwise + if it's run inside a group, as in + @ifnothtml + @contents + @end ifnothtml + the rest of the pages in the document get roman numerals. + Reported by rlp. + + * doc/texinfo.tex (\dosubind): need space between entry and + subentry in printed output. Bug report from: Robin Lee Powell + <rlpowell@digitalkingdom.org>, 30 Jan 2003 15:13:48 -0800. + (\defophead, \defcvarhead, \defivarheader): show + method name in \code. + + * doc/texinfo.tex (\dosubind): need to \vskip-\skip0, not + -\lastskip, since \lastskip gets cleared by the \nobreak. Bug + report from: Werner LEMBERG <wl@gnu.org>, 29 Jan 2003 09:18:16 + +0100. + +2003-01-29 <karl@gnu.org> + + * info/signals.c (initialize_info_signal_handler): initialize the + sigaction struct here, not statically, since we can't rely on the + ordering of the elements; it's different on IRIX and FreeBSD, at + least. Patch from: ezra peisach <epeisach@med-xtal.bu.edu>, 28 + Jan 2003 13:09:18 -0500 (EST). + +2003-01-28 <karl@gnu.org> + + * util/dir-example: bring emacs section up to date. + +2003-01-27 <karl@gnu.org> + + * configure.ac: pretest version 4.3d. + + More changes to use @ fully in the .aux file, otherwise something + as simple as: + @node foo + @section @code{foo} + was broken. + * doc/texinfo.tex (\setref): call \atdummies. + (\atdummies): new macro, based on \indexdummies. + (\commondummies): separate out common redefinitions. + (\lbraceatcmd,\rbraceatcmd): @{ and @}, as strings. + + * configure.ac (AC_CHECK_FUNCS): add sigaction. + * info/signals.c (set_termsig) [HAVE_SIGACTION]: second arg to + sigaction is a pointer, not a struct. + + From: AIDA Shinra <aida-s@jcom.home.ne.jp>, 25 Jan 2003 18:53:19 +0900: + * info/signals.c (mask_termsig,set_termsig,restore_termsig): new fns. + (initialize_info_signal_handler): use sigaction if we have it. + (info_signal_proc): reread window size in case it has changed + while we were suspended. + + Mon Jan 27 08:09:07 CET 2003 Stepan Kasal <kasal@math.cas.cz> + * doc/texinfo.tex (\acuteaccent): the workaround is no longer needed. + (\xrefX): \normalturnoffactive changed to \turnoffactive, since + we \otherbackslash right afterwards anyway. + +2003-01-24 <karl@gnu.org> + + * doc/texinfo.tex: These changes allow ' in node and anchor names: + (\internalsetq): use @ instead of ' as the escape + character for .aux files. + (\xrdef): don't need to play games with \ now. + (\readauxfile): don't set catcode' to 0, and do + set catcode@ to 0. + + These changes allow \ in node and anchor names + (this worked once, but we broke it somewhere along the line): + (\setref, \xrefX, \dosetq, \refx): call \otherbackslash. + (\otherbackslash): new macro to make an active + backslash expand to a literal `\' character with + catcode other. + + + * configure.ac: pretest version 4.3c. + + * doc/texinfo.tex (\smallenvironments): remove, and change callers. + (\small...x): rename to just \small... + (\smallexamplefonts): set to \smallfonts, not + \smallerfonts, at least until people complain again. + + The effect of these changes is to make the + @small... commands print in a smaller font (9pt) + for all formats, not just @smallbook and @afivepaper. + + + * info/filesys.c (extract_colon_unit): rewrite so that an empty + unit does not stop us from processing the rest. Report from: + Werner LEMBERG <wl@gnu.org>, 24 Jan 2003 07:01:09 +0100. + + + Date: Mon, 02 Dec 2002 01:06:37 +0900 + From: AIDA Shinra <aida-s@jcom.home.ne.jp> + + * "info infokey" says key bindings in .info take precedence over + the default mapping, but this is not true. Only bindings to + undefined keys take effects. + * Binding to "invalid" action results crash. + * No code to disable prefix keys. Some users might want to bind + escape or C-x to a non-prefix key, but this does not allowed. + ... It always allows '^h' in incremental + search. Some terminals map 'backspace' to '^h' by default. + + These are the changes: + * info/session.c (incremental_search): check for Control('h') as + well as DEL. + * info/infomap.c (find_function_keyseq, add_function_keyseq, + remove_function_keyseq): new fns. + (keymap_copy_keymap, keymap_discard_keymap): take + rootmap arg. + +Wed Jan 22 14:25:39 CET 2003 Stepan Kasal <kasal@math.cas.cz> + + * doc/texinfo.tex (\footnotezzz): the very beginning was moved + to \startfootins; + (\startfootins): new macro; + (\multitable, \dotable): redefine \startfootins to get footnotes + saved, use \crcrwithfootnotes; + (\crcrwithfootnotes): check for postponed footnotes each time a row + of a multitable is finished; + (\tab): no longer defined globally, just \let to & inside + @multitable. + +2003-01-22 <karl@gnu.org> + + * doc/texinfo.tex: doc fix. + * doc/texinfo.tex (\dofootnote): rename from \footnotezzz. + + Wed Jan 22 14:23:51 CET 2003 Stepan Kasal <kasal@math.cas.cz> + * doc/texinfo.tex (\cartouche, \footnotezzz): removed \long, it + has no effect for macros without a parameter; + (\fo@t, \f@@t, \f@t, \@foot): removed, local \def has no effect. + +2003-01-21 <karl@gnu.org> + + * doc/texinfo.txi (Output Formats): new section. + +2003-01-19 <karl@gnu.org> + + * configure.ac: pretest version 4.3b. + + * makeinfo/tests/include-value: need -I $srcdir. + + * util/texindex.c: + * util/install-info.c: + * info/infokey.c: + * info/info.c: + * makeinfo/makeinfo.c: + * util/texi2dvi: 2003. + +2003-01-18 <karl@gnu.org> + + * makeinfo/node.c: add `(perhaps incorrect sectioning?)' to some of + the error messages. Unfortunately we can't easily + determine when the error stems from actual + mistyped node pointers, and when from incorrect + menus causing the implicit pointer creation to fail. + +2003-01-17 <karl@gnu.org> + + Thu Jan 16 10:28:32 CET 2003 Stepan Kasal <kasal@math.cas.cz> + * doc/texinfo.tex (\refx): Set locally \indexdummies before expanding + the \csname, in case there are macros; foreign accents, for example. + Bug report from Dumas Patrice <dumas@centre-cired.fr>. + + * makeinfo/makeinfo.c (COMMAND_CHAR): new macro, and exclude ^ and + _ from command names. + (read_token): call it. + + * makeinfo/makeinfo.h (command_char): move to makeinfo.c, since + it's only used in one place. + +2003-01-16 <karl@gnu.org> + + * TODO: @else + +2003-01-12 <karl@gnu.org> + + * doc/texinfo.tex (\dounmacro): simplify method for removing from + macro list. From Stepan. (Also rename from \unmacroxxx.) + (\unmacrodo): new macro, called with new method. + + * doc/texinfo.tex (\dotChar, questChar, exclamChar, colonChar, + semiChar, commaChar, underChar): names for catcode chars, defined using + \chardef. From Stepan. + + * doc/texinfo.tex (\conditionalsucceed): back to the easy + definition, since @set is global now. From Stepan. + + * doc/texinfo.tex (\doifclear,\doifset): use \let\next instead of + \expandafter, so that we'll succeed on no + conditional text. From Stepan. + Also rename from \ifclearxxx and \ifsetxxx. + + * doc/texinfo.tex (\expandablevalue): give a \message if the + variable is not set. Based on patch from Stepan. + + * doc/texinfo.tex (\setuptable): insert an actual \space after + \unskip. From Stepan. + + * doc/texinfo.tex (\kbdinputstyle): give error if unknown argument, + and call the macro to set the default. From Stepan. + + * doc/texinfo.tex: typo from Stepan. + + * doc/texinfo.tex (\docenter): rename from \centerzzz and do \hfil + instead of using plain's \centerline and \hss. Also force line + breaks before and after in horizontal mode. + Based on patch from Stepan, 11 Apr 2000 19:44:31 +0200. + + * doc/texinfo.tex: use \other and \active consistently. + From: Stepan Kasal <kasal@suse.cz>, 11 Apr 2000 19:44:31 +0200. + + * makeinfo/cmds.c (handle_include): call text_expansion on the + filename, so @value constructs are expanded. + + * doc/texinfo.txi (verbatiminclude, Using Include Files): mention + @value expansion. + Also, update samples to be copyright 2003. + + * doc/texinfo.tex (\doverbatiminclude, \verbatimzzz): expand + @value(but nothing else). + Bug from: Alper Ersoy <aersoy@tfz.net>, + 6 Jan 2003 13:14:28 +0200. + +2003-01-11 <karl@gnu.org> + + * doc/texinfo.tex (\definedummyword): new macro. + (\indexdummies): call it, instead of defining each + command separately; many trailing spaces had been omitted. + Alternate implementation of a patch from: Stepan + Kasal <kasal@math.cas.cz>, 10 Jan 2003 22:42:05 +0100. + + * doc/texinfo.tex (\acuteaccent): new defn. + (\indexdummies): use it instead of \' in the aux file. + Variation of a patch from: Stepan Kasal <kasal@math.cas.cz>, + 10 Jan 2003 21:28:40 +0100. + + * doc/texinfo.tex: doc fix. + +2003-01-10 <karl@gnu.org> + + * doc/texinfo.tex (\indexnofonts, \indexdummies): handle more + accent commands. + (\indexdummyfont): not needed, use \asis instead. + + * doc/texinfo.tex (\indexdummies,\indexnofonts): indent, no other + changes. + + * doc/texinfo.tex (\chapter .. \subsubsection): indent the + definitions; no other change. + + * doc/texinfo.txi (Macro details): no multiple-line args is + another limitation. + + Fri Jan 10 07:12:23 CET 2003 Stepan Kasal <kasal@math.cas.cz> + * texinfo.tex (\writetocentry): The + common work on building the line for \write\tocfile was + moved into the macro itself and thus all callers has been changed. + +2003-01-09 <karl@gnu.org> + + * info/session.c (incremental_search): don't interpret the + `function' element as an InfoCommand when it's really a Keymap. + This caused arrow keys to be inserted literally under Solaris, but + not GNU/Linux. Bug report from: Jeremy Lin + <jjlin@OCF.Berkeley.EDU>, 5 Jan 2003 01:59:29 -0800. + + * info/infomap.c: add comment about strange pointer cast. + +2003-01-08 <karl@gnu.org> + + * doc/texinfo.tex (\ignoremorecommands): define \Edef... and + \def...x for all @def... commands, and use \empty + instead of \relax. Bug report from Paul Eggert + <eggert@twinsun.com>, 7 Jan 2003 22:29:07 -0800. + +2003-01-06 <karl@gnu.org> + + * doc/texinfo.txi (table): mention @option as a useful indicating + command, and need for blank lines before and + after. Suggestion from: Kevin Ryde + <user42@zip.com.au>, 03 Jan 2003 10:02:55 +1000. + +2003-01-05 <karl@gnu.org> + + * util/texi2dvi: make egrep a variable (EGREP). Suggestion from: + Kurt Hornik <hornik@ci.tuwien.ac.at>. + Also, replace fgrep with grep. + + * doc/Makefile.am (TXI_XLATE): include txi-tr.tex from Alper Ersoy + <dirt@gtk.org>. + +2003-01-02 <karl@gnu.org> + + * makeinfo/insertion.c (end_insertion): in table case, call + close_insertion_paragraph. Bug report from: Kevin + Ryde <user42@zip.com.au>, 03 Jan 2003 08:09:54 +1000. + + * doc/texinfo.tex: remove spurious CTRL-G. + + * util/srclist.txt: more m4 files from gnulib now. + +2003-01-01 <karl@gnu.org> + + * doc/texinfo.tex (\_): more space afterwards, so __ comes out + better. Noticed in the gcc manual. + +2002-12-31 <karl@gnu.org> + + * makeinfo/makeinfo.c (usage): omit all the help message when something + goes wrong in argument parsing, as intended. + +2002-12-26 <karl@gnu.org> + + * doc/texinfo.tex (\insertcopying): ignore @c, @comment, and + @ignore...@end ignore as best we can. Report from + "Joseph S. Myers" <jsm28@cam.ac.uk>, 24 Dec 2002 + 18:08:10 +0000 (GMT), for the gcc manual, which + uses these constructs for automatic man page generation. + +2002-12-23 <karl@gnu.org> + + * doc/texinfo.txi (example): note that Texinfo commands are + expanded, plus other changes. Suggestion from Nelson Beebe. + +2002-12-20 <karl@gnu.org> + + * config.guess: update from prep. + +2002-12-17 <karl@gnu.org> + + * makeinfo/texinfo.dtd (indexterm): index not INDEX. + (node): only any block, not just para|menu. + * makeinfo/xml.c (texinfoml_element_list): format and like can + contain para. + From: Alper Ersoy <aersoy@tfz.net>. + +2002-12-14 <karl@gnu.org> + + * doc/texinfo.txi (makeinfo in Emacs): does not prompt for + filename. + From: Kevin Ryde <user42@zip.com.au>. + +2002-12-13 <karl@gnu.org> + + * doc/texinfo.txi: short sample needs @top (from jas), gnu sample + can use @verbatim (automake fix). + +2002-12-11 <karl@gnu.org> + + * doc/texinfo.txi: typos. + +2002-12-07 <karl@gnu.org> + + * makeinfo/xml.c: use lowercase, allow more chars in id's. From: + Jaime Davila <jdavila@engr.uconn.edu>, 6 Dec 2002 11:00:25 -0500. + +2002-12-05 <karl@gnu.org> + + * util/dir-example: alphabetize make. + + * NEWS: change texinfo.tex url. + + * doc/texinfo.tex (\obstexwarn): fix url's to TeX.README and + texinfo.tex. + +2002-12-02 <karl@gnu.org> + + * doc/texinfo.txi (Line Breaks): fixes. + +2002-12-01 <karl@gnu.org> + + * configure.ac: pretest version 4.3a. + +2002-11-30 <karl@gnu.org> + + * doc/Makefile.am (texinfo): restore rule since this won't quite + be fixed until automake 1.7.2 or later. + +2002-11-29 19:19 feloy + + * makeinfo/xml.c: Fix the <para>< bug in XML, reported by K. + Ryde + +2002-11-29 <karl@gnu.org> + + * lib/strdup.c: gnulib update. + +2002-11-29 Alexandre Duret-Lutz <adl@gnu.org> + + * doc/Makefile.am (.texi.info, texinfo): Remove. Automake 1.7+ + no longer output info files in the source tree. + +2002-11-26 <karl@gnu.org> + + * makeinfo/insertion.c (cm_insertion_copying): flush_output, so that + output_position gets updated, which in turn makes + the tag table positions reflect the copying text. + Report from: "W. L. Estes" <wlestes@uncg.edu>, 15 + Nov 2002 15:57:04 -0500. + + * makeinfo/index.c (init_indices): undefindex after we know + name_index_alist[i] is not null. + From: "Ronald F. Guilmette" <rfg@monkeys.com>, 26 Nov 2002 + 01:08:04 -0800. + + * doc/Makefile.am (texinfo): depend on version + files. Report from: Kevin Ryde + <user42@zip.com.au>, 27 Nov 2002 07:52:57 +1000. + +2002-11-25 <karl@gnu.org> + + * makeinfo/cmds.c (cm_verb): use <tt> not <pre>, as this is an + inline construct. Also, decrement + in_fixed_width_font, else the next paragraph does + not get a <p>. + Report from: Torsten Bronger <bronger@physik.rwth-aachen.de> + 26 Nov 2002 00:37:35 +0100. + + * doc/texinfo.tex (\dospecials): must include all other characters + that we set active, namely <>|_", or they got + mysteriously lost as the first character on a + verbatim line. + Report from: Torsten Bronger <bronger@physik.rwth-aachen.de> + 25 Nov 2002 18:26:12 +0100. + + (\doverbatim): ignore everything up to the first + ^^M, to avoid an extra blank line in the output. + + * lib/getopt*, strdup.c, tempname.c: update from gnulib (bruno + changes + gpl). + +2002-11-24 <karl@gnu.org> + + * doc/texinfo.txi (Multiple Spaces): xref tie rather w for + unbreakable spaces. + +2002-11-22 <karl@gnu.org> + + * doc/texinfo.txi: editorial changes from Max's editor. + +2002-11-21 <karl@gnu.org> + + * doc/texinfo.txi (Conventions): add item for blank lines as + paragraph separator. Report from: Maxim Masiutin + <max@ritlabs.com>, 21 Nov 2002 00:03:07 +0200. + +2002-11-19 <karl@gnu.org> + + * util/install-info.c (ensure_dirfile_exists): don't translate the `* + Menu' keyword. Report from: Ingo Krabbe + <i.krabbe@dokom.net>, 19 Nov 2002 09:24:45 +0100. + +2002-11-18 <karl@gnu.org> + + * po/.cvsignore: exclude *.gmo instead of listing each individually. + From: Frédéric L. W. Meunier <0@pervalidus.net>, + 15 Nov 2002 20:16:09 -0200 (BRST). + + * configure.ac (--enable-multiplatform): new option for teTeX and + TeX Live. From te. + +2002-11-14 <karl@gnu.org> + + * configure.ac, util/texi2dvi, NEWS: release version 4.3. + + * util/texi2dvi, mkinstalldirs: use `for var<newline>do"' instead + of `for var; do', for Solaris. + + * doc/texinfo.txi (math): emphasize that makeinfo does not interpret + the arg. + + * config.{guess,sub}: update from prep. + +2002-11-13 <karl@gnu.org> + + * configure.ac: pretest version 4.2f. + + * makeinfo/xml.c (INDEX_SEP): define as a string that will never + appear, so that we don't try to break index terms + at commas. Idea from: Stepan Kasal + <kasal@math.cas.cz>, problem reported by José + Fonseca <j_r_fonseca@yahoo.co.uk>. + +2002-11-12 <karl@gnu.org> + + * makeinfo/makeinfo.c: make sure command is non-null, for sake of bogus + input (\def\x{}). Report from + Neil.Turton@broadcom.com, debian bug#168689. + + * makeinfo/Makefile.am (makeinfo_SOURCES): remove docbook.[ch], + per feloy the docbook stuff is in xml.[ch] now. + +2002-11-12 19:48 feloy + + * makeinfo/: lang.c, makeinfo.c: (docbook) Entities for accented + characters are written correctly + +2002-11-12 19:34 feloy + + * makeinfo/xml.c: (docbook) Do not expand @set contents + +2002-11-11 18:14 feloy + + * makeinfo/xml.c: Better <bookinfo> support + +2002-11-11 13:37 feloy + + * makeinfo/: cmds.c, insertion.c, xml.c, xml.h: Better use of + <bookinfo> and <abstract> with docbook output + +2002-11-11 01:57 feloy + + * makeinfo/: defun.c, xml.c, xml.h: Removed all references to + docbook.[ch] which was the old sources for docbook output, replaced + by xml.[ch] + +2002-11-10 23:31 feloy + + * makeinfo/: insertion.c, xml.c, xml.h: Some bugfixes in docbook + output + +2002-11-09 18:47 feloy + + * makeinfo/insertion.c: In Docbook, Copying paragraph is not + inserted at @copying/@end copying point. + +2002-11-08 21:01 feloy + + * makeinfo/xml.c: take care of indexterm at beginning of table + +2002-11-08 20:52 feloy + + * makeinfo/xml.c: Text before first @item in @table is inserted as + the <title> of <variablelist> + +2002-11-08 20:24 feloy + + * makeinfo/xml.c: subsubheading is simplesect and not sect3 + +2002-11-08 19:13 feloy + + * makeinfo/: makeinfo.c, xml.c, xml.h: makeinfo/xml.c (xml_id): + Added more forbidden characters makeinfo/{xml.c,xml.h,makeinfo.c}: + Defined xml_in_xref_token variable + +2002-11-07 <karl@gnu.org> + + * makeinfo/sectioning.c: doc. + * makeinfo/sectioning.c: revert last change, it breaks gcc. + + * makeinfo/xml.c (xml-add_char): don't insert BOOKINFO and ABSTRACT + if executing_string. From Jos? Fonseca. + + * configure.ac: pretest version 4.2e. + + From: José Fonseca <j_r_fonseca@yahoo.co.uk>, + 7 Nov 2002 00:31:28 +0000. + * makeinfo/index.c (cm_printindex): in docbook case, pass the + unexpanded index term. + * makeinfo/xml.c (xml_insert_indexterm): execute_string instead of + insert_string. + (Otherwise, <>& are not escaped in the docbook index output.) + + * util/dir-example: sed. + + * makeinfo/lang.c: copyright. + * makeinfo/lang.h: copyright. + +2002-11-07 Stephen Gildea + + * makeinfo/sectioning.c (sectioning_html): have A tag enclose + section name rather than preceding it. + + * makeinfo/toc.c (contents_update_html): put name attribute into + existing A tag rather than making a separate tag for it. + +2002-11-07 Stephen Gildea + + * makeinfo/lang.c: support @documentencoding US-ASCII: + Put NULL at end of map tables so they can be of varying lengths. + (us_ascii_map): new iso_map_type table. + (encoding_table): add US_ASCII. + (cm_search_iso_map): don't assume all maps are the same length. + (cm_documentencoding): don't assume ISO_8859_1 is first table entry. + * makeinfo/lang.h (encoding_code_type): add US_ASCII. + +2002-11-05 <karl@gnu.org> + + * doc/info-stnd.texi: untabify. + * doc/info-stnd.texi: document that. + * info/footnotes.c (auto_footnotes_p): turn off by default. + + * info/infodoc.c (info_internal_help_text): had + scroll-{forward,backward} twice instead of {next,prev}-line. + * info/infodoc.c: untabify. + + * util/texi2dvi: untabify. + * doc/texinfo.tex: untabify. + * util/texindex.c: untabify. + * util/install-info.c: untabify. + * makeinfo/makeinfo.c: indentation fix. + * makeinfo/cmds.c: doc fix. + +2002-11-04 <karl@gnu.org> + + * configure.ac: pretest version 4.2d. + * doc/fdl.texi: better line break to avoid overfull hbox. + +2002-11-04 Stephen Gildea + + * makeinfo/{footnote.c,cmds.c,html.c,index.c,insertion.c, + makeinfo.c,node.c,toc.c,sectioning.c}: add a class attribute + to tags generated in special circumstances that wouldn't be + obvious to a user agent. + + Quote all attribute values (for XHTML). + +2002-11-04 <karl@gnu.org> + + * doc/texinfo.txi (File End): grammar. + + These changes from gildea: + * makeinfo/cmds.c (cm_titlepage): new fn, and use it for @titlepage. + + * makeinfo/cmds.h (titlepage_cmd_present): new global. + * makeinfo/html.c (html_output_head): check titlepage_cmd_present + before outputting the <h1>. + + * makeinfo/html.c (html_output_head): put a class on the <h1> from + settitle. + + * makeinfo/cmds.c (cm_titlefont): put the class directly on the h1 + rather than a separate <span> element. + +2002-10-31 <karl@gnu.org> + + * doc/texinfo.tex (\mathactive): new fn. + (\math): call it, to change definitions of active characters. + (\ptex{gtr,hat,less,plus}): save original characters. + Report from wl. + + * doc/texinfo.tex (\itemzzz): \penalty10001 instead of 10000 + before the putative \parskip. + (\aboveenvbreak): insert \parskip if penalty!=10000, + rather than <10000. Otherwise, @item some long item label / + @example has too little spacing. + Report from: Werner LEMBERG <wl@gnu.org>, + 26 Apr 2002 08:37:41 +0200 (CEST). + + * makeinfo/makeinfo.c (executing_macro): new static. + (read_command): set it, if we execute a macro. + (add_char): if it is set, call html_output_head. + This is so if a macro expansion is first in the document body, the + html head gets written before the macro body. + Report from: Stephen Gildea <gildea@stop.mail-abuse.org>, + 10 Jul 2002 13:35:13 -0400. + + * makeinfo/html.c (html_title_written), + * makeinfo/html.h (html_title_written): make available. + * makeinfo/cmds.c (cm_titlefont): set html_title_written for html + output. + + * util/texindex.c: texindex.c (need_initials, first_initial): New + globals. + (main): Clear them for each index. + (parsefile): Set need_initials when there is more than one + initial in this index. + (indexify): Do not emit \initial commands unless need_initials + is set. Use toupper. + + From: Zack Weinberg <zack@codesourcery.com> + Date: Tue, 26 Mar 2002 17:20:06 -0800 + + * lib/system.h: doc fix from gildea. + +2002-10-30 <karl@gnu.org> + + (Following reported by Bob Wilson.) + + * doc/texinfo.tex (\sectionheading): add either + \normalbaselineskip or \parskip after the heading, whichever is + larger, instead of hardwiring 10pt. + + * doc/texinfo.tex (\defxbodycommon): new defn, including a + potential breakpoint if we have multiple consecutive @def...x commands. + (\def*parsebody): use it. + + * doc/texinfo.tex (\singlespace): remove, since we fixed the + regular line spacing a long time ago to not be double-spaced. + In @smallbook mode, it ironically caused excessive line spacing. + (\nonfillstart, \quotation): don't call it. + + * doc/texinfo.tex (\smartslanted, \smartitalic): use \ttsl if in + typewriter. + From: Bob Wilson <bwilson@tensilica.com>. + + * doc/texinfo.tex (\defmethparsebody): pass \empty to \smallsplit + to keep a brace-delimited argument to @deffn from having the braces + stripped. + (Report from: Han-Wen Nienhuys <hanwen@cs.uu.nl>.) + +2002-10-28 <karl@gnu.org> + + * doc/texinfo.tex (\loggingall): rewrite to minimize log file + output (ideas from Frank Mittelbach's trace.sty) and explicitly + show the etex changes. + + * configure.ac: pretest version 4.2c. + + * NEWS: mention Werner's fixes. + +2002-10-27 Werner Lemberg <wl@gnu.org> + + * makeinfo/html.c (insert_html_tag): Fix handling of nested, + identical tags. + +2002-10-27 <karl@gnu.org> + + * configure.ac (AM_INIT_AUTOMAKE): add dist-bzip2 option. + +2002-10-26 <karl@gnu.org> + + * 2002-10-24 Werner Lemberg <wl@gnu.org> + Fix html font tags, i.e., make the output similar to + texinfo.tex. The main idea is to avoid nested font tags. + + * makeinfo/html.c (push_tag, pop_tag): New functions. + (insert_html_tag): Use them. + Don't emit more than a single font attribute. + + * makeinfo/html.h (HSTACK): New structure. + + * makeinfo/defun.c: Include cmds.h and html.h. + (process_defun_args): Don't apply <i>...</i> to parentheses + and brackets. + (defun_internal): Use insert_html_tag for emitting font tags. + + * makeinfo/cmds.c (cm_url): Use insert_html_tag for emitting + font tag. + (cm_r): Simplify. + +2002-10-25 Alexandre Duret-Lutz <adl@gnu.org> + + * util/texi2dvi: Preserve empty components when expansing + TEXINPUTS and INDEXSTYLE. + +2002-10-24 <karl@gnu.org> + + * doc/info-stnd.texi: missing period. + + * m4/{check-decl.m4,mkstemp.m4,prereq.m4}: new files from gnulib. + * lib/mkstemp.c, lib/tempname.c: likewise. + * aclocal.m4, configure.ac: support for mkstemp instead of mktemp. + * util/texindex.c: use mkstemp instead of mktemp. + + 2002-10-24 Alexandre Duret-Lutz <adl@gnu.org> + * util/texi2dvi: Turn relative entries $TEXINPUTS and $INDEXSTYLE + into absolute paths. (Allows --clean to work with relative dirs + in TEXINPUTS, etc.) + + * doc/texinfo.tex: update \texinfoversion timestamp. + +2002-10-22 <karl@gnu.org> + + 2002-10-16 Werner Lemberg <wl@gnu.org> + + * texinfo.tex (\appendixbox): New macro to compute a + fixed-width box for the appendix entry in the TOC. + (\appendixzzz, \appendixentry): Use it. + + (\shortconttt): New font. + (\summarycontents): Use it to set the font size of the \tt + font properly. + + (\authortt): New macro. + (\authorfont): Use it to provide a proper font size for + @email used within @author. + +2002-10-21 <karl@gnu.org> + + * automake 1.7.1. + +2002-10-18 <karl@gnu.org> + + * doc/texinfo.tex (\defname): get rid of the unused + \deftypemargin; typeset the function type word flush right, in + brackets. Partially suggested by bob. + +2002-10-16 <karl@gnu.org> + + * makeinfo/html.c: Just > after all on <meta> and <link> to + appease HTML 4.01 (and break XHTML). From Janis. + +2002-10-15 <karl@gnu.org> + + * configure.ac: pretest version 4.2b. + + * makeinfo/cmds.c (cm_dots, cm_enddots): don't use small if + in_fixed_width_fonts; this violates the html specs, which don't + want you to change fonts within <pre>. (Argh.) + Report from: Janis Johnson <janis187@us.ibm.com>, + 14 Oct 2002 15:59:16 -0700. + +2002-10-14 Alexandre Duret-Lutz <adl@gnu.org> + * util/texi2dvi (common, txincludes): Fix definitions so that + an empty $txincludes doesn't result in a empty path element + in TEXINPUTS. + +2002-10-14 <karl@gnu.org> + + * info/infokey.c: copyright 2002 not 02. + * makeinfo/lang.c: copyright 2001 not 01. + + * makeinfo/insertion.c (begin_insertion): for enumerate, set + in_paragraph=0 as we do for itemize. + Otherwise a </p> gets inserted at the next @item, which is wrong. + + Report from: Janis Johnson <janis187@us.ibm.com>, 14 Oct 2002 + 12:35:30 -0700. + +2002-10-13 <karl@gnu.org> + + * util/install-info.c (longopts): make --infodir a synonym for + --info-dir, for some compatibility with the Debian install-info. + Reported by Bob Chassell, Yves Codet <ycodet@club-internet.fr>, + and many others. + + * doc/texinfo.txi (makeinfo advantages): document various options + that have crept in to the source. (Werner Lemberg noted that + --iftex and companions were missing.) + +2002-10-10 <karl@gnu.org> + + * makeinfo/cmds.c (cm_tie): new fn for new cmd @tie{}. + * doc/texinfo.txi: document it. + +2002-10-09 <karl@gnu.org> + + * doc/texinfo.txi: recommend free software directory categories + (suggestion from rms), + more info about @noindent (fut_nis@d3.dion.ne.jp and ryk@dspwiz.com), + version specification (spectorhome@rcn.com). + + * makeinfo/{cmds,footnote,html,insertion,makeinfo,multi,node}.c: + use <br /> instead of plain <br>, for the sake of XHTML. Likewise + with <hr /> and <meta />, and quote all <meta> values. + Suggestion (and assurance of compatibility) from + Janis Johnson <janis187@us.ibm.com> + and Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at> + (the gcc web page maintainers). + + * util/infosrch: new contrib script. + * util/Makefile.am (EXTRA_DIST): add infosrch. + +2002-10-04 <karl@gnu.org> + + * configure.ac: pretest version 4.2a. + + * TODO: more info on dir categories. + +2002-10-02 <karl@gnu.org> + + * doc/.cvsignore: ignore tex output files. + + * util/dir-example: remove unused categories, etc. + +2002-10-01 <karl@gnu.org> + + * doc/texinfo.tex (\xml,\ifxml): more \doignore's. + (\copying,\insertcopying): new implementation to save the uninterpreted + tokens instead of typesetting a box, so that the page size, fonts, + etc., don't have to be defined before @copying is run. + + These changes from Werner Lemberg <wl@gnu.org>: + (\internalpagesizes): take two new arguments for the physical paper + height and width. + (\smallbook,\afourpaper,\afivepaper,\letterpaper,\afourwide, + \pagesizes): pass them. + +2002-09-30 <karl@gnu.org> + + * util/texi2dvi: doc fixes. + + * README: mention autoreconf. + +2002-09-29 <karl@gnu.org> + + * doc/texinfo.tex (\pdfmakeoutlines): call \turnoffactive to handle all special characters + except \{}. + (\normalturnoffactive): call \turnoffactive instead of repeating all the + redefinitions. + + * doc/texinfo.tex (\afourpaper, \afourlatex, \afourwide): new + formatting values. + From: Eric.Belpaire@equant.com, 30 Aug 2002 19:03:30 +0200. + + * aclocal.m4: $Id now omitted. + + * doc/texinfo.txi: document @xml and @ifxml. + + * makeinfo/makeinfo.c (usage): mention the new options. + * info/Makefile.am (BUILT_SOURCES): define this unconditionally, + no more TEXINFO_MAINT. We handle it in the top-level + Makefile.am by defining distcleancheck_listfiles. + + * acinclude.m4: can't have $Id, then it gets propagated to + aclocal.m4. + + From: Philippe Martin <feloy@free.fr>, 11 Aug 2002 20:17:44 +0200. + * makeinfo/cmds.c: new commands @ifnotxml, @ifxml, @xml. + * insertion.c: likewise. + (cm_ifxml, cm_ifnotxml): new functions. + * insertion.h: likewise. + * makeinfo.c: new options --ifxml, --no-ifxml. + (cm_image): better xml output. + * makeinfo.h (process_xml): new global. + * xml.c: call xml_close_sections. + +2002-09-28 <karl@gnu.org> + + * makeinfo/insertion.c (begin_insertion): only do <pre>, not + <br><pre>; suggestion from Werner. + + * info/infodoc.c: document the bug regarding where_is_rep_index, + but don't fix it since it's in the [!INFOKEY] code. + + 2002-05-18 Eli Zaretskii <eliz@is.elta.co.il> + These changes make @example be indented in HTML output, and make + @exdent work inside an @example in HTML. + + * makeinfo/insertion.c (begin_insertion) <example>: Insert spaces + after <pre> to produce indentation of the first line in HTML mode. + + * makeinfo/makeinfo.c (indent): Do indent even in HTML mode. + + These patches from: Thierry Vignaud <tvignaud@mandrakesoft.com>, + 24 Apr 2002 20:52:37 +0200. + + * makeinfo/insertion.c: doc fix. + + * info/infomap.c: had h and l functions reversed in vi mode. + + * util/install-info.c: bzip2 support. + + * util/texi2dvi: don't allow whitespace as one of the ?'s around + the o in foo.?o?, that could lead to misparsing. + +2002-09-27 <karl@gnu.org> + + * doc/Makefile.am (*.1): call the binary, not the source file. + + * util/texindex.c (sort_in_core): int not off_t. + (main): cast argument to sort_in_core to int. + (sort_offline): nfiles parameter is not actually passed (or used); + need to pass &tempfiles[i] to sort_in_core. + From: Christopher League <league@contrapunctus.net>, + 26 Apr 2002 22:45:45 -0400. + + * doc/texinfo.tex (\unnumb...entry): make analogous to \...entry + (except when actually outputting the text, of course), so pdf + bookmarks can go to the right level. + From: Christopher League <league@contrapunctus.net>, + 25 Apr 2002 15:29:24 -0400. + + * install-sh: update from gnulib. + + * makeinfo/insertion.c (handle_verbatim_environment): need to + quote & and <. + From: Philippe Martin <feloy@free.fr>, 18 Aug 2002 15:39:10 +0200. + + 2002-06-04 Eli Zaretskii <eliz@is.elta.co.il> + * makeinfo/cmds.c (cm_exdent): Call start_paragraph to restore + previous indentation of text. (exponent.tex test.) + + 2002-05-11 Eli Zaretskii <eliz@is.elta.co.il> + * makeinfo/node.c (remember_node): If the argument FNAME is NULL, + as it happens for "Top", use the basename of current_output_filename. + +2002-09-26 <karl@gnu.org> + + * lib/system.h [MIKTEX]: include gnu-miktex.h, define S_ISDIR. + [! MIKTEX]: declare substring. + From: Stephen Gildea <gildea@stop.mail-abuse.org>, + 08 May 2002 18:12:58 -0400. + + * doc/texinfo.tex: spurious \let when setting \mainmagstep. + From: Stephen Gildea <gildea@stop.mail-abuse.org>, + 08 May 2002 08:38:39 -0400. + + * doc/texinfo.txi: copyright symbol: use @code{@copyright@{@}}, + with the braces in the @code. + From: Paul Eggert <eggert@twinsun.com>, 1 Apr 2002 11:37:52 -0800. + + * info/infodoc.c (replace_in_documentation): always allocate at + least one byte for replen, otherwise things crash when MALLOC_CHECK_=2. + From: "Andreas Herrmann" <AHERRMAN@de.ibm.com>. + + * lib/Makefile.am (libtxi_a_SOURCES): include xalloc.h. + + * doc/Makefile.am (EXTRA_DIST): skip macro.texi and userdoc.texi now. + (common_mandeps): new var. + (*.1): use that, and depend on the source files with the version strings + instead of the binaries. Suggestion from Alexandre. + + * util/Makefile.am (bin_PROGRAMS, ginstall_info_SOURCES, + transform): build as ginstall-info, to avoid clashing with the + install-info target inserted by Automake. (Suggestion from Akim.) + + * Makefile.am (distcleancheck_listfiles): new definition so + distcheck doesn't complain about our generated files in info/, + which are conditionalized on TEXINFO_MAINT. + + * lib/gettext.h: update from gettext 0.11.5. + +2002-09-24 <karl@gnu.org> + + * util/srclist.txt: m4 files from aclocal rather than gnulib. + + * Makefile.am, util/Makefile.am, dir-example: move dir-example to util. + +2002-09-23 <karl@gnu.org> + + * INSTALL.generic: update from autoconf 2.54. + +2002-09-20 gettextize <bug-gnu-gettext@gnu.org> + + * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.11.5. + +2002-09-12 <karl@gnu.org> + + * util/srclist.txt: INSTALL to INSTALL.generic. + +2002-08-04 <karl@gnu.org> + + * doc/texinfo.5: + * lib/system.h: + * doc/texinfo.tex: + * doc/info-fr.texi: + * configure.ac: non-copyright notice. + * doc/info-fr.texi: + * doc/info-stnd.texi: + * doc/texinfo.txi: copyright years should be written out in full. + +2002-07-23 <karl@gnu.org> + + * doc/texinfo.txi: verbatim license sample per rms and chassell. + +2002-07-19 <karl@gnu.org> + + * doc/texinfo.txi: + +2002-06-05 <karl@gnu.org> + + * doc/Makefile.am (TXI_XLATE): txi-it.tex from Paolo Bonzini + <bonzini@gnu.org>. + +2002-06-04 <karl@gnu.org> + + * doc/texinfo.tex (\defparsebodycommon): do \penalty0 if the last + item was a \nobreak, since that means we have two function headers + in a row. Report from: Brian Gough <bjg@network-theory.co.uk>. + + (\defparsebody,...): use \defparsebodycommon instead of repeating code. + +2002-05-09 <karl@gnu.org> + + * doc/texinfo.5: lowercase NAME to `texinfo' for Solaris man. + From gildea. + +2002-04-29 <karl@gnu.org> + + * doc/texinfo.txi: mention it. + * util/texi2dvi: allow -E as well as -e. + +2002-04-10 <karl@gnu.org> + + * doc/texinfo.txi: + 2002-04-01 <karl@gnu.org> * configure.ac: version 4.2. @@ -52,7 +1195,7 @@ * info/search.c (skip_non_whitespace): Don't go beyond the terminating null character. - * info/filesys.c (filesys_read_info_file) + * info/filesys.c (filesys_read_info_file) (filesys_read_compressed): Null-terminate the contents of the file we've read, so it could be used as a C string. @@ -361,7 +1504,7 @@ * info/info.c (add_file_directory_to_path): New function, code moved from `main'. - (main): Use add_file_directory_to_path. + (main): Use add_file_directory_to_path. * info/session.c (info_follow_menus): If the first menu entry couldn't be found as an item in DIR's menu, try it as a file name. @@ -476,7 +1619,7 @@ * makeinfo/html.c (nodename_to_filename): Call nodename_to_filename_1 with the last argument 1, not 0. - * makeinfo/toc.c (shortcontents_update_html) + * makeinfo/toc.c (shortcontents_update_html) (contents_update_html): Don't omit the entry for the Top node. * 2002-01-30 Eli Zaretskii <eliz@is.elta.co.il> @@ -546,8 +1689,8 @@ <gildea@stop.mail-abuse.org>. 2002-01-26 Eli Zaretskii <eliz@is.elta.co.il> - * info/infomap.c (default_emacs_like_info_keys) - (default_emacs_like_ea_keys, default_vi_like_info_keys) + * info/infomap.c (default_emacs_like_info_keys) + (default_emacs_like_ea_keys, default_vi_like_info_keys) (default_vi_like_ea_keys): Fix default keybindings to be consistent with non-INFOKEY branch. Add bindings for Home, End, and Delete keys. @@ -715,7 +1858,7 @@ * makeinfo/html.c (add_link): Ditto. - * makeinfo/footnote.c (cm_footnote): Ditto. + * makeinfo/footnote.c (cm_footnote): Ditto. * makeinfo/defun.c (defun_internal): Ditto. @@ -878,7 +2021,7 @@ 2001-12-18 Eli Zaretskii <eliz@is.elta.co.il> - * makeinfo/xml.c (xml_insert_element_with_attribute) + * makeinfo/xml.c (xml_insert_element_with_attribute) (xml_insert_element): Rename the argument `element' to `elt'. * info/infokey.c (compile): Use \033 instead of (non-standard) \e. @@ -892,8 +2035,8 @@ (DJGPP_keytab): Map Home, End, and Insert to escape sequences, not to C-a, C-e, etc. - * info/infomap.c (default_emacs_like_info_keys) - (default_emacs_like_ea_keys, default_vi_like_info_keys) + * info/infomap.c (default_emacs_like_info_keys) + (default_emacs_like_ea_keys, default_vi_like_info_keys) (default_vi_like_ea_keys): Add the leading suppress-default flag, to be consistent with the table which comes from a file. @@ -1179,7 +2322,7 @@ (sectioning_html): use <h2> for chapter instead of <h1>, etc. * makeinfo/node.c (cm_node): do not include code to output the HTML <head>, we do that elsewhere now. - + 1999-11-26 W. L. Estes <will@fumblers.org> * makeinfo/insertion.c (begin_insertion): add an explicit <br> before beginning a <pre> block. for flushleft and flushright, use @@ -1205,7 +2348,7 @@ 2001-06-13 <karl@gnu.org> - * texinfo.tex (\pdfmkdest): \normalturnoffactive, so refs and + * texinfo.tex (\pdfmkdest): \normalturnoffactive, so refs and defs match. (\xrefX): pdf link defs no longer use @, so link refs shouldn't use @ either. (All xrefs in pdf were failing.) @@ -1213,7 +2356,7 @@ * texinfo.tex (\smallerfonts): new font size. (\smallexample, et al.): use it, in all cases, not just @smallbook. - + 1999-11-30 Andreas Schwab <schwab@suse.de> * doc/texinfo.tex (\xrefX): Turn off active characters when writing out the link name for pdf. @@ -1321,7 +2464,7 @@ * makeinfo/cmds.c (cm_sp): ...and here... * makeinfo/toc.c (cm_contents, cm_shortcontents): ...and here... * makeinfo/node.c (cm_anchor): ...and here. - + * makeinfo/html.c (html_output_head): `free' html_title if expanded. Make <head> and <body> stand out. @@ -1460,7 +2603,7 @@ option, added node Installing HTML info. * util/install-info-html.in: new script. The bare minimum - required for generating HTML index. + required for generating HTML index. * lib/system.h: compilation fix. @@ -1475,8 +2618,8 @@ 2000-11-07 Jan Nieuwenhuizen <janneke@gnu.org> - * toc.c (toc_add_entry): - (contents_update_html): + * toc.c (toc_add_entry): + (contents_update_html): (shortcontents_update_html): [SPLIT_JCN]: use hrefs for nodename based html files. @@ -1523,7 +2666,7 @@ 1999-08-31 <janneke@gnu.org> - * makeinfo/cmds.c: + * makeinfo/cmds.c: * makeinfo/insertion.{c,h}, * makeinfo/makeinfo.{c,h}: redo of @verbatim, @verb{<char>..<char>} * doc/texinfo.tex: fixed @verb{<char>..<char>} @@ -1551,7 +2694,7 @@ (suggestion from Akim). Installed some patches: - + 2000-08-04 Paul Eggert <eggert@twinsun.com> * makeinfo/multi.c (find_template_width): Don't access before start of *PARAMS. @@ -1691,7 +2834,7 @@ * doc/texinfo.txi: Document that @anchor ignores spaces. * makeinfo/cmds.c (cm_shyph): remove, ­ is not supported in - browsers. + browsers. From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de> * makeinfo/makeinfo.c: Don't crash if current_indent = 0. @@ -1915,7 +3058,7 @@ Mon Jul 12 08:01:19 1999 Karl Berry <karl@gnu.org> * doc/texinfo.txi: document this. * makeinfo/macro.c (apply): warn if \ in macro body is not followed by a parameter name or \, instead of silently - accepting it, for compatibility with TeX. + accepting it, for compatibility with TeX. * makeinfo/macro.c: Doc fix. @@ -2043,7 +3186,7 @@ Fri Jul 2 14:26:22 1999 Karl Berry <karl@gnu.org> From gildea: * info/terminal.c (TIOCGETC) [M_XENIX && TIOCGETC]: #undef. - * info/session.c (strncasecmp) [M_XENIX]: declare. + * info/session.c (strncasecmp) [M_XENIX]: declare. Thu Jul 1 19:25:12 1999 Karl Berry <karl@gnu.org> @@ -2076,7 +3219,7 @@ Sat May 1 16:01:36 1999 Karl Berry <karl@gnu.org> 1999-04-29 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp> - * makeinfo/makeinfo.c (cm_xref): Don't collapse --- to -- etc., + * makeinfo/makeinfo.c (cm_xref): Don't collapse --- to -- etc., in references. Mon Apr 26 16:41:55 1999 Karl Berry <karl@gnu.org> @@ -2104,7 +3247,7 @@ Sun Apr 25 16:08:27 1999 Karl Berry <karl@gnu.org> 1999-04-23 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp> - * makeinfo/cmds.c (cm_center): Recover the previous state when + * makeinfo/cmds.c (cm_center): Recover the previous state when called with --html. 1999-04-24 Eli Zaretskii <eliz@is.elta.co.il> @@ -2633,7 +3776,7 @@ Mon Mar 15 17:06:15 1999 Karl Berry <karl@gnu.org> hopes they then won't be distributed. Report from Andreas. * makeinfo/cmds.c (cm_sp): close paragraph and disable filling to - produce blank lines in info. + produce blank lines in info. Report from: Michael Vanier <mvanier@bbb.caltech.edu>. * doc/texinfo.txi: Attempt to get Edition info on one line. @@ -2761,8 +3904,8 @@ Fri Mar 5 14:31:42 1999 Karl Berry <karl@gnu.org> * makeinfo/makeinfo.c (handle_menu_entry): Ditto. * makeinfo/insertion.c (begin_insertion), - * makeinfo/makeinfo.c (handle_menu_entry): If commentary - precedes first menu item, put them outside of <ul>. + * makeinfo/makeinfo.c (handle_menu_entry): If commentary + precedes first menu item, put them outside of <ul>. Put <p> and </p> correctly. 1999-02-27 Eli Zaretskii <eliz@is.elta.co.il> @@ -2844,14 +3987,14 @@ Wed Mar 3 17:20:07 1999 Karl Berry <karl@gnu.org> * info/echo-area.c: Don't pause for an additional 75 microseconds. Noted by Eli. - + * configure.in: Bump to 3.12f. * doc/texinfo.txi: findex enddots. From Eli. 1999-03-01 Yoshiki Hayashi <g740685@komaba.ecc.u-tokyo.ac.jp> - * makeinfo/makeinfo.c (insert_html_tag): Add <p> when + * makeinfo/makeinfo.c (insert_html_tag): Add <p> when paragraph is not opened. (sectioning_html): Call close_paragraph so that paragraph will be started. @@ -2925,7 +4068,7 @@ Thu Feb 18 16:42:10 1999 Karl Berry <karl@gnu.org> * makeinfo/cmds.c (cm_dots, cm_enddots): Don't produce … for HTML, as too many browsers don't support it; use "..." in a - smaller font. + smaller font (with <small>). (cm_top): Output the lang= attribute inside <html>. * makeinfo/node.c (cm_node): Output the lang= attribute inside @@ -3016,7 +4159,7 @@ Wed Feb 17 11:50:46 1999 Karl Berry <karl@gnu.org> Sony NEWS-OS 4.0C lossage. From Akim. * info/infodoc.c: Translate where is doc string, underline lines - in help. + in help. From: Trond Endrestol <trond@agamemnon.gtf.ol.no> * makeinfo/cmds.c (cm_dots, cm_enddots): go back to ... and ...., @@ -3118,7 +4261,7 @@ Wed Feb 10 22:00:00 1999 Karl Heinz Marbaise <kama@hippo.fido.de> * makeinfo/insertion.c: - some minor changes made to support the @def... things in HTML. - + * makeinfo/lang.c: (cm_accent_generic) - bug fixed. Using umlaut (accent ...) would produce &A only if an umlaut follows @@ -8410,7 +9553,7 @@ Sun Jun 26 18:46:16 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu) * texinfo.tex (\anchor): rewrite to always \ignorespaces. Bug from esken. - + * texinfo.tex (\indexnofonts): dummy up \acronym. From: Thomas Esken <esken@nmlab.informatik.fh-dortmund.de> @@ -8433,7 +9576,7 @@ Mon Aug 9 16:31:55 1999 Karl Berry <karl@gnu.org> Fri Aug 6 13:48:22 1999 Karl Berry <karl@gnu.org> - * texinfo.tex (\charcode): remove unused counter. + * texinfo.tex (\charcode): remove unused counter. From: Akira KAKUTO <kakuto@fsci.fuk.kindai.ac.jp>. Thu Jul 22 19:08:19 1999 Karl Berry <karl@gnu.org> diff --git a/contrib/texinfo/INSTALL b/contrib/texinfo/INSTALL index 50dbe43..9226bbf 100644 --- a/contrib/texinfo/INSTALL +++ b/contrib/texinfo/INSTALL @@ -1,183 +1,27 @@ -Basic Installation -================== +$Id: INSTALL,v 1.2 2002/09/11 16:32:09 karl Exp $ - These are generic installation instructions. + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. - 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, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). +For generic installation instructions on compiling and installing this +Automake-based distribution, please read the file `INSTALL.generic'. - 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 at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. +Installation notes specific to Texinfo: - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. +* The Info tree uses a file `dir' as its root node; the `dir-example' + file in this distribution is included as a possible starting point. + Use it, modify it, or ignore it just as you like. -The simplest way to compile this package is: +* You can create a file texinfo.cnf to be read by TeX when + processing Texinfo manuals. For example, you might like to use + @afourpaper by default. See the `Preparing for TeX' node in + texinfo.txi for more details. You don't have to create the file if + you have nothing to put in it. - 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. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -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 supports 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=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH 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=PATH' 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' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -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 host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -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. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--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. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. +* If your info files are not in $prefix/info, you may wish to add a line +#define DEFAULT_INFOPATH "/mydir1:/mydir2:..." + to config.h after running configure. +* For instructions on compiling this distribution with DJGPP tools + for MS-DOS and MS-Windows, see the file djgpp/README. diff --git a/contrib/texinfo/INTRODUCTION b/contrib/texinfo/INTRODUCTION index b87e415..49e9e33 100644 --- a/contrib/texinfo/INTRODUCTION +++ b/contrib/texinfo/INTRODUCTION @@ -1,10 +1,13 @@ -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01 -Free Software Foundation, Inc. +$Id: INTRODUCTION,v 1.2 2002/09/11 16:32:09 karl Exp $ +Getting started with Texinfo. + + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. -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 no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. Getting Started with Texinfo diff --git a/contrib/texinfo/NEWS b/contrib/texinfo/NEWS index 76d5a74..b3039a0 100644 --- a/contrib/texinfo/NEWS +++ b/contrib/texinfo/NEWS @@ -1,12 +1,12 @@ -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02 -Free Software Foundation, Inc. +$Id: NEWS,v 1.34 2003/02/05 00:54:07 karl Exp $ +This file records noteworthy changes. -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 no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003 Free Software Foundation, Inc. -This file records noteworthy changes. + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. *** IMPORTANT NEWS FOR ALL AUTHORS OF TEXINFO MANUALS *** @@ -20,6 +20,74 @@ formats. The manual has detailed explanations and examples. For convenience, here's a url to one of the relevant sections: http://texinfo.org/manual/Document-Permissions.html +------------------------------------------------------------------------------- + +4.5 (4 February 2003) +* info: + . a bug in 4.4 prevented compressed info files from being found. +* Distribution: + . detect sys/ptem.h on Solaris. + + +4.4 (31 January 2003) +* Language: + . The ' (ASCII apostrophe/right quote) character is finally allowed in + node and anchor names. Thus, after installing this texinfo.tex, + existing .aux files will cause errors! Remove them and rerun TeX to + generate good ones. + . @value constructs are now expanded in the filename arguments to + @include and @verbatiminclude. +* makeinfo: + . bug fix: @copying text is now reflected in tag table positions; + before, nodes may not have been found with a long-enough @copying. + . bug fix: html @verb arg is quoted properly, and does not imply + a paragraph break. +* texinfo.tex: + . @smallexample and the like now output in a smaller font (9pt) in all + paper formats, not just @smallbook and @afourpaper. + . new translation txi-tr.tex. + . bug fix: <>| and other characters do not disappear when they are + first on a line in @verbatim. +* install-info: + . bug fix: don't translate the `* Menu' info keyword. +* info: + . CTRL-H is treated like DEL in incremental search. + . arrow keys once again work in isearch contexts under Solaris. +* infokey: + . use .info key bindings before defaults. + . allow prefix keys to be disabled. +* Distribution: + . update to GNU FDL 1.2 (http://www.gnu.org/licenses/fdl.html). + . getopt and other common library files updated from gnulib + (http://savannah.gnu.org/projects/gnulib/). + . autoconf 2.57, automake 1.7.2. + + +4.3 (14 November 2002) +* Language: + . new command @tie{} to do a real tie (unbreakable interword space). +* makeinfo: + . html output for @defun and friends now has font changes. + . html output has some class attributes. + . xml and docbook output improved in many details. +* texinfo.tex: + . new Italian translations, txi-it.tex. + . pdf bookmarks for unnumbered sections work. + . type name for @defun and friends no longer extends into margin. +* info: + . automatic-footnotes now off by default, for emacs compatibility. + . crash when MALLOC_CHECK_=2 fixed. +* install-info: + . new option --infodir synonym for --info-dir, for compatibility with + the Debian install-info. + . support for bzip2-compressed files. +* texindex: + . omit initial if the entire index is under one character. +* Distribution: + . development sources now available under CVS, see + http://savannah.gnu.org/projects/texinfo/ + . Turkish message translation. + . gettext 0.11.5, autoconf 2.54, automake 1.7.1. 4.2 (1 April 2002) @@ -43,7 +111,6 @@ convenience, here's a url to one of the relevant sections: at make time, to appease Automake's make distcheck. . gettext 0.11.1, autoconf 2.53, automake 1.6 (with install-info kludge). - 4.1 (4 March 2002) * Language: @@ -100,7 +167,8 @@ convenience, here's a url to one of the relevant sections: (rather than in addition to) the url for info and dvi output. . @footnote works in an @item for a @table. * texinfo.tex: - . latest version always at ftp://ftp.gnu.org/gnu/texinfo.tex (and mirrors). + . latest version always at ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex + (and mirrors). . implements @macro. . implements @paragraphindent (except asis). . @emph and @i use true italic type (cmti) instead of slanted (cmsl). diff --git a/contrib/texinfo/README b/contrib/texinfo/README index 8485494..057db09 100644 --- a/contrib/texinfo/README +++ b/contrib/texinfo/README @@ -1,33 +1,39 @@ -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02 -Free Software Foundation, Inc. +$Id: README,v 1.14 2003/01/03 20:17:37 karl Exp $ +This is the README file for the GNU Texinfo distribution. -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 no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003 Free Software Foundation, Inc. + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. -This is the README file for the GNU Texinfo distribution. -The primary distribution point is ftp://ftp.gnu.org/gnu/texinfo/ -and the primary home page is http://www.gnu.org/software/texinfo/, -secondary home page at http://texinfo.org/. +See ./INSTALL* for installation instructions. + +Primary distribution point: ftp://ftp.gnu.org/gnu/texinfo/ + (list of mirrors at: http://www.gnu.org/prep/ftp.html) -Mailing lists: +Home page: http://www.gnu.org/software/texinfo/ + (list of mirrors at: http://www.gnu.org/server/list-mirrors.html) + This page includes links to other Texinfo-related programs. + +Mailing lists and archives: - bug-texinfo@gnu.org for bug reports or enhancement suggestions, - archived at ftp://ftp-mailing-list-archives.gnu.org/bug-texinfo/. -- help-texinfo@gnu.org for authoring questions and general discussion. - archived at ftp://ftp-mailing-list-archives.gnu.org/help-texinfo/. + archive: http://mail.gnu.org/pipermail/bug-texinfo +- help-texinfo@gnu.org for authoring questions and general discussion, + archive: http://mail.gnu.org/pipermail/help-texinfo - texinfo-pretest@texinfo.org for pretests of new releases, - archived at ftp://ftp.texinfo.org/texinfo/texinfo-pretest-archive/. -There are as yet no corresponding newsgroups. + archive: http://texinfo.org/ftp/texinfo-pretest-archive +There are no corresponding newsgroups. -For bug reports, please include enough information for the maintainers -to reproduce the problem. Generally speaking, that means: +Bug reports: + please include enough information for the maintainers to reproduce the + problem. Generally speaking, that means: - the contents of any input files necessary to reproduce the bug (crucial!). - a description of the problem and any samples of the erroneous output. - the version number of Texinfo and the program(s) involved (use --version). - hardware, operating system, and compiler versions (uname -a). -- any unusual options you gave to configure (see config.status). +- unusual options you gave to configure, if any (see config.status). - anything else that you think would be helpful. Patches are most welcome; if possible, please make them with diff -c and @@ -35,55 +41,26 @@ include ChangeLog entries. When sending email, please do not encode or split the messages in any way if at all possible; it's easier to deal with one large message than -many small ones. GNU shar is a convenient way of packaging multiple -and/or binary files for email. - - -For generic installation instructions on compiling and installing this -Automake-based distribution, please read the file `INSTALL'. -Installation notes specific to Texinfo: - -* The Info tree uses a file `dir' as its root node; the `dir-example' - file in this distribution is included as a possible starting point. - Use it, modify it, or ignore it just as you like. - -* You can create a file texinfo.cnf to be read by TeX when - processing Texinfo manuals. For example, you might like to use - @afourpaper by default. See the `Preparing for TeX' node in - texinfo.txi for more details. You don't have to create the file if - you have nothing to put in it. - -* If your info files are not in $prefix/info, you may wish to add a line -#define DEFAULT_INFOPATH "/mydir1:/mydir2:..." - to config.h after running configure. - -* For instructions on compiling this distribution with DJGPP tools - for MS-DOS and MS-Windows, see the file djgpp/README. - - -If you would like to contribute to the GNU project by implementing -additional documentation output formats for Texinfo, that would be -great. But please do not write a separate translator texi2foo for your -favorite format foo! That is the hard way to do the job, and makes -extra work in subsequent maintenance, since the Texinfo language is -continually being enhanced and updated. Instead, the best approach is -modify Makeinfo to generate the new format, as it does now for Info, -HTML, XML, and DocBook. - -If you want to convert from DocBook to Texinfo, please see -http://docbook2X.sourceforge.net/. +many small ones. GNU shar (http://www.gnu.org/software/sharutils/) is a +convenient way of packaging multiple and/or binary files for email. +See README.dev for information on the Texinfo development environment -- +any interested parties are welcome. If you're a programmer and wish to +contribute, this should get you started. And if you're not a +programmer, you can still make significant contributions by writing test +cases, checking the documentation against the implementation, etc. This distribution includes the following files, among others: README This file. + README.dev Texinfo developer information. + INSTALL Texinfo-specific installation notes. NEWS Summary of new features by release. - INTRODUCTION Brief introduction to the system, and how to create readable files from the Texinfo source files in this distribution. -Texinfo source files (in ./doc): +Texinfo documentation files (in ./doc): texinfo.txi Describes the Texinfo language and many of the associated tools. It tells how to use Texinfo to write documentation, @@ -92,7 +69,7 @@ Texinfo source files (in ./doc): Texinfo formatting commands. info.texi This manual tells you how to use - Info. This document comes as part of + Info. This document also comes as part of GNU Emacs. If you do not have Emacs, you can format this Texinfo source file with makeinfo or TeX and then @@ -120,42 +97,15 @@ Printing related files: producing an indexed DVI file using TeX and texindex. - -Source files for standalone C programs (./lib, ./makeinfo, ./info): - - makeinfo/makeinfo.c This file contains the source for - the `makeinfo' program that you can - use to create an Info file from a - Texinfo file. - - info/info.c This file contains the source for - the `info' program that you can use to - view Info files on an ASCII terminal. +Source files for standalone C programs: + ./lib + ./makeinfo + ./info Installation files: - configure This file creates creates a Makefile - which in turn creates an `info' or - `makeinfo' executable, or a C sources - distribution. - - configure.in This is a template for creating - `configure' using Autoconf. - - Makefile.in This is a template for `configure' - to use to make a Makefile. Created by - Automake. - - Makefile.am This is a template for Automake - to use to make a Makefile.in. - - -Other files: - fixfonts This is a shell script to install the - `lcircle10' TeX fonts as an alias for - the `circle10' fonts. In some older - TeX distributions the names are - different. - - tex3patch This handles a bug for version - 3.0 of TeX that does not occur in - more recent versions. + Makefile.am What Automake uses to make a Makefile.in. + Makefile.in What `configure' uses to make a Makefile, + created by Automake. + configure.ac What Autoconf uses to create `configure'. + configure Configuration script for local conditions, + created by Autoconf. diff --git a/contrib/texinfo/TODO b/contrib/texinfo/TODO index 295a11cf..39c1736 100644 --- a/contrib/texinfo/TODO +++ b/contrib/texinfo/TODO @@ -1,51 +1,29 @@ -Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000, 01, 02 -Free Software Foundation. - -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 no -Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. - - +$Id: TODO,v 1.6 2003/01/27 13:05:44 karl Exp $ +This is the todo list for GNU Texinfo. If you are interested in working on any of these, email bug-texinfo@gnu.org. -* Makeinfo: - - Try directory of main source file. - - Support @`{@dotless{i}} et al. in HTML. - - A detexinfo program, like detex or delatex. This command would - strip all the texinfo commands out, and would be used as a filter on - the way to a speller. An option would be to NOT strip comments out. - makeinfo --no-headers comes close. - - If node name contains an @ command, complain explicitly. - - Call Ghostscript to get ASCII/jpg output for the @image command. - - Better HTML output: allow settable background color, table colors - and spacing, <head> meta tags, back link from footnote marker, etc. - - Rewrite completely to simplify generation of different formats. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, + 2001, 2002, 2003 Free Software Foundation. -* TeX: - - Use @ as the escape character, and Texinfo syntax generally, in the - table of contents, aux, and index files. Eliminate all the crazy - multiple redefinitions of every Texinfo command in different contexts. - - Handle @hsep and @vsep in @multitables. - - Introduce new command to change \bindingoffset. - - Reasonable way to change fonts from the default (some work has been - done), to allow for PostScript fonts, for example. - - How about using latex2html to produce HTML? - - Support 8-bit input characters, perhaps via the ec fonts. - - Repeat table headings if a @multitable is multiple pages long. - - Table of contents gets misaligned if there are 10 or more [sub]sections. + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. * General: + - Test for memory leaks, e.g., with valgrind: + http://developer.kde.org/~sewardj/ - Rationalize and improve the dir categories in existing manuals. - - @xindexterm [def] primary [,secondary [,tertiary]] or some such? + See http://mail.gnu.org/pipermail/emacs-devel/2002-October/013094.html + (and the containing thread). + - Extend and improve the tests. + - Get Info declared as a MIME Content-Type. - Support compressed image files. - Handle reference card creation, perhaps by only paying attention to sectioning and @def... commands. - Allow @end (and other?) commands to be indented in the source. - - Get Info declared as a MIME Content-Type. * Language: - - @figure: + - @figure, something like: @figure [xref-label] @figureinclude <filename>, [<height>], [<width>] @figurehsize <dimen> @@ -53,6 +31,8 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org. @caption ... @end caption <arbitrary Texinfo commands> @end figure + - @else for the @if... conditionals. + - @xindexterm [def] primary [,secondary [,tertiary]] or some such? - multicolumn * width to take up `the rest'. - another table command to take N succeeding items and split them into M columns (see eplain). @@ -71,6 +51,34 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org. - Change bars. This is difficult or impossible in TeX, unfortunately. To do it right requires device driver support. wdiff or ediff may be all we can do. + - @LaTeX{} command to produce the LaTeX logo. + +* Makeinfo: + - Try directory of main source file. + - Support @`{@dotless{i}} et al. in HTML. + - A detexinfo program, like detex or delatex. This command would + strip all the texinfo commands out, and would be used as a filter on + the way to a speller. An option would be to NOT strip comments out. + makeinfo --no-headers comes close. + - If node name contains an @ command, complain explicitly. + - Call Ghostscript to get ASCII/jpg output for the @image command. + - Better HTML output: allow settable background color, table colors + and spacing, <head> meta tags, back link from footnote marker, etc. + - Rewrite completely to simplify generation of different formats. + +* TeX: + - Use @ as the escape character, and Texinfo syntax generally, in the + table of contents, aux, and index files. Eliminate all the crazy + multiple redefinitions of every Texinfo command in different contexts. + - Handle @hsep and @vsep in @multitables. + - Introduce new command to change \bindingoffset. + - Reasonable way to change fonts from the default (some work has been + done), to allow for PostScript fonts, for example. + - How about using latex2html to produce HTML? + - Support 8-bit input characters, perhaps via the ec fonts. + - Repeat table headings if a @multitable is multiple pages long. + - Table of contents gets misaligned if there are 10 or more [sub]sections. + - Use url.sty (or something) to allow linebreak of url's. * Doc: - Include a complete functional summary, as in a reference card, in @@ -100,7 +108,6 @@ If you are interested in working on any of these, email bug-texinfo@gnu.org. * PDF: - make each letter of the index (A, B, ...) a section in the TOC. From Carsten Dominik <dominik@astro.uva.nl>. - * install-info: - be able to copy the info file to compile-time $(infodir), to diff --git a/contrib/texinfo/config.h.in b/contrib/texinfo/config.h.in index 549a669..02f834c 100644 --- a/contrib/texinfo/config.h.in +++ b/contrib/texinfo/config.h.in @@ -32,6 +32,10 @@ */ #undef HAVE_DCGETTEXT +/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't. + */ +#undef HAVE_DECL_GETENV + /* Define if this function is declared. */ #undef HAVE_DECL_STRCASECMP @@ -77,15 +81,22 @@ /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + /* Define to 1 if you have the `getuid' function. */ #undef HAVE_GETUID /* Define if you have the iconv() function. */ #undef HAVE_ICONV -/* Define to 1 if you have the <inttypes.h> header file. */ +/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */ #undef HAVE_INTTYPES_H +/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + /* Define to 1 if you have the <io.h> header file. */ #undef HAVE_IO_H @@ -122,6 +133,9 @@ /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET +/* Define to 1 if you have the `mkstemp' function. */ +#undef HAVE_MKSTEMP + /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP @@ -149,6 +163,9 @@ /* Define to 1 if you have the `setvbuf' function. */ #undef HAVE_SETVBUF +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + /* Define to 1 if you have the `sigprocmask' function. */ #undef HAVE_SIGPROCMASK @@ -161,6 +178,10 @@ /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -210,6 +231,9 @@ /* Define to 1 if you have the <sys/stat.h> header file. */ #undef HAVE_SYS_STAT_H +/* Define to 1 if you have the <sys/stream.h> header file. */ +#undef HAVE_SYS_STREAM_H + /* Define to 1 if you have the <sys/time.h> header file. */ #undef HAVE_SYS_TIME_H @@ -234,9 +258,15 @@ /* Define to 1 if you have the `tsearch' function. */ #undef HAVE_TSEARCH +/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */ +#undef HAVE_UINTMAX_T + /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define if you have the 'unsigned long long' type. */ +#undef HAVE_UNSIGNED_LONG_LONG + /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF @@ -249,9 +279,15 @@ /* Define to 1 if you have the `__argz_stringify' function. */ #undef HAVE___ARGZ_STRINGIFY +/* Define to 1 if you have the `__secure_getenv' function. */ +#undef HAVE___SECURE_GETENV + /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + /* Name of package */ #undef PACKAGE @@ -270,6 +306,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define if <inttypes.h> exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE @@ -310,8 +349,15 @@ if it is not supported. */ #undef inline +/* Define to rpl_mkstemp if the replacement function should be used. */ +#undef mkstemp + /* Define to `long' if <sys/types.h> does not define. */ #undef off_t /* Define to `unsigned' if <sys/types.h> does not define. */ #undef size_t + +/* Define to unsigned long or unsigned long long if <stdint.h> and + <inttypes.h> don't define. */ +#undef uintmax_t diff --git a/contrib/texinfo/doc/README b/contrib/texinfo/doc/README index dc734a6..a9372123 100644 --- a/contrib/texinfo/doc/README +++ b/contrib/texinfo/doc/README @@ -1,3 +1,12 @@ +$Id: README,v 1.3 2002/12/05 21:42:23 karl Exp $ +texinfo/doc/README + + Copyright (C) 2002 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + This directory contains documentation on the Texinfo system and the TeX sources needed to process Texinfo sources. We recommend using the texi2dvi included in this distribution to run a Texinfo manual through @@ -23,7 +32,7 @@ ones, you very likely have to update your ls-R file; do this with the mktexlsr command. In older versions, this was named MakeTeXls-R. You can get the latest texinfo.tex from -ftp://ftp.gnu.org/gnu/texinfo.tex (and all GNU mirrors) +ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex (and all GNU mirrors) ftp://tug.org/tex/texinfo.tex (and all CTAN mirrors) or on the FSF machines in /home/gd/gnu/doc/texinfo.tex. If you have problems with the version in this distribution, please check diff --git a/contrib/texinfo/doc/fdl.texi b/contrib/texinfo/doc/fdl.texi index 361f90f..89a012d 100644 --- a/contrib/texinfo/doc/fdl.texi +++ b/contrib/texinfo/doc/fdl.texi @@ -3,10 +3,10 @@ @appendixsec GNU Free Documentation License @cindex FDL, GNU Free Documentation License -@center Version 1.1, March 2000 +@center Version 1.2, November 2002 @display -Copyright @copyright{} 2000 Free Software Foundation, Inc. +Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies @@ -18,12 +18,12 @@ of this license document, but changing it is not allowed. PREAMBLE The purpose of this License is to make a manual, textbook, or other -written document @dfn{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. +functional and useful document @dfn{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 @@ -41,57 +41,69 @@ principally for works whose purpose is instruction or reference. @item APPLICABILITY AND DEFINITIONS -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The ``Document'', below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as ``you''. +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. (For example, 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 +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. +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. +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, whose contents can be viewed and edited directly and +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 has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not ``Transparent'' is called ``Opaque''. +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 -@sc{ascii} without markup, Texinfo input format, La@TeX{} input format, -@acronym{SGML} or @acronym{XML} using a publicly available -@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed -for human modification. Opaque formats include PostScript, -@acronym{PDF}, proprietary formats that can be read and edited only by -proprietary word processors, @acronym{SGML} or @acronym{XML} for which -the @acronym{DTD} and/or processing tools are not generally available, -and the machine-generated @acronym{HTML} produced by some word -processors for output purposes only. +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{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 @@ -100,6 +112,21 @@ 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. + @item VERBATIM COPYING @@ -119,9 +146,10 @@ you may publicly display copies. @item COPYING IN QUANTITY -If you publish printed copies 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 +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 @@ -139,16 +167,15 @@ 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 publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. 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. +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 @@ -176,7 +203,8 @@ if the original publisher of that version gives permission. 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 less than five). +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. @item State on the Title page the name of the publisher of the @@ -202,10 +230,10 @@ and required Cover Texts given in the Document's license notice. Include an unaltered copy of this License. @item -Preserve the section entitled ``History'', and its title, and add to -it an item stating at least the title, year, new authors, and +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 +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. @@ -220,10 +248,10 @@ least four years before the Document itself, or if the original publisher of the version it refers to gives permission. @item -In any section entitled ``Acknowledgments'' or ``Dedications'', -preserve the section's title, and preserve in the section all the -substance and tone of each of the contributor acknowledgments -and/or dedications given therein. +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. @item Preserve all the Invariant Sections of the Document, @@ -231,12 +259,15 @@ unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. @item -Delete any section entitled ``Endorsements''. Such a section +Delete any section Entitled ``Endorsements''. Such a section may not be included in the Modified Version. @item -Do not retitle any existing section as ``Endorsements'' -or to conflict in title with any Invariant Section. +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. @end enumerate If the Modified Version includes new front-matter sections or @@ -246,7 +277,7 @@ 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 +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 @@ -274,7 +305,7 @@ 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. +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 @@ -285,11 +316,11 @@ 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 ``Acknowledgments'', -and any sections entitled ``Dedications''. You must delete all sections -entitled ``Endorsements.'' +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.'' @item COLLECTIONS OF DOCUMENTS @@ -310,18 +341,20 @@ 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, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an ``aggregate'', and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. +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 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 quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. +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. @item TRANSLATION @@ -332,10 +365,17 @@ 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 provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. +translation of this License, and all the license notices in the +Document, and any Warrany 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. @item TERMINATION @@ -378,19 +418,28 @@ license notices just after the title page: @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 + under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; - with the Invariant Sections being @var{list their titles}, with the - Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. + 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''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with...Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. @end group @end smallexample -If you have no Invariant Sections, write ``with no Invariant Sections'' -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write ``no Front-Cover Texts'' instead of -``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts. +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 diff --git a/contrib/texinfo/doc/help2man b/contrib/texinfo/doc/help2man index 8f40e8d..ea180b7 100755 --- a/contrib/texinfo/doc/help2man +++ b/contrib/texinfo/doc/help2man @@ -1,7 +1,8 @@ #!/usr/local/bin/perl -w # Generate a short man page from --help and --version output. -# Copyright © 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software +# Foundation, Inc. # 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 @@ -17,25 +18,25 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# Written by Brendan O'Dea <bod@compusol.com.au> +# Written by Brendan O'Dea <bod@debian.org> # Available from ftp://ftp.gnu.org/gnu/help2man/ -use 5.004; +use 5.005; use strict; use Getopt::Long; use Text::Tabs qw(expand); use POSIX qw(strftime setlocale LC_TIME); my $this_program = 'help2man'; -my $this_version = '1.24'; +my $this_version = '1.29'; my $version_info = <<EOT; GNU $this_program $this_version -Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -Written by Brendan O'Dea <bod\@compusol.com.au> +Written by Brendan O'Dea <bod\@debian.org> EOT my $help_info = <<EOT; @@ -43,29 +44,46 @@ my $help_info = <<EOT; Usage: $this_program [OPTION]... EXECUTABLE - -n, --name=STRING use `STRING' as the description for the NAME paragraph - -s, --section=SECTION use `SECTION' as the section for the man page + -n, --name=STRING description for the NAME paragraph + -s, --section=SECTION section number for manual page (1, 6, 8) + -m, --manual=TEXT name of manual (User Commands, ...) + -S, --source=TEXT source of program (FSF, Debian, ...) -i, --include=FILE include material from `FILE' -I, --opt-include=FILE include material from `FILE' if it exists -o, --output=FILE send output to `FILE' + -p, --info-page=TEXT name of Texinfo manual -N, --no-info suppress pointer to Texinfo manual --help print this help, then exit --version print version number, then exit -EXECUTABLE should accept `--help' and `--version' options. +EXECUTABLE should accept `--help' and `--version' options although +alternatives may be specified using: + + -h, --help-option=STRING help option string + -v, --version-option=STRING version option string Report bugs to <bug-help2man\@gnu.org>. EOT my $section = 1; -my ($opt_name, @opt_include, $opt_output, $opt_no_info); +my $manual = ''; +my $source = ''; +my $help_option = '--help'; +my $version_option = '--version'; +my ($opt_name, @opt_include, $opt_output, $opt_info, $opt_no_info); + my %opt_def = ( - 'n|name=s' => \$opt_name, - 's|section=s' => \$section, - 'i|include=s' => sub { push @opt_include, [ pop, 1 ] }, - 'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] }, - 'o|output=s' => \$opt_output, - 'N|no-info' => \$opt_no_info, + 'n|name=s' => \$opt_name, + 's|section=s' => \$section, + 'm|manual=s' => \$manual, + 'S|source=s' => \$source, + 'i|include=s' => sub { push @opt_include, [ pop, 1 ] }, + 'I|opt-include=s' => sub { push @opt_include, [ pop, 0 ] }, + 'o|output=s' => \$opt_output, + 'p|info-page=s' => \$opt_info, + 'N|no-info' => \$opt_no_info, + 'h|help-option=s' => \$help_option, + 'v|version-option=s' => \$version_option, ); # Parse options. @@ -81,9 +99,6 @@ my %include = (); my %append = (); my @include = (); # retain order given in include file -# Provide replacement `quote-regex' operator for pre-5.005. -BEGIN { eval q(sub qr { '' =~ $_[0]; $_[0] }) if $] < 5.005 } - # Process include file (if given). Format is: # # [section name] @@ -175,9 +190,9 @@ setlocale LC_TIME, 'C'; # Grab help and version info from executable. my ($help_text, $version_text) = map { - join '', map { s/ +$//; expand $_ } `$ARGV[0] --$_ 2>/dev/null` - or die "$this_program: can't get `--$_' info from $ARGV[0]\n" -} qw(help version); + join '', map { s/ +$//; expand $_ } `$ARGV[0] $_ 2>/dev/null` + or die "$this_program: can't get `$_' info from $ARGV[0]\n" +} $help_option, $version_option; my $date = strftime "%B %Y", localtime; (my $program = $ARGV[0]) =~ s!.*/!!; @@ -239,6 +254,18 @@ $include{NAME} ||= "$program \\- manual page for $program $version\n"; # Man pages traditionally have the page title in caps. my $PROGRAM = uc $program; +# Set default page head/footers +$source ||= "$program $version"; +unless ($manual) +{ + for ($section) + { + if (/^(1[Mm]|8)/) { $manual = 'System Administration Utilities' } + elsif (/^6/) { $manual = 'Games' } + else { $manual = 'User Commands' } + } +} + # Extract usage clause(s) [if any] for SYNOPSIS. if ($help_text =~ s/^Usage:( +(\S+))(.*)((?:\n(?: {6}\1| *or: +\S).*)*)//m) { @@ -377,7 +404,7 @@ while (length) my $content = ''; # Option with description. - if (s/^( {1,10}([+-]\S.*?))(?:( +)|\n( {20,}))(\S.*)\n//) + if (s/^( {1,10}([+-]\S.*?))(?:( +(?!-))|\n( {20,}))(\S.*)\n//) { $matched .= $& if %append; $indent = length ($4 || "$1$3"); @@ -462,6 +489,8 @@ while (length) # Refer to the real documentation. unless ($opt_no_info) { + my $info_page = $opt_info || $program; + $sect = 'SEE ALSO'; $include{$sect} ||= ''; $include{$sect} .= ".PP\n" if $include{$sect}; @@ -474,7 +503,7 @@ and .B $program programs are properly installed at your site, the command .IP -.B info $program +.B info $info_page .PP should give you access to the complete manual. EOT @@ -483,7 +512,7 @@ EOT # Output header. print <<EOT; .\\" DO NOT MODIFY THIS FILE! It was generated by $this_program $this_version. -.TH $PROGRAM "$section" "$date" "$package $version" FSF +.TH $PROGRAM "$section" "$date" "$source" "$manual" EOT # Section ordering. diff --git a/contrib/texinfo/doc/info-stnd.texi b/contrib/texinfo/doc/info-stnd.texi index f888565..02640cf 100644 --- a/contrib/texinfo/doc/info-stnd.texi +++ b/contrib/texinfo/doc/info-stnd.texi @@ -1,5 +1,5 @@ \input texinfo @c -*-texinfo-*- -@comment $Id: info-stnd.texi,v 1.43 2002/03/23 20:38:57 karl Exp $ +@comment $Id: info-stnd.texi,v 1.4 2002/11/06 00:42:29 karl Exp $ @comment %**start of header @setfilename info-stnd.info @include version-stnd.texi @@ -14,7 +14,7 @@ This manual is for GNU Info (version @value{VERSION}, @value{UPDATED}), a program for viewing documents in Info format (usually created from Texinfo source files). -Copyright @copyright{} 1992, 93, 96, 97, 98, 99, 2001, 02 +Copyright @copyright{} 1992, 1993, 1996, 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. @quotation @@ -73,8 +73,7 @@ first, as it includes more background information and a thorough tutorial. * Printing Nodes:: How to print out the contents of a node. * Miscellaneous Commands:: A few commands that defy categories. * Variables:: How to change the default behavior of Info. -* Custom Key Bindings:: How to define your own key-to-command - bindings. +* Custom Key Bindings:: How to define your own key-to-command bindings. * Copying This Manual:: The GNU Free Documentation License. * Index:: Global index containing keystrokes, command names, variable names, @@ -465,7 +464,7 @@ commands detailed in this section are used to shift which part of the current node is visible on the screen. Scrolling commands are bound differently when @samp{--vi-keys} operation -(@pxref{--vi-keys}) is in effect. These key bindings are designated +is in effect (@pxref{--vi-keys}). These key bindings are designated with ``vi-like operation''. @table @asis @@ -1465,9 +1464,9 @@ Transpose the characters at the cursor. The next group of commands deal with @dfn{killing}, and @dfn{yanking} text@footnote{ Some people are used to calling these operations @dfn{cut} and -@dfn{paste}, respectively.}. For an in depth discussion of killing and -yanking, @pxref{Killing, , Killing and Deleting, emacs, the GNU Emacs -Manual} +@dfn{paste}, respectively.}. For an in-depth discussion of killing and +yanking, see @ref{Killing, , Killing and Deleting, emacs, the GNU Emacs +Manual}. @table @asis @item @key{M-d} (@code{echo-area-kill-word}) @@ -1809,15 +1808,16 @@ Here is a list of the variables that you can set in Info. @table @code @item automatic-footnotes @vindex automatic-footnotes -When set to @code{On}, footnotes appear and disappear automatically. -This variable is @code{On} by default. When a node is selected, a -window containing the footnotes which appear in that node is created, -and the footnotes are displayed within the new window. The window that -Info creates to contain the footnotes is called @samp{*Footnotes*}. If -a node is selected which contains no footnotes, and a @samp{*Footnotes*} -window is on the screen, the @samp{*Footnotes*} window is deleted. -Footnote windows created in this fashion are not automatically tiled so -that they can use as little of the display as is possible. +When set to @code{On}, footnotes appear and disappear automatically; +else, they appear at the bottom of the node text. This variable is +@code{Off} by default. When a node is selected, a window containing +the footnotes which appear in that node is created, and the footnotes +are displayed within the new window. The window that Info creates to +contain the footnotes is called @samp{*Footnotes*}. If a node is +selected which contains no footnotes, and a @samp{*Footnotes*} window +is on the screen, the @samp{*Footnotes*} window is deleted. Footnote +windows created in this fashion are not automatically tiled so that +they can use as little of the display as is possible. @item automatic-tiling @vindex automatic-tiling diff --git a/contrib/texinfo/doc/info.1 b/contrib/texinfo/doc/info.1 index 4f7808a..fc20e6a 100644 --- a/contrib/texinfo/doc/info.1 +++ b/contrib/texinfo/doc/info.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH INFO "1" "April 2002" "GNU texinfo 4.2" FSF +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29. +.TH INFO "1" "February 2003" "info 4.4" "User Commands" .SH NAME info \- read Info documents .SH SYNOPSIS @@ -77,7 +77,7 @@ Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/ .SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. +Copyright \(co 2003 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. diff --git a/contrib/texinfo/doc/info.5 b/contrib/texinfo/doc/info.5 index 0e7ed48..bcf5101 100644 --- a/contrib/texinfo/doc/info.5 +++ b/contrib/texinfo/doc/info.5 @@ -1,5 +1,5 @@ .\" info(5) -.\" $Id: info.5,v 1.2 1998/07/31 17:39:31 karl Exp $ +.\" $Id: info.5,v 1.1 2002/08/25 23:38:38 karl Exp $ .\" .\" Copyright (C) 1998 Free Software Foundation, Inc. .\" diff --git a/contrib/texinfo/doc/info.texi b/contrib/texinfo/doc/info.texi index 3b1a95c..bbdee41 100644 --- a/contrib/texinfo/doc/info.texi +++ b/contrib/texinfo/doc/info.texi @@ -6,21 +6,16 @@ @syncodeindex vr cp @syncodeindex ky cp @comment %**end of header -@comment $Id: info.texi,v 1.20 2002/03/18 06:45:49 eliz Exp $ +@comment $Id: info.texi,v 1.3 2002/11/06 00:45:36 karl Exp $ -@dircategory Texinfo documentation system -@direntry -* Info: (info). How to use the documentation browsing system. -@end direntry - -@ifinfo +@copying This file describes how to use Info, the on-line, menu-driven GNU documentation system. -Copyright (C) 1989, 92, 96, 97, 98, 99, 2000, 2001, 2002 +Copyright (C) 1989, 1992, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. - +@quotation 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 no @@ -37,7 +32,13 @@ This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license. -@end ifinfo +@end quotation +@end copying + +@dircategory Texinfo documentation system +@direntry +* Info: (info). How to use the documentation browsing system. +@end direntry @titlepage @title Info @@ -46,58 +47,36 @@ license to the document, as described in section 6 of the license. @author and the GNU Texinfo community @page @vskip 0pt plus 1filll -Copyright @copyright{} 1989, 92, 93, 96, 97, 98, 99, 2000, 2001 -Free Software Foundation, Inc. -@sp 2 -Published by the Free Software Foundation @* -59 Temple Place - Suite 330 @* -Boston, MA 02111-1307, USA. - -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 no -Invariant Sections, with the Front-Cover texts being ``A GNU -Manual'', and with the Back-Cover Texts as in (a) below. A copy of the -license is included in the section entitled ``GNU Free Documentation -License'' in the Emacs manual. - -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' - -This document is part of a collection distributed under the GNU Free -Documentation License. If you want to distribute this document -separately from the collection, you can do so by adding a copy of the -license to the document, as described in section 6 of the license. +@insertcopying @end titlepage @ifnottex @node Top @top Info: An Introduction -Info is a program, which you are using now, for reading documentation of -computer programs. The GNU Project distributes most of its on-line -manuals in the Info format, so you need a program called @dfn{Info -reader} to read the manuals. One of such programs you are using now. +The GNU Project distributes most of its on-line manuals in the +@dfn{Info format}, which you read using an @dfn{Info reader}. You are +probably using an Info reader to read this now. @ifinfo -If you are new to Info and want to learn how to use it, type the -command @kbd{h} now. It brings you to a programmed instruction -sequence. +If you are new to the Info reader and want to learn how to use it, +type the command @kbd{h} now. It brings you to a programmed +instruction sequence. -To learn advanced Info commands, type @kbd{n} twice. This brings you to -@cite{Info for Experts}, skipping over the `Getting Started' chapter. +To read about expert-level Info commands, type @kbd{n} twice. This +brings you to @cite{Info for Experts}, skipping over the `Getting +Started' chapter. @end ifinfo @end ifnottex @menu * Getting Started:: Getting started using an Info reader. -* Advanced Info:: Advanced commands within Info. +* Expert Info:: Info commands for experts. * Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. @end menu -@node Getting Started, Advanced Info, Top, Top +@node Getting Started, Expert Info, Top, Top @comment node-name, next, previous, up @chapter Getting Started @@ -241,15 +220,14 @@ level of detail. This node's topic is ``how to use Info''. The mode line says that this is node @samp{Help} in the file @file{info}. @cindex header of Info node - The top line of a node is its @dfn{header}. This node's header (look at -it now) says that the @samp{Next} node after this one is the node -called @samp{Help-P}. An advanced Info command lets you go to any node -whose name you know. In the stand-alone Info reader program, the -header line shows the names of this node and the info file as well. -In Emacs, the header line is displayed in a special typeface, and it -doesn't scroll off the screen when you scroll the display. The names -of this node and of its Info file are omitted by Emacs from the header -line. + The top line of a node is its @dfn{header}. This node's header +(look at it now) says that the @samp{Next} node after this one is the +node called @samp{Help-P}. An advanced Info command lets you go to +any node whose name you know. In the stand-alone Info reader program, +the header line shows the names of this node and the info file as +well. In Emacs, the header line is duplicated in a special typeface, +and the duplicate remains at the top of the window all the time even +if you scroll through the node. Besides a @samp{Next}, a node can have a @samp{Previous} or an @samp{Up} links, or both. As you can see, this node has all of these @@ -267,9 +245,9 @@ links. @samp{>>} in the margin means it is really time to try a command. @format ->> If you have a mouse, and if you already practiced typing @kbd{n} - to get to the next node, click now with the right mouse button on - the @samp{Next} link to do the same ``the mouse way''. +>> If you are in Emacs and have a mouse, and if you already practiced + typing @kbd{n} to get to the next node, click now with the middle + mouse button on the @samp{Next} link to do the same ``the mouse way''. @end format @node Help-P, Help-^L, Help, Getting Started @@ -280,40 +258,39 @@ links. This node is called @samp{Help-P}. The @samp{Previous} node, as you see, is @samp{Help}, which is the one you just came from using the @kbd{n} command. Another @kbd{n} command now would take you to the next -node, @samp{Help-^L}. In Emacs, @kbd{n} runs the Emacs command -@code{Info-next}, and @kbd{p} runs @code{Info-prev}. +node, @samp{Help-^L}. @format >> But do not type @kbd{n} yet. First, try the @kbd{p} command, - or click the mouse on the @samp{Prev} link, which takes you to the - @samp{Previous} node. When you get there, you can do an @kbd{n} - again to return here. + or click the middle mouse button on the @samp{Prev} link. That + takes you to the @samp{Previous} node. Then use @kbd{n} to return here. @end format If you read this in Emacs, you will see an @samp{Info} item in the -menu bar, close to its right edge. Clicking your mouse on the +menu bar, close to its right edge. Clicking the mouse on the @samp{Info} menu-bar item opens a menu of commands which include @samp{Next} and @samp{Prev} (and also some others which you didn't yet learn about). - This all probably seems insultingly simple so far, but @emph{do not} be -led into skimming. Things will get more complicated soon. Also, -do not try a new command until you are told it is time to. Otherwise, -you may make Info skip past an important warning that was coming up. + This all probably seems insultingly simple so far, but @emph{please +don't} start skimming. Things will get complicated soon enough! +Also, please do not try a new command until you are told it is time +to. You could make Info skip past an important warning that was +coming up. @format ->> Now do an @kbd{n}, or click the mouse on the @samp{Next} link, to - get to the node @samp{Help-^L} and learn more. +>> Now do an @kbd{n}, or click the middle mouse button on the @samp{Next} + link, to get to the node @samp{Help-^L} and learn more. @end format @node Help-^L, Help-M, Help-P, Getting Started @comment node-name, next, previous, up @section The Space, DEL, B and ^L commands. - This node's mode line tells you that you are now at node @samp{Help-^L}, -and the header line tells you that @kbd{p} would get you back to -@samp{Help-P}. The node's title is underlined; it says what the node -is about (most nodes have titles). + This node's mode line tells you that you are now at node +@samp{Help-^L}, and the header line tells you that @kbd{p} would get +you back to @samp{Help-P}. The node's title is highlighted and may be +underlined as well; it says what the node is about. This is a big node and it does not all fit on your display screen. You can tell that there is more that is not visible because you @@ -336,9 +313,7 @@ allow you to ``move around'' in a node that does not all fit on the screen at once. @key{SPC} moves forward, to show what was below the bottom of the screen. @key{DEL} or @key{BACKSPACE} moves backward, to show what was above the top of the screen (there is not anything above -the top until you have typed some spaces). In Emacs, @key{SPC} runs -the command @code{Info-scroll-up}, while @key{BACKSPACE} runs -@code{Info-scroll-down}. +the top until you have typed some spaces). @format >> Now try typing a @key{SPC} (afterward, type a @key{BACKSPACE} to @@ -354,31 +329,34 @@ lines above them they may not make it all the way to the bottom. If you are reading this in Emacs, note that the header line is always visible, never scrolling off the display. That way, you can always see the @samp{Next}, @samp{Prev}, and @samp{Up} links, and you -can conveniently go to one of these links from anywhere in the node by -clicking the mouse on one of these links. +can conveniently go to one of these links at any time by +clicking the middle mouse button on the link. @cindex reading Info documents top to bottom @cindex Info documents as tutorials @key{SPC} and @key{DEL} not only move forward and backward through -the current node. When these keys hit the beginning or the end of the -current node, they move to preceding or subsequent nodes. -Specifically, they scroll through all the nodes in an Info file as a -single logical sequence. In this sequence, a node's subnodes appear -following their parent. If a node has a menu, @key{SPC} takes you -into the subnodes listed in the menu, one by one. Once you reach the -end of a node, and have seen all of its subnodes, @key{SPC} takes you -to the next node or to the parent's next node. This is so you could -read the entire manual top to bottom by just typing @key{SPC}. +the current node. They also move between nodes. @key{SPC} at the end +of a node moves to the next node; @key{DEL} (or @key{BACKSPACE}) at +the beginning of a node moves to the previous node. In effect, these +commands scroll through all the nodes in an Info file as a single +logical sequence. You can read an entire manual top to bottom by just +typing @key{SPC}, and move backward through the entire manual from +bottom to top by typing @key{DEL} (or @key{BACKSPACE}). + + In this sequence, a node's subnodes appear following their parent. +If a node has a menu, @key{SPC} takes you into the subnodes listed in +the menu, one by one. Once you reach the end of a node, and have seen +all of its subnodes, @key{SPC} takes you to the next node or to the +parent's next node. @kindex PAGEUP @r{(Info mode)} @kindex PAGEDOWN @r{(Info mode)} Many keyboards nowadays have two scroll keys labeled @samp{PageUp} and @samp{PageDown} (or maybe @samp{Prior} and @samp{Next}). If your keyboard has these keys, you can use them to move forward and backward -through the text, like with @key{SPC} and @key{BACKSPACE}. However, -unlike @key{SPC} and @key{BACKSPACE}, @key{PAGEUP} and @key{PAGEDOWN} -keys will never scroll beyond the beginning or the end of the current -node. +through the text of one node, like @key{SPC} and @key{BACKSPACE} (or +@key{DEL}). However, @key{PAGEUP} and @key{PAGEDOWN} keys never +scroll beyond the beginning or the end of the current node. @kindex C-l @r{(Info mode)} If your screen is ever garbaged, you can tell Info to display it @@ -391,18 +369,19 @@ again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down @kindex b @r{(Info mode)} To move back to the beginning of the node you are on, you can type -a lot of @key{BACKSPACE} keys. You can also type simply @kbd{b} for -beginning. +the @key{BACKSPACE} key (or @key{DEL}) many times. You can also type +@kbd{b} just once. @kbd{b} stands for ``beginning.'' @format >> Try that now. (We have put in enough verbiage to push this past the first screenful, but screens are so big nowadays that perhaps it isn't enough. You may need to shrink your Emacs or Info window.) - Then come back, with @key{SPS}s. + Then come back, by typing @key{SPC} one or more times. @end format - If your screen is very tall, all of this node might fit at once. -In that case, @kbd{b} won't do anything. Sorry; what can we do? + If your screen is very tall, all of this node might fit at once. In +that case, @kbd{b} won't do anything. But you could observe the +effect of the @kbd{b} key if you use a smaller window. @kindex ? @r{(Info mode)} @findex Info-summary @@ -414,8 +393,8 @@ the list, make it go away by typing a @key{SPC} repeatedly. @format >> Type a @key{?} now. Press @key{SPC} to see consecutive screenfuls of - the list until finished. Then type @key{SPC} several times, until - it goes away. + the list until finished. Then type @key{SPC} several times. If + you are using Emacs, the help will then go away automatically. @end format (If you are using the stand-alone Info reader, type @kbd{C-x 0} to @@ -429,8 +408,8 @@ move around in them without being told. Since not all terminals have the same size screen, it would be impossible to warn you anyway. @format ->> Now type @kbd{n}, or click the mouse on the @samp{Next} link, to - see the description of the @kbd{m} command. +>> Now type @kbd{n}, or click the middle mouse button on the @samp{Next} link, + to see the description of the @kbd{m} command. @end format @node Help-M, Help-Xref, Help-^L, Getting Started @@ -459,7 +438,7 @@ special meaning---they are only for the human reader's benefit and do not define additional subtopics. Here is an example: @example -* Foo: Node about FOO This tells about FOO +* Foo: Node about FOO. This tells about FOO. @end example The subtopic name is Foo, and the node describing it is @samp{Node @@ -479,7 +458,7 @@ and so both it and the subtopic name are the same. There is an abbreviation for this: @example -* Foo:: This tells about FOO +* Foo:: This tells about FOO. @end example @noindent @@ -494,26 +473,31 @@ both @samp{Foo}. @kbd{m} command is not available. @end format +If you keep typing @key{SPC} once the menu appears on the screen, it +will move to another node (the first one in the menu). If that +happens, type @key{BACKSPACE} to come back. + @kindex m @r{(Info mode)} - The command to go to one of the subnodes is @kbd{m}---but @emph{do -not do it yet!} Before you use @kbd{m}, you need to learn about -commands which prompt you for more input. So far, you have learned -several commands that do not need additional input; when you typed -one, Info processed it and was instantly ready for another command. -The @kbd{m} command is different: it is incomplete without the -@dfn{name of the subtopic}. Once you have typed @kbd{m}, Info tries -to read the subtopic name. + The command to go to one of the subnodes is @kbd{m}. This is very +different from the commands you have used: it is a command that +prompts you for more input. + + The Info commands you know do not need additional input; when you +type one of them, Info processes it instantly and then is ready for +another command. The @kbd{m} command is different: it needs to know +the @dfn{name of the subtopic}. Once you have typed @kbd{m}, Info +tries to read the subtopic name. Now look for the line containing many dashes near the bottom of the screen. There is one more line beneath that one, but usually it is -blank. If it is empty, Info is ready for a command, such as @kbd{n} +blank. When it is blank, Info is ready for a command, such as @kbd{n} or @kbd{b} or @key{SPC} or @kbd{m}. If that line contains text ending -in a colon, it means Info is trying to read more input for the last -command. At such times, commands do not work, because Info tries to -use them as the input it needs. You must either type your response and -finish the command you started, or type @kbd{Control-g} to cancel the -command. When you have done one of those things, the line becomes -blank again. +in a colon, it means Info is reading more input for the last command. +You can't type an Info command then, because Info is trying to read +input, not commands. You must either give the input and finish the +command you started, or type @kbd{Control-g} to cancel the command. +When you have done one of those things, the input entry line becomes +blank again. Then you can type Info commands again. @findex Info-menu The command to go to a subnode via a menu is @kbd{m}. After you type @@ -532,21 +516,22 @@ item name, except for one space where a space appears in the item in the menu. @cindex completion of Info node names - You can also use the @dfn{completion} feature to help enter the subtopic -name. If you type the @key{TAB} key after entering part of a name, it will -magically fill in more of the name---as much as follows uniquely from -what you have entered. + You can also use the @dfn{completion} feature to help enter the +subtopic name. If you type the @key{TAB} key after entering part of a +name, it will fill in more of the name---as much as Info can deduce +from the part you have entered. If you move the cursor to one of the menu subtopic lines, then you do not need to type the argument: you just type a @key{RET}, and it -stands for the subtopic of the line you are on. +stands for the subtopic of the line you are on. You can also click +the middle mouse button directly on the subtopic line to go there. Here is a menu to give you a chance to practice. This menu gives you three ways of going to one place, Help-FOO: @menu * Foo: Help-FOO. A node you can visit for fun. -* Bar: Help-FOO. Strange! two ways to get to the same place. +* Bar: Help-FOO. We have made two ways to get to the same place. * Help-FOO:: And yet another! @end menu @@ -606,18 +591,19 @@ somewhere between the beginning @samp{*} and the colon @samp{:} which ends the subtopic's brief name. You will see the subtopic's name change its appearance (usually, its background color will change), and the shape of the mouse pointer will change if your platform supports -that. After a while, if you leave the mouse on that spot, a tooltip -will pop up saying ``Mouse-2: go to that node''. (If the tooltips are -turned off or unavailable, this message is displayed in the @dfn{echo -area}, the bottom screen line where you typed the menu subtopics in -response to the prompt.) @kbd{Mouse-2} is the second button of your -mouse counting from the left---the rightmost button for two-button -mice, the middle button for 3-button mice. So pressing @kbd{Mouse-2} -while the mouse pointer is on a menu subtopic goes to that subtopic. +that. After a while, if you leave the mouse on that spot, a small +window will pop up, saying ``Mouse-2: go to that node'', or the same +message may appear at the bottom of the screen. + + @kbd{Mouse-2} is the second button of your mouse counting from the +left---the middle button on a 3-button mouse. (On a 2-button mouse, +you may have to press both buttons together to ``press the middle +button''.) The message tells you pressing @kbd{Mouse-2} with the +current position of the mouse pointer (on subtopic in the menu) will +go to that subtopic. @findex Info-mouse-follow-nearest-node - More generally, @kbd{Mouse-2} in an Info buffer runs the Emacs -command @code{Info-mouse-follow-nearest-node}, which finds the nearest + More generally, @kbd{Mouse-2} in an Info buffer finds the nearest link to another node and goes there. For example, near a cross reference it acts like @kbd{f}, in a menu it acts like @kbd{m}, on the node's header line it acts like @kbd{n}, @kbd{p}, or @kbd{u}, etc. At @@ -655,8 +641,8 @@ get back to where you were reading you have to type some @key{SPC}s. (Some Info readers, such as the one built into Emacs, put you at the same place where you were reading in @samp{Help-M}.) - Another way to go Up is to click on the @samp{Up} pointer shown in -the header line (provided that you have a mouse). + Another way to go Up is to click @kbd{Mouse-2} on the @samp{Up} +pointer shown in the header line (provided that you have a mouse). @format >> Now type @kbd{u} to move back up to @samp{Help-M}. @@ -742,7 +728,7 @@ records the nodes where you have been in a special history list. The @kbd{l} command revisits nodes in the history list; each successive @kbd{l} command moves one step back through the history. - If you have been following directions, ad @kbd{l} command now will get + If you have been following directions, an @kbd{l} command now will get you back to @samp{Help-M}. Another @kbd{l} command would undo the @kbd{u} and get you back to @samp{Help-FOO}. Another @kbd{l} would undo the @kbd{m} and get you back to @samp{Help-M}. @@ -792,27 +778,28 @@ underlying text and the mouse pointer change in response. >> Now type @kbd{n} to see the last node of the course. @end format - @xref{Advanced Info}, for more advanced Info features. + @xref{Expert Info}, for more advanced Info features. @c If a menu appears at the end of this node, remove it. @c It is an accident of the menu updating command. -@node Advanced Info +@node Expert Info @chapter Info for Experts - This chapter describes various advanced Info commands. (If you are -using a stand-alone Info reader, there are additional commands + This chapter describes various Info commands for experts. (If you +are using a stand-alone Info reader, there are additional commands specific to it, which are documented in several chapters of @ref{Top,, GNU Info, info-stnd, GNU Info}.) This chapter also explains how to write an Info as distinct from a Texinfo file. (However, in most cases, writing a Texinfo file is -better, since you can use it @emph{both} to generate an Info file and -to make a printed manual. @xref{Top,, Overview of Texinfo, texinfo, -Texinfo: The GNU Documentation Format}.) +better, since you can use it to make a printed manual or produce other +formats, such as HTML and DocBook, as well as for generating Info +files.) @xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU +Documentation Format}.) @menu -* Expert:: Advanced Info commands: g, s, e, and 1 - 5. +* Advanced:: Advanced Info commands: g, s, e, and 1 - 5. * Info Search:: How to search Info documents for specific subjects. * Add:: Describes how to add new nodes to the hierarchy. Also tells what nodes look like. @@ -823,7 +810,7 @@ Texinfo: The GNU Documentation Format}.) * Emacs Info Variables:: Variables modifying the behavior of Emacs Info. @end menu -@node Expert, Info Search, , Advanced Info +@node Advanced, Info Search, , Expert Info @comment node-name, next, previous, up @section Advanced Info Commands @@ -837,7 +824,7 @@ Here are some more Info commands that make it easier to move around. If you know a node's name, you can go there by typing @kbd{g}, the name, and @key{RET}. Thus, @kbd{gTop@key{RET}} would go to the node called @samp{Top} in this file. (This is equivalent to @kbd{t}, see -@ref{Help-Int}.) @kbd{gExpert@key{RET}} would come back here. +@ref{Help-Int}.) @kbd{gAdvanced@key{RET}} would come back here. @kbd{g} in Emacs runs the command @code{Info-goto-node}. Unlike @kbd{m}, @kbd{g} does not allow the use of abbreviations. @@ -894,7 +881,7 @@ only if the variable @code{Info-enable-edit} is non-@code{nil}. edit the Info file, so typing @kbd{e} there goes to the end of the current node. -@node Info Search, Add, Expert, Advanced Info +@node Info Search, Add, Advanced, Expert Info @comment node-name, next, previous, up @section How to search Info documents for specific subjects @@ -970,7 +957,7 @@ kind of search command. Both @kbd{s} and @kbd{M-s} run in Emacs the command @code{Info-search}. -@node Add, Menus, Info Search, Advanced Info +@node Add, Menus, Info Search, Expert Info @comment node-name, next, previous, up @section Adding a new node to Info @@ -985,8 +972,11 @@ Put that topic in the menu in the directory. @xref{Menus, Menu}. Usually, the way to create the nodes is with Texinfo (@pxref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU Documentation Format}); -this has the advantage that you can also make a printed manual from -them. However, if you want to edit an Info file, here is how. +this has the advantage that you can also make a printed manual or HTML +from them. You would use the @samp{@@dircategory} and +@samp{@@direntry} commands to put the manual into the Info directory. +However, if you want to edit an Info file manually and install it +manually, here is how. @cindex node delimiters The new node can live in an existing documentation file, or in a new @@ -1000,12 +990,11 @@ page boundary as well is to put a @samp{^L} @emph{right after} the @samp{^_}.} The @samp{^_} starting a node must be followed by a newline or a -@samp{^L} newline, after which comes the node's header line. The header -line must give the node's name (by which Info finds it), and state the -names of the @samp{Next}, @samp{Previous}, and @samp{Up} nodes (if there -are any). As you can see, this node's @samp{Up} node is the node -@samp{Top}, which points at all the documentation for Info. The -@samp{Next} node is @samp{Menus}. +@samp{^L} newline, after which comes the node's header line. The +header line must give the node's name (by which Info finds it), and +state the names of the @samp{Next}, @samp{Previous}, and @samp{Up} +nodes (if there are any). As you can see, this node's @samp{Up} node +is the node @samp{Expert Info}. The @samp{Next} node is @samp{Menus}. @cindex node header line format @cindex format of node headers @@ -1051,7 +1040,7 @@ node is in the same file, it was not necessary to use one. line. The file names are ignored by Info, but they serve as comments to help identify the node for the user. -@node Menus, Cross-refs, Add, Advanced Info +@node Menus, Cross-refs, Add, Expert Info @comment node-name, next, previous, up @section How to Create Menus @@ -1107,7 +1096,7 @@ collector, nothing terrible happens if a substructure is not pointed to, but such a substructure is rather useless since nobody can ever find out that it exists. -@node Cross-refs, Tags, Menus, Advanced Info +@node Cross-refs, Tags, Menus, Expert Info @comment node-name, next, previous, up @section Creating Cross References @@ -1166,7 +1155,7 @@ as new users should do when they learn a new package. Another set of Info commands is useful when you need to find something quickly in a manual---that is, when you need to use a manual -as a reference rather than as a tutorial. We urge you to make learn +as a reference rather than as a tutorial. We urge you to learn these search commands as well. If you want to do that now, follow this cross reference to @ref{Info Search}. @@ -1182,7 +1171,7 @@ manner. @end format -@node Tags, Checking, Cross-refs, Advanced Info +@node Tags, Checking, Cross-refs, Expert Info @comment node-name, next, previous, up @section Tags Tables for Info Files @@ -1227,7 +1216,7 @@ a @samp{DEL} character, and the character position in the file of the beginning of the node. -@node Checking, Emacs Info Variables, Tags, Advanced Info +@node Checking, Emacs Info Variables, Tags, Expert Info @section Checking an Info File When creating an Info file, it is easy to forget the name of a node when @@ -1246,7 +1235,7 @@ usually few. To check an Info file, do @kbd{M-x Info-validate} while looking at any node of the file with Emacs Info mode. -@node Emacs Info Variables, , Checking, Advanced Info +@node Emacs Info Variables, , Checking, Expert Info @section Emacs Info-mode Variables The following variables may modify the behavior of Info-mode in Emacs; @@ -1276,10 +1265,10 @@ These directories are not searched for merging the @file{dir} file. @item Info-fontify When set to a non-@code{nil} value, enables highlighting of Info files. The default is @code{t}. You can change how the highlighting -looks by customizing the faces @code{info-node}, @code{info-menu-5}, -@code{info-xref}, @code{info-header-xref}, @code{info-header-node}, -@code{info-title-@var{n}-face} (where @var{n} is the level of the -section, a number between 1 and 4), and @code{info-menu-header}. To +looks by customizing the faces @code{info-node}, @code{info-xref}, +@code{info-header-xref}, @code{info-header-node}, @code{info-menu-5}, +@code{info-menu-header}, and @code{info-title-@var{n}-face} (where +@var{n} is the level of the section, a number between 1 and 4). To customize a face, type @kbd{M-x customize-face @key{RET} @var{face} @key{RET}}, where @var{face} is one of the face names listed here. diff --git a/contrib/texinfo/doc/install-info.1 b/contrib/texinfo/doc/install-info.1 index a6fb8bf..cb46cd6 100644 --- a/contrib/texinfo/doc/install-info.1 +++ b/contrib/texinfo/doc/install-info.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH INSTALL-INFO "1" "April 2002" "GNU texinfo 4.2" FSF +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29. +.TH INSTALL-INFO "1" "February 2003" "install-info 4.4" "User Commands" .SH NAME install-info \- update info/dir entries .SH SYNOPSIS @@ -60,7 +60,7 @@ Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/ .SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. +Copyright \(co 2003 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. diff --git a/contrib/texinfo/doc/makeinfo.1 b/contrib/texinfo/doc/makeinfo.1 index 3500b68..2e65647 100644 --- a/contrib/texinfo/doc/makeinfo.1 +++ b/contrib/texinfo/doc/makeinfo.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH MAKEINFO "1" "April 2002" "GNU texinfo 4.2" FSF +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29. +.TH MAKEINFO "1" "February 2003" "makeinfo 4.4" "User Commands" .SH NAME makeinfo \- translate Texinfo documents .SH SYNOPSIS @@ -36,13 +36,13 @@ display version information and exit. .SS "Output format selection (default is to produce Info):" .TP \fB\-\-docbook\fR -output DocBook rather than Info. +output DocBook XML rather than Info. .TP \fB\-\-html\fR output HTML rather than Info. .TP \fB\-\-xml\fR -output XML (TexinfoML) rather than Info. +output Texinfo XML rather than Info. .SS "General output options:" .TP \fB\-E\fR, \fB\-\-macro\-expand\fR FILE @@ -117,6 +117,9 @@ process @ifplaintext even if not generating plain text. \fB\-\-iftex\fR process @iftex and @tex; implies \fB\-\-no\-split\fR. .TP +\fB\-\-ifxml\fR +process @ifxml and @xml. +.TP \fB\-\-no\-ifhtml\fR do not process @ifhtml and @html text. .TP @@ -128,6 +131,9 @@ do not process @ifplaintext text. .TP \fB\-\-no\-iftex\fR do not process @iftex and @tex text. +.TP +\fB\-\-no\-ifxml\fR +do not process @ifxml and @xml text. .IP The defaults for the @if... conditionals depend on the output format: if generating HTML, \fB\-\-ifhtml\fR is on and the others are off; @@ -142,7 +148,7 @@ makeinfo \fB\-\-html\fR foo.texi write HTML to @setfilename .TP makeinfo \fB\-\-xml\fR foo.texi -write XML to @setfilename +write Texinfo XML to @setfilename .TP makeinfo \fB\-\-docbook\fR foo.texi write DocBook XML to @setfilename @@ -158,7 +164,7 @@ Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/ .SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. +Copyright \(co 2003 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. diff --git a/contrib/texinfo/doc/texindex.1 b/contrib/texinfo/doc/texindex.1 index 854fed8..32b9c3f 100644 --- a/contrib/texinfo/doc/texindex.1 +++ b/contrib/texinfo/doc/texindex.1 @@ -1,5 +1,5 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.24. -.TH TEXINDEX "1" "April 2002" "GNU texinfo 4.2" FSF +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.29. +.TH TEXINDEX "1" "February 2003" "texindex 4.4" "User Commands" .SH NAME texindex \- sort Texinfo index files .SH SYNOPSIS @@ -29,7 +29,7 @@ Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/ .SH COPYRIGHT -Copyright \(co 2002 Free Software Foundation, Inc. +Copyright \(co 2003 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. diff --git a/contrib/texinfo/doc/texinfo.5 b/contrib/texinfo/doc/texinfo.5 index cd29c1b..991c269 100644 --- a/contrib/texinfo/doc/texinfo.5 +++ b/contrib/texinfo/doc/texinfo.5 @@ -1,7 +1,7 @@ .\" texinfo(5) -.\" $Id: texinfo.5,v 1.3 1999/03/25 21:28:25 karl Exp $ +.\" $Id: texinfo.5,v 1.1 2002/09/03 23:44:57 karl Exp $ .\" -.\" Copyright (C) 1998, 99 Free Software Foundation, Inc. +.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are @@ -19,7 +19,7 @@ .\" .TH TEXINFO 5 "GNU Texinfo" "FSF" .SH NAME -Texinfo \- software documentation system +texinfo \- software documentation system .SH DESCRIPTION Texinfo is a documentation system that uses a single source file to produce both online information and printed output. It is primarily diff --git a/contrib/texinfo/doc/texinfo.txi b/contrib/texinfo/doc/texinfo.txi index 144fef0..9e5dff4 100644 --- a/contrib/texinfo/doc/texinfo.txi +++ b/contrib/texinfo/doc/texinfo.txi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $ +@c $Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $ @c Ordinarily Texinfo files have the extension .texi. But texinfo.texi @c clashes with texinfo.tex on 8.3 filesystems, so we use texinfo.txi. @@ -38,8 +38,8 @@ This manual is for GNU Texinfo (version @value{VERSION}, @value{UPDATED}), a documentation system that can produce both online information and a printed manual from a single source. -Copyright (C) 1988, 90, 91, 92, 93, 95, 96, 97, 98, 99, 2000, 01, 02 -Free Software Foundation, Inc. +Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997, 1998, +1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -99,6 +99,7 @@ Software Foundation raise funds for GNU development.'' @vskip 0pt plus 1filll @insertcopying +@sp 1 Published by the Free Software Foundation @* 59 Temple Place Suite 330 @* Boston, MA 02111-1307 @* @@ -106,8 +107,9 @@ USA @* ISBN 1-882114-67-1 @c for version 4.0, September 1999. @c ISBN 1-882114-65-5 is for version 3.12, March 1998. @c ISBN 1-882114-64-7 is for edition 2.24 of November 1996. -@c ISBN 1-882114-63-9 is for edition 2.20 of 28 February 1995 +@c ISBN 1-882114-63-9 is for edition 2.20 of 28 February 1995. +@sp 1 Cover art by Etienne Suvasa. @end titlepage @@ -175,6 +177,7 @@ Overview of Texinfo * Reporting Bugs:: Submitting effective bug reports. * Using Texinfo:: Create printed or online output. +* Output Formats:: Overview of the supported output formats. * Info Files:: What is an Info file? * Printed Books:: Characteristics of a printed book or manual. * Formatting Commands:: @@-commands are used for formatting. @@ -209,13 +212,13 @@ Updating Nodes and Menus Beginning a Texinfo File * Sample Beginning:: A sample beginning for a Texinfo file. -* Texinfo File Header:: -* Document Permissions:: +* Texinfo File Header:: The first lines. +* Document Permissions:: Ensuring your manual is free. * Titlepage & Copyright Page:: Creating the title and copyright pages. * The Top Node:: Creating the `Top' node and master menu. -* Global Document Commands:: +* Global Document Commands:: Affecting formatting throughout. * Software Copying Permissions:: Ensure that you and others continue to - have the right to use and share software. + have the right to use and share software. Texinfo File Header @@ -227,22 +230,22 @@ Texinfo File Header Document Permissions -* copying:: Declare the document's copying permissions. -* insertcopying:: Where to insert the permissions. +* copying:: Declare the document's copying permissions. +* insertcopying:: Where to insert the permissions. Title and Copyright Pages * titlepage:: Create a title for the printed document. * titlefont center sp:: The @code{@@titlefont}, @code{@@center}, - and @code{@@sp} commands. + and @code{@@sp} commands. * title subtitle author:: The @code{@@title}, @code{@@subtitle}, - and @code{@@author} commands. + and @code{@@author} commands. * Copyright:: How to write the copyright notice and - include copying permissions. + include copying permissions. * end titlepage:: Turn on page headings after the title and - copyright pages. + copyright pages. * headings on off:: An option for turning headings on and off - and double or single sided printing. + and double or single sided printing. The `Top' Node and Master Menu @@ -259,7 +262,7 @@ Global Document Commands Ending a Texinfo File * Printing Indices & Menus:: How to print an index in hardcopy and - generate index menus in Info. + generate index menus in Info. * Contents:: How to create a table of contents. * File End:: How to mark the end of a file. @@ -281,7 +284,7 @@ Chapter Structuring Nodes * Two Paths:: Different commands to structure - Info output and printed output. + Info output and printed output. * Node Menu Illustration:: A diagram, and sample nodes and menus. * node:: Creating nodes, in detail. * makeinfo Pointer Creation:: Letting makeinfo determine node pointers. @@ -363,7 +366,7 @@ Quotations and Examples * verbatim:: Writing a verbatim example. * verbatiminclude:: Including a file verbatim. * lisp:: Illustrating Lisp code. -* small:: Forms for @code{@@smallbook}. +* small:: Examples in a smaller font. * display:: Writing an example in the current font. * format:: Writing an example without narrowed margins. * exdent:: Undo indentation on a line. @@ -394,7 +397,7 @@ Indices * Index Entries:: Choose different words for index entries. * Predefined Indices:: Use different indices for different kinds - of entry. + of entry. * Indexing Commands:: How to make an index entry. * Combining Indices:: How to combine indices. * New Indices:: How to define your own indices. @@ -402,24 +405,24 @@ Indices Combining Indices * syncodeindex:: How to merge two indices, using @code{@@code} - font for the merged-from index. + font for the merged-from index. * synindex:: How to merge two indices, using the - default font of the merged-to index. + default font of the merged-to index. Special Insertions * Braces Atsigns:: How to insert braces, @samp{@@}. * Inserting Space:: How to insert the right amount of space - within a sentence. + within a sentence. * Inserting Accents:: How to insert accents and special characters. * Dots Bullets:: How to insert dots and bullets. * TeX and copyright:: How to insert the @TeX{} logo - and the copyright symbol. + and the copyright symbol. * pounds:: How to insert the pounds currency symbol. * minus:: How to insert a minus sign. * math:: How to format a mathematical expression. * Glyphs:: How to indicate results of evaluation, - expansion of macros, errors, etc. + expansion of macros, errors, etc. * Footnotes:: How to include footnotes. * Images:: How to include graphics. @@ -443,7 +446,7 @@ Inserting Ellipsis and Bullets Inserting @TeX{} and the Copyright Symbol * tex:: How to insert the @TeX{} logo. -* copyright symbol:: How to use @code{@@copyright}@{@}. +* copyright symbol:: How to use @code{@@copyright@{@}}. Glyphs for Examples @@ -471,19 +474,20 @@ Footnotes Making and Preventing Breaks -* Break Commands:: Cause and prevent splits. -* Line Breaks:: How to force a single line to use two lines. -* - and hyphenation:: How to tell @TeX{} about hyphenation points. -* w:: How to prevent unwanted line breaks. -* sp:: How to insert blank lines. -* page:: How to force the start of a new page. -* group:: How to prevent unwanted page breaks. +* Break Commands:: Summary of break-related commands. +* Line Breaks:: Forcing line breaks. +* - and hyphenation:: Helping @TeX{} with hyphenation points. +* w:: Preventing unwanted line breaks in text. +* tie:: Inserting an unbreakable but varying space. +* sp:: Inserting blank lines. +* page:: Forcing the start of a new page. +* group:: Preventing unwanted page breaks. * need:: Another way to prevent unwanted page breaks. Definition Commands * Def Cmd Template:: How to structure a description using a - definition command. + definition command. * Optional Arguments:: How to handle optional and repeated arguments. * deffnx:: How to group two or more `first' lines. * Def Cmds in Detail:: All the definition commands. @@ -505,8 +509,8 @@ Conditionally Visible Text * Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}. * Raw Formatter Commands:: Using raw @TeX{} or HTML commands. * set clear value:: Designating which text to format (for - all output formats); and how to set a - flag to a string that you can insert. + all output formats); and how to set a + flag to a string that you can insert. @code{@@set}, @code{@@clear}, and @code{@@value} @@ -542,8 +546,8 @@ Formatting and Printing Hardcopy * smallbook:: How to print small format books and manuals. * A4 Paper:: How to print on A4 or A5 paper. * pagesizes:: How to print with customized page sizes. -* Cropmarks and Magnification:: How to print marks to indicate the size - of pages and how to print scaled up output. +* Cropmarks and Magnification:: How to print marks to indicate the size + of pages and how to print scaled up output. * PDF Output:: Portable Document Format output. Creating and Installing Info Files @@ -559,38 +563,40 @@ Creating an Info File * Pointer Validation:: How to check that pointers point somewhere. * makeinfo in Emacs:: How to run @code{makeinfo} from Emacs. * texinfo-format commands:: Two Info formatting commands written - in Emacs Lisp are an alternative - to @code{makeinfo}. + in Emacs Lisp are an alternative + to @code{makeinfo}. * Batch Formatting:: How to format for Info in Emacs Batch mode. * Tag and Split Files:: How tagged and split files help Info - to run better. -* makeinfo html:: Generating HTML output. + to run better. +* Generating HTML:: Generating HTML output with makeinfo. Installing an Info File * Directory File:: The top level menu for all Info files. * New Info File:: Listing a new Info file. * Other Info Directories:: How to specify Info files that are - located in other directories. + located in other directories. * Installing Dir Entries:: How to specify what menu entry to add - to the Info directory. + to the Info directory. * Invoking install-info:: @code{install-info} options. Sample Texinfo Files * Short Sample Texinfo File:: * GNU Sample Texts:: +* Verbatim Copying License:: +* All-permissive Copying License:: Include Files * Using Include Files:: How to use the @code{@@include} command. * texinfo-multiple-files-update:: How to create and update nodes and - menus when using included files. -* Include File Requirements:: What @code{texinfo-multiple-files-update} expects. + menus when using included files. +* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects. * Sample Include File:: A sample outer file with included files - within it; and a sample included file. + within it; and a sample included file. * Include Files Evolution:: How use of the @code{@@include} command - has changed over time. + has changed over time. Page Headings @@ -694,6 +700,7 @@ that one document. @menu * Reporting Bugs:: Submitting effective bug reports. * Using Texinfo:: Create printed or online output. +* Output Formats:: Overview of the supported output formats. * Info Files:: What is an Info file? * Printed Books:: Characteristics of a printed book or manual. * Formatting Commands:: @@-commands are used for formatting. @@ -763,18 +770,17 @@ Emacs Manual} is a good example of a Texinfo file, as is this manual. To make a printed document, you process a Texinfo source file with the @TeX{} typesetting program (but the Texinfo language is very different -and much stricter than @TeX{}'s usual language, plain @TeX{}). This -creates a DVI file that you can typeset and print as a book or report -(@pxref{Hardcopy}). +from and much stricter than @TeX{}'s usual languages, plain @TeX{} and +La@TeX{}). This creates a DVI file that you can typeset and print as +a book or report (@pxref{Hardcopy}). @pindex makeinfo To output an Info file, process your Texinfo source with the -@code{makeinfo} utility or Emacs's @code{texinfo-format-buffer} command. -You can install the result in your Info tree (@pxref{Installing an Info -File}). +@code{makeinfo} utility. You can install the result in your Info tree +(@pxref{Installing an Info File}). To output an HTML file, run @code{makeinfo --html} on your Texinfo -source. You can (for example) install the result on your web site. +source. You can (for example) install the result on a web site. @cindex Docbook, converting to Texinfo @cindex Conversion, from Docbook to Texinfo @@ -783,28 +789,18 @@ To output DocBook (a particular form of XML), run @code{makeinfo --docbook}. If you want to convert from Docbook @emph{to} Texinfo, please see @uref{http://docbook2X.sourceforge.net/}. -@cindex Output formats, supporting more -@cindex SGML-tools output format -If you are a programmer and would like to contribute to the GNU project -by implementing additional output formats for Texinfo, that would be -excellent. But please do not write a separate translator texi2foo for -your favorite format foo! That is the hard way to do the job, and makes -extra work in subsequent maintenance, since the Texinfo language is -continually being enhanced and updated. Instead, the best approach is -modify @code{makeinfo} to generate the new format, as it does now for -Info, plain text, HTML, XML, and DocBook. - @TeX{} works with virtually all printers; Info works with virtually all computer terminals; the HTML output works with virtually all web browsers. Thus Texinfo can be used by almost any computer user. -@cindex Source file -A Texinfo source file is a plain @sc{ascii} file containing text and -@dfn{@@-commands} (words preceded by an @samp{@@}) that tell the -typesetting and formatting programs what to do. You may edit a Texinfo -file with any text editor; but it is especially convenient to use GNU -Emacs since that editor has a special mode, called Texinfo mode, that -provides various Texinfo-related features. (@xref{Texinfo Mode}.) +@cindex Source file format +A Texinfo source file is a plain @sc{ascii} file containing text +interspersed with @dfn{@@-commands} (words preceded by an @samp{@@}) +that tell the typesetting and formatting programs what to do. You may +edit a Texinfo file with any text editor; but it is especially +convenient to use GNU Emacs since that editor has a special mode, +called Texinfo mode, that provides various Texinfo-related features. +(@xref{Texinfo Mode}.) Before writing a Texinfo source file, you should learn about nodes, menus, cross references, and the rest, for example by reading this @@ -816,30 +812,125 @@ is the official documentation format of the GNU project. More information is available at the @uref{http://www.gnu.org/doc/, GNU documentation web page}. + +@node Output Formats +@section Output Formats +@cindex Output formats +@cindex Back-end output formats + +Here is a brief overview of the output formats currently supported by +Texinfo. + +@table @asis +@item Info +@cindex Info output +(Generated via @command{makeinfo}.) This format is a plain text +transliteration of the Texinfo source. It uses control characters to +separate nodes and provide other navigational information. See the +next section (@pxref{Info Files}) for more details on this format. +The Emacs Info subsystem (@pxref{Top,,Getting Started,info, Info}), +and the standalone @command{info} program (@pxref{info +standalone,,,info-stnd, GNU Info}), among others, can read these +files. @xref{Creating and Installing Info Files}. + +@item Plain text +@cindex Plain text output +(Generated via @command{makeinfo --no-headers}.) This is almost the +same as Info output, except the navigational control characters are +omitted. + +@item HTML +@cindex HTML output +@cindex W3 consortium +@cindex Mozilla +@cindex Lynx +@cindex Emacs-W3 +(Generated via @command{makeinfo --html}.) This is the Hyper Text +Markup Language that has become the most commonly used language for +writing documents on the World Wide Web. Web browsers, such as +Mozilla, Lynx, and Emacs-W3, can render this language online. There +are many versions of HTML; @command{makeinfo} tries to use a subset +of the language that can be interpreted by any common browser. For +details of the HTML language and much related information, see +@uref{http://www.w3.org/MarkUp/}. @xref{Generating HTML}. + +@item DVI +@cindex DVI output +@pindex Dvips +@pindex Xdvi +(Generated via @command{texi2dvi}.) This DeVice Independent binary +format is output by the @TeX{} typesetting program +(@uref{http://tug.org}). It is then read by a DVI `driver', which +writes the actual device-specific commands that can be viewed or +printed, notably Dvips for translation to PostScript (@pxref{dvips +invocation,,, dvips, Dvips}) and Xdvi for viewing on an X display +(@uref{http://sourceforge.net/projects/xdvi/}). @xref{Hardcopy}. + +@item PDF +@cindex PDF output +@cindex Beebe, Nelson +@pindex pdftex +(Generated via @command{texi2dvi --pdf}.) This format, based on +PostScript, was developed by Adobe Systems for document interchange. +It is intended to be platform-independent and easily viewable, among +other design goals; for a discussion, see +@uref{http://tug.org/tugboat/Articles/tb22-3/tb72beebeI.pdf}. Texinfo +uses the @command{pdftex} program, a variant of @TeX{}, to output pdf; +see @uref{http://tug.org/applications/pdftex}. @xref{PDF Output}. + +@item XML +@cindex XML output +@cindex DTD, for Texinfo XML +(Generated via @command{makeinfo --xml}.) XML is a generic syntax +specification usable for any sort of content (see, for example, +@uref{http://www.w3.org/XML/}). The @command{makeinfo} xml output, +unlike all the formats above, interprets very little of the Texinfo +source. Rather, it merely translates the Texinfo markup commands into +XML syntax, for processing by further XML tools. The particular +syntax output is defined in the file @file{texinfo.dtd} included in +the Texinfo source distribution. + +@item DocBook +@cindex DocBook output +(Generated via @command{makeinfo --docbook}.) This is an XML format +of long standing used primarily for technical documentation. See +@uref{http://www.docbook.org/}. + +@end table + @cindex Man page output, not supported From time to time, proposals are made to generate traditional Unix man -pages from Texinfo source. This is not likely to ever be supported, -because man pages have a very strict conventional format. Merely -enhancing @command{makeinfo} to output troff format would be -insufficient. Generating a good man page therefore requires a +pages from Texinfo source. However, because man pages have a very +strict conventional format, generating a good man page requires a completely different source than the typical Texinfo applications of -writing a good user tutorial or a good reference manual. This makes -generating man pages incompatible with the Texinfo design goal of not -having to document the same information in different ways for different -output formats. You might as well just write the man page directly. +writing a good user tutorial and/or a good reference manual. This +makes generating man pages incompatible with the Texinfo design goal +of not having to document the same information in different ways for +different output formats. You might as well just write the man page +directly. @pindex help2man @cindex O'Dea, Brendan -Man pages still have their place, and if you wish to support them, the -program @command{help2man} may be useful; it generates a traditional man -page from the @samp{--help} output of a program. In fact, this is -currently used to generate man pages for the Texinfo programs -themselves. It is GNU software written by Brendan O'Dea, available from -@uref{ftp://ftp.gnu.org/gnu/help2man/}. +Man pages still have their place, and if you wish to support them, you +may find the program @command{help2man} to be useful; it generates a +traditional man page from the @samp{--help} output of a program. In +fact, this is currently used to generate man pages for the programs in +the Texinfo distribution. It is GNU software written by Brendan +O'Dea, available from @uref{ftp://ftp.gnu.org/gnu/help2man/}. + +@cindex Output formats, supporting more +@cindex SGML-tools output format +If you are a programmer and would like to contribute to the GNU project +by implementing additional output formats for Texinfo, that would be +excellent. But please do not write a separate translator texi2foo for +your favorite format foo! That is the hard way to do the job, and makes +extra work in subsequent maintenance, since the Texinfo language is +continually being enhanced and updated. Instead, the best approach is +modify @code{makeinfo} to generate the new format. @node Info Files -@section Info files +@section Info Files @cindex Info files An Info file is a Texinfo file formatted so that the Info documentation @@ -975,7 +1066,7 @@ file @file{texinfo.tex} that contains information (definitions or to @TeX{} commands, which @TeX{} can then process to create the typeset document.) @file{texinfo.tex} contains the specifications for printing a document. You can get the latest version of @file{texinfo.tex} from -@uref{ftp://ftp.gnu.org/gnu/texinfo.tex}. +@uref{ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex}. In the United States, documents are most often printed on 8.5 inch by 11 inch pages (216@dmn{mm} by 280@dmn{mm}); this is the default size. But @@ -1047,10 +1138,9 @@ sentences: @itemize @bullet @item -Write a command such as @code{@@noindent} at the beginning of a line as -the only text on the line. (@code{@@noindent} prevents the beginning of -the next line from being indented as the beginning of a -paragraph.)@refill +Write a command such as @code{@@quotation} at the beginning of a line as +the only text on the line. (@code{@@quotation} begins an indented +environment.) @item Write a command such as @code{@@chapter} at the beginning of a line @@ -1070,7 +1160,7 @@ marks text as being code.)@refill @item Write a command such as @code{@@example} on a line of its own; write the body-text on following lines; and write the matching @code{@@end} -command, @code{@@end example} in this case, at the on a line of its own +command, @code{@@end example} in this case, on a line of its own after the body-text. (@code{@@example} @dots{} @code{@@end example} indents and typesets body-text as an example.) It's usually ok to indent environment commands like this, but in complicated and @@ -1102,21 +1192,33 @@ This section describes the general conventions used in all Texinfo documents. @itemize @bullet @item +@cindex Source files, characters used All printable @sc{ascii} characters except @samp{@@}, @samp{@{} and @samp{@}} can appear in a Texinfo file and stand for themselves. @samp{@@} is the escape character which introduces commands, while @samp{@{} and @samp{@}} are used to surround arguments to certain commands. To put one of these special characters into the document, put -an @samp{@@} character in front of it, like this: @samp{@@@@}, +xan @samp{@@} character in front of it, like this: @samp{@@@@}, @samp{@@@{}, and @samp{@@@}}. @item -It is customary in @TeX{} to use doubled single-quote characters to -begin and end quotations: @w{@t{`@w{}`@dots{}'@w{}'}}. This -convention should be followed in Texinfo files. @TeX{} converts -two single quotes to left- and right-hand doubled -quotation marks, -@c this comes out as "like this" in Info, of course, which is just confusing. +@cindex Paragraph separator +@cindex Blank lines, as paragraph separator +@cindex Newlines, as blank lines +Separate paragraphs with one or more blank lines. Currently Texinfo +only recognizes newline characters as end of line, not the CRLF +sequence used on some systems; so a @dfn{blank line} means exactly two +consecutive newlines. Sometimes blank lines are useful or convenient +in other cases as well; you can use the @code{@@noindent} to inhibit +paragraph indentation if required (@pxref{noindent,,@code{@@noindent}}). + +@item +@cindex Quotation characters (`'), in source +Use doubled single-quote characters to begin and end quotations: +@w{@t{`@w{}`@dots{}'@w{}'}}. (Texinfo takes this convention from +@TeX{}.) @TeX{} converts two single quotes to left- and right-hand +doubled quotation marks, +@c this comes out as "like this" in Info, which is just confusing. @iftex ``like this'', @end iftex @@ -1124,17 +1226,13 @@ and Info converts doubled single-quote characters to @sc{ascii} double-quotes: @w{@t{`@w{}`@dots{}'@w{}'}} becomes @w{@t{"@dots{}"}}. @item +@cindex Dashes, in source Use three hyphens in a row, @samp{---}, for a dash---like this. In @TeX{}, a single or double hyphen produces a printed dash that is shorter than the usual typeset dash. Info reduces three hyphens to two for display on the screen. @item -To prevent a paragraph from being indented in the printed manual, put -the command @code{@@noindent} on a line by itself before the -paragraph. - -@item If you mark off a region of the Texinfo file with the @code{@@iftex} and @w{@code{@@end iftex}} commands, that region will appear only in the printed copy; in that region, you can use certain commands @@ -1143,9 +1241,10 @@ text surrounded by @code{@@ifnottex} and @code{@@end ifnottex} will appear in all output formats @emph{except} @TeX{}. Each of the other output formats (@code{html}, @code{info}, -@code{plaintext}) have an analogous pair of commands. @xref{Conditionals}. -@end itemize +@code{plaintext}, @code{xml}) have an analogous pair of commands. +@xref{Conditionals}. +@item @cindex Tabs; don't use! @quotation @strong{Caution:} Do not use tab characters in a Texinfo file (except in @@ -1164,6 +1263,7 @@ spaces when you press the @key{TAB} key. Also, you can run @code{untabify} in Emacs to convert tabs in a region to multiple spaces. @end quotation +@end itemize @node Comments @@ -1350,7 +1450,8 @@ boilerplate; when writing a manual, you simply change the names as appropriate. @xref{Beginning a File}, for full documentation on the commands listed -here. @xref{GNU Sample Texts}, for the full texts to be used in GNU manuals. +here. @xref{GNU Sample Texts}, for the full texts to be used in GNU +manuals. In the following, the sample text is @emph{indented}; comments on it are not. The complete file, without interspersed comments, is shown in @@ -1384,7 +1485,7 @@ which it is distributed. @xref{GNU Sample Texts}. @@copying This is a short example of a complete Texinfo file, version 1.0. -Copyright @@copyright@{@} 2002 Free Software Foundation, Inc. +Copyright @@copyright@{@} 2003 Free Software Foundation, Inc. @@end copying @end group @end example @@ -1419,24 +1520,23 @@ writing it out again; it is output on the back of the title page. The @subheading Part 4: `Top' Node and Master Menu @noindent -The `Top' node contains the master menu for the Info file. Since a -printed manual uses a table of contents rather than a menu, the master -menu appears only in online output. We also include the copying text -again for the benefit of online readers. And since the copying text -begins with a brief description of the manual, no other text is needed. +The `Top' node contains the master menu for the Info file. Since the +printed manual uses a table of contents rather than a menu, it +excludes the `Top' node. We also include the copying text again for +the benefit of online readers. Since the copying text begins with +a brief description of the manual, no other text is needed in this +case. The @samp{@@top} command itself helps @command{makeinfo} +determine the relationships between nodes. @example -@group @@ifnottex @@node Top -@@end ifnottex -@end group -@end example +@@top Short Sample -@example -@group @@insertcopying +@@end ifnottex +@group @@menu * First Chapter:: The first chapter is the only chapter in this sample. @@ -2388,8 +2488,8 @@ C-c C-c @} @r{Move out of enclosing braces.} @group C-c C-c C-d @r{Insert a node's section title} - @r{in the space for the description} - @r{in a menu entry line.} + @r{in the space for the description} + @r{in a menu entry line.} @end group @end example @@ -2412,13 +2512,13 @@ be used to update every node and menu in a file as well.@refill @group C-c C-u m M-x texinfo-master-menu - @r{Create or update a master menu.} + @r{Create or update a master menu.} @end group @group C-u C-c C-u m @r{With @kbd{C-u} as a prefix argument, first} - @r{create or update all nodes and regular} - @r{menus, and then create a master menu.} + @r{create or update all nodes and regular} + @r{menus, and then create a master menu.} @end group @end example @@ -2446,13 +2546,13 @@ C-c C-u C-m @r{Make or update a menu.} @group C-c C-u C-a @r{Make or update all} - @r{menus in a buffer.} + @r{menus in a buffer.} @end group @group C-u C-c C-u C-a @r{With @kbd{C-u} as a prefix argument,} - @r{first create or update all nodes and} - @r{then create or update all menus.} + @r{first create or update all nodes and} + @r{then create or update all menus.} @end group @end example @@ -2515,27 +2615,27 @@ they are rarely used. @example @group M-x texinfo-insert-node-lines - @r{Insert missing @code{@@node} lines in region.} - @r{With @kbd{C-u} as a prefix argument,} - @r{use section titles as node names.} + @r{Insert missing @code{@@node} lines in region.} + @r{With @kbd{C-u} as a prefix argument,} + @r{use section titles as node names.} @end group @group M-x texinfo-multiple-files-update - @r{Update a multi-file document.} - @r{With @kbd{C-u 2} as a prefix argument,} - @r{create or update all nodes and menus} - @r{in all included files first.} + @r{Update a multi-file document.} + @r{With @kbd{C-u 2} as a prefix argument,} + @r{create or update all nodes and menus} + @r{in all included files first.} @end group @group M-x texinfo-indent-menu-description - @r{Indent descriptions.} + @r{Indent descriptions.} @end group @group M-x texinfo-sequential-node-update - @r{Insert node pointers in strict sequence.} + @r{Insert node pointers in strict sequence.} @end group @end example @@ -2561,7 +2661,7 @@ previously given (@pxref{Six Parts}). * The Top Node:: Creating the `Top' node and master menu. * Global Document Commands:: Affecting formatting throughout. * Software Copying Permissions:: Ensure that you and others continue to - have the right to use and share software. + have the right to use and share software. @end menu @@ -2629,7 +2729,7 @@ Published by @dots{} @@menu * First Chapter:: Getting started @dots{} * Second Chapter:: @dots{} - @dots{} + @dots{} * Copying:: Your rights and freedoms. @@end menu @end group @@ -2892,19 +2992,20 @@ insert the text at appropriate points. @node copying -@subsection @code{@@copying}: Declare copying permissions +@subsection @code{@@copying}: Declare Copying Permissions @findex copying The @code{@@copying} command should be given very early in the document; -right after the header material (@pxref{Texinfo File Header}) is the -recommended location. It conventionally consists of a sentence or two -about what the program is, the legal copyright line, and the copying -permissions. Here is a skeletal example: +the recommended location is right after the header material +(@pxref{Texinfo File Header}). It conventionally consists of a sentence +or two about what the program is, identification of the documentation +itself, the legal copyright line, and the copying permissions. Here is +a skeletal example: @example @@copying -This manual is for @var{program} (version @var{version}), -which @dots{} +This manual is for @var{program} (version @var{version}, updated +@var{date}), which @dots{} Copyright @@copyright@{@} @var{years} @var{copyright-owner}. @@ -2919,7 +3020,8 @@ readability in some contexts. @xref{GNU Sample Texts}, for the full text to be used in GNU manuals. @xref{GNU Free Documentation License}, for the license itself under -which GNU and other free manuals are distributed. +which GNU and other free manuals are distributed. You need to include +the license as an appendix to your document. The text of @code{@@copying} is output as a comment at the beginning of Info, HTML, and XML output files. It is @emph{not} output implicitly in @@ -2927,10 +3029,10 @@ plain text or @TeX{}; it's up to you to use @code{@@insertcopying} to emit the copying information. See the next section for details. @findex copyright -In output formats that support it (print and HTML), the -@code{@@copyright@{@}} command generates a @samp{c} inside a circle. In -Info and plain text, it generates @samp{(C)}. The copyright notice -itself has the following legally defined sequence: +The @code{@@copyright@{@}} command generates a @samp{c} inside a circle +in output formats that support this (print and HTML). In the other +formats (Info and plain text), it generates @samp{(C)}. The copyright +notice itself has the following legally defined sequence: @example Copyright @copyright{} @var{years} @var{copyright-owner}. @@ -2938,26 +3040,33 @@ Copyright @copyright{} @var{years} @var{copyright-owner}. @cindex Copyright word, always in English The word `Copyright' must always be written in English, even if the -manual is otherwise in another language. This is due to international -law. +document is otherwise written in another language. This is due to +international law. @cindex Years, in copyright line The list of years should include all years in which a version was completed (even if it was released in a subsequent year). Ranges are -not allowed, each year must be written out individually, separated by -commas. +not allowed; each year must be written out individually and in full, +separated by commas. -@cindex Copyright owner for FSF works +@cindex Copyright holder for FSF works +@cindex Holder of copyright for FSF works +@cindex Owner of copyright for FSF works The copyright owner (or owners) is whoever holds legal copyright on the work. In the case of works assigned to the FSF, the owner is `Free Software Foundation, Inc.'. +The copyright `line' may actually be split across multiple +lines, both in the source document and in the output. This often +happens for documents with a long history, having many different years +of publication. + @xref{Copyright Notices,,,maintain,GNU Maintenance Instructions}, for additional information. @node insertcopying -@subsection @code{@@insertcopying}: Include permissions text +@subsection @code{@@insertcopying}: Include Permissions Text @findex insertcopying @cindex Copying text, including @cindex Permissions text, including @@ -2970,13 +3079,13 @@ itself, like this: @@insertcopying @end example -It inserts the text previously defined by @code{@@copying}. Legally, it -must be used on the copyright page in the printed manual -(@pxref{Copyright}). +This inserts the text previously defined by @code{@@copying}. To meet +legal requirements, it must be used on the copyright page in the printed +manual (@pxref{Copyright}). -Although it's not a legal requirement, we also strongly recommend using -@code{@@insertcopying} in the Top node of your manual (@pxref{The Top -Node}). Here's why: +We also strongly recommend using @code{@@insertcopying} in the Top node +of your manual (@pxref{The Top Node}), although it is not required +legally. Here's why: The @code{@@copying} command itself causes the permissions text to appear in an Info file @emph{before} the first node. The text is also @@ -3021,15 +3130,15 @@ an @code{@@insertcopying}. @menu * titlepage:: Create a title for the printed document. * titlefont center sp:: The @code{@@titlefont}, @code{@@center}, - and @code{@@sp} commands. + and @code{@@sp} commands. * title subtitle author:: The @code{@@title}, @code{@@subtitle}, - and @code{@@author} commands. + and @code{@@author} commands. * Copyright:: How to write the copyright notice and - include copying permissions. + include copying permissions. * end titlepage:: Turn on page headings after the title and - copyright pages. + copyright pages. * headings on off:: An option for turning headings on and off - and double or single sided printing. + and double or single sided printing. @end menu @@ -3528,7 +3637,7 @@ For example, the master menu for this manual looks like the following @group @@detailmenu - --- The Detailed Node Listing --- +--- The Detailed Node Listing --- Overview of Texinfo @@ -3564,7 +3673,7 @@ generally all given before the Top node, if they are given at all. @node documentdescription -@subsection @code{@@documentdescription}: Summary text +@subsection @code{@@documentdescription}: Summary Text @cindex Document description @cindex Description of document @cindex Summary of document @@ -3809,7 +3918,7 @@ For example: @menu * Printing Indices & Menus:: How to print an index in hardcopy and - generate index menus in Info. + generate index menus in Info. * Contents:: How to create a table of contents. * File End:: How to mark the end of a file. @end menu @@ -3982,9 +4091,9 @@ texi2dvi --texinfo=@@setcontentsaftertitlepage foo.texi @section @code{@@bye} File Ending @findex bye -An @code{@@bye} command terminates @TeX{} or Info formatting. None of -the formatting commands reading anything following @code{@@bye}. The -@code{@@bye} command should be on a line by itself. +An @code{@@bye} command terminates Texinfo processing. None of the +formatters read anything following @code{@@bye}. The @code{@@bye} +command should be on a line by itself. If you wish, you may follow the @code{@@bye} line with notes. These notes will not be formatted and will not appear in either Info or a @@ -4050,16 +4159,16 @@ each of which has two sections.@refill @example @group - Top - | - ------------------------------------- - | | | - Chapter 1 Chapter 2 Chapter 3 - | | | - -------- -------- -------- - | | | | | | - Section Section Section Section Section Section - 1.1 1.2 2.1 2.2 3.1 3.2 + Top + | + ------------------------------------- + | | | + Chapter 1 Chapter 2 Chapter 3 + | | | + -------- -------- -------- + | | | | | | +Section Section Section Section Section Section + 1.1 1.2 2.1 2.2 3.1 3.2 @end group @end example @@ -4447,12 +4556,12 @@ structuring hierarchy:@refill @example @group - @r{Change} @r{To} + @r{Change} @r{To} @@subsection @@section, @@section @@chapter, @@heading @@chapheading, - @r{etc.} + @r{etc.} @end group @end example @@ -4462,12 +4571,12 @@ structuring hierarchy:@refill @example @group - @r{Change} @r{To} + @r{Change} @r{To} @@chapter @@section, @@subsection @@subsubsection, @@heading @@subheading, - @r{etc.} + @r{etc.} @end group @end example @@ -4509,7 +4618,7 @@ books.@refill @menu * Two Paths:: Different commands to structure - Info output and printed output. + Info output and printed output. * Node Menu Illustration:: A diagram, and sample nodes and menus. * node:: Creating nodes, in detail. * makeinfo Pointer Creation:: Letting makeinfo determine node pointers. @@ -4563,16 +4672,16 @@ root.@refill @example @group - Top - | - ------------------------------------- - | | | - Chapter 1 Chapter 2 Chapter 3 - | | | - -------- -------- -------- - | | | | | | - Section Section Section Section Section Section - 1.1 1.2 2.1 2.2 3.1 3.2 + Top + | + ------------------------------------- + | | | + Chapter 1 Chapter 2 Chapter 3 + | | | + -------- -------- -------- + | | | | | | +Section Section Section Section Section Section + 1.1 1.2 2.1 2.2 3.1 3.2 @end group @end example @@ -4611,10 +4720,10 @@ before the beginning of Section 2.1, like this:@refill @example @group - @@menu - * Sect. 2.1:: Description of this section. - * Sect. 2.2:: - @@end menu + @@menu + * Sect. 2.1:: Description of this section. + * Sect. 2.2:: + @@end menu @end group @end example @@ -4622,8 +4731,8 @@ Write the node for Sect. 2.1 like this:@refill @example @group - @@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2 - @@comment node-name, next, previous, up + @@node Sect. 2.1, Sect. 2.2, Chapter 2, Chapter 2 + @@comment node-name, next, previous, up @end group @end example @@ -4673,7 +4782,7 @@ the @code{@@node} line. On the other hand, in printed output nodes are used only for cross references, so a chapter or section may contain any number of nodes. Indeed, a chapter usually contains several nodes, one for each section, subsection, and -subsubsection.@refill +subsubsection. To create a node, write an @code{@@node} command at the beginning of a line, and follow it with up to four arguments, separated by commas, on @@ -4684,10 +4793,10 @@ if your Texinfo document is hierarchically organized (@pxref{makeinfo Pointer Creation}). You may insert spaces before each name if you wish; the spaces are -ignored. You must write the name of the node and the names of the -`Next', `Previous', and `Up' pointers all on the same line. Otherwise, -the formatters fail. (@inforef{Top, info, info}, for more information -about nodes in Info.) +ignored. You must write the name of the node and (if present) the names +of the `Next', `Previous', and `Up' pointers all on the same line. +Otherwise, the formatters fail. (@inforef{Top, info, info}, for more +information about nodes in Info.) Usually, you write one of the chapter-structuring command lines immediately after an @code{@@node} line---for example, an @@ -4697,7 +4806,7 @@ Command Types}.) @quotation @strong{Please note:} The GNU Emacs Texinfo mode updating commands work only with Texinfo files in which @code{@@node} lines are followed by chapter -structuring lines. @xref{Updating Requirements}.@refill +structuring lines. @xref{Updating Requirements}. @end quotation @TeX{} uses @code{@@node} lines to identify the names to use for cross @@ -4705,7 +4814,7 @@ references. For this reason, you must write @code{@@node} lines in a Texinfo file that you intend to format for printing, even if you do not intend to format it for Info. (Cross references, such as the one at the end of this sentence, are made with @code{@@xref} and related commands; -see @ref{Cross References}.)@refill +see @ref{Cross References}.) @menu * Node Names:: How to choose node and pointer names. @@ -4722,23 +4831,23 @@ see @ref{Cross References}.)@refill @cindex Node names, choosing The name of a node identifies the node. The pointers enable -you to reach other nodes and consist of the names of those nodes.@refill +you to reach other nodes and consist simply of the names of those nodes. Normally, a node's `Up' pointer contains the name of the node whose menu mentions that node. The node's `Next' pointer contains the name of the node that follows that node in that menu and its `Previous' pointer contains the name of the node that precedes it in that menu. When a node's `Previous' node is the same as its `Up' node, both node pointers -name the same node.@refill +name the same node. Usually, the first node of a Texinfo file is the `Top' node, and its `Up' and `Previous' pointers point to the @file{dir} file, which -contains the main menu for all of Info.@refill +contains the main menu for all of Info. The `Top' node itself contains the main or master menu for the manual. Also, it is helpful to include a brief description of the manual in the `Top' node. @xref{First Node}, for information on how to write the -first node of a Texinfo file.@refill +first node of a Texinfo file. Even when you explicitly specify all pointers, that does not mean you can write the nodes in the Texinfo source file in an arbitrary order! @@ -4823,7 +4932,7 @@ capitalized; others are not.@refill @end itemize -@node Node Line Requirements, First Node, Node Line Tips, node +@node Node Line Requirements @subsection @code{@@node} Line Requirements @cindex Node line requirements @@ -4834,7 +4943,7 @@ Here are several requirements for @code{@@node} lines: @cindex Unique nodename requirement @cindex Node name must be unique @item -All the node names for a single Info file must be unique.@refill +All the node names for a single Info file must be unique. Duplicates confuse the Info movement commands. This means, for example, that if you end every chapter with a summary, you must name @@ -4842,10 +4951,10 @@ each summary node differently. You cannot just call each one ``Summary''. You may, however, duplicate the titles of chapters, sections, and the like. Thus you can end each chapter in a book with a section called ``Summary'', so long as the node names for those sections are all -different.@refill +different. @item -A pointer name must be the name of a node.@refill +A pointer name must be the name of a node. The node to which a pointer points may come before or after the node containing the pointer. @@ -4853,50 +4962,32 @@ node containing the pointer. @cindex @@-commands in nodename @cindex Node name, should not contain @@-commands @item -@w{@@-commands} used in node names generally confuse Info, so you -should avoid them. This includes punctuation characters that are -escaped with a @samp{@@}, such as @code{@@} and @code{@{}. For a few -rare cases when this is useful, Texinfo has limited support for using -@w{@@-commands} in node names; see @ref{Pointer Validation}. - -@need 750 -Thus, the beginning of the section called @code{@@chapter} looks like -this:@refill - -@smallexample -@group -@@node chapter, unnumbered & appendix, makeinfo top, Structuring -@@comment node-name, next, previous, up -@@section @@code@{@@@@chapter@} -@@findex chapter -@end group -@end smallexample - -@item -@cindex Parentheses in nodename -You cannot use parentheses in node names, because a node name such as -@samp{(foo)bar} is interpreted by the Info readers as a node -@samp{bar} in an Info file @file{foo}. +@@-commands in node names are not allowed. This includes punctuation +characters that are escaped with a @samp{@@}, such as @code{@@} and +@code{@{}. (For a few rare cases when this is useful, Texinfo has +limited support for using @w{@@-commands} in node names; see +@ref{Pointer Validation}.) @item -@cindex Apostrophe in nodename @cindex Colon in nodename @cindex Comma in nodename +@cindex Parentheses in nodename @cindex Period in nodename @cindex Characters, invalid in node name @cindex Invalid characters in node names -Unfortunately, you cannot use periods, commas, colons or apostrophes -within a node name; these confuse @TeX{} or the Info formatters. +@cindex Node names, invalid characters in +Unfortunately, you cannot use periods, commas, colons or parentheses +within a node name; these confuse the Texinfo processors. @need 700 -For example, the following is a section title: +For example, the following is a section title in this manual: @smallexample @@code@{@@@@unnumberedsec@}, @@code@{@@@@appendixsec@}, @@code@{@@@@heading@} @end smallexample @noindent -The corresponding node name is: +But the corresponding node name lacks the commas and the @@'s: @smallexample unnumberedsec appendixsec heading @@ -5135,7 +5226,7 @@ For example, the preceding two paragraphs follow an Info-only menu, * Less Cluttered Menu Entry:: Two part menu entry. * Menu Example:: Two and three part entries. * Other Info Files:: How to refer to a different - Info file. + Info file. @@end menu @@node Menu Location, Writing a Menu, , Menus @@ -5168,7 +5259,7 @@ Larger Units of Text * Files:: All about handling files. * Multiples: Buffers. Multiple buffers; editing - several files at once. + several files at once. @@end menu @end group @end example @@ -5296,7 +5387,7 @@ Larger Units of Text * Files:: All about handling files. * Multiples: Buffers. Multiple buffers; editing - several files at once. + several files at once. @@end menu @end group @end example @@ -5312,7 +5403,7 @@ Larger Units of Text * Files:: All about handling files. * Multiples: Buffers. Multiple buffers; editing - several files at once. + several files at once. @end group @end example @@ -5361,9 +5452,9 @@ menu like this:@refill @group @@menu * Outlining: (emacs)Outline Mode. The major mode for - editing outlines. + editing outlines. * Rebinding: (emacs)Rebinding. How to redefine the - meaning of a key. + meaning of a key. @@end menu @end group @end example @@ -5382,7 +5473,7 @@ For example: @group * Info: (info). Documentation browsing system. * Emacs: (emacs). The extensible, self-documenting - text editor. + text editor. @end group @end example @@ -5901,7 +5992,7 @@ Here are several examples from @cite{The GNU Awk User's Guide}:@refill @@xref@{Glossary@}. @@xref@{Case-sensitivity, ,Case-sensitivity in Matching@}. @@xref@{Close Output, , Closing Output Files and Pipes@}, - for more information. + for more information. @@xref@{Regexp, , Regular Expressions as Patterns@}. @end smallexample @@ -7289,8 +7380,8 @@ produces: @end ifinfo @example - *Caution*: `rm * .[^.]*' removes _all_ - files in the directory. + *Caution*: `rm * .[^.]*' removes _all_ + files in the directory. @end example The @code{@@strong} command is seldom used except to mark what is, in @@ -7419,7 +7510,7 @@ line. * verbatim:: Writing a verbatim example. * verbatiminclude:: Including a file verbatim. * lisp:: Illustrating Lisp code. -* small:: Forms for @code{@@smallbook}. +* small:: Examples in a smaller font. * display:: Writing an example in the current font. * format:: Writing an example without narrowed margins. * exdent:: Undo indentation on a line. @@ -7547,36 +7638,32 @@ This is a foo. @cindex Formatting examples @findex example -The @code{@@example} command is used to indicate an example that is -not part of the running text, such as computer input or output. - -@example -@group -This is an example of text written between an -@code{@@example} command -and an @code{@@end example} command. -The text is indented but not filled. -@end group - -@group -In the printed manual, the text is typeset in a -fixed-width font, and extra spaces and blank lines are -significant. In the Info file, an analogous result is -obtained by indenting each line with five spaces. -@end group -@end example - -Write an @code{@@example} command at the beginning of a line by itself. -Mark the end of the example -with an @code{@@end example} command, also written at the beginning of a -line by itself.@refill +The @code{@@example} environment is used to indicate an example that +is not part of the running text, such as computer input or output. +Write an @code{@@example} command at the beginning of a line by +itself. Mark the end of the example with an @code{@@end example} +command, also written at the beginning of a line by itself. + +An @code{@@example} environment has the following characteristics: + +@itemize +@item Each line in the input file is a line in the output; that is, +the source text is not filled as it normally is. +@item Extra spaces and blank lines are significant. +@item The output is indented. +@item The output uses a fixed-width font (for formats where this is +possible and meaningful). +@item Texinfo commands @emph{are} expanded; if you want the input to +be the output verbatim, use the @code{@@verbatim} environment instead +(@pxref{verbatim,,@code{@@verbatim}}). +@end itemize -@need 700 For example, @example @@example -mv foo bar +cp foo @@var@{dest1@}; \ + cp foo @@var@{dest2@} @@end example @end example @@ -7584,37 +7671,34 @@ mv foo bar produces @example -mv foo bar +cp foo @var{dest1}; \ + cp foo @var{dest2} @end example -The lines containing @code{@@example} and @code{@@end example} -will disappear from the output. -To make the output look good, -you should put a blank line before the -@code{@@example} and another blank line after the @code{@@end example}. -Note that blank lines inside the beginning -@code{@@example} and the ending @code{@@end example} will appear in -the output.@refill +The lines containing @code{@@example} and @code{@@end example} will +disappear from the output. To make the output look good, you should +put a blank line before the @code{@@example} and another blank line +after the @code{@@end example}. Blank lines inside the beginning +@code{@@example} and the ending @code{@@end example}, on the other +hand, do appear in the output. @quotation -@strong{Caution:} Do not use tabs in the lines of an example or anywhere -else in Texinfo (except in verbatim environments)! The @TeX{} -implementation of Texinfo treats tabs as single spaces, and that is not -what they look like. (If necessary, in Emacs, you can use @kbd{M-x -untabify} to convert tabs in a region to multiple spaces.)@refill +@strong{Caution:} Do not use tabs in the lines of an example! (Or +anywhere else in Texinfo, except in verbatim environments.) @TeX{} +treats tabs as single spaces, and that is not what they look like. In +Emacs, you can use @kbd{M-x untabify} to convert tabs in a region to +multiple spaces. @end quotation Examples are often, logically speaking, ``in the middle'' of a -paragraph, and the text that continues after an example should not be -indented. The @code{@@noindent} command prevents a piece of text from -being indented as if it were a new paragraph. -@ifinfo -(@xref{noindent}.) -@end ifinfo +paragraph, and the text that continues afterwards should not be +indented, as in the example above. The @code{@@noindent} command +prevents a piece of text from being indented as if it were a new +paragraph (@pxref{noindent,,@code{@@noindent}}. -(The @code{@@code} command is used for examples of code that are -embedded within sentences, not set off from preceding and following -text. @xref{code, , @code{@@code}}.) +If you want to embed code fragments within sentences, instead of +displaying them, use the @code{@@code} command or its relatives +(@pxref{code,,@code{@@code}}). @node verbatim @@ -7663,7 +7747,7 @@ produces @verbatim { - @command with strange characters: @'e + @command with strange characters: @'e expand me } @end verbatim @@ -7692,6 +7776,18 @@ The contents of @var{filename} is printed in a verbatim environment (@pxref{verbatim,,@code{@@verbatim}}). Generally, the file is printed exactly as it is, with all special characters and white space retained. +The name of the file is taken literally, with a single exception: +@code{@@value@{@var{var}@}} references are expanded. This makes it +possible to reliably include files in other directories in a +distribution, for instance: + +@example +@@include @@value@{top_srcdir@}/NEWS +@end example + +@noindent (You still have to get @code{top_srcdir} defined in the +first place.) + @node lisp @section @code{@@lisp}: Marking a Lisp Example @@ -7714,7 +7810,7 @@ library.@footnote{It would be straightforward to extend Texinfo to work in a similar fashion for C, Fortran, or other languages.} Mark the end of @code{@@lisp} with @code{@@end lisp} on a line by -itself.@refill +itself. @node small @@ -7732,65 +7828,37 @@ Texinfo has ``small'' example-style commands. These are @code{@@smalldisplay}, @code{@@smallexample}, @code{@@smallformat}, and @code{@@smalllisp}. -In @TeX{}, the @code{@@small@dots{}} commands typeset text in a smaller -font than the non-small example commands. Consequently, many examples -containing long lines fit on a page without needing to be shortened. - In Info, the @code{@@small@dots{}} commands are equivalent to their non-small companion commands. +In @TeX{}, however, the @code{@@small@dots{}} commands typeset text in +a smaller font than the non-small example commands. Consequently, +many examples containing long lines fit on a page without needing to +be shortened. + Mark the end of an @code{@@small@dots{}} block with a corresponding @code{@@end small@dots{}}. For example, pair @code{@@smallexample} with @code{@@end smallexample}. -@iftex -Here is an example written in the small font used by the -@code{@@smallexample} and @code{@@smalllisp} commands: +Here is an example of the font used by the @code{@@small@dots{}} +commands (in Info, the output will be the same as usual): -@ifclear smallbook -@display -@tex -% Remove extra vskip; this is a kludge to counter the effect of display -\vskip-3\baselineskip -{\smalltt -\dots{} to make sure that you have the freedom to +@smallexample +@dots{} 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.} -@end tex -@end display -@end ifclear -@end iftex -@ifset smallbook -@iftex -@smallexample -This is an example of text written between @code{@@smallexample} and -@code{@@end smallexample}. In Info this text appears in its normal size; -but in printed manuals, this text appears in a smaller font. +programs; and that you know you can do these things. @end smallexample -@end iftex -@end ifset -@ifinfo -@smallexample -This is an example of text written between @code{@@smallexample} and -@code{@@end smallexample}. In Info this text appears in its normal size; -but in a 7 by 9.25 inch manual, this text appears in a smaller font. -@end smallexample -@end ifinfo The @code{@@small@dots{}} commands make it easier to prepare manuals without forcing you to edit examples by hand to fit them onto narrower pages. -As a general rule, a printed document looks better if you use only one -of (for example) @code{@@example} or in @code{@@smallexample} -consistently within a chapter. Only occasionally should you mix the two -formats. - -@xref{smallbook, , Printing ``Small'' Books}, for more information -about the @code{@@smallbook} command. +As a general rule, a printed document looks much better if you use +only one of (for instance) @code{@@example} or @code{@@smallexample} +consistently within a chapter. @node display @@ -7949,9 +8017,15 @@ left end ragged. An example or other inclusion can break a paragraph into segments. Ordinarily, the formatters indent text that follows an example as a new -paragraph. However, you can prevent this by writing @code{@@noindent} -at the beginning of a line by itself preceding the continuation -text.@refill +paragraph. You can prevent this on a case-by-case basis by writing +@code{@@noindent} at the beginning of a line, preceding the continuation +text. You can also disable indentation for all paragraphs globally with +@code{@@paragraphindent} (@pxref{paragraphindent, Paragraph Indenting}). + +It is best to write @code{@@noindent} on a line by itself, since in most +environments, spaces following the command will not be ignored. It's ok +to use it at the beginning of a line, with text following, outside of +any environment. @need 1500 For example: @@ -7970,35 +8044,32 @@ that follows after it. (This whole example is between @end group @end example -@noindent -produces +@noindent produces: @display + @example This is an example @end example -@tex -% Remove extra vskip; this is a kludge to counter the effect of display -\vskip-3.5\baselineskip -@end tex @noindent This line is not indented. As you can see, the beginning of the line is fully flush left with the line that follows after it. (This whole example is between @code{@@display} and @code{@@end display}.) + @end display To adjust the number of blank lines properly in the Info file output, remember that the line containing @code{@@noindent} does not generate a -blank line, and neither does the @code{@@end example} line.@refill +blank line, and neither does the @code{@@end example} line. In the Texinfo source file for this manual, each line that says -`produces' is preceded by a line containing @code{@@noindent}.@refill +`produces' is preceded by @code{@@noindent}. Do not put braces after an @code{@@noindent} command; they are not necessary, since @code{@@noindent} is a command used outside of -paragraphs (@pxref{Command Syntax}).@refill +paragraphs (@pxref{Command Syntax}). @node cartouche @@ -8367,7 +8438,7 @@ a letter, beginning with that lower case letter.@refill You can also nest enumerated lists, as in an outline.@refill -@node Two-column Tables, Multi-column Tables, enumerate, Lists and Tables +@node Two-column Tables @section Making a Two-column Table @cindex Tables, making two-column @findex table @@ -8384,35 +8455,35 @@ exhibits, and command-line option summaries. * itemx:: How to put more entries in the first column. @end menu -@node table, ftable vtable, Two-column Tables, Two-column Tables -@ifinfo -@subheading Using the @code{@@table} Command +@node table +@subsection Using the @code{@@table} Command -Use the @code{@@table} command to produce two-column tables.@refill -@end ifinfo +@cindex Definition lists, typesetting +Use the @code{@@table} command to produce two-column tables. It is +usually listed for ``definition lists'' of various sorts, where you +have a list of terms and a brief text with each one. + +Write the @code{@@table} command at the beginning of a line, after a +blank line, and follow it on the same line with an argument that is a +Texinfo ``indicating'' command such as @code{@@code}, @code{@@samp}, +@code{@@var}, @code{@@option}, or @code{@@kbd} (@pxref{Indicating}). -Write the @code{@@table} command at the beginning of a line and follow -it on the same line with an argument that is a Texinfo ``indicating'' -command such as @code{@@code}, @code{@@samp}, @code{@@var}, or -@code{@@kbd} (@pxref{Indicating}). Although these commands are usually -followed by arguments in braces, in this case you use the command name -without an argument because @code{@@item} will supply the argument. -This command will be applied to the text that goes into the first column -of each item and determines how it will be highlighted. For example, -@code{@@code} will cause the text in the first column to be highlighted -with an @code{@@code} command. (We recommend @code{@@code} for -@code{@@table}'s of command-line options.) +This command will be applied to the text that goes into the first +column of each item and thus determines how it will be highlighted. +For example, @code{@@table @@code} will cause the text in the first +column to be output as if it @code{@@code} command. @findex asis -You may also choose to use the @code{@@asis} command as an argument to +You may also use the @code{@@asis} command as an argument to @code{@@table}. @code{@@asis} is a command that does nothing; if you -use this command after @code{@@table}, @TeX{} and the Info formatting -commands output the first column entries without added highlighting -(``as is'').@refill +use this command after @code{@@table}, the first column entries are +output without added highlighting (``as is''). -(The @code{@@table} command may work with other commands besides those -listed here. However, you can only use commands that normally take -arguments in braces.)@refill +The @code{@@table} command works with other commands besides those +explicitly mentioned here. However, you can only use commands that +normally take arguments in braces. (In this case, however, you use +the command name without an argument, because the subsequent +@code{@@item}'s will supply the argument.) @findex item Begin each table entry with an @code{@@item} command at the beginning @@ -8421,16 +8492,20 @@ of a line. Write the first column text on the same line as the following the @code{@@item} line and on subsequent lines. (You do not need to type anything for an empty second column entry.) You may write as many lines of supporting text as you wish, even several -paragraphs. But only text on the same line as the @code{@@item} will -be placed in the first column, including any footnote. +paragraphs. But only the text on the same line as the @code{@@item} +will be placed in the first column (including any footnotes). Normally, you should put a blank line before an @code{@@item} line. -This puts a blank like in the Info file. Except when the entries are -very brief, a blank line looks better.@refill +This puts a blank line in the Info file. Except when the entries are +very brief, a blank line looks better. + +End the table with a line consisting of @code{@@end table}, followed +by a blank line. @TeX{} will always start a new paragraph after the +table, so the blank line is needed for the Info output to be analogous. @need 1500 The following table, for example, highlights the text in the first -column with an @code{@@samp} command:@refill +column with an @code{@@samp} command: @example @group @@ -8457,8 +8532,7 @@ Text for @samp{bar}. @end table If you want to list two or more named items with a single block of -text, use the @code{@@itemx} command. (@xref{itemx, , -@code{@@itemx}}.)@refill +text, use the @code{@@itemx} command. (@xref{itemx,,@code{@@itemx}}.) @node ftable vtable @@ -8670,7 +8744,7 @@ canonical purpose. If you wish, you can define your own indices.@refill @menu * Index Entries:: Choose different words for index entries. * Predefined Indices:: Use different indices for different kinds - of entry. + of entry. * Indexing Commands:: How to make an index entry. * Combining Indices:: How to combine indices. * New Indices:: How to define your own indices. @@ -8874,9 +8948,9 @@ the braces of @code{@@code}.@refill @menu * syncodeindex:: How to merge two indices, using @code{@@code} - font for the merged-from index. + font for the merged-from index. * synindex:: How to merge two indices, using the - default font of the merged-to index. + default font of the merged-to index. @end menu @node syncodeindex @@ -9060,16 +9134,16 @@ These are: @menu * Braces Atsigns:: How to insert braces, @samp{@@}. * Inserting Space:: How to insert the right amount of space - within a sentence. + within a sentence. * Inserting Accents:: How to insert accents and special characters. * Dots Bullets:: How to insert dots and bullets. * TeX and copyright:: How to insert the @TeX{} logo - and the copyright symbol. + and the copyright symbol. * pounds:: How to insert the pounds currency symbol. * minus:: How to insert a minus sign. * math:: How to format a mathematical expression. * Glyphs:: How to indicate results of evaluation, - expansion of macros, errors, etc. + expansion of macros, errors, etc. * Footnotes:: How to include footnotes. * Images:: How to include graphics. @end menu @@ -9233,7 +9307,7 @@ emacs, The GNU Emacs Manual}). Do not put braces after any of these commands. -@node Multiple Spaces, dmn, Ending a Sentence, Inserting Space +@node Multiple Spaces @subsection Multiple Spaces @cindex Multiple spaces @@ -9278,7 +9352,7 @@ Other possible uses of @code{@@@kbd{SPACE}} have been subsumed by Do not follow any of these commands with braces. -To produce a non-breakable space, see @ref{w, non-breakable space}. +To produce a non-breakable space, see @ref{tie, @code{@@tie}}. @node dmn @@ -9507,7 +9581,7 @@ braces.@refill @menu * tex:: How to insert the @TeX{} logo. -* copyright symbol:: How to use @code{@@copyright}@{@}. +* copyright symbol:: How to use @code{@@copyright@{@}}. @end menu @@ -9523,12 +9597,12 @@ letters. In Info, it just looks like @samp{TeX}. The @node copyright symbol -@subsection @code{@@copyright}@{@} (@copyright{}) +@subsection @code{@@copyright@{@}} (@copyright{}) @findex copyright Use the @code{@@copyright@{@}} command to generate `@copyright{}'. In a printed manual, this is a @samp{c} inside a circle, and in Info, -this is @samp{(C)}.@refill +this is @samp{(C)}. @node pounds, minus, TeX and copyright, Insertions @@ -9603,7 +9677,9 @@ command. Write the mathematical expression between braces, like this: (a + b)(a + b) = a^2 + 2ab + b^2 @end example -Thus, the @code{@@math} command has no effect on the Info output. +Thus, the @code{@@math} command has no effect on the Info output; +@command{makeinfo} just reproduces the input, it does not try to +interpret the mathematics in any way. @code{@@math} implies @code{@@tex}. This not only makes it possible to write superscripts and subscripts (as in the above example), but also @@ -9730,7 +9806,7 @@ Thus, the following, @lisp (cdr '(1 2 3)) - @result{} (2 3) + @result{} (2 3) @end lisp @noindent @@ -9762,8 +9838,8 @@ For example, the following @group @@lisp (third '(a b c)) - @@expansion@{@} (car (cdr (cdr '(a b c)))) - @@result@{@} c + @@expansion@{@} (car (cdr (cdr '(a b c)))) + @@result@{@} c @@end lisp @end group @end example @@ -9774,8 +9850,8 @@ produces @lisp @group (third '(a b c)) - @expansion{} (car (cdr (cdr '(a b c)))) - @result{} c + @expansion{} (car (cdr (cdr '(a b c)))) + @result{} c @end group @end lisp @@ -9818,9 +9894,9 @@ last line.@refill @lisp @group (progn (print 'foo) (print 'bar)) - @print{} foo - @print{} bar - @result{} bar + @print{} foo + @print{} bar + @result{} bar @end group @end lisp @@ -9831,9 +9907,9 @@ In a Texinfo source file, this example is written as follows: @group @@lisp (progn (print 'foo) (print 'bar)) - @@print@{@} foo - @@print@{@} bar - @@result@{@} bar + @@print@{@} foo + @@print@{@} bar + @@result@{@} bar @@end lisp @end group @end lisp @@ -9961,7 +10037,7 @@ This is the @point{}contents of foo. @example @group (insert "changed ") - @result{} nil + @result{} nil ---------- Buffer: foo ---------- This is the changed @point{}contents of foo. ---------- Buffer: foo ---------- @@ -9978,7 +10054,7 @@ This is the @@point@{@}contents of foo. ---------- Buffer: foo ---------- (insert "changed ") - @@result@{@} nil + @@result@{@} nil ---------- Buffer: foo ---------- This is the changed @@point@{@}contents of foo. ---------- Buffer: foo ---------- @@ -10074,7 +10150,7 @@ Here is an example of a single footnote in the end of node style:@refill @example @group - --------- Footnotes --------- +--------- Footnotes --------- (1) Here is a sample footnote. @end group @@ -10332,30 +10408,29 @@ arise. When they do, use the break, break prevention, or pagination commands. @menu -* Break Commands:: Cause and prevent splits. -* Line Breaks:: How to force a single line to use two lines. -* - and hyphenation:: How to tell @TeX{} about hyphenation points. -* w:: How to prevent unwanted line breaks. -* sp:: How to insert blank lines. -* page:: How to force the start of a new page. -* group:: How to prevent unwanted page breaks. +* Break Commands:: Summary of break-related commands. +* Line Breaks:: Forcing line breaks. +* - and hyphenation:: Helping @TeX{} with hyphenation points. +* w:: Preventing unwanted line breaks in text. +* tie:: Inserting an unbreakable but varying space. +* sp:: Inserting blank lines. +* page:: Forcing the start of a new page. +* group:: Preventing unwanted page breaks. * need:: Another way to prevent unwanted page breaks. @end menu -@node Break Commands, Line Breaks, Breaks, Breaks -@ifinfo -@heading Break Commands -@end ifinfo +@node Break Commands +@section Break Commands -The break commands create or allow line and paragraph breaks:@refill +The break commands create or allow line and paragraph breaks: @table @code @item @@* Force a line break. @item @@sp @var{n} -Skip @var{n} blank lines.@refill +Skip @var{n} blank lines. @item @@- Insert a discretionary hyphen. @@ -10364,31 +10439,33 @@ Insert a discretionary hyphen. Define hyphen points in @var{hy-phen-a-ted words}. @end table -The line-break-prevention command holds text together all on one -line:@refill +These commands hold text together on a single line: @table @code @item @@w@{@var{text}@} -Prevent @var{text} from being split and hyphenated across two lines.@refill +Prevent @var{text} from being split and hyphenated across two lines. +@item @@tie@{@} +Insert a normal interword space at which a line break may not occur. @end table @iftex @sp 1 @end iftex The pagination commands apply only to printed output, since Info -files do not have pages.@refill +files do not have pages. @table @code @item @@page -Start a new page in the printed manual.@refill +Start a new page in the printed manual. @item @@group -Hold text together that must appear on one printed page.@refill +Hold text together that must appear on one printed page. @item @@need @var{mils} -Start a new printed page if not enough space on this one.@refill +Start a new printed page if not enough space on this one. @end table + @node Line Breaks @section @code{@@*}: Generate Line Breaks @findex * @r{(force line break)} @@ -10411,17 +10488,12 @@ produces @example @group This line - is broken +is broken in two places. @end group @end example -@noindent -(Note that the space after the first @code{@@*} command is faithfully -carried down to the next line.)@refill - -@need 800 -The @code{@@*} command is often used in a file's copyright page:@refill +The @code{@@*} command is often used in a file's copyright page: @example @group @@ -10432,21 +10504,16 @@ and is for @dots{} @noindent In this case, the @code{@@*} command keeps @TeX{} from stretching the -line across the whole page in an ugly manner.@refill - -@quotation -@strong{Please note:} Do not write braces after an @code{@@*} command; -they are not needed.@refill +line across the whole page in an ugly manner. Do not write an @code{@@refill} command at the end of a paragraph containing an @code{@@*} command; it will cause the paragraph to be refilled after the line break occurs, negating the effect of the line break.@refill -@end quotation @node - and hyphenation -@section @code{@@-} and @code{@@hyphenation}: Helping @TeX{} hyphenate +@section @code{@@-} and @code{@@hyphenation}: Helping @TeX{} Hyphenate @findex - @r{(discretionary hyphen)} @findex hyphenation @@ -10486,7 +10553,7 @@ Info output is not hyphenated, so these commands have no effect there. @cindex Hyphenation, preventing @code{@@w@{@var{text}@}} outputs @var{text} and prohibits line breaks -within @var{text}.@refill +within @var{text}. You can use the @code{@@w} command to prevent @TeX{} from automatically hyphenating a long name or phrase that happens to fall near the end of a @@ -10503,15 +10570,66 @@ produces You can copy GNU software from @w{@samp{ftp.gnu.org}}. @end quotation -@cindex Non-breakable space -@cindex Unbreakable space +@cindex Non-breakable space, fixed +@cindex Unbreakable space, fixed +You can also use @code{@@w} to produce a non-breakable space, fixed at +the width of a normal interword space: + +@example +@@w@{ @} @@w@{ @} @@w@{ @} indentation. +@end example + +@noindent produces: + +@display +@w{ } @w{ } @w{ } indentation. +@end display + +The space from @code{@@w@{@w{ }@}}, as well as being non-breakable, also +will not stretch or shrink. Sometimes that is what you want, for +instance if you're doing some manual indenting. However, usually you +want a normal interword space that does stretch and shrink (in the +printed output); see the @code{@@tie} command in the next section. + + +@node tie +@section @code{@@tie@{@}}: Inserting an Unbreakable Space +@findex tie @r{(unbreakable interword space)} @cindex Tied space -You can also use @code{@@w} to produce a non-breakable space: +@cindex Non-breakable space, variable +@cindex Unbreakable space, variable + +The @code{@@tie@{@}} command produces a normal interword space at which +a line break may not occur. Always write it with following (empty) +braces, as usual for commands used within a paragraph. Here's an +example: @example -None of the formatters will break at this@@w@{ @}space. +@@TeX@{@} was written by Donald E.@@tie@{@}Knuth. @end example +@noindent produces: + +@display +@TeX{} was written by Donald E.@tie{}Knuth. +@end display + +There are two important differences between @code{@@tie@{@}} and +@code{@@w@{@w{ }@}}: + +@itemize +@item +The space produced by @code{@@tie@{@}} will stretch and shrink slightly +along with the normal interword spaces in the paragraph; the space +produced by @code{@@w@{@w{ }@}} will not vary. + +@item +@code{@@tie@{@}} allows hyphenation of the surrounding words, while +@code{@@w@{@w{ }@}} inhibits hyphenation of those words (for @TeX{}nical +reasons, namely that it produces an @samp{\hbox}). + +@end itemize + @node sp @section @code{@@sp} @var{n}: Insert Blank Lines @@ -10698,7 +10816,7 @@ a given name. An appendix containing a summary should use @menu * Def Cmd Template:: How to structure a description using a - definition command. + definition command. * Optional Arguments:: How to handle optional and repeated arguments. * deffnx:: How to group two or more `first' lines. * Def Cmds in Detail:: All the definition commands. @@ -10893,7 +11011,7 @@ example).@refill @example @group @@defspec foobar (@@var@{var@} [@@var@{from@} @@var@{to@} - [@@var@{inc@}]]) @@var@{body@}@@dots@{@} + [@@var@{inc@}]]) @@var@{body@}@@dots@{@} @end group @end example @@ -11179,7 +11297,7 @@ For example, @example @group @@deftypefn @{Library Function@} int foobar - (int @@var@{foo@}, float @@var@{bar@}) + (int @@var@{foo@}, float @@var@{bar@}) @dots{} @@end deftypefn @end group @@ -11245,8 +11363,8 @@ For example: @example @group @@deftypefn stacks private push - (@@var@{s@}:in out stack; - @@var@{n@}:in integer) + (@@var@{s@}:in out stack; + @@var@{n@}:in integer) @dots{} @@end deftypefn @end group @@ -11716,16 +11834,16 @@ do not make sense in @code{apply}. @example (setq f 'list) - @result{} list + @result{} list (apply f 'x 'y 'z) @error{} Wrong type argument: listp, z (apply '+ 1 2 '(3 4)) - @result{} 10 + @result{} 10 (apply '+ '(1 2 3 4)) - @result{} 10 + @result{} 10 (apply 'append '((a b c) nil (x y z) nil)) - @result{} (a b c x y z) + @result{} (a b c x y z) @end example An interesting example of using @code{apply} is found in the description @@ -11758,16 +11876,16 @@ sense in @@code@{apply@}. @group @@example (setq f 'list) - @@result@{@} list + @@result@{@} list (apply f 'x 'y 'z) @@error@{@} Wrong type argument: listp, z (apply '+ 1 2 '(3 4)) - @@result@{@} 10 + @@result@{@} 10 (apply '+ '(1 2 3 4)) - @@result@{@} 10 + @@result@{@} 10 (apply 'append '((a b c) nil (x y z) nil)) - @@result@{@} (a b c x y z) + @@result@{@} (a b c x y z) @@end example @end group @@ -11814,16 +11932,16 @@ Substituting text for all formats, and testing if a flag is set or clear. * Conditional Not Commands:: Specifying text for not HTML, Info, or @TeX{}. * Raw Formatter Commands:: Using raw @TeX{} or HTML commands. * set clear value:: Designating which text to format (for - all output formats); and how to set a - flag to a string that you can insert. + all output formats); and how to set a + flag to a string that you can insert. @end menu @node Conditional Commands @section Conditional Commands -Texinfo has a pair of commands for each output format, to allow -conditional inclusion of text for a particular output format. +Texinfo has an @code{@@if@dots{}} environment for each output format, to +allow conditional inclusion of text for a particular output format. @findex ifinfo @code{@@ifinfo} begins segments of text that should be ignored by @TeX{} @@ -11833,16 +11951,18 @@ output. The @code{@@ifinfo} command should appear on a line by itself; end the Info-only text with a line containing @code{@@end ifinfo} by itself. -@findex iftex @findex ifhtml @findex ifplaintext +@findex iftex +@findex ifxml The @code{@@iftex} and @code{@@end iftex} commands are analogous to the @code{@@ifinfo} and @code{@@end ifinfo} commands; they specify text that will appear in the printed manual but not in the Info file. Likewise for @code{@@ifhtml} and @code{@@end ifhtml}, which specify text to appear only in HTML output. And for @code{@@ifplaintext} and @code{@@end ifplaintext}, which specify text to appear only in plain -text output. +text output. And for @code{@@ifxml} and +@code{@@end ifxml}, for the XML output. For example, @@ -11859,6 +11979,9 @@ And this text will only appear in HTML. @@ifplaintext Whereas this text will only appear in plain text. @@end ifplaintext +@@ifxml +And this will only appear in XML output. +@@end ifxml @end example @noindent @@ -11875,6 +11998,9 @@ And this text will only appear in HTML. @ifplaintext Whereas this text will only appear in plain text. @end ifplaintext +@ifxml +And this will only appear in XML output. +@end ifxml @noindent Notice that you only see one of the input lines, depending on which @@ -11887,6 +12013,7 @@ version of the manual you are reading. @findex ifnotinfo @findex ifnotplaintext @findex ifnottex +@findex ifnotxml You can specify text to be included in any output format @emph{other} than some given one with the @code{@@ifnot@dots{}} commands: @@ -11895,24 +12022,25 @@ than some given one with the @code{@@ifnot@dots{}} commands: @@ifnotinfo @dots{} @@end ifnotinfo @@ifnotplaintext @dots{} @@end ifnotplaintext @@ifnottex @dots{} @@end ifnottex +@@ifnotxml @dots{} @@end ifnotxml @end example @noindent -(The @code{@@ifnot@dots{}} command and the @code{@@end} command must -appear on lines by themselves in your actual source file.) +The @code{@@ifnot@dots{}} command and the @code{@@end} command must +appear on lines by themselves in your actual source file. -If the output file is @emph{not} being made for the given format, the -region is included. Otherwise, it is ignored. +If the output file is being made in the given format, the +region is @emph{ignored}. Otherwise, it is included. With one exception (for historical compatibility): @code{@@ifnotinfo} text is omitted for both Info and plain text output, not just Info. To specify text which appears only in Info and not in plain text, use @code{@@ifnotplaintext}, like this: @example -@ifinfo -@ifnotplaintext +@@ifinfo +@@ifnotplaintext This will be in Info, but not plain text. -@end ifnotplaintext -@end ifinfo +@@end ifnotplaintext +@@end ifinfo @end example The regions delimited by these commands are ordinary Texinfo source as @@ -11922,13 +12050,12 @@ with @code{@@iftex}, not raw formatter source as with @code{@@tex} @node Raw Formatter Commands @section Raw Formatter Commands -@cindex @TeX{} commands, using ordinary -@cindex HTML commands, using ordinary @cindex Raw formatter commands +@cindex @TeX{} commands, using ordinary @cindex Ordinary @TeX{} commands, using -@cindex Ordinary HTML commands, using @cindex Commands using raw @TeX{} -@cindex Commands using raw HTML +@cindex HTML, including raw +@cindex XML, including raw @cindex plain @TeX{} Inside a region delineated by @code{@@iftex} and @code{@@end iftex}, you @@ -11960,8 +12087,8 @@ plain @TeX{}: @example @@tex $$ \chi^2 = \sum_@{i=1@}^N - \left (y_i - (a + b x_i) - \over \sigma_i\right)^2 $$ + \left (y_i - (a + b x_i) + \over \sigma_i\right)^2 $$ @@end tex @end example @@ -11976,8 +12103,8 @@ this: @tex $$ \chi^2 = \sum_{i=1}^N - \left(y_i - (a + b x_i) - \over \sigma_i\right)^2 $$ + \left(y_i - (a + b x_i) + \over \sigma_i\right)^2 $$ @end tex @findex ifhtml @@ -11988,6 +12115,14 @@ a region to be included in HTML output only, and @code{@@html @dots{} still the escape character, so the @code{@@end} command can be recognized.) +@findex ifxml +@findex xml +Analogously, you can use @code{@@ifxml @dots{} @@end ifxml} to delimit +a region to be included in XML output only, and @code{@@xml @dots{} +@@end xml} for a region of raw XML (again, except that @code{@@} is +still the escape character, so the @code{@@end} command can be +recognized.) + @node set clear value @section @code{@@set}, @code{@@clear}, and @code{@@value} @@ -12526,7 +12661,7 @@ document encoding @var{enc} is specified, it is used in a @example <meta http-equiv="Content-Type" content="text/html; - charset=@var{enc}"> + charset=@var{enc}"> @end example @@ -12754,13 +12889,16 @@ Twice: a,b & a,b. @cindex Macro details @cindex Details of macro usage -Due to unavoidable disparities in the @TeX{} and @command{makeinfo} -implementations, Texinfo macros have the following limitations. +Due to unavoidable limitations, certain macro-related constructs cause +problems with @TeX{}. If you get macro-related errors when producing +the printed version of a manual, try expanding the macros with +@command{makeinfo} by invoking @command{texi2dvi} with the @samp{-E} +option (@ref{Format with texi2dvi}). @itemize @bullet @item All macros are expanded inside at least one @TeX{} group. This means -that @code{@@set} and other such commands will have no effect inside a +that @code{@@set} and other such commands have no effect inside a macro. @item @@ -12772,9 +12910,14 @@ Commas in macro arguments, even if escaped by a backslash, don't always work. @item -The @TeX{} implementation cannot construct macros that define macros in -the natural way. To do this, you must use conditionals and raw @TeX{}. -For example: +It is best to avoid comments inside macro definitions. + +@item +Macro arguments cannot cross lines. + +@item +Macros cannot define macros in the natural way. To do this, you must +use conditionals and raw @TeX{}. For example: @example @@ifnottex @@ -12790,15 +12933,8 @@ something involving \arg\ somehow @@end tex @end example -@item -It is best to avoid comments inside macro definitions. - @end itemize -If some macro feature causes errors when producing the printed version -of a manual, try expanding the macros with @command{makeinfo} by -invoking @command{texi2dvi} with the @samp{-e} option; see @ref{Format -with texi2dvi}. @node alias @section @samp{@@alias @var{new}=@var{existing}} @@ -12845,7 +12981,7 @@ command for Info, but not for @TeX{}. A command defined using @code{@@definfoenclose} marks text by enclosing it in strings that precede and follow the text. You can use this to get closer control of your Info output. - + Presumably, if you define a command with @code{@@definfoenclose} for Info, you will create a corresponding command for @TeX{}, either in @file{texinfo.tex}, @file{texinfo.cnf}, or within an @samp{@@iftex} in @@ -12866,7 +13002,7 @@ you intended as the start delimiter string. If you do a @code{@@definfoenclose} on the name of a pre-defined macro (such as @code{@@emph}, @code{@@strong}, @code{@@t}, or @code{@@i}), the enclosure definition will override the built-in definition. - + An enclosure command defined this way takes one argument in braces; this is intended for new markup commands (@pxref{Marking Text}). @@ -12954,8 +13090,8 @@ print queue, and delete a job from the print queue. * smallbook:: How to print small format books and manuals. * A4 Paper:: How to print on A4 or A5 paper. * pagesizes:: How to print with customized page sizes. -* Cropmarks and Magnification:: How to print marks to indicate the size - of pages and how to print scaled up output. +* Cropmarks and Magnification:: How to print marks to indicate the size + of pages and how to print scaled up output. * PDF Output:: Portable Document Format output. @end menu @@ -13328,7 +13464,7 @@ The default values are:@refill @example @group - @r{Variable} @r{Default value} + @r{Variable} @r{Default value} texinfo-texi2dvi-command "texi2dvi" texinfo-tex-command "tex" @@ -13638,7 +13774,8 @@ file, before the title page:@refill @noindent (Since many books are about 7 by 9.25 inches, this command might better have been called the @code{@@regularbooksize} command, but it came to be -called the @code{@@smallbook} command by comparison to the 8.5 by 11 inch format.) +called the @code{@@smallbook} command by comparison to the 8.5 by 11 +inch format.) If you write the @code{@@smallbook} command between the start-of-header and end-of-header lines, the Texinfo mode @TeX{} @@ -13689,7 +13826,7 @@ You may or may not prefer the formatting that results from the command wide format. @node pagesizes -@section @code{@@pagesizes} [@var{width}][, @var{height}]: Custom page sizes +@section @code{@@pagesizes} [@var{width}][, @var{height}]: Custom Page Sizes @findex pagesizes @cindex Custom page sizes @cindex Page sizes, customized @@ -13800,17 +13937,16 @@ magnifications. Be prepared to experiment. @pindex pdftex You can generate a PDF output file from Texinfo source by using the @command{pdftex} program to process your file instead of plain -@command{tex}. Just run @samp{pdftex foo.texi} instead of @samp{tex +@command{tex}. That is, run @samp{pdftex foo.texi} instead of @samp{tex foo.texi}, or give the @samp{--pdf} option to @command{texi2dvi}. @dfn{PDF} stands for `Portable Document Format'. It was invented by Adobe Systems some years ago for document interchange, based on their -PostScript language. A @uref{http://www.foolabs.com/xpdf/, PDF reader} -for the X window system is freely available, as is the -@uref{http://partners.adobe.com/asn/developer/technotes/, definition of -the file format}. Since PDF is a binary format, there are no -@samp{@@ifpdf} or @samp{@@pdf} commands as with the other output -formats. +PostScript language. A @uref{http://www.foolabs.com/xpdf/, PDF +reader} for the X window system is freely available, as is the +@uref{http://partners.adobe.com/asn/developer/technotes/, definition +of the file format}. At present, there are no @samp{@@ifpdf} or +@samp{@@pdf} commands as with the other output formats. Despite the `portable' in the name, PDF files are nowhere near as portable in practice as the plain ASCII formats (Info, HTML) that @@ -13855,12 +13991,12 @@ For information on installing the Info file in the Info system, * Pointer Validation:: How to check that pointers point somewhere. * makeinfo in Emacs:: How to run @code{makeinfo} from Emacs. * texinfo-format commands:: Two Info formatting commands written - in Emacs Lisp are an alternative - to @code{makeinfo}. + in Emacs Lisp are an alternative + to @code{makeinfo}. * Batch Formatting:: How to format for Info in Emacs Batch mode. * Tag and Split Files:: How tagged and split files help Info - to run better. -* makeinfo html:: Generating HTML output. + to run better. +* Generating HTML:: Generating HTML output with makeinfo. @end menu @@ -13959,6 +14095,11 @@ details. @opindex --docbook Generate DocBook output rather than Info. +@item --enable-encoding +@opindex --enable-encoding +Output accented and special characters in Info or plain text output +based on @samp{@@documentencoding}. + @item --error-limit=@var{limit} @itemx -e @var{limit} @opindex --error-limit=@var{limit} @@ -14006,7 +14147,7 @@ Print a usage message listing all available options, then exit successfully. @item --html @opindex --html -Generate HTML output rather than Info. @xref{makeinfo html}. By +Generate HTML output rather than Info. @xref{Generating HTML}. By default, the HTML output is split into one output file per source node, and the split output is written into a subdirectory with the name of the top-level info file. @@ -14021,8 +14162,26 @@ not given, the current directory @file{.} is appended. Note that usual path separator character (@samp{:} on Unix, @samp{;} on MS-DOS/MS-Windows). +@item --ifhtml +@itemx --ifinfo +@itemx --ifplaintext +@itemx --iftex +@itemx --ifxml +@opindex --ifhtml +@opindex --ifinfo +@opindex --ifplaintext +@opindex --iftex +@opindex --ifxml +For the specified format, process @samp{@@if@var{format}} and +@samp{@@@var{format}} commands even if not generating the given output +format. For instance, if @option{--iftex} is specified, then +@samp{@@iftex} and @samp{@@tex} blocks will be read. This can be useful +when postprocessing the output. + @item --macro-expand=@var{file} @itemx -E @var{file} +@opindex --macro-expand=@var{file} +@opindex -E @var{file} Output the Texinfo source with all the macros expanded to the named file. Normally, the results of macro expansion are used internally by @code{makeinfo} and then discarded. This option is used by @@ -14046,11 +14205,26 @@ distribution (as in an @file{INSTALL} file). For HTML output, likewise omit menus. And if @samp{--no-split} is also specified, do not include a navigation links at the top of each node (these are never included in the default case of split output). -@xref{makeinfo html}. +@xref{Generating HTML}. In both cases, write to standard output by default (can still be overridden by @option{-o}). +@item --no-ifhtml +@itemx --no-ifinfo +@itemx --no-ifplaintext +@itemx --no-iftex +@itemx --no-ifxml +@opindex --no-ifhtml +@opindex --no-ifinfo +@opindex --no-ifplaintext +@opindex --no-iftex +@opindex --no-ifxml +Do not process @samp{@@if@var{format}} and @samp{@@@var{format}} +commands even if generating the given format. For instance, if +@option{--no-ifhtml} is specified, then @samp{@@ifhtml} and +@samp{@@html} blocks will not be read. + @item --no-split @opindex --no-split @cindex Splitting of output files @@ -14058,7 +14232,7 @@ overridden by @option{-o}). Suppress the splitting stage of @code{makeinfo}. By default, large output files (where the size is greater than 70k bytes) are split into smaller subfiles. For Info output, each one is approximately 50k bytes. -For HTML output, each file contains one node (@pxref{makeinfo html}). +For HTML output, each file contains one node (@pxref{Generating HTML}). @item --no-pointer-validate @itemx --no-validate @@ -14097,7 +14271,7 @@ file name specified in the @code{@@setfilename} command found in the Texinfo source (@pxref{setfilename}). If @var{file} is @samp{-}, output goes to standard output and @samp{--no-split} is implied. For split HTML output, @var{file} is the name for the directory into which all -HTML nodes are written (@pxref{makeinfo html}). +HTML nodes are written (@pxref{Generating HTML}). @item -P @var{dir} @opindex -P @var{dir} @@ -14134,6 +14308,10 @@ Set the value of the number of references to a node that than this number of references in it, @code{makeinfo} will make the references but also report a warning. The default is 1000. +@item --split-size=@var{num} +@opindex --split-size=@var{num} +Keep Info files to at most @var{num} characters; default is 50,000. + @item -U @var{var} Cause @var{var} to be undefined. This is equivalent to @code{@@clear @var{var}} in the Texinfo file (@pxref{set clear value}). @@ -14248,7 +14426,7 @@ option is given. @node makeinfo in Emacs -@subsection Running @code{makeinfo} inside Emacs +@subsection Running @code{makeinfo} Within Emacs @cindex Running @code{makeinfo} in Emacs @cindex @code{makeinfo} inside Emacs @cindex Shell, running @code{makeinfo} in @@ -14270,11 +14448,9 @@ Format the current buffer for Info.@refill @findex makeinfo-buffer @end table -When you invoke either @code{makeinfo-region} or -@code{makeinfo-buffer}, Emacs prompts for a file name, offering the -name of the visited file as the default. You can edit the default -file name in the minibuffer if you wish, before pressing @key{RET} to -start the @code{makeinfo} process.@refill +When you invoke @code{makeinfo-region} the output goes to a temporary +buffer. When you invoke @code{makeinfo-buffer} output goes to the +file set with @code{@@setfilename} (@pxref{setfilename}). The Emacs @code{makeinfo-region} and @code{makeinfo-buffer} commands run the @code{makeinfo} program in a temporary shell buffer. If @@ -14324,8 +14500,8 @@ For example, you could write the following in your @file{.emacs} file:@refill @example @group (setq makeinfo-options - "--paragraph-indent=0 --no-split - --fill-column=70 --verbose") + "--paragraph-indent=0 --no-split + --fill-column=70 --verbose") @end group @end example @@ -14505,7 +14681,7 @@ validate the structure of the nodes, see @ref{Using Info-validate}.@refill -@node makeinfo html +@node Generating HTML @subsection Generating HTML @cindex HTML @@ -14534,7 +14710,8 @@ Texinfo input marked up with the @code{@@ifhtml} command will produce output only with the @samp{--html} option supplied. Input marked up with the @code{@@html} is passed literally to the output (suppressing the normal escaping of input @samp{<}, @samp{>} and @samp{&} characters -which have special significance in HTML). +which have special significance in HTML). Similarly for the +@option{--xml} option and @code{@@ifxml} and @code{@@xml} sections. The @samp{--footnote-style} option is currently ignored for HTML output; footnotes are linked to the end of the output file. @@ -14571,9 +14748,9 @@ into Emacs. (@inforef{Top, info, info}, for an introduction to Info.) * Directory File:: The top level menu for all Info files. * New Info File:: Listing a new Info file. * Other Info Directories:: How to specify Info files that are - located in other directories. + located in other directories. * Installing Dir Entries:: How to specify what menu entry to add - to the Info directory. + to the Info directory. * Invoking install-info:: @code{install-info} options. @end menu @@ -14596,10 +14773,10 @@ this:@refill * Menu: * Info: (info). Documentation browsing system. * Emacs: (emacs). The extensible, self-documenting - text editor. + text editor. * Texinfo: (texinfo). With one source file, make - either a printed manual using - @@TeX@{@} or an Info file. + either a printed manual using + @@TeX@{@} or an Info file. @dots{} @end group @end example @@ -14712,8 +14889,8 @@ Alternatively, you could write the following in your @file{.emacs} file: @group (require 'info) (setq Info-directory-list - (cons (expand-file-name "/home/bob/info") - Info-directory-list)) + (cons (expand-file-name "/home/bob/info") + Info-directory-list)) @end group @end example @@ -14850,26 +15027,33 @@ If you use @code{@@dircategory} more than once in the Texinfo source, each usage specifies the `current' category; any subsequent @code{@@direntry} commands will add to that category. -Here are some recommended @code{@@dircategory} categories: - +@cindex Free Software Directory +@cindex Dir categories, choosing +@cindex Categories, choosing +When choosing the categories for @code{@@dircategory}, we recommend +consulting the @uref{Free Sofware Directory, +http://www.gnu.org/directory}. If your program is not listed there, or +listed incorrectly or incompletely, please report the situation to the +directory maintainers (@email{bug-directory@@gnu.org}) so that the +category names can be kept in sync. + +Here are a few examples: @display -GNU packages -GNU programming tools -GNU programming documentation -GNU Emacs Lisp -GNU libraries -TeX -Individual utilities +Emacs +Localization +Printing +Software Libraries @end display -The idea is to include the `Invoking' node for every program installed -by a package under `Individual utilities', and an entry for the manual -as a whole in the appropriate other category. +@cindex Invoking nodes, including in dir file +Each `Invoking' node for every program installed should have a +corresponding @code{@@direntry}. This lets users easily find the +documentation for the different programs they can run, as with the +traditional @command{man} system. @node Invoking install-info -@subsection Invoking install-info - +@subsection Invoking @command{install-info} @pindex install-info @code{install-info} inserts menu entries from an Info file into the @@ -14975,7 +15159,7 @@ information in the Info file itself. @itemx -V @opindex --version @opindex -V -@cindex version number, finding +@cindex version number, for install-info Display version information and exit successfully. @end table @@ -15210,8 +15394,7 @@ menus instead. @xref{Contents, , Generating a Table of Contents}.@refill @item @@copyright@{@} -Generate a copyright symbol. @xref{copyright symbol, , -@code{@@copyright}}.@refill +Generate a copyright symbol. @xref{copyright symbol,, @code{@@copyright@{@}}}. @ignore @item @@ctrl@{@var{ctrl-char}@} @@ -15560,13 +15743,13 @@ resp.@: @code{@@end ifinfo}. @xref{Conditionals}. @itemx @@ifnotinfo @itemx @@ifnotplaintext @itemx @@ifnottex +@itemx @@ifnotxml Begin a stretch of text that will be ignored in one output format but not the others. The text appears in the formats not specified: @code{@@ifnothtml} text is omitted from html output, etc. The exception is @code{@@ifnotinfo} text, which is omitted from plain text output as -well as Info output. Pair with @code{@@end ifnothtml} resp.@: -@code{@@end ifnotinfo} resp.@: @code{@@end ifnotplaintext} resp.@: -@code{@@end ifnottex}. @xref{Conditionals}. +well as Info output. Pair with the corresponding @code{@@end +ifnot@var{format}}. @xref{Conditionals}. @item @@ifplaintext Begin a stretch of text that appears only in the plain text output. @@ -15583,6 +15766,10 @@ Begin a stretch of text that will not appear in the Info file, but will be processed only by @TeX{}. Pair with @code{@@end iftex}. @xref{Conditionals, , Conditionally Visible Text}.@refill +@item @@ifxml +Begin a stretch of text that appears only in the XML output. +Pair with @code{@@end ifxml}. @xref{Conditionals}. + @item @@ignore Begin a stretch of text that will not appear in either the Info file or the printed output. Pair with @code{@@end ignore}. @@ -15977,6 +16164,10 @@ only, the filename, the current page number, and the title of the document, respectively. @xref{Custom Headings, , How to Make Your Own Headings}.@refill +@item @@tie@{@} +Generate a normal interword space at which a line break is not allowed. +@xref{tie,, @code{@@tie@{@}}}. + @item @@tieaccent@{@var{cc}@} Generate a tie-after accent over the next two characters @var{cc}, as in `@tieaccent{oo}'. @xref{Inserting Accents}. @@ -16323,11 +16514,11 @@ For example, @TeX{} fills the following: @example @group - @@kbd@{C-x v@} - @@kbd@{M-x vc-next-action@} - Perform the next logical operation - on the version-controlled file - corresponding to the current buffer. + @@kbd@{C-x v@} + @@kbd@{M-x vc-next-action@} + Perform the next logical operation + on the version-controlled file + corresponding to the current buffer. @end group @end example @@ -16337,10 +16528,10 @@ so it looks like this: @iftex @quotation - @kbd{C-x v} - @kbd{M-x vc-next-action} - Perform the next logical operation on the version-controlled file - corresponding to the current buffer. + @kbd{C-x v} + @kbd{M-x vc-next-action} + Perform the next logical operation on the version-controlled file + corresponding to the current buffer. @end quotation @end iftex @ifinfo @@ -16531,12 +16722,14 @@ Write notes for yourself at the very end of a Texinfo file after the @cindex Sample Texinfo files The first example is from the first chapter (@pxref{Short Sample}), -given here in its entirety, without commentary. The second sample +given here in its entirety, without commentary. The second includes the full texts to be used in GNU manuals. @menu * Short Sample Texinfo File:: * GNU Sample Texts:: +* Verbatim Copying License:: +* All-permissive Copying License:: @end menu @@ -16564,7 +16757,7 @@ it for a printed manual. @@copying This is a short example of a complete Texinfo file. -Copyright (C) 2002 Free Software Foundation, Inc. +Copyright (C) 2003 Free Software Foundation, Inc. @@end copying @@titlepage @@ -16579,13 +16772,14 @@ Copyright (C) 2002 Free Software Foundation, Inc. @@ifnottex @@node Top +@@top GNU Sample @@insertcopying @@end ifnottex @@menu * First Chapter:: The first chapter is the - only chapter in this sample. + only chapter in this sample. * Index:: Complete index. @@end menu @@ -16625,8 +16819,8 @@ This is the second item. @cindex Sample texts, GNU @cindex Full texts, GNU -Here is a sample Texinfo document with the full texts that should be -used in GNU manuals. +Following is a sample Texinfo document with the full texts that should +be used in GNU manuals. As well as the legal texts, it also serves as a practical example of how many elements in a GNU system can affect the manual. If you're not @@ -16643,28 +16837,38 @@ Here are some notes on the example: @itemize @bullet @item -@cindex $Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $ comment -@cindex CVS $Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $, in Texinfo -@cindex RCS $Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $, in Texinfo -The @samp{$Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $} comment is for CVS (@pxref{Top,, Overview, cvs, +@cindex $Id: +@cindex CVS $Id: +@cindex RCS $Id: +@cindex Documentation identification +@cindex Identification of documentation +The @samp{$Id:} comment is for the CVS (@pxref{Top,, Overview, cvs, Concurrent Versions System}) or RCS (see rcsintro(1)) version control systems, which expand it into a string such as: @example -$Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $ +$Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $ @end example (This is useful in all sources that use version control, not just manuals.) +You may wish to include the @samp{$Id:} comment in the @code{@@copying} +text, if you want a completely unambiguous reference to the +documentation version. @item @pindex automake@r{, and version info} +@vindex UPDATED @r{Automake variable} +@vindex VERSION @r{Automake variable} +@pindex time-stamp.el The @file{version.texi} in the @code{@@include} command is maintained automatically by Automake (@pxref{Top,, Introduction, automake, GNU Automake}). It sets the @samp{VERSION} and @samp{UPDATED} values used -elsewhere. If your distribution doesn't use Automake, you can mimic -these or equivalent settings. +elsewhere. If your distribution doesn't use Automake, but you do use +Emacs, you may find the time-stamp.el package helpful (@pxref{Time +Stamps,,,emacs,The GNU Emacs Manual}). @item -The @code{@@syncodeindex} command reflects the recommendation to use only -one index if at all possible, to make it easier for readers. +The @code{@@syncodeindex} command reflects the recommendation to use +only one index where possible, to make it easier for readers to look up +index entries. @item The @code{@@dircategory} is for constructing the Info directory. @@ -16677,12 +16881,14 @@ information about command-line usage of a given program. @xref{Manual Structure Details,,,standards, GNU Coding Standards}. @item +@cindex GNU Free Documentation License, including entire +@cindex Free Documentation License, including entire It is best to include the entire GNU Free Documentation License in a GNU manual, unless the manual is only a few pages long. Of course this sample is even shorter than that, but it includes the FDL anyway in -order to show one conventional way of doing so. The @file{fdl.texi} -file is available on the GNU machines (and in the Texinfo and other GNU -distributions). +order to show one conventional way to do so. The @file{fdl.texi} file +is available on the GNU machines and in the Texinfo and other GNU +source distributions. The FDL provides for omitting itself under certain conditions, but in that case the sample texts given here have to be modified. @xref{GNU @@ -16690,34 +16896,38 @@ Free Documentation License}. @item If your manual has invariant sections (again, see the license itself for -details), then don't forget to include them. +details), then don't forget to change the text here accordingly. + +@item +For documents that express your personal views, feelings or experiences, +it is more appropriate to use a license permitting only verbatim +copying, rather than the FDL. @xref{Verbatim Copying License}. + @end itemize Here is the sample document: -@c We do the first part of this with @example instead of @verbatim -@c because the literal @setfilename and @include confuse Automake. Argh. -@example -\input texinfo @@c -*-texinfo-*- -@@comment $Id: texinfo.txi,v 1.219 2002/03/28 16:36:00 karl Exp $ -@@comment %**start of header -@@setfilename sample.info -@@include version.texi -@@settitle GNU Sample @@value@{VERSION@} -@@syncodeindex pg cp -@@comment %**end of header -@@copying +@verbatim +\input texinfo @c -*-texinfo-*- +@comment $Id: texinfo.txi,v 1.29 2003/02/04 15:17:21 karl Exp $ +@comment %**start of header +@setfilename sample.info +@include version.texi +@settitle GNU Sample @value{VERSION} +@syncodeindex pg cp +@comment %**end of header +@copying This manual is for GNU Sample -(version @@value@{VERSION@}, @@value@{UPDATED@}), +(version @value{VERSION}, @value{UPDATED}), which is an example in the Texinfo documentation. -Copyright @@copyright@{@} 2002 Free Software Foundation, Inc. +Copyright @copyright{} 2003 Free Software Foundation, Inc. -@@quotation +@quotation 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 no -Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' +Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``GNU Free Documentation License.'' @@ -16725,66 +16935,127 @@ License.'' (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.'' -@@end quotation -@@end copying +@end quotation +@end copying -@@dircategory Texinfo documentation system -@@direntry +@dircategory Texinfo documentation system +@direntry * sample: (sample)Invoking sample. -@@end direntry +@end direntry -@@titlepage -@@title GNU Sample -@@subtitle for version @@value@{VERSION@}, @@value@{UPDATED@} -@@author A.U. Thor (@@email@{bug-texinfo@@@@gnu.org@}) -@@page -@@vskip 0pt plus 1filll -@@insertcopying -@@end titlepage +@titlepage +@title GNU Sample +@subtitle for version @value{VERSION}, @value{UPDATED} +@author A.U. Thor (@email{bug-texinfo@@gnu.org}) +@page +@vskip 0pt plus 1filll +@insertcopying +@end titlepage -@@contents +@contents -@@ifnottex -@@node Top -@@top GNU Sample +@ifnottex +@node Top +@top GNU Sample -@@insertcopying -@@end ifnottex +@insertcopying +@end ifnottex -@@menu +@menu * Invoking sample:: * Copying This Manual:: * Index:: -@@end menu +@end menu -@@node Invoking sample -@@chapter Invoking sample +@node Invoking sample +@chapter Invoking sample -@@pindex sample -@@cindex invoking @@command@{sample@} +@pindex sample +@cindex invoking @command{sample} This is a sample manual. There is no sample program to invoke, but if there was, you could see its basic usage and command line options here. -@@node Copying This Manual -@@appendix Copying This Manual +@node Copying This Manual +@appendix Copying This Manual -@@menu +@menu * GNU Free Documentation License:: License for copying this manual. -@@end menu +@end menu -@@include fdl.texi +@include fdl.texi -@@node Index -@@unnumbered Index +@node Index +@unnumbered Index -@@printindex cp +@printindex cp -@@bye +@bye +@end verbatim + + +@node Verbatim Copying License +@section Verbatim Copying License + +@cindex Verbatim copying license +@cindex License for verbatim copying + +For software manuals and other documentation, it is important to use a +license permitting free redistribution and updating, so that when a free +program is changed, the documentation can be updated as well. + +On the other hand, for documents that express your personal views, +feelings or experiences, it is more appropriate to use a license +permitting only verbatim copying. + +Here is sample text for such a license permitting verbatim copying only. +This is just the license text itself. For a complete sample document, +see the previous sections. + +@verbatim +@copying +This document is a sample for allowing verbatim copying only. + +Copyright @copyright{} 2003 Free Software Foundation, Inc. + +@quotation +Permission is granted to make and distribute verbatim copies +of this entire document without royalty provided the +copyright notice and this permission notice are preserved. +@end quotation +@end copying +@end verbatim + + +@node All-permissive Copying License +@section All-permissive Copying License + +@cindex All-permissive copying license +@cindex License for all-permissive copying + +For software manuals and other documentation, it is important to use a +license permitting free redistribution and updating, so that when a free +program is changed, the documentation can be updated as well. + +On the other hand, for small supporting files, short manuals (under 300 +lines long) and rough documentation (README files, INSTALL files, etc.), +the full FDL would be overkill. They can use a simple all-permissive +license. + +Here is sample text for such an all-permissive license. This is just +the license text itself. For a complete sample document, see the +previous sections. + +@example +Copyright @copyright{} 2003 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. @end example @@ -16804,27 +17075,32 @@ conveniently small parts. @menu * Using Include Files:: How to use the @code{@@include} command. * texinfo-multiple-files-update:: How to create and update nodes and - menus when using included files. -* Include File Requirements:: What @code{texinfo-multiple-files-update} expects. + menus when using included files. +* Include Files Requirements:: What @code{texinfo-multiple-files-update} expects. * Sample Include File:: A sample outer file with included files - within it; and a sample included file. + within it; and a sample included file. * Include Files Evolution:: How use of the @code{@@include} command - has changed over time. + has changed over time. @end menu -@node Using Include Files, texinfo-multiple-files-update, Include Files, Include Files +@node Using Include Files @section How to Use Include Files @findex include To include another file within a Texinfo file, write the @code{@@include} command at the beginning of a line and follow it on -the same line by the name of a file to be included. For -example:@refill +the same line by the name of a file to be included. For example: @example @@include buffers.texi @end example +The name of the file is taken literally, with a single exception: +@code{@@value@{@var{var}@}} references are expanded. This makes it +possible to reliably include files in other directories in a +distribution. @xref{verbatiminclude,,@code{@@verbatiminclude}}, for +an example. + An included file should simply be a segment of text that you expect to be included as is into the overall or @dfn{outer} Texinfo file; it should not contain the standard beginning and end parts of a Texinfo @@ -16832,7 +17108,7 @@ file. In particular, you should not start an included file with a line saying @samp{\input texinfo}; if you do, that phrase is inserted into the output file as is. Likewise, you should not end an included file with an @code{@@bye} command; nothing after @code{@@bye} is -formatted.@refill +formatted. In the past, you were required to write an @code{@@setfilename} line at the beginning of an included file, but no longer. Now, it does not matter @@ -16853,7 +17129,8 @@ whole file. Either you must insert the menus and the `Next', Texinfo mode command, @code{texinfo-multiple-files-update}, that is designed for @code{@@include} files.@refill -@node texinfo-multiple-files-update, Include File Requirements, Using Include Files, Include Files + +@node texinfo-multiple-files-update @section @code{texinfo-multiple-files-update} @findex texinfo-multiple-files-update @@ -16930,9 +17207,9 @@ updates @strong{every} pointer and menu in @strong{all} the files and then inser master menu.@refill -@node Include File Requirements -@section Include File Requirements -@cindex Include file requirements +@node Include Files Requirements +@section Include Files Requirements +@cindex Include files requirements @cindex Requirements for include files If you plan to use the @code{texinfo-multiple-files-update} command, @@ -16956,58 +17233,40 @@ should @emph{not} contain any nodes besides the single `Top' node. The @code{texinfo-multiple-files-update} command will not process them.@refill -@node Sample Include File, Include Files Evolution, Include File Requirements, Include Files + +@node Sample Include File @section Sample File with @code{@@include} @cindex Sample @code{@@include} file @cindex Include file sample @cindex @code{@@include} file sample -Here is an example of a complete outer Texinfo file with @code{@@include} files +Here is an example of an outer Texinfo file with @code{@@include} files within it before running @code{texinfo-multiple-files-update}, which -would insert a main or master menu:@refill +would insert a main or master menu: @example @group \input texinfo @@c -*-texinfo-*- @c %**start of header -@@setfilename include-example.info +@@setfilename include-example.info @@settitle Include Example @c %**end of header @end group -@group -@@setchapternewpage odd -@@titlepage -@@sp 12 -@@center @@titlefont@{Include Example@} -@@sp 2 -@@center by Whom Ever -@end group - -@group -@@page -@@vskip 0pt plus 1filll -Copyright @@copyright@{@} 2002 Free Software Foundation, Inc. -@@end titlepage -@end group +... @xref{Sample Texinfo Files}, for +examples of the rest of the frontmatter ... @group -@@ifinfo -@@node Top, First, , (dir) -@@top Master Menu -@@end ifinfo +@@ifnottex +@@node Top +@@top Include Example +@@end ifnottex @end group @group @@include foo.texinfo @@include bar.texinfo @@include concept-index.texinfo -@end group - -@group -@@summarycontents -@@contents - @@bye @end group @end example @@ -17016,7 +17275,7 @@ An included file, such as @file{foo.texinfo}, might look like this: @example @group -@@node First, Second, , Top +@@node First @@chapter First Chapter Contents of first chapter @dots{} @@ -17037,7 +17296,7 @@ The full contents of @file{concept-index.texinfo} might be as simple as this: The outer Texinfo source file for @cite{The GNU Emacs Lisp Reference Manual} is named @file{elisp.texi}. This outer file contains a master menu with 417 entries and a list of 41 @code{@@include} -files.@refill +files. @node Include Files Evolution @@ -17158,13 +17417,13 @@ A single-sided page looks like this: @example @group - _______________________ - | | - | chapter page number | - | | - | Start of text ... | - | ... | - | | + _______________________ + | | + | chapter page number | + | | + | Start of text ... | + | ... | + | | @end group @end example @@ -17190,13 +17449,13 @@ Two pages, side by side as in an open book, look like this:@refill @example @group - _______________________ _______________________ - | | | | - | page number title | | chapter page number | - | | | | - | Start of text ... | | More text ... | - | ... | | ... | - | | | | + _______________________ _______________________ + | | | | + | page number title | | chapter page number | + | | | | + | Start of text ... | | More text ... | + | ... | | ... | + | | | | @end group @end example @@ -17484,10 +17743,10 @@ occurs, or not long after it. The buffer will look like this:@refill * Menu: * Using texinfo-show-structure:: How to use - `texinfo-show-structure' - to catch mistakes. + `texinfo-show-structure' + to catch mistakes. * Running Info-Validate:: How to check for - unreferenced nodes. + unreferenced nodes. @@end menus @point{} ---------- Buffer: *Info Region* ---------- @@ -17599,21 +17858,21 @@ invoked the debugger. This is the backtrace it produced:@refill @example ---------- Buffer: *Backtrace* ---------- Signalling: (search-failed "[@},]") - re-search-forward("[@},]") - (while ...) - (let ...) - texinfo-format-parse-args() - (let ...) - texinfo-format-xref() - funcall(texinfo-format-xref) - (if ...) - (let ...) - (if ...) - (while ...) - texinfo-format-scan() - (save-excursion ...) - (let ...) - texinfo-format-region(103370 103631) + re-search-forward("[@},]") + (while ...) + (let ...) + texinfo-format-parse-args() + (let ...) + texinfo-format-xref() + funcall(texinfo-format-xref) + (if ...) + (let ...) + (if ...) + (while ...) + texinfo-format-scan() + (save-excursion ...) + (let ...) + texinfo-format-region(103370 103631) * call-interactively(texinfo-format-region) ---------- Buffer: *Backtrace* ---------- @end example @@ -17668,7 +17927,7 @@ Runaway argument? indices.) @@refill @@ETC. ! Paragraph ended before @@xref was complete. <to be read again> - @@par + @@par l.27 ? @@ -17784,18 +18043,18 @@ produced by running @code{texinfo-show-structure} on this manual:@refill @example @group - Lines matching "^@@\\(chapter \\|sect\\|subs\\|subh\\| - unnum\\|major\\|chapheading \\|heading \\|appendix\\)" - in buffer texinfo.texi. - @dots{} - 4177:@@chapter Nodes - 4198: @@heading Two Paths - 4231: @@section Node and Menu Illustration - 4337: @@section The @@code@{@@@@node@} Command - 4393: @@subheading Choosing Node and Pointer Names - 4417: @@subsection How to Write an @@code@{@@@@node@} Line - 4469: @@subsection @@code@{@@@@node@} Line Tips - @dots{} +Lines matching "^@@\\(chapter \\|sect\\|subs\\|subh\\| +unnum\\|major\\|chapheading \\|heading \\|appendix\\)" +in buffer texinfo.texi. +@dots{} +4177:@@chapter Nodes +4198: @@heading Two Paths +4231: @@section Node and Menu Illustration +4337: @@section The @@code@{@@@@node@} Command +4393: @@subheading Choosing Node and Pointer Names +4417: @@subsection How to Write an @@code@{@@@@node@} Line +4469: @@subsection @@code@{@@@@node@} Line Tips +@dots{} @end group @end example @@ -18591,7 +18850,7 @@ For an example of Lisp code. @item @@smallexample @itemx @@smalllisp -Like @@table and @@lisp @r{but for} @@smallbook. +Like @@table and @@lisp, but for (originally) @@smallbook. @end table @c subheading Conditionals diff --git a/contrib/texinfo/doc/version-stnd.texi b/contrib/texinfo/doc/version-stnd.texi index cbc67f4..d706a46 100644 --- a/contrib/texinfo/doc/version-stnd.texi +++ b/contrib/texinfo/doc/version-stnd.texi @@ -1,4 +1,4 @@ -@set UPDATED 23 March 2002 -@set UPDATED-MONTH March 2002 -@set EDITION 4.2 -@set VERSION 4.2 +@set UPDATED 5 November 2002 +@set UPDATED-MONTH November 2002 +@set EDITION 4.5 +@set VERSION 4.5 diff --git a/contrib/texinfo/doc/version.texi b/contrib/texinfo/doc/version.texi index c21b39a..90655a9 100644 --- a/contrib/texinfo/doc/version.texi +++ b/contrib/texinfo/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 28 March 2002 -@set UPDATED-MONTH March 2002 -@set EDITION 4.2 -@set VERSION 4.2 +@set UPDATED 4 February 2003 +@set UPDATED-MONTH February 2003 +@set EDITION 4.5 +@set VERSION 4.5 diff --git a/contrib/texinfo/info/README b/contrib/texinfo/info/README index 5cc0791..5ea39e2 100644 --- a/contrib/texinfo/info/README +++ b/contrib/texinfo/info/README @@ -1,3 +1,12 @@ +$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $ +texinfo/info/README + + Copyright (C) 2002 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + Info 2.0 is a complete rewrite of the original standalone Info I wrote in 1987, the first program I wrote for rms. That program was something like my second Unix program ever, and my die-hard machine language coding habits diff --git a/contrib/texinfo/info/dir.c b/contrib/texinfo/info/dir.c index 94380f5..626407f 100644 --- a/contrib/texinfo/info/dir.c +++ b/contrib/texinfo/info/dir.c @@ -1,7 +1,7 @@ /* dir.c -- how to build a special "dir" node from "localdir" files. - $Id: dir.c,v 1.7 1998/06/28 19:51:36 karl Exp $ + $Id: dir.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/display.c b/contrib/texinfo/info/display.c index b6b55ff..aba4a4b 100644 --- a/contrib/texinfo/info/display.c +++ b/contrib/texinfo/info/display.c @@ -1,5 +1,5 @@ /* display.c -- How to display Info windows. - $Id: display.c,v 1.7 2002/03/08 21:41:44 karl Exp $ + $Id: display.c,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1993, 97 Free Software Foundation, Inc. diff --git a/contrib/texinfo/info/display.h b/contrib/texinfo/info/display.h index 4398135..f1cf8c0 100644 --- a/contrib/texinfo/info/display.h +++ b/contrib/texinfo/info/display.h @@ -1,5 +1,5 @@ /* display.h -- How the display in Info is done. - $Id: display.h,v 1.2 1997/07/15 18:37:29 karl Exp $ + $Id: display.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/doc.h b/contrib/texinfo/info/doc.h index 53597d1..00c22e5 100644 --- a/contrib/texinfo/info/doc.h +++ b/contrib/texinfo/info/doc.h @@ -1,5 +1,5 @@ /* doc.h -- Structures associating function pointers with documentation. - $Id: doc.h,v 1.5 2001/11/16 23:16:40 karl Exp $ + $Id: doc.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1993, 2001 Free Software Foundation, Inc. diff --git a/contrib/texinfo/info/echo-area.c b/contrib/texinfo/info/echo-area.c index 078e8e7..8954571 100644 --- a/contrib/texinfo/info/echo-area.c +++ b/contrib/texinfo/info/echo-area.c @@ -1,7 +1,7 @@ /* echo-area.c -- how to read a line in the echo area. - $Id: echo-area.c,v 1.15 2001/12/12 16:19:39 karl Exp $ + $Id: echo-area.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98, 99, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/echo-area.h b/contrib/texinfo/info/echo-area.h index 7feec06..e8b57cb 100644 --- a/contrib/texinfo/info/echo-area.h +++ b/contrib/texinfo/info/echo-area.h @@ -1,5 +1,5 @@ /* echo-area.h -- Functions used in reading information from the echo area. - $Id: echo-area.h,v 1.3 1997/07/15 18:38:21 karl Exp $ + $Id: echo-area.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/filesys.c b/contrib/texinfo/info/filesys.c index 7ce6017..83618f1 100644 --- a/contrib/texinfo/info/filesys.c +++ b/contrib/texinfo/info/filesys.c @@ -1,7 +1,8 @@ /* filesys.c -- filesystem specific functions. - $Id: filesys.c,v 1.15 2002/03/23 20:45:24 karl Exp $ + $Id: filesys.c,v 1.3 2003/01/31 19:18:11 karl Exp $ - Copyright (C) 1993, 97, 98, 2000 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2000, 2002, 2003 Free Software + Foundation, Inc. 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 @@ -266,43 +267,43 @@ info_absolute_file (fname) return info_file_in_path (filename_non_directory (fname), containing_dir); } -/* Given a string containing units of information separated by - the PATH_SEP character, return the next one pointed to by - IDX, or NULL if there are no more. - Advance IDX to the character after the colon. */ + +/* Given a string containing units of information separated by the + PATH_SEP character, return the next one after IDX, or NULL if there + are no more. Advance IDX to the character after the colon. */ + char * extract_colon_unit (string, idx) char *string; int *idx; { - register int i, start; + int i = *idx; + int start = *idx; - i = start = *idx; - if ((i >= strlen (string)) || !string) - return ((char *) NULL); + if (!string || i >= strlen (string)) + return NULL; + /* Advance to next PATH_SEP. */ while (string[i] && string[i] != PATH_SEP[0]) i++; - if (i == start) - { - return ((char *) NULL); - } - else - { - char *value; - - value = (char *) xmalloc (1 + (i - start)); - strncpy (value, &string[start], (i - start)); - value[i - start] = '\0'; - if (string[i]) - ++i; - *idx = i; - return (value); - } + + if (!string[i] && i == start) /* end of string, and didn't advance */ + return NULL; + + { + char *value = xmalloc ((i - start) + 1); + strncpy (value, &string[start], (i - start)); + value[i - start] = 0; + + i++; /* move past PATH_SEP */ + *idx = i; + return value; + } } /* A structure which associates a filename with its expansion. */ -typedef struct { +typedef struct +{ char *filename; char *expansion; } FILENAME_LIST; diff --git a/contrib/texinfo/info/filesys.h b/contrib/texinfo/info/filesys.h index 06573ef..5b7f5b7 100644 --- a/contrib/texinfo/info/filesys.h +++ b/contrib/texinfo/info/filesys.h @@ -1,7 +1,7 @@ /* filesys.h -- external declarations for filesys.c. - $Id: filesys.h,v 1.5 1998/07/21 22:25:44 karl Exp $ + $Id: filesys.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/footnotes.c b/contrib/texinfo/info/footnotes.c index c891e39..7abb8a6 100644 --- a/contrib/texinfo/info/footnotes.c +++ b/contrib/texinfo/info/footnotes.c @@ -1,7 +1,7 @@ /* footnotes.c -- Some functions for manipulating footnotes. - $Id: footnotes.c,v 1.9 1999/09/25 16:10:04 karl Exp $ + $Id: footnotes.c,v 1.2 2002/11/06 00:41:17 karl Exp $ - Copyright (C) 1993, 97, 98, 99 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc. 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 @@ -21,8 +21,8 @@ #include "info.h" -/* Non-zero means attempt to show footnotes when displaying a new window. */ -int auto_footnotes_p = 1; +/* Nonzero means attempt to show footnotes when displaying a new window. */ +int auto_footnotes_p = 0; static char *footnote_nodename = "*Footnotes*"; diff --git a/contrib/texinfo/info/footnotes.h b/contrib/texinfo/info/footnotes.h index a0d4fb0..6fd42a3 100644 --- a/contrib/texinfo/info/footnotes.h +++ b/contrib/texinfo/info/footnotes.h @@ -1,7 +1,7 @@ /* footnotes.h -- Some functions for manipulating footnotes. - $Id: footnotes.h,v 1.4 1998/11/29 21:44:49 karl Exp $ + $Id: footnotes.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/gc.h b/contrib/texinfo/info/gc.h index b4d993a..832cd53 100644 --- a/contrib/texinfo/info/gc.h +++ b/contrib/texinfo/info/gc.h @@ -1,5 +1,5 @@ /* gc.h -- Functions for garbage collecting unused node contents. - $Id: gc.h,v 1.2 1997/07/15 18:41:53 karl Exp $ + $Id: gc.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/indices.c b/contrib/texinfo/info/indices.c index 9123c46..4e3a3be 100644 --- a/contrib/texinfo/info/indices.c +++ b/contrib/texinfo/info/indices.c @@ -1,7 +1,7 @@ /* indices.c -- deal with an Info file index. - $Id: indices.c,v 1.15 2002/03/11 13:43:52 karl Exp $ + $Id: indices.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98, 99, 2002 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/indices.h b/contrib/texinfo/info/indices.h index 8b8a707..b5f74bb 100644 --- a/contrib/texinfo/info/indices.h +++ b/contrib/texinfo/info/indices.h @@ -1,5 +1,5 @@ /* indices.h -- Functions defined in indices.c. - $Id: indices.h,v 1.2 1997/07/06 20:50:29 karl Exp $ + $Id: indices.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/info-utils.c b/contrib/texinfo/info/info-utils.c index 73a8081..611ca15 100644 --- a/contrib/texinfo/info/info-utils.c +++ b/contrib/texinfo/info/info-utils.c @@ -1,5 +1,5 @@ /* info-utils.c -- miscellanous. - $Id: info-utils.c,v 1.8 2002/03/08 21:41:44 karl Exp $ + $Id: info-utils.c,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1993, 98 Free Software Foundation, Inc. diff --git a/contrib/texinfo/info/info-utils.h b/contrib/texinfo/info/info-utils.h index 24cc482..5475fda 100644 --- a/contrib/texinfo/info/info-utils.h +++ b/contrib/texinfo/info/info-utils.h @@ -1,7 +1,7 @@ /* info-utils.h -- Exported functions and variables from info-utils.c. - $Id: info-utils.h,v 1.5 1998/08/10 18:07:28 karl Exp $ + $Id: info-utils.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 96, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1996, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/info.c b/contrib/texinfo/info/info.c index 4533507..5d1be7f 100644 --- a/contrib/texinfo/info/info.c +++ b/contrib/texinfo/info/info.c @@ -1,7 +1,7 @@ /* info.c -- Display nodes of Info files in multiple windows. - $Id: info.c,v 1.60 2002/03/11 19:54:29 karl Exp $ + $Id: info.c,v 1.2 2003/01/19 18:45:59 karl Exp $ - Copyright (C) 1993, 96, 97, 98, 99, 2000, 01, 02 + Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -280,7 +280,7 @@ main (argc, argv) There is NO warranty. You may redistribute this software\n\ under the terms of the GNU General Public License.\n\ For more information about these matters, see the files named COPYING.\n"), - "2002"); + "2003"); xexit (0); } diff --git a/contrib/texinfo/info/info.h b/contrib/texinfo/info/info.h index 1746660..6e58b17 100644 --- a/contrib/texinfo/info/info.h +++ b/contrib/texinfo/info/info.h @@ -1,7 +1,7 @@ /* info.h -- Header file which includes all of the other headers. - $Id: info.h,v 1.16 2002/02/23 19:12:02 karl Exp $ + $Id: info.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98, 99, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/infodoc.c b/contrib/texinfo/info/infodoc.c index 731cb48..830d8c0 100644 --- a/contrib/texinfo/info/infodoc.c +++ b/contrib/texinfo/info/infodoc.c @@ -1,7 +1,8 @@ -/* infodoc.c -- Functions which build documentation nodes. - $Id: infodoc.c,v 1.28 2002/02/27 13:37:33 karl Exp $ +/* infodoc.c -- functions which build documentation nodes. + $Id: infodoc.c,v 1.5 2002/11/06 00:40:08 karl Exp $ - Copyright (C) 1993, 97, 98, 99, 2001, 02 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002 Free Software + Foundation, Inc. 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 @@ -66,12 +67,12 @@ static char *info_internal_help_text[] = { "\n", N_("Moving within a node:\n\ ---------------------\n"), - N_("\\%-10[scroll-forward] Scroll forward a page.\n"), - N_("\\%-10[scroll-backward] Scroll backward a page.\n"), N_("\\%-10[beginning-of-node] Go to the beginning of this node.\n"), N_("\\%-10[end-of-node] Go to the end of this node.\n"), - N_("\\%-10[scroll-forward] Scroll forward 1 line.\n"), - N_("\\%-10[scroll-backward] Scroll backward 1 line.\n"), + N_("\\%-10[next-line] Scroll forward 1 line.\n"), + N_("\\%-10[prev-line] Scroll backward 1 line.\n"), + N_("\\%-10[scroll-forward] Scroll forward a page.\n"), + N_("\\%-10[scroll-backward] Scroll backward a page.\n"), "\n", N_("Other commands:\n\ ---------------\n"), @@ -226,7 +227,7 @@ dump_map_to_message_buffer (prefix, map) if (last - 1 != i) { printf_to_message_buffer ("%s .. ", pretty_keyseq (new_prefix)); - new_prefix[prefix_len] = last - 1; + new_prefix[prefix_len] = last - 1; printf_to_message_buffer ("%s\t", pretty_keyseq (new_prefix)); i = last - 1; } @@ -329,29 +330,29 @@ create_internal_info_help_node (help_is_only_window_p) InfoCommand *cmd = DocInfoCmd(&function_doc_array[i]); if (InfoFunction(cmd) != info_do_lowercase_version - && !where_is_internal (info_keymap, cmd) + && !where_is_internal (info_keymap, cmd) && !where_is_internal (echo_area_keymap, cmd)) { if (!printed_one_mx) { printf_to_message_buffer ("---------------------\n\n"); - if (exec_keys && exec_keys[0]) - printf_to_message_buffer - (_("The following commands can only be invoked via %s:\n\n"), exec_keys); - else - printf_to_message_buffer - (_("The following commands cannot be invoked at all:\n\n")); + if (exec_keys && exec_keys[0]) + printf_to_message_buffer + (_("The following commands can only be invoked via %s:\n\n"), exec_keys); + else + printf_to_message_buffer + (_("The following commands cannot be invoked at all:\n\n")); printed_one_mx = 1; } printf_to_message_buffer ("%s %s\n %s\n", - exec_keys, + exec_keys, function_doc_array[i].func_name, replace_in_documentation (strlen (function_doc_array[i].doc) - ? _(function_doc_array[i].doc) - : "") - ); + ? _(function_doc_array[i].doc) + : "") + ); } } @@ -661,7 +662,7 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY")) return; } - *k++ = '\e'; + *k++ = '\e'; keystroke = UnMeta (keystroke); map = (Keymap)map[ESC].function; } @@ -686,28 +687,28 @@ DECLARE_INFO_COMMAND (describe_key, _("Print documentation for KEY")) char *keyname, *message, *fundoc, *funname = ""; #if defined (INFOKEY) - /* If the key is bound to do-lowercase-version, but its - lower-case variant is undefined, say that this key is - also undefined. This is especially important for unbound - edit keys that emit an escape sequence: it's terribly - confusing to see a message "Home (do-lowercase-version)" - or some such when Home is unbound. */ - if (InfoFunction(map[keystroke].function) == info_do_lowercase_version) - { - unsigned char lowerkey = Meta_p(keystroke) - ? Meta (tolower (UnMeta (keystroke))) - : tolower (keystroke); - - if (map[lowerkey].function == (InfoCommand *)NULL) - { - message_in_echo_area (_("%s is undefined."), - pretty_keyseq (keys)); - return; - } - } + /* If the key is bound to do-lowercase-version, but its + lower-case variant is undefined, say that this key is + also undefined. This is especially important for unbound + edit keys that emit an escape sequence: it's terribly + confusing to see a message "Home (do-lowercase-version)" + or some such when Home is unbound. */ + if (InfoFunction(map[keystroke].function) == info_do_lowercase_version) + { + unsigned char lowerkey = Meta_p(keystroke) + ? Meta (tolower (UnMeta (keystroke))) + : tolower (keystroke); + + if (map[lowerkey].function == (InfoCommand *)NULL) + { + message_in_echo_area (_("%s is undefined."), + pretty_keyseq (keys)); + return; + } + } #endif - keyname = pretty_keyseq (keys); + keyname = pretty_keyseq (keys); #if defined (NAMED_FUNCTIONS) funname = function_name (map[keystroke].function); @@ -878,7 +879,7 @@ strrpbrk (s, f) { for (t = f; *t; t++) if (*e == *t) - return (char *)e; + return (char *)e; } return NULL; } @@ -905,146 +906,146 @@ replace_in_documentation (string, help_is_only_window_p) /* Is this the start of a replaceable function name? */ if (string[i] == '\\') - { - char *fmt = NULL; - unsigned min = 0; - unsigned max = 0; - - if(string[j] == '%') - { - if (string[++j] == '-') - j++; - if (isdigit(string[j])) - { - min = atoi(string + j); - while (isdigit(string[j])) - j++; - if (string[j] == '.' && isdigit(string[j + 1])) - { - j += 1; - max = atoi(string + j); - while (isdigit(string[j])) - j++; - } - fmt = (char *)xmalloc (j - i + 2); - strncpy (fmt, string + i + 1, j - i); - fmt[j - i - 1] = 's'; - fmt[j - i] = '\0'; - } - else - j = i + 1; - } - if (string[j] == '[') - { - unsigned arg = 0; - char *argstr = NULL; - char *rep_name, *fun_name, *rep; - InfoCommand *command; - char *repstr = NULL; - unsigned replen; - - /* Copy in the old text. */ - strncpy (result + next, string + start, i - start); - next += (i - start); - start = j + 1; - - /* Look for an optional numeric arg. */ - i = start; - if (isdigit(string[i]) - || (string[i] == '-' && isdigit(string[i + 1])) ) - { - arg = atoi(string + i); - if (string[i] == '-') - i++; - while (isdigit(string[i])) - i++; - } - start = i; - - /* Move to the end of the function name. */ - for (i = start; string[i] && (string[i] != ']'); i++); - - rep_name = (char *)xmalloc (1 + i - start); - strncpy (rep_name, string + start, i - start); - rep_name[i - start] = '\0'; - - /* If we have only one window (because the window size was too - small to split it), we have to quit help by going back one - noew in the history list, not deleting the window. */ - if (strcmp (rep_name, "quit-help") == 0) - fun_name = help_is_only_window_p ? "history-node" - : "delete-window"; - else - fun_name = rep_name; - - /* Find a key which invokes this function in the info_keymap. */ - command = named_function (fun_name); - - free (rep_name); - - /* If the internal documentation string fails, there is a - serious problem with the associated command's documentation. - We croak so that it can be fixed immediately. */ - if (!command) - abort (); - - if (arg) - { - char *argrep, *p; - - argrep = where_is (info_keymap, InfoCmd(info_add_digit_to_numeric_arg)); - p = argrep ? strrpbrk (argrep, "0123456789-") : NULL; - if (p) - { - argstr = (char *)xmalloc (p - argrep + 21); - strncpy (argstr, argrep, p - argrep); - sprintf (argstr + (p - argrep), "%d", arg); - } - else - command = NULL; - } - rep = command ? where_is (info_keymap, command) : NULL; - if (!rep) - rep = "N/A"; - replen = (argstr ? strlen (argstr) + 1 : 0) + strlen (rep); - repstr = (char *)xmalloc (replen); - repstr[0] = '\0'; - if (argstr) - { - strcat(repstr, argstr); - strcat(repstr, " "); - free (argstr); - } - strcat(repstr, rep); - - if (fmt) - { - if (replen > max) - replen = max; - if (replen < min) - replen = min; - } - if (next + replen > reslen) - { - reslen = next + replen + 1; - result = (char *)xrealloc (result, reslen + 1); - } - - if (fmt) - sprintf (result + next, fmt, repstr); - else - strcpy (result + next, repstr); - - next = strlen (result); - free (repstr); - - start = i; - if (string[i]) - start++; - } - - maybe_free (fmt); - } + { + char *fmt = NULL; + unsigned min = 0; + unsigned max = 0; + + if(string[j] == '%') + { + if (string[++j] == '-') + j++; + if (isdigit(string[j])) + { + min = atoi(string + j); + while (isdigit(string[j])) + j++; + if (string[j] == '.' && isdigit(string[j + 1])) + { + j += 1; + max = atoi(string + j); + while (isdigit(string[j])) + j++; + } + fmt = (char *)xmalloc (j - i + 2); + strncpy (fmt, string + i + 1, j - i); + fmt[j - i - 1] = 's'; + fmt[j - i] = '\0'; + } + else + j = i + 1; + } + if (string[j] == '[') + { + unsigned arg = 0; + char *argstr = NULL; + char *rep_name, *fun_name, *rep; + InfoCommand *command; + char *repstr = NULL; + unsigned replen; + + /* Copy in the old text. */ + strncpy (result + next, string + start, i - start); + next += (i - start); + start = j + 1; + + /* Look for an optional numeric arg. */ + i = start; + if (isdigit(string[i]) + || (string[i] == '-' && isdigit(string[i + 1])) ) + { + arg = atoi(string + i); + if (string[i] == '-') + i++; + while (isdigit(string[i])) + i++; + } + start = i; + + /* Move to the end of the function name. */ + for (i = start; string[i] && (string[i] != ']'); i++); + + rep_name = (char *)xmalloc (1 + i - start); + strncpy (rep_name, string + start, i - start); + rep_name[i - start] = '\0'; + + /* If we have only one window (because the window size was too + small to split it), we have to quit help by going back one + noew in the history list, not deleting the window. */ + if (strcmp (rep_name, "quit-help") == 0) + fun_name = help_is_only_window_p ? "history-node" + : "delete-window"; + else + fun_name = rep_name; + + /* Find a key which invokes this function in the info_keymap. */ + command = named_function (fun_name); + + free (rep_name); + + /* If the internal documentation string fails, there is a + serious problem with the associated command's documentation. + We croak so that it can be fixed immediately. */ + if (!command) + abort (); + + if (arg) + { + char *argrep, *p; + + argrep = where_is (info_keymap, InfoCmd(info_add_digit_to_numeric_arg)); + p = argrep ? strrpbrk (argrep, "0123456789-") : NULL; + if (p) + { + argstr = (char *)xmalloc (p - argrep + 21); + strncpy (argstr, argrep, p - argrep); + sprintf (argstr + (p - argrep), "%d", arg); + } + else + command = NULL; + } + rep = command ? where_is (info_keymap, command) : NULL; + if (!rep) + rep = "N/A"; + replen = (argstr ? strlen (argstr) : 0) + strlen (rep) + 1; + repstr = (char *)xmalloc (replen); + repstr[0] = '\0'; + if (argstr) + { + strcat(repstr, argstr); + strcat(repstr, " "); + free (argstr); + } + strcat(repstr, rep); + + if (fmt) + { + if (replen > max) + replen = max; + if (replen < min) + replen = min; + } + if (next + replen > reslen) + { + reslen = next + replen + 1; + result = (char *)xrealloc (result, reslen + 1); + } + + if (fmt) + sprintf (result + next, fmt, repstr); + else + strcpy (result + next, repstr); + + next = strlen (result); + free (repstr); + + start = i; + if (string[i]) + start++; + } + + maybe_free (fmt); + } } strcpy (result + next, string + start); return (result); @@ -1076,7 +1077,7 @@ where_is (map, cmd) name = function_name (cmd); if (!name) - return NULL; /* no such function */ + return NULL; /* no such function */ rep = where_is_internal (map, InfoCmd(info_execute_command)); if (!rep) @@ -1107,7 +1108,15 @@ where_is_internal (map, cmd) return NULL; #else /* !INFOKEY */ - + /* There is a bug in that create_internal_info_help_node calls + where_is_internal without setting where_is_rep_index to zero. This + was found by Mandrake and reported by Thierry Vignaud + <tvignaud@mandrakesoft.com> around April 24, 2002. + + I think the best fix is to make where_is_rep_index another + parameter to this recursively-called function, instead of a static + variable. But this [!INFOKEY] branch of the code is not enabled + any more, so let's just skip the whole thing. --karl, 28sep02. */ register int i; /* If the function is directly invokable in MAP, return the representation diff --git a/contrib/texinfo/info/infokey.c b/contrib/texinfo/info/infokey.c index cd05aeb..f31c98a 100644 --- a/contrib/texinfo/info/infokey.c +++ b/contrib/texinfo/info/infokey.c @@ -1,7 +1,7 @@ /* infokey.c -- compile ~/.infokey to ~/.info. - $Id: infokey.c,v 1.10 2002/03/19 14:36:49 karl Exp $ + $Id: infokey.c,v 1.3 2003/01/19 18:46:27 karl Exp $ - Copyright (C) 1999, 2001, 02 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc. 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 @@ -140,7 +140,7 @@ main (argc, argv) There is NO warranty. You may redistribute this software\n\ under the terms of the GNU General Public License.\n\ For more information about these matters, see the files named COPYING.\n"), - "1999"); + "2003"); xexit (0); } diff --git a/contrib/texinfo/info/infokey.h b/contrib/texinfo/info/infokey.h index df3749f..9b362fa 100644 --- a/contrib/texinfo/info/infokey.h +++ b/contrib/texinfo/info/infokey.h @@ -1,5 +1,5 @@ /* infokey.h -- Custom keystroke definition support. - $Id: infokey.h,v 1.1 2002/03/20 16:03:22 karl Exp $ + $Id: infokey.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1999, 2002 Free Software Foundation, Inc. diff --git a/contrib/texinfo/info/infomap.h b/contrib/texinfo/info/infomap.h index bf46399..fe7fa77 100644 --- a/contrib/texinfo/info/infomap.h +++ b/contrib/texinfo/info/infomap.h @@ -1,5 +1,5 @@ /* infomap.h -- description of a keymap in Info and related functions. - $Id: infomap.h,v 1.6 2001/11/16 23:16:59 karl Exp $ + $Id: infomap.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1993, 2001 Free Software Foundation, Inc. diff --git a/contrib/texinfo/info/m-x.c b/contrib/texinfo/info/m-x.c index 5085235..383261d 100644 --- a/contrib/texinfo/info/m-x.c +++ b/contrib/texinfo/info/m-x.c @@ -1,7 +1,7 @@ /* m-x.c -- Meta-x minibuffer reader. - $Id: m-x.c,v 1.9 2001/11/16 23:14:33 karl Exp $ + $Id: m-x.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/man.c b/contrib/texinfo/info/man.c index 1332cc5..bbde1ac 100644 --- a/contrib/texinfo/info/man.c +++ b/contrib/texinfo/info/man.c @@ -1,7 +1,8 @@ /* man.c: How to read and format man files. - $Id: man.c,v 1.16 2002/02/23 19:12:02 karl Exp $ + $Id: man.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1995, 97, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002 Free Software + Foundation, Inc. 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 diff --git a/contrib/texinfo/info/man.h b/contrib/texinfo/info/man.h index 3cf4b16..461936f 100644 --- a/contrib/texinfo/info/man.h +++ b/contrib/texinfo/info/man.h @@ -1,5 +1,5 @@ /* man.h: Defines and external function declarations for man.c. - $Id: man.h,v 1.2 1997/07/15 18:42:56 karl Exp $ + $Id: man.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/nodes.c b/contrib/texinfo/info/nodes.c index 7f0bf0f..0554ec7 100644 --- a/contrib/texinfo/info/nodes.c +++ b/contrib/texinfo/info/nodes.c @@ -1,7 +1,7 @@ /* nodes.c -- how to get an Info file and node. - $Id: nodes.c,v 1.15 2000/11/11 00:40:37 karl Exp $ + $Id: nodes.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 98, 99, 2000 Free Software Foundation, Inc. + Copyright (C) 1993, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/nodes.h b/contrib/texinfo/info/nodes.h index 7fd625d..0002ea4 100644 --- a/contrib/texinfo/info/nodes.h +++ b/contrib/texinfo/info/nodes.h @@ -1,7 +1,7 @@ /* nodes.h -- How we represent nodes internally. - $Id: nodes.h,v 1.8 1998/07/10 20:28:43 karl Exp $ + $Id: nodes.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/search.c b/contrib/texinfo/info/search.c index 0e48cea..593cff9 100644 --- a/contrib/texinfo/info/search.c +++ b/contrib/texinfo/info/search.c @@ -1,7 +1,7 @@ /* search.c -- searching large bodies of text. - $Id: search.c,v 1.6 2002/03/23 20:45:24 karl Exp $ + $Id: search.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/search.h b/contrib/texinfo/info/search.h index 757ec5c..5f94978 100644 --- a/contrib/texinfo/info/search.h +++ b/contrib/texinfo/info/search.h @@ -1,7 +1,7 @@ /* search.h -- Structure used to search large bodies of text, with bounds. - $Id: search.h,v 1.4 1998/04/19 20:50:23 karl Exp $ + $Id: search.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/session.h b/contrib/texinfo/info/session.h index 99892fc..f2f806c 100644 --- a/contrib/texinfo/info/session.h +++ b/contrib/texinfo/info/session.h @@ -1,7 +1,7 @@ /* session.h -- Functions found in session.c. - $Id: session.h,v 1.10 2001/11/16 23:17:15 karl Exp $ + $Id: session.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 98, 99, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/signals.h b/contrib/texinfo/info/signals.h index 3a45925..5c9f252 100644 --- a/contrib/texinfo/info/signals.h +++ b/contrib/texinfo/info/signals.h @@ -1,10 +1,7 @@ -/* signals.h -- Header to include system dependent signal definitions. - $Id: signals.h,v 1.3 1997/07/15 18:35:59 karl Exp $ +/* signals.h -- header to include system dependent signal definitions. + $Id: signals.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - This file is part of GNU Info, a program for reading online documentation - stored in Info format. - - Copyright (C) 1993, 94, 95, 97 Free Software Foundation, Inc. + Copyright (C) 1993, 1994, 1995, 1997, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/termdep.h b/contrib/texinfo/info/termdep.h index 0ab6c44..8d2758a 100644 --- a/contrib/texinfo/info/termdep.h +++ b/contrib/texinfo/info/termdep.h @@ -1,7 +1,8 @@ -/* termdep.h -- System things that terminal.c depends on. - $Id: termdep.h,v 1.5 2001/09/12 17:26:03 karl Exp $ +/* termdep.h -- system things that terminal.c depends on. + $Id: termdep.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 96, 97, 98, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1996, 1997, 1998, 2001, 2002 Free Software + Foundation, Inc. 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 diff --git a/contrib/texinfo/info/terminal.h b/contrib/texinfo/info/terminal.h index 361fa4c..647d468 100644 --- a/contrib/texinfo/info/terminal.h +++ b/contrib/texinfo/info/terminal.h @@ -1,7 +1,7 @@ /* terminal.h -- The external interface to terminal I/O. - $Id: terminal.h,v 1.7 2001/11/16 23:17:29 karl Exp $ + $Id: terminal.h,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 96, 97, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1996, 1997, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/tilde.c b/contrib/texinfo/info/tilde.c index bba285a..19f56b1 100644 --- a/contrib/texinfo/info/tilde.c +++ b/contrib/texinfo/info/tilde.c @@ -1,7 +1,7 @@ /* tilde.c -- tilde expansion code (~/foo := $HOME/foo). - $Id: tilde.c,v 1.13 1999/03/03 22:42:21 karl Exp $ + $Id: tilde.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1988, 89, 90, 91, 92, 93, 96, 98, 99 + Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1996, 1998, 1999, 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/contrib/texinfo/info/variables.c b/contrib/texinfo/info/variables.c index 581d2bb..7280325 100644 --- a/contrib/texinfo/info/variables.c +++ b/contrib/texinfo/info/variables.c @@ -1,7 +1,7 @@ -/* variables.c -- How to manipulate user visible variables in Info. - $Id: variables.c,v 1.8 2001/11/16 23:16:19 karl Exp $ +/* variables.c -- how to manipulate user visible variables in Info. + $Id: variables.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 2001 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/info/variables.h b/contrib/texinfo/info/variables.h index 1afcfb8..58169d3 100644 --- a/contrib/texinfo/info/variables.h +++ b/contrib/texinfo/info/variables.h @@ -1,5 +1,5 @@ /* variables.h -- Description of user visible variables in Info. - $Id: variables.h,v 1.3 1997/07/15 18:44:23 karl Exp $ + $Id: variables.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/info/window.c b/contrib/texinfo/info/window.c index 4acd5e5..8a626f0 100644 --- a/contrib/texinfo/info/window.c +++ b/contrib/texinfo/info/window.c @@ -1,7 +1,8 @@ /* window.c -- windows in Info. - $Id: window.c,v 1.16 2002/03/08 21:41:44 karl Exp $ + $Id: window.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1993, 97, 98, 2001, 02 Free Software Foundation, Inc. + Copyright (C) 1993, 1997, 1998, 2001, 2002 Free Software Foundation, + Inc. 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 diff --git a/contrib/texinfo/info/window.h b/contrib/texinfo/info/window.h index 17367cb..2686a82 100644 --- a/contrib/texinfo/info/window.h +++ b/contrib/texinfo/info/window.h @@ -1,5 +1,5 @@ /* window.h -- Structure and flags used in manipulating Info windows. - $Id: window.h,v 1.4 1997/07/15 18:45:47 karl Exp $ + $Id: window.h,v 1.1 2002/08/25 23:38:38 karl Exp $ This file is part of GNU Info, a program for reading online documentation stored in Info format. diff --git a/contrib/texinfo/lib/README b/contrib/texinfo/lib/README index 6280ef5..288bc5d 100644 --- a/contrib/texinfo/lib/README +++ b/contrib/texinfo/lib/README @@ -1,4 +1,13 @@ -Common routines for the Texinfo package. +$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $ +texinfo/lib/README + + Copyright (C) 2002 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + +Common routines for the Texinfo programs. Many are common to other GNU packages as well. -(On the FSF machines, check /home/gd/gnu/lib for the latest.) +See the gnulib project at savannah: http://savannah.gnu.org/projects/gnulib diff --git a/contrib/texinfo/lib/getopt.c b/contrib/texinfo/lib/getopt.c index d176d3e..3e7928a 100644 --- a/contrib/texinfo/lib/getopt.c +++ b/contrib/texinfo/lib/getopt.c @@ -1,22 +1,23 @@ /* Getopt for GNU. - NOTE: The canonical source of this file is maintained with the GNU - C Library. Bugs can be reported to bug-glibc@gnu.org. - - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to drepper@gnu.org + before changing it! + Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002 Free Software Foundation, Inc. + This file is part of the GNU C Library. - 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, or (at your option) any - later version. + 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, 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, + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>. @@ -27,13 +28,13 @@ #ifdef HAVE_CONFIG_H # include <config.h> -#else -# if !defined __STDC__ || !__STDC__ +#endif + +#if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ -# ifndef const -# define const -# endif +# ifndef const +# define const # endif #endif @@ -74,15 +75,20 @@ # endif #endif -#ifndef _ -/* This is for other GNU distributions with internationalized messages. - When compiling libc, the _ macro is predefined. */ -# ifdef HAVE_LIBINTL_H -# include <libintl.h> -# define _(msgid) gettext (msgid) -# else -# define _(msgid) (msgid) -# endif +#ifdef _LIBC +# include <libintl.h> +#else +/* This is for other GNU distributions with internationalized messages. */ +# include "gettext.h" +#endif +#define _(msgid) gettext (msgid) + +#if defined _LIBC && defined USE_IN_LIBIO +# include <wchar.h> +#endif + +#ifndef attribute_hidden +# define attribute_hidden #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' @@ -128,7 +134,7 @@ int optind = 1; causes problems with re-calling getopt as programs generally don't know that. */ -int __getopt_initialized; +int __getopt_initialized attribute_hidden; /* The next char to be scanned in the option-element in which the last option character we returned was found. @@ -247,41 +253,34 @@ static int first_nonopt; static int last_nonopt; #ifdef _LIBC +/* Stored original parameters. + XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ +extern int __libc_argc; +extern char **__libc_argv; + /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ +# ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; +# endif -static int original_argc; -static char *const *original_argv; - -/* Make sure the environment variable bash 2.0 puts in the environment - is valid for the getopt call we must make sure that the ARGV passed - to getopt is that one passed to the process. */ -static void -__attribute__ ((unused)) -store_args_and_env (int argc, char *const *argv) -{ - /* XXX This is no good solution. We should rather copy the args so - that we can compare them later. But we must not use malloc(3). */ - original_argc = argc; - original_argv = argv; -} -# ifdef text_set_element -text_set_element (__libc_subinit, store_args_and_env); -# endif /* text_set_element */ - -# define SWAP_FLAGS(ch1, ch2) \ +# ifdef USE_NONOPTION_FLAGS +# define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } +# else +# define SWAP_FLAGS(ch1, ch2) +# endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ @@ -313,7 +312,7 @@ exchange (argv) It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ -#ifdef _LIBC +#if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ @@ -417,9 +416,9 @@ _getopt_initialize (argc, argv, optstring) else ordering = PERMUTE; -#ifdef _LIBC +#if defined _LIBC && defined USE_NONOPTION_FLAGS if (posixly_correct == NULL - && argc == original_argc && argv == original_argv) + && argc == __libc_argc && argv == __libc_argv) { if (nonoption_flags_max_len == 0) { @@ -515,6 +514,13 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int *longind; int long_only; { + int print_errors = opterr; + if (optstring[0] == ':') + print_errors = 0; + + if (argc < 1) + return -1; + optarg = NULL; if (optind == 0 || !__getopt_initialized) @@ -529,7 +535,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ -#ifdef _LIBC +#if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) @@ -664,16 +670,37 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) pfound = p; indfound = option_index; } - else + else if (long_only + || pfound->has_arg != p->has_arg + || pfound->flag != p->flag + || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { - if (opterr) - fprintf (stderr, _("%s: option `%s' is ambiguous\n"), - argv[0], argv[optind]); + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]) >= 0) + { + + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); +#endif + } nextchar += strlen (nextchar); optind++; optopt = 0; @@ -692,18 +719,52 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = nameend + 1; else { - if (opterr) + if (print_errors) { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option `--%s' doesn't allow an argument\n"), - argv[0], pfound->name); + { + /* --option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("\ +%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); +#else + fprintf (stderr, _("\ +%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); +#endif + } else - /* +option or -option */ - fprintf (stderr, - _("%s: option `%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); + { + /* +option or -option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("\ +%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], + pfound->name); +#else + fprintf (stderr, _("\ +%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#endif } nextchar += strlen (nextchar); @@ -718,10 +779,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = argv[optind++]; else { - if (opterr) - fprintf (stderr, - _("%s: option `%s' requires an argument\n"), - argv[0], argv[optind - 1]); + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); +#endif + } nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; @@ -745,16 +824,47 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { - if (opterr) + if (print_errors) { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + if (argv[optind][1] == '-') - /* --option */ - fprintf (stderr, _("%s: unrecognized option `--%s'\n"), - argv[0], nextchar); + { + /* --option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); +#else + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); +#endif + } else - /* +option or -option */ - fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), - argv[0], argv[optind][0], nextchar); + { + /* +option or -option */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); +#else + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#endif } nextchar = (char *) ""; optind++; @@ -775,15 +885,44 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (temp == NULL || c == ':') { - if (opterr) + if (print_errors) { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + int n; +#endif + if (posixly_correct) - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: illegal option -- %c\n"), - argv[0], c); + { + /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: illegal option -- %c\n"), + argv[0], c); +#else + fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); +#endif + } else - fprintf (stderr, _("%s: invalid option -- %c\n"), - argv[0], c); + { +#if defined _LIBC && defined USE_IN_LIBIO + n = __asprintf (&buf, _("%s: invalid option -- %c\n"), + argv[0], c); +#else + fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); +#endif + } + +#if defined _LIBC && defined USE_IN_LIBIO + if (n >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#endif } optopt = c; return '?'; @@ -809,11 +948,27 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } else if (optind == argc) { - if (opterr) + if (print_errors) { /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, + _("%s: option requires an argument -- %c\n"), + argv[0], c) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); +#endif } optopt = c; if (optstring[0] == ':') @@ -858,9 +1013,26 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } if (ambig && !exact) { - if (opterr) - fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), - argv[0], argv[optind]); + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); +#endif + } nextchar += strlen (nextchar); optind++; return '?'; @@ -876,10 +1048,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = nameend + 1; else { - if (opterr) - fprintf (stderr, _("\ + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else + fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), - argv[0], pfound->name); + argv[0], pfound->name); +#endif + } nextchar += strlen (nextchar); return '?'; @@ -891,10 +1081,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = argv[optind++]; else { - if (opterr) - fprintf (stderr, - _("%s: option `%s' requires an argument\n"), - argv[0], argv[optind - 1]); + if (print_errors) + { +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); +#endif + } nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } @@ -938,12 +1146,28 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } else if (optind == argc) { - if (opterr) + if (print_errors) { /* 1003.2 specifies the format of this message. */ +#if defined _LIBC && defined USE_IN_LIBIO + char *buf; + + if (__asprintf (&buf, _("\ +%s: option requires an argument -- %c\n"), + argv[0], c) >= 0) + { + if (_IO_fwide (stderr, 0) > 0) + __fwprintf (stderr, L"%s", buf); + else + fputs (buf, stderr); + + free (buf); + } +#else fprintf (stderr, - _("%s: option requires an argument -- %c\n"), - argv[0], c); + _("%s: option requires an argument -- %c\n"), + argv[0], c); +#endif } optopt = c; if (optstring[0] == ':') diff --git a/contrib/texinfo/lib/getopt.h b/contrib/texinfo/lib/getopt.h index ac6728f..4d6adee 100644 --- a/contrib/texinfo/lib/getopt.h +++ b/contrib/texinfo/lib/getopt.h @@ -1,21 +1,20 @@ /* Declarations for getopt. - Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. - 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, or (at your option) any - later version. + Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETOPT_H @@ -23,6 +22,17 @@ # define _GETOPT_H 1 #endif +/* If __GNU_LIBRARY__ is not already defined, either we are being used + standalone, or this is the first header included in the source file. + If we are being used with glibc, we need to include <features.h>, but + that does not exist if we are standalone. So: if __GNU_LIBRARY__ is + not defined, include <ctype.h>, which will pull in <features.h> for us + if it's from glibc. (Why ctype.h? It's guaranteed to exist and it + doesn't flood the namespace with stuff the way some other headers do.) */ +#if !defined __GNU_LIBRARY__ +# include <ctype.h> +#endif + #ifdef __cplusplus extern "C" { #endif @@ -82,7 +92,7 @@ extern int optopt; struct option { -# if defined __STDC__ && __STDC__ +# if (defined __STDC__ && __STDC__) || defined __cplusplus const char *name; # else char *name; @@ -126,25 +136,26 @@ struct option arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ -#if defined __STDC__ && __STDC__ +#if (defined __STDC__ && __STDC__) || defined __cplusplus # ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ -extern int getopt (int __argc, char *const *__argv, const char *__shortopts); +extern int getopt (int ___argc, char *const *___argv, const char *__shortopts); # else /* not __GNU_LIBRARY__ */ extern int getopt (); # endif /* __GNU_LIBRARY__ */ # ifndef __need_getopt -extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, +extern int getopt_long (int ___argc, char *const *___argv, + const char *__shortopts, const struct option *__longopts, int *__longind); -extern int getopt_long_only (int __argc, char *const *__argv, +extern int getopt_long_only (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ -extern int _getopt_internal (int __argc, char *const *__argv, +extern int _getopt_internal (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); diff --git a/contrib/texinfo/lib/getopt1.c b/contrib/texinfo/lib/getopt1.c index 9c82565..d2759ce 100644 --- a/contrib/texinfo/lib/getopt1.c +++ b/contrib/texinfo/lib/getopt1.c @@ -1,26 +1,32 @@ /* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. - NOTE: The canonical source of this file is maintained with the GNU C Library. - Bugs can be reported to bug-glibc@gnu.org. + This file is part of the GNU C Library. - 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, or (at your option) any - later version. + 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, 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, + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include <config.h> +#endif + +#ifdef _LIBC +# include <getopt.h> #else +# include "getopt.h" +#endif + #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ @@ -28,9 +34,6 @@ #define const #endif #endif -#endif - -#include "getopt.h" #include <stdio.h> @@ -90,6 +93,10 @@ getopt_long_only (argc, argv, options, long_options, opt_index) return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } +# ifdef _LIBC +libc_hidden_def (getopt_long) +libc_hidden_def (getopt_long_only) +# endif #endif /* Not ELIDE_CODE. */ diff --git a/contrib/texinfo/lib/gettext.h b/contrib/texinfo/lib/gettext.h index 4ab74d9..8b262f4 100644 --- a/contrib/texinfo/lib/gettext.h +++ b/contrib/texinfo/lib/gettext.h @@ -27,13 +27,21 @@ #else +/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which + chokes if dcgettext is defined as a macro. So include it now, to make + later inclusions of <locale.h> a NOP. We don't include <libintl.h> + as well because people using "gettext.h" will not include <libintl.h>, + and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> + is OK. */ +#if defined(__sun) +# include <locale.h> +#endif + /* Disabled NLS. The casts to 'const char *' serve the purpose of producing warnings for invalid uses of the value returned from these functions. On pre-ANSI systems without 'const', the config.h file is supposed to contain "#define const". */ -#if 0 -/* no thanks, not ready to go const --karl, 26feb02 */ # define gettext(Msgid) ((const char *) (Msgid)) # define dgettext(Domainname, Msgid) ((const char *) (Msgid)) # define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) @@ -46,20 +54,7 @@ # define textdomain(Domainname) ((const char *) (Domainname)) # define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) # define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) -#else /* not 0 */ -# define gettext(Msgid) ((Msgid)) -# define dgettext(Domainname, Msgid) (Msgid) -# define dcgettext(Domainname, Msgid, Category) (Msgid) -# define ngettext(Msgid1, Msgid2, N) \ - ((N) == 1 ? (Msgid1) : (Msgid2)) -# define dngettext(Domainname, Msgid1, Msgid2, N) \ - ((N) == 1 ? (Msgid1) : (Msgid2)) -# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ - ((N) == 1 ? (Msgid1) : (Msgid2)) -# define textdomain(Domainname) (Domainname) -# define bindtextdomain(Domainname, Dirname) (Dirname) -# define bind_textdomain_codeset(Domainname, Codeset) (Codeset) -#endif /* 0 */ + #endif /* A pseudo function call that serves as a marker for the automated diff --git a/contrib/texinfo/lib/substring.c b/contrib/texinfo/lib/substring.c index 089961f..7d5cda7 100644 --- a/contrib/texinfo/lib/substring.c +++ b/contrib/texinfo/lib/substring.c @@ -1,5 +1,5 @@ /* substring.c -- extract substring. - $Id: substring.c,v 1.1 1999/02/17 22:30:10 karl Exp $ + $Id: substring.c,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1999 Free Software Foundation, Inc. diff --git a/contrib/texinfo/lib/system.h b/contrib/texinfo/lib/system.h index a816553..e001f0c 100644 --- a/contrib/texinfo/lib/system.h +++ b/contrib/texinfo/lib/system.h @@ -1,7 +1,8 @@ /* system.h: system-dependent declarations; include this first. - $Id: system.h,v 1.22 2002/02/26 14:31:18 karl Exp $ + $Id: system.h,v 1.4 2002/10/31 13:44:06 karl Exp $ - Copyright (C) 1997, 98, 99, 00, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software + Foundation, Inc. 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 @@ -24,6 +25,16 @@ #include <config.h> +#ifdef MIKTEX +#include <gnu-miktex.h> +#define S_ISDIR(x) ((x)&_S_IFDIR) +#else +/* MiKTeX defines substring() in a separate DLL, where it has its + own __declspec declaration. We don't want to try to duplicate + this Microsoft-ism here. */ +extern char *substring (); +#endif + /* <unistd.h> should be included before any preprocessor test of _POSIX_VERSION. */ #ifdef HAVE_UNISTD_H @@ -43,7 +54,10 @@ #endif /* For gettext (NLS). */ +#define const #include "gettext.h" +#undef const + #define _(String) gettext (String) #define N_(String) (String) @@ -240,7 +254,6 @@ struct passwd *getpwnam (); extern void *xmalloc (), *xrealloc (); extern char *xstrdup (); extern void xexit (); -extern char *substring (); /* For convenience. */ #define STREQ(s1,s2) (strcmp (s1, s2) == 0) diff --git a/contrib/texinfo/lib/xalloc.h b/contrib/texinfo/lib/xalloc.h new file mode 100644 index 0000000..098a6c2 --- /dev/null +++ b/contrib/texinfo/lib/xalloc.h @@ -0,0 +1,87 @@ +/* xalloc.h -- malloc with out-of-memory checking + Copyright (C) 1990-1998, 1999, 2000 Free Software Foundation, Inc. + + 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef XALLOC_H_ +# define XALLOC_H_ + +# ifndef PARAMS +# if defined PROTOTYPES || (defined __STDC__ && __STDC__) +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +# endif + +# ifndef __attribute__ +# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ +# define __attribute__(x) +# endif +# endif + +# ifndef ATTRIBUTE_NORETURN +# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) +# endif + +/* Exit value when the requested amount of memory is not available. + It is initialized to EXIT_FAILURE, but the caller may set it to + some other value. */ +extern int xalloc_exit_failure; + +/* If this pointer is non-zero, run the specified function upon each + allocation failure. It is initialized to zero. */ +extern void (*xalloc_fail_func) PARAMS ((void)); + +/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this + message is output. It is translated via gettext. + Its value is "memory exhausted". */ +extern char const xalloc_msg_memory_exhausted[]; + +/* This function is always triggered when memory is exhausted. It is + in charge of honoring the three previous items. This is the + function to call when one wants the program to die because of a + memory allocation failure. */ +extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN; + +void *xmalloc PARAMS ((size_t n)); +void *xcalloc PARAMS ((size_t n, size_t s)); +void *xrealloc PARAMS ((void *p, size_t n)); +char *xstrdup PARAMS ((const char *str)); + +# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items))) +# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items))) +# define XREALLOC(Ptr, Type, N_items) \ + ((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items))) + +/* Declare and alloc memory for VAR of type TYPE. */ +# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1) + +/* Free VAR only if non NULL. */ +# define XFREE(Var) \ + do { \ + if (Var) \ + free (Var); \ + } while (0) + +/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */ +# define CCLONE(Src, Num) \ + (memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num))) + +/* Return a malloc'ed copy of SRC. */ +# define CLONE(Src) CCLONE (Src, 1) + + +#endif /* !XALLOC_H_ */ diff --git a/contrib/texinfo/lib/xexit.c b/contrib/texinfo/lib/xexit.c index 0fea809..fafe4b3 100644 --- a/contrib/texinfo/lib/xexit.c +++ b/contrib/texinfo/lib/xexit.c @@ -1,5 +1,5 @@ /* xexit.c -- exit with attention to return values and closing stdout. - $Id: xexit.c,v 1.5 1999/02/19 14:13:51 karl Exp $ + $Id: xexit.c,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1999 Free Software Foundation, Inc. diff --git a/contrib/texinfo/lib/xstrdup.c b/contrib/texinfo/lib/xstrdup.c index 38674ca..cb1efa8 100644 --- a/contrib/texinfo/lib/xstrdup.c +++ b/contrib/texinfo/lib/xstrdup.c @@ -1,5 +1,5 @@ /* xstrdup.c -- copy a string with out of memory checking - Copyright (C) 1990, 1996, 1998 Free Software Foundation, Inc. + Copyright (C) 1990, 1996, 1998, 2001 Free Software Foundation, Inc. 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 @@ -19,14 +19,6 @@ # include <config.h> #endif -#ifndef PARAMS -# if defined PROTOTYPES || (defined __STDC__ && __STDC__) -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - #if STDC_HEADERS || HAVE_STRING_H # include <string.h> #else @@ -35,7 +27,7 @@ #include <sys/types.h> -char *xmalloc PARAMS ((size_t n)); +#include "xalloc.h" /* Return a newly allocated copy of STRING. */ diff --git a/contrib/texinfo/makeinfo/README b/contrib/texinfo/makeinfo/README index 1b45f02..4d2ecf6 100644 --- a/contrib/texinfo/makeinfo/README +++ b/contrib/texinfo/makeinfo/README @@ -1,7 +1,16 @@ +$Id: README,v 1.2 2002/09/11 16:32:09 karl Exp $ +texinfo/makeinfo/README + + Copyright (C) 2002 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + makeinfo is a standalone program to convert Texinfo source into Info files readable with standalone info or M-x info in Emacs. -makeinfo can also output plain ASCII (with --no-headers) +makeinfo can also output other formats: plain ASCII (with --no-headers) or HTML (with --html) or XML (with --xml). The Emacs function M-x texinfo-format-buffer does more or less the same diff --git a/contrib/texinfo/makeinfo/cmds.c b/contrib/texinfo/makeinfo/cmds.c index 7de972b..5ff0b5d 100644 --- a/contrib/texinfo/makeinfo/cmds.c +++ b/contrib/texinfo/makeinfo/cmds.c @@ -1,7 +1,8 @@ /* cmds.c -- Texinfo commands. - $Id: cmds.c,v 1.79 2002/03/28 16:35:29 karl Exp $ + $Id: cmds.c,v 1.16 2003/01/12 15:18:24 karl Exp $ - Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software + Foundation, Inc. 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 @@ -22,6 +23,7 @@ #include "defun.h" #include "files.h" #include "footnote.h" +#include "html.h" #include "insertion.h" #include "lang.h" #include "macro.h" @@ -64,7 +66,7 @@ void cm_defcodeindex (), cm_result (), cm_expansion (), cm_equiv (), cm_print (), cm_error (), cm_point (), cm_today (), cm_flushleft (), cm_flushright (), cm_finalout (), cm_cartouche (), cm_detailmenu (), - cm_multitable (), cm_settitle (), cm_titlefont (), cm_tt (), + cm_multitable (), cm_settitle (), cm_titlefont (), cm_titlepage (), cm_tie (), cm_tt (), cm_verbatim (), cm_verbatiminclude (); /* Conditionals. */ @@ -237,9 +239,11 @@ COMMAND command_table[] = { { "ifnotinfo", cm_ifnotinfo, NO_BRACE_ARGS }, { "ifnotplaintext", cm_ifnotplaintext, NO_BRACE_ARGS }, { "ifnottex", cm_ifnottex, NO_BRACE_ARGS }, + { "ifnotxml", cm_ifnotxml, NO_BRACE_ARGS }, { "ifplaintext", cm_ifplaintext, NO_BRACE_ARGS }, { "ifset", cm_ifset, NO_BRACE_ARGS }, { "iftex", cm_iftex, NO_BRACE_ARGS }, + { "ifxml", cm_ifxml, NO_BRACE_ARGS }, { "ignore", command_name_condition, NO_BRACE_ARGS }, { "image", cm_image, BRACE_ARGS }, { "include", cm_include, NO_BRACE_ARGS }, @@ -320,10 +324,11 @@ COMMAND command_table[] = { { "tab", cm_tab, NO_BRACE_ARGS }, { "table", cm_table, NO_BRACE_ARGS }, { "tex", cm_tex, NO_BRACE_ARGS }, + { "tie", cm_tie, BRACE_ARGS }, { "tieaccent", cm_accent, MAYBE_BRACE_ARGS }, { "tindex", cm_tindex, NO_BRACE_ARGS }, { "titlefont", cm_titlefont, BRACE_ARGS }, - { "titlepage", command_name_condition, NO_BRACE_ARGS }, + { "titlepage", cm_titlepage, NO_BRACE_ARGS }, { "today", cm_today, BRACE_ARGS }, { "top", cm_top, NO_BRACE_ARGS }, { "u", cm_accent, MAYBE_BRACE_ARGS }, @@ -345,6 +350,7 @@ COMMAND command_table[] = { { "vindex", cm_vindex, NO_BRACE_ARGS }, { "vtable", cm_vtable, NO_BRACE_ARGS }, { "w", cm_w, BRACE_ARGS }, + { "xml", cm_html, NO_BRACE_ARGS }, { "xref", cm_xref, BRACE_ARGS }, /* Deprecated commands. These used to be for italics. */ @@ -387,9 +393,9 @@ insert_space (arg) if (arg == START) { if (xml && !docbook) - xml_insert_entity ("space"); + xml_insert_entity ("space"); else - add_char (' '); + add_char (' '); } } @@ -418,11 +424,12 @@ cm_dots (arg) if (arg == START) { if (xml && !docbook) - xml_insert_entity ("dots"); + xml_insert_entity ("dots"); else if (docbook) - xml_insert_entity ("hellip"); + xml_insert_entity ("hellip"); else - add_word (html ? "<small>...</small>" : "..."); + add_word (html && !in_fixed_width_font + ? "<small class=\"dots\">...</small>" : "..."); } } @@ -441,7 +448,8 @@ cm_enddots (arg) add_char ('.'); } else - add_word (html ? "<small>...</small>." : "...."); + add_word (html && !in_fixed_width_font + ? "<small class=\"enddots\">....</small>" : "...."); } } @@ -553,24 +561,24 @@ cm_code (arg) xml_insert_element (CODE, arg); else { - extern int printing_index; + extern int printing_index; - if (arg == START) - { - in_fixed_width_font++; + if (arg == START) + { + in_fixed_width_font++; - if (html) + if (html) + insert_html_tag (arg, "code"); + else if (!printing_index) + add_char ('`'); + } + else if (html) insert_html_tag (arg, "code"); - else if (!printing_index) - add_char ('`'); - } - else if (html) - insert_html_tag (arg, "code"); - else - { - if (!printing_index) - add_meta_char ('\''); - } + else + { + if (!printing_index) + add_meta_char ('\''); + } } } @@ -604,9 +612,10 @@ cm_url (arg, start, end) else if (html) { if (arg == START) - add_word ("<<code>"); - else - add_word ("</code>>"); + add_word ("<"); + insert_html_tag (arg, "code"); + if (arg != START) + add_word (">"); } else if (arg == START) @@ -748,7 +757,7 @@ cm_verb (arg) last_char_was_newline = 0; if (html) - add_word ("<pre>"); + add_word ("<tt>"); if (input_text_offset < input_text_length) { @@ -770,18 +779,28 @@ cm_verb (arg) character = curchar (); if (character == '\n') - line_number++; - /* - Assume no newlines in END_VERBATIM - */ + { + line_number++; + if (html) + add_word ("<br>\n"); + } + + else if (html && character == '<') + add_word ("<"); + + else if (html && character == '&') + add_word ("&"); + else if (character == delimiter) - { + { /* Assume no newlines in END_VERBATIM. */ seen_end = 1; input_text_offset++; break; } - add_char (character); + else + add_char (character); + input_text_offset++; } @@ -798,9 +817,12 @@ cm_verb (arg) } if (html) - add_word ("</pre>"); + add_word ("</tt>"); + + in_fixed_width_font--; } + void cm_strong (arg, position) int arg, position; @@ -872,25 +894,9 @@ cm_r (arg) xml_insert_element (R, arg); else { - extern int printing_index; + if (html) + insert_html_tag (arg, ""); - /* People use @r{} in index entries like this: - - @findex foo@r{, some text} - - This is supposed to produce output as if the entry were saying - "@code{foo}, some text", since the "fn" index is typeset as - @code. The following attempts to do the same in HTML. Note that - this relies on the fact that only @code bumps up the variable - in_fixed_width_font while processing index entries in HTML mode. */ - if (html && printing_index) - { - int level = in_fixed_width_font; - - while (level--) - insert_html_tag (arg == START ? END : START, "code"); - } - not_fixed_width (arg); } } @@ -902,7 +908,27 @@ cm_titlefont (arg) if (xml) xml_insert_element (TITLEFONT, arg); else - not_fixed_width (arg); + { + not_fixed_width (arg); + if (html) + { + html_title_written = 1; /* suppress title from @settitle */ + if (arg == START) + add_word ("<h1 class=\"titlefont\">"); + else + add_word ("</h1>\n"); + } + } +} + +int titlepage_cmd_present = 0; + +void +cm_titlepage (arg) + int arg; +{ + titlepage_cmd_present = 1; + command_name_condition (); } /* Various commands are no-op's. */ @@ -932,6 +958,22 @@ cm_w (arg, start, end) } +/* An unbreakable word space. Same as @w{ } for makeinfo, but different + for TeX (the space stretches and stretches, and does not inhibit + hyphenation). */ +void +cm_tie (arg) + int arg; +{ + if (arg == START) + { + cm_w (START); + add_char (' '); + } + else + cm_w (END); +} + /* Explain that this command is obsolete, thus the user shouldn't do anything with it. */ static void @@ -976,9 +1018,16 @@ cm_settitle () { xml_begin_document (current_output_filename); xml_insert_element (SETTITLE, START); + xml_in_book_title = 1; get_rest_of_line (0, &title); execute_string ("%s", title); + xml_in_book_title = 0; xml_insert_element (SETTITLE, END); + if (docbook && !xml_in_bookinfo) + { + xml_insert_element (BOOKINFO, START); + xml_in_bookinfo = 1; + } } else get_rest_of_line (0, &title); @@ -1115,7 +1164,7 @@ cm_center () execute_string ("%s", (char *)line); free (line); uninhibit_output_flushing (); - if (html) + if (html) add_word ("</div>"); else @@ -1214,7 +1263,7 @@ cm_exdent () int save_indent = current_indent; int save_in_fixed_width_font = in_fixed_width_font; - /* Read argument */ + /* Read argument. */ get_rest_of_line (0, &line); /* Exdent the output. Actually this may be a no-op. */ @@ -1242,6 +1291,7 @@ cm_exdent () current_indent = save_indent; in_fixed_width_font = save_in_fixed_width_font; + start_paragraph (); } /* @@ -1253,13 +1303,17 @@ static void handle_include (verbatim_include) int verbatim_include; { - char *filename; + char *arg, *filename; if (macro_expansion_output_stream && !executing_string) me_append_before_this_command (); close_paragraph (); - get_rest_of_line (0, &filename); + get_rest_of_line (0, &arg); + /* We really only want to expand @value, but it's easier to just do + everything. TeX will only work with @value. */ + filename = text_expansion (arg); + free (arg); if (macro_expansion_output_stream && !executing_string) remember_itext (input_text, input_text_offset); @@ -1283,8 +1337,6 @@ handle_include (verbatim_include) if (!find_and_load (filename)) { - extern int errno; - popfile (); line_number--; diff --git a/contrib/texinfo/makeinfo/cmds.h b/contrib/texinfo/makeinfo/cmds.h index 7edc810..e9b860a 100644 --- a/contrib/texinfo/makeinfo/cmds.h +++ b/contrib/texinfo/makeinfo/cmds.h @@ -1,7 +1,7 @@ /* cmds.h -- declarations for cmds.c. - $Id: cmds.h,v 1.4 1999/04/25 20:43:51 karl Exp $ + $Id: cmds.h,v 1.3 2002/11/04 22:15:19 karl Exp $ - Copyright (C) 1998, 99 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. 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 @@ -47,4 +47,7 @@ typedef struct extern COMMAND command_table[]; +/* Nonzero if we have seen an @titlepage command. */ +extern int titlepage_cmd_present; + #endif /* !CMDS_H */ diff --git a/contrib/texinfo/makeinfo/defun.c b/contrib/texinfo/makeinfo/defun.c index 49dbd43..ce56059 100644 --- a/contrib/texinfo/makeinfo/defun.c +++ b/contrib/texinfo/makeinfo/defun.c @@ -1,7 +1,7 @@ /* defun.c -- @defun and friends. - $Id: defun.c,v 1.19 2002/03/18 16:54:54 karl Exp $ + $Id: defun.c,v 1.3 2002/11/11 00:57:49 feloy Exp $ - Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 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 @@ -19,9 +19,11 @@ #include "system.h" #include "defun.h" -#include "docbook.h" +#include "xml.h" #include "insertion.h" #include "makeinfo.h" +#include "cmds.h" +#include "html.h" #define DEFUN_SELF_DELIMITING(c) \ @@ -239,7 +241,13 @@ process_defun_args (defun_args, auto_var_p) } if (DEFUN_SELF_DELIMITING (defun_arg[0])) - add_char (defun_arg[0]); + { + /* Within @deffn and friends, texinfo.tex makes parentheses + sans serif and brackets bold. We use roman instead. */ + insert_html_tag (START, ""); + add_char (defun_arg[0]); + insert_html_tag (END, ""); + } else if (defun_arg[0] == '&') if (html) { @@ -446,8 +454,6 @@ defun_internal (type, x_p) /* Start the definition on new paragraph. */ if (html) add_word ("<p>\n"); - if (docbook) - docbook_begin_paragraph (); } if (!html && !docbook) @@ -506,30 +512,34 @@ defun_internal (type, x_p) case defvr: case deftp: /* <i> is for the following function arguments. */ - add_word ("<b>"); + insert_html_tag (START, "b"); execute_string ("%s", defined_name); - add_word ("</b><i>"); + insert_html_tag (END, "b"); + insert_html_tag (START, "i"); break; case deftypefn: case deftypevr: execute_string ("%s ", type_name); - add_word ("<b>"); + insert_html_tag (START, "b"); execute_string ("%s", defined_name); - add_word ("</b><i>"); + insert_html_tag (END, "b"); + insert_html_tag (START, "i"); break; case defcv: case defop: - add_word ("<b>"); + insert_html_tag (START, "b"); execute_string ("%s", defined_name); - add_word ("</b><i>"); + insert_html_tag (END, "b"); + insert_html_tag (START, "i"); break; case deftypemethod: case deftypeop: case deftypeivar: execute_string ("%s ", type_name2); - add_word ("<b>"); + insert_html_tag (START, "b"); execute_string ("%s", defined_name); - add_word ("</b><i>"); + insert_html_tag (END, "b"); + insert_html_tag (START, "i"); break; } } /* if (html)... */ @@ -543,19 +553,24 @@ defun_internal (type, x_p) case deftp: case defcv: case defop: - add_word_args ("<%s>%s</%s>", DB_FUNCTION, defined_name, - DB_FUNCTION); + xml_insert_element (FUNCTION, START); + execute_string ("%s", defined_name); + xml_insert_element (FUNCTION, END); break; case deftypefn: case deftypevr: - add_word_args ("%s <%s>%s</%s>", type_name, DB_FUNCTION, - defined_name, DB_FUNCTION); + execute_string ("%s", type_name); + xml_insert_element (FUNCTION, START); + execute_string ("%s", defined_name); + xml_insert_element (FUNCTION, END); break; case deftypemethod: case deftypeop: case deftypeivar: - add_word_args ("%s <%s>%s</%s>", type_name2, DB_FUNCTION, - defined_name, DB_FUNCTION); + execute_string ("%s", type_name2); + xml_insert_element (FUNCTION, START); + execute_string ("%s", defined_name); + xml_insert_element (FUNCTION, END); break; } @@ -602,7 +617,7 @@ defun_internal (type, x_p) case deftp: case deftypefn: case deftypevr: - add_word ("</i>"); /* close italic area for arguments */ + insert_html_tag (END, "i"); /* close italic area for arguments */ /* put the rest into the second column */ add_word ("</td>\n"); add_html_elt ("<td align=\"right\">"); @@ -618,14 +633,14 @@ defun_internal (type, x_p) case defop: case deftypemethod: case deftypeop: - add_word ("</i>"); + insert_html_tag (END, "i"); add_word ("</td>\n"); add_html_elt ("<td align=\"right\">"); execute_string ("%s %s %s", category, _("on"), type_name); break; case deftypeivar: - add_word ("</i>"); + insert_html_tag (END, "i"); add_word ("</td>\n"); add_html_elt ("<td align=\"right\">"); execute_string ("%s %s %s", category, _("of"), type_name); diff --git a/contrib/texinfo/makeinfo/defun.h b/contrib/texinfo/makeinfo/defun.h index ebff9d6..a701201 100644 --- a/contrib/texinfo/makeinfo/defun.h +++ b/contrib/texinfo/makeinfo/defun.h @@ -1,5 +1,5 @@ /* defun.h -- declaration for defuns. - $Id: defun.h,v 1.2 1999/03/25 22:49:10 karl Exp $ + $Id: defun.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1999 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/files.c b/contrib/texinfo/makeinfo/files.c index 83c00e1..2c3fc10 100644 --- a/contrib/texinfo/makeinfo/files.c +++ b/contrib/texinfo/makeinfo/files.c @@ -1,7 +1,7 @@ /* files.c -- file-related functions for makeinfo. - $Id: files.c,v 1.10 2002/01/16 15:52:45 karl Exp $ + $Id: files.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/makeinfo/files.h b/contrib/texinfo/makeinfo/files.h index 88ae209..e2a1069 100644 --- a/contrib/texinfo/makeinfo/files.h +++ b/contrib/texinfo/makeinfo/files.h @@ -1,5 +1,5 @@ /* files.h -- declarations for files.c. - $Id: files.h,v 1.2 2002/01/16 15:52:45 karl Exp $ + $Id: files.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1998, 2002 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/footnote.c b/contrib/texinfo/makeinfo/footnote.c index d9f2525..5a11028 100644 --- a/contrib/texinfo/makeinfo/footnote.c +++ b/contrib/texinfo/makeinfo/footnote.c @@ -1,7 +1,7 @@ /* footnote.c -- footnotes for Texinfo. - $Id: footnote.c,v 1.13 2002/03/02 15:05:21 karl Exp $ + $Id: footnote.c,v 1.4 2002/11/05 03:04:26 karl Exp $ - Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. 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 @@ -237,7 +237,7 @@ cm_footnote () `fn-<n>', though that's unlikely. */ if (html) { - add_html_elt ("<a rel=footnote href="); + add_html_elt ("<a rel=\"footnote\" href="); add_word_args ("\"#fn-%d\"><sup>%s</sup></a>", current_footnote_number, marker); } @@ -294,7 +294,7 @@ output_pending_notes () out there doesn't use numbers by default. Since we rely on the browser to produce the footnote numbers, we need to make sure they ARE indeed numbers. Pre-HTML4 browsers seem to not care. */ - add_word ("<hr><h4>"); + add_word ("<div class=\"footnote\">\n<hr>\n<h4>"); add_word (_("Footnotes")); add_word ("</h4>\n<ol type=\"1\">\n"); } @@ -372,7 +372,7 @@ output_pending_notes () } if (html) - add_word ("</ol><hr>"); + add_word ("</ol><hr></div>"); close_paragraph (); free (array); } diff --git a/contrib/texinfo/makeinfo/footnote.h b/contrib/texinfo/makeinfo/footnote.h index c87a0aa..ad6ac85 100644 --- a/contrib/texinfo/makeinfo/footnote.h +++ b/contrib/texinfo/makeinfo/footnote.h @@ -1,5 +1,5 @@ /* footnote.h -- declarations for footnote.c. - $Id: footnote.h,v 1.2 1998/10/26 22:16:15 karl Exp $ + $Id: footnote.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1998 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/html.c b/contrib/texinfo/makeinfo/html.c index c03f4f7..51960fc 100644 --- a/contrib/texinfo/makeinfo/html.c +++ b/contrib/texinfo/makeinfo/html.c @@ -1,7 +1,7 @@ /* html.c -- html-related utilities. - $Id: html.c,v 1.26 2002/03/23 20:39:49 karl Exp $ + $Id: html.c,v 1.8 2002/11/04 22:14:40 karl Exp $ - Copyright (C) 1999, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 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 @@ -24,14 +24,16 @@ #include "makeinfo.h" #include "sectioning.h" +HSTACK *htmlstack = NULL; + /* See html.h. */ int html_output_head_p = 0; +int html_title_written = 0; void html_output_head () { static char *html_title = NULL; - static int html_title_written = 0; if (html_output_head_p) return; @@ -53,10 +55,12 @@ html_output_head () if (!document_description) document_description = html_title; - add_word_args ("<meta name=description content=\"%s\">\n", + add_word_args ("<meta name=\"description\" content=\"%s\">\n", document_description); - add_word_args ("<meta name=generator content=\"makeinfo %s\">\n", VERSION); - add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" rel=generator-home>\n"); + add_word_args ("<meta name=\"generator\" content=\"makeinfo %s\">\n", + VERSION); + add_word ("<link href=\"http://www.gnu.org/software/texinfo/\" \ +rel=\"generator-home\">\n"); if (copying_text) { /* copying_text has already been fully expanded in @@ -71,9 +75,9 @@ html_output_head () add_word ("</head>\n<body>\n"); - if (title && !html_title_written) + if (title && !html_title_written && titlepage_cmd_present) { - add_word_args ("<h1>%s</h1>\n", html_title); + add_word_args ("<h1 class=\"settitle\">%s</h1>\n", html_title); html_title_written = 1; } } @@ -135,6 +139,34 @@ escape_string (string) free (string); return newstring - newlen; } + +/* Save current tag. */ +void +push_tag (tag) + char *tag; +{ + HSTACK *newstack = xmalloc (sizeof (HSTACK)); + + newstack->tag = tag; + newstack->next = htmlstack; + htmlstack = newstack; +} + +/* Get last tag. */ +void +pop_tag () +{ + HSTACK *tos = htmlstack; + + if (!tos) + { + line_error (_("[unexpected] no html tag to pop")); + return; + } + + htmlstack = htmlstack->next; + free (tos); +} /* Open or close TAG according to START_OR_END. */ void @@ -142,6 +174,9 @@ insert_html_tag (start_or_end, tag) int start_or_end; char *tag; { + char *old_tag = NULL; + int do_return = 0; + if (!paragraph_is_open && (start_or_end == START)) { /* Need to compensate for the <p> we are about to insert, or @@ -150,11 +185,47 @@ insert_html_tag (start_or_end, tag) adjust_braces_following (output_paragraph_offset, 3); add_word ("<p>"); } - add_char ('<'); + if (start_or_end != START) - add_char ('/'); - add_word (tag); - add_char ('>'); + pop_tag (tag); + + if (htmlstack) + old_tag = htmlstack->tag; + + if (htmlstack + && (strcmp (htmlstack->tag, tag) == 0)) + do_return = 1; + + if (start_or_end == START) + push_tag (tag); + + if (do_return) + return; + + /* texinfo.tex doesn't support more than one font attribute + at the same time. */ + if ((start_or_end == START) && old_tag && *old_tag) + { + add_word ("</"); + add_word (old_tag); + add_char ('>'); + } + + if (*tag) + { + add_char ('<'); + if (start_or_end != START) + add_char ('/'); + add_word (tag); + add_char ('>'); + } + + if ((start_or_end != START) && old_tag && *old_tag) + { + add_char ('<'); + add_word (old_tag); + add_char ('>'); + } } /* Output an HTML <link> to the filename for NODE, including the @@ -295,8 +366,8 @@ nodename_to_filename_1 (nodename, href) p = strchr (nodename, ')'); if (p == NULL) { - line_error (_("Invalid node name: `%s'"), nodename); - exit (1); + line_error (_("[unexpected] invalid node name: `%s'"), nodename); + xexit (1); } length = p - nodename - 1; diff --git a/contrib/texinfo/makeinfo/html.h b/contrib/texinfo/makeinfo/html.h index 735b531..84960db 100644 --- a/contrib/texinfo/makeinfo/html.h +++ b/contrib/texinfo/makeinfo/html.h @@ -1,7 +1,7 @@ /* html.h -- declarations for html-related utilities. - $Id: html.h,v 1.4 2002/03/18 19:45:18 karl Exp $ + $Id: html.h,v 1.4 2002/10/31 22:08:23 karl Exp $ - Copyright (C) 1999, 2000, 02 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. 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 @@ -20,9 +20,19 @@ #ifndef HTML_H #define HTML_H +/* A stack of font tags. */ +typedef struct hstack +{ + struct hstack *next; + char *tag; +} HSTACK; + /* Nonzero if we have output the <head>. */ extern int html_output_head_p; +/* Nonzero if we have output a title, from @titlefont or @settitle. */ +extern int html_title_written; + /* Perform the <head> output. */ extern void html_output_head (); diff --git a/contrib/texinfo/makeinfo/index.c b/contrib/texinfo/makeinfo/index.c index bed915d..05c883c 100644 --- a/contrib/texinfo/makeinfo/index.c +++ b/contrib/texinfo/makeinfo/index.c @@ -1,7 +1,7 @@ /* index.c -- indexing for Texinfo. - $Id: index.c,v 1.25 2002/03/19 14:43:04 karl Exp $ + $Id: index.c,v 1.4 2002/11/26 22:54:31 karl Exp $ - Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. 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 @@ -334,7 +334,6 @@ init_indices () /* If there were existing indices, get rid of them now. */ for (i = 0; i < defined_indices; i++) { - undefindex (name_index_alist[i]->name); if (name_index_alist[i]) { /* Suppose we're called with two input files, and the first does a @synindex pg cp. Then, when we get here to start @@ -342,6 +341,7 @@ init_indices () undefindex (because it's pointing to "cp"). So free it here; otherwise, when we try to define the pg index again just below, it will still point to cp. */ + undefindex (name_index_alist[i]->name); free (name_index_alist[i]->name); free (name_index_alist[i]); name_index_alist[i] = NULL; @@ -597,7 +597,7 @@ sort_index (index) /* If this particular entry should be printed as a "code" index, then expand it as @code{entry}, i.e. as in fixed-width font. */ array[count-1]->entry = expansion (temp->entry_text, - array[count-1]->code); + array[count-1]->code); temp = temp->next; } @@ -662,18 +662,18 @@ cm_printindex () index = index_list (index_name); if (index == (INDEX_ELT *)-1) - { - line_error (_("Unknown index `%s' in @printindex"), index_name); - free (index_name); - return; - } + { + line_error (_("Unknown index `%s' in @printindex"), index_name); + free (index_name); + return; + } /* Do this before sorting, so execute_string is in the good environment */ if (xml && docbook) - xml_begin_index (); + xml_begin_index (); /* Do this before sorting, so execute_string in index_element_compare - will give the same results as when we actually print. */ + will give the same results as when we actually print. */ printing_index = 1; filling_enabled = 0; inhibit_paragraph_indentation = 1; @@ -682,9 +682,9 @@ cm_printindex () xml_sort_index = 0; close_paragraph (); if (html) - add_word ("<ul compact>"); + add_word_args ("<ul class=\"index-%s\" compact>", index_name); else if (!no_headers && !docbook) - add_word ("* Menu:\n\n"); + add_word ("* Menu:\n\n"); me_inhibit_expansion++; @@ -693,150 +693,154 @@ cm_printindex () line = xmalloc (line_length); for (item = 0; (index = array[item]); item++) - { - /* A pathological document might have an index entry outside of any - node. Don't crash; try using the section name instead. */ - char *index_node = index->node; - - line_number = index->defining_line; - input_filename = index->defining_file; - - if ((!index_node || !*index_node) && html) - index_node = toc_find_section_of_node (index_node); - - if (!index_node || !*index_node) - { - line_error (_("Entry for index `%s' outside of any node"), - index_name); - if (html || !no_headers) - index_node = _("(outside of any node)"); - } - - if (html) - /* fixme: html: we should use specific index anchors pointing + { + /* A pathological document might have an index entry outside of any + node. Don't crash; try using the section name instead. */ + char *index_node = index->node; + + line_number = index->defining_line; + input_filename = index->defining_file; + + if ((!index_node || !*index_node) && html) + index_node = toc_find_section_of_node (index_node); + + if (!index_node || !*index_node) + { + line_error (_("Entry for index `%s' outside of any node"), + index_name); + if (html || !no_headers) + index_node = _("(outside of any node)"); + } + + if (html) + /* fixme: html: we should use specific index anchors pointing to the actual location of the indexed position (but then we have to find something to wrap the anchor around). */ - { - if (last_index - && STREQ (last_index->entry_text, index->entry_text)) - add_word (", "); /* Don't repeat the previous entry. */ - else - { - /* In the HTML case, the expanded index entry is not - good for us, since it was expanded for non-HTML mode - inside sort_index. So we need to HTML-escape and - expand the original entry text here. */ - char *escaped_entry = xstrdup (index->entry_text); - char *expanded_entry; - - /* expansion() doesn't HTML-escape the argument, so need - to do it separately. */ - escaped_entry = escape_string (escaped_entry); - expanded_entry = expansion (escaped_entry, index->code); - add_word_args ("\n<li>%s: ", expanded_entry); - free (escaped_entry); - free (expanded_entry); - } - add_word ("<a href=\""); - if (index->node && *index->node) - { - /* Make sure any non-macros in the node name are expanded. */ - in_fixed_width_font++; - index_node = expansion (index_node, 0); - in_fixed_width_font--; - add_anchor_name (index_node, 1); - add_word_args ("\">%s</a>", index_node); - free (index_node); - } - else if (STREQ (index_node, _("(outside of any node)"))) - { - add_anchor_name (index_node, 1); - add_word_args ("\">%s</a>", index_node); - } - else - /* If we use the section instead of the (missing) node, then - index_node already includes all we need except the #. */ - add_word_args ("#%s</a>", index_node); - } - else if (xml && docbook) - { - xml_insert_indexentry (index->entry, index_node); - } - else - { - unsigned new_length = strlen (index->entry); - - if (new_length < 50) /* minimum length used below */ - new_length = 50; - new_length += strlen (index_node) + 7; /* * : .\n\0 */ - - if (new_length > line_length) - { - line_length = new_length; - line = xrealloc (line, line_length); - } - /* Print the entry, nicely formatted. We've already - expanded any commands in index->entry, including any - implicit @code. Thus, can't call execute_string, since - @@ has turned into @. */ - if (!no_headers) - { - sprintf (line, "* %-37s ", index->entry); - line[2 + strlen (index->entry)] = ':'; - insert_string (line); - /* Make sure any non-macros in the node name are expanded. */ - in_fixed_width_font++; - execute_string ("%s.\n", index_node); - in_fixed_width_font--; - } - else - { - /* With --no-headers, the @node lines are gone, so - there's little sense in referring to them in the - index. Instead, output the number or name of the - section that corresponds to that node. */ - char *section_name = toc_find_section_of_node (index_node); - - sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry); - line[strlen (index->entry)] = ':'; - insert_string (line); - if (section_name) - { - int idx = 0; - unsigned ref_len = strlen (section_name) + 30; - - if (ref_len > line_length) - { - line_length = ref_len; - line = xrealloc (line, line_length); - } - - if (number_sections) - { - while (section_name[idx] - && (isdigit (section_name[idx]) - || (idx && section_name[idx] == '.'))) - idx++; - } - if (idx) - sprintf (line, " See %.*s.\n", idx, section_name); - else - sprintf (line, "\n See ``%s''.\n", section_name); - insert_string (line); - } - else - { - insert_string (" "); /* force a blank */ - execute_string ("See node %s.\n", index_node); - } - } - } - - /* Prevent `output_paragraph' from growing to the size of the - whole index. */ - flush_output (); - last_index = index; - } + { + if (last_index + && STREQ (last_index->entry_text, index->entry_text)) + add_word (", "); /* Don't repeat the previous entry. */ + else + { + /* In the HTML case, the expanded index entry is not + good for us, since it was expanded for non-HTML mode + inside sort_index. So we need to HTML-escape and + expand the original entry text here. */ + char *escaped_entry = xstrdup (index->entry_text); + char *expanded_entry; + + /* expansion() doesn't HTML-escape the argument, so need + to do it separately. */ + escaped_entry = escape_string (escaped_entry); + expanded_entry = expansion (escaped_entry, index->code); + add_word_args ("\n<li>%s: ", expanded_entry); + free (escaped_entry); + free (expanded_entry); + } + add_word ("<a href=\""); + if (index->node && *index->node) + { + /* Make sure any non-macros in the node name are expanded. */ + in_fixed_width_font++; + index_node = expansion (index_node, 0); + in_fixed_width_font--; + add_anchor_name (index_node, 1); + add_word_args ("\">%s</a>", index_node); + free (index_node); + } + else if (STREQ (index_node, _("(outside of any node)"))) + { + add_anchor_name (index_node, 1); + add_word_args ("\">%s</a>", index_node); + } + else + /* If we use the section instead of the (missing) node, then + index_node already includes all we need except the #. */ + add_word_args ("#%s</a>", index_node); + } + else if (xml && docbook) + { + /* In the DocBook case, the expanded index entry is not + good for us, since it was expanded for non-DocBook mode + inside sort_index. So we send the original entry text + to be used with execute_string. */ + xml_insert_indexentry (index->entry_text, index_node); + } + else + { + unsigned new_length = strlen (index->entry); + + if (new_length < 50) /* minimum length used below */ + new_length = 50; + new_length += strlen (index_node) + 7; /* * : .\n\0 */ + + if (new_length > line_length) + { + line_length = new_length; + line = xrealloc (line, line_length); + } + /* Print the entry, nicely formatted. We've already + expanded any commands in index->entry, including any + implicit @code. Thus, can't call execute_string, since + @@ has turned into @. */ + if (!no_headers) + { + sprintf (line, "* %-37s ", index->entry); + line[2 + strlen (index->entry)] = ':'; + insert_string (line); + /* Make sure any non-macros in the node name are expanded. */ + in_fixed_width_font++; + execute_string ("%s.\n", index_node); + in_fixed_width_font--; + } + else + { + /* With --no-headers, the @node lines are gone, so + there's little sense in referring to them in the + index. Instead, output the number or name of the + section that corresponds to that node. */ + char *section_name = toc_find_section_of_node (index_node); + + sprintf (line, "%-*s ", number_sections ? 50 : 1, index->entry); + line[strlen (index->entry)] = ':'; + insert_string (line); + if (section_name) + { + int idx = 0; + unsigned ref_len = strlen (section_name) + 30; + + if (ref_len > line_length) + { + line_length = ref_len; + line = xrealloc (line, line_length); + } + + if (number_sections) + { + while (section_name[idx] + && (isdigit (section_name[idx]) + || (idx && section_name[idx] == '.'))) + idx++; + } + if (idx) + sprintf (line, " See %.*s.\n", idx, section_name); + else + sprintf (line, "\n See ``%s''.\n", section_name); + insert_string (line); + } + else + { + insert_string (" "); /* force a blank */ + execute_string ("See node %s.\n", index_node); + } + } + } + + /* Prevent `output_paragraph' from growing to the size of the + whole index. */ + flush_output (); + last_index = index; + } free (line); free (index_name); @@ -852,8 +856,8 @@ cm_printindex () line_number = saved_line_number; if (html) - add_word ("</ul>"); + add_word ("</ul>"); else if (xml && docbook) - xml_end_index (); + xml_end_index (); } } diff --git a/contrib/texinfo/makeinfo/index.h b/contrib/texinfo/makeinfo/index.h index ed8583a..3279a24 100644 --- a/contrib/texinfo/makeinfo/index.h +++ b/contrib/texinfo/makeinfo/index.h @@ -1,5 +1,5 @@ /* index.h -- declarations for index.c. - $Id: index.h,v 1.4 1999/04/19 18:12:17 karl Exp $ + $Id: index.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1998, 99 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/insertion.c b/contrib/texinfo/makeinfo/insertion.c index 30a0222..ecc0f66 100644 --- a/contrib/texinfo/makeinfo/insertion.c +++ b/contrib/texinfo/makeinfo/insertion.c @@ -1,7 +1,8 @@ /* insertion.c -- insertions for Texinfo. - $Id: insertion.c,v 1.47 2002/04/01 14:01:36 karl Exp $ + $Id: insertion.c,v 1.14 2003/01/02 23:46:29 karl Exp $ - Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software + Foundation, Inc. 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 @@ -34,8 +35,8 @@ static char *insertion_type_names[] = "deftypevar", "deftypevr", "defun", "defvar", "defvr", "detailmenu", "direntry", "display", "documentdescription", "enumerate", "example", "flushleft", "flushright", "format", "ftable", "group", "ifclear", - "ifhtml", "ifinfo", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex", - "ifplaintext", "ifset", "iftex", "itemize", "lisp", "menu", + "ifhtml", "ifinfo", "ifnothtml", "ifnotinfo", "ifnotplaintext", "ifnottex", "ifnotxml", + "ifplaintext", "ifset", "iftex", "ifxml", "itemize", "lisp", "menu", "multitable", "quotation", "rawhtml", "rawtex", "smalldisplay", "smallexample", "smallformat", "smalllisp", "verbatim", "table", "tex", "vtable", "bad_type" @@ -100,15 +101,17 @@ current_item_function () case ifnotinfo: case ifnotplaintext: case ifnottex: + case ifnotxml: case ifplaintext: case ifset: case iftex: + case ifxml: case rawhtml: case rawtex: case tex: case cartouche: - elt = elt->next; - break; + elt = elt->next; + break; default: done = 1; @@ -211,6 +214,8 @@ find_type_from_name (name) return (enum insertion_type) index; if (index == rawhtml && STREQ (name, "html")) return rawhtml; + if (index == rawhtml && STREQ (name, "xml")) + return rawhtml; if (index == rawtex && STREQ (name, "tex")) return rawtex; index++; @@ -386,7 +391,7 @@ begin_insertion (type) add_word ("* Menu:\n"); if (xml) - xml_insert_element (MENU, START); + xml_insert_element (MENU, START); next_menu_item_number = 1; in_menu++; @@ -443,14 +448,23 @@ begin_insertion (type) the Top node (for info/html). */ char *text; int start_of_end; + int save_paragraph_indentation; discard_until ("\n"); /* ignore remainder of @copying line */ start_of_end = get_until ("\n@end copying", &text); /* include all the output-format-specific markup. */ + if (docbook) + { + save_paragraph_indentation = inhibit_paragraph_indentation; + inhibit_paragraph_indentation = 1; + } copying_text = full_expansion (text, 0); free (text); + if (docbook) + inhibit_paragraph_indentation = save_paragraph_indentation; + input_text_offset = start_of_end; /* go back to the @end to match */ } @@ -461,8 +475,26 @@ begin_insertion (type) For html, we output it specifically in html_output_head. For plain text, there's no way to hide it, so the author must use @insertcopying in the desired location. */ + if (docbook) + { + if (!xml_in_bookinfo) + { + xml_insert_element (BOOKINFO, START); + xml_in_bookinfo = 1; + } + if (!xml_in_abstract) + { + xml_insert_element (ABSTRACT, START); + xml_in_abstract = 1; + } + } if (!html && !no_headers) cm_insert_copying (); + if (docbook && xml_in_abstract) + { + xml_insert_element (ABSTRACT, END); + xml_in_abstract = 0; + } break; case quotation: @@ -500,10 +532,21 @@ begin_insertion (type) /* Kludge alert: if <pre> is followed by a newline, IE3 renders an extra blank line before the pre-formatted block. Other browsers seem to not mind one way or the other. */ - add_word ("<br><pre>"); + add_word_args ("<pre class=\"%s\">", command); if (type != format && type != smallformat) - current_indent += default_indentation_increment; + { + current_indent += default_indentation_increment; + if (html) + { + /* Since we didn't put \n after <pre>, we need to insert + the indentation by hand. */ + int i; + for (i = current_indent; i > 0; i--) + add_char (' '); + } + } + break; case multitable: @@ -542,15 +585,15 @@ begin_insertion (type) if (html) { if (type == itemize) - { - add_word ("<ul>\n"); - in_paragraph = 0; - } + { + add_word ("<ul>\n"); + in_paragraph = 0; + } else add_word (dl_tag); } if (xml) - xml_begin_table (type, insertion_stack->item_function); + xml_begin_table (type, insertion_stack->item_function); break; case enumerate: @@ -566,10 +609,13 @@ begin_insertion (type) filling_enabled = indented_fill = 1; if (html) - enum_html (); + { + enum_html (); + in_paragraph = 0; + } if (xml) - xml_begin_enumerate (enumeration_arg); + xml_begin_enumerate (enumeration_arg); if (isdigit (*enumeration_arg)) start_enumerating (atoi (enumeration_arg), ENUM_DIGITS); @@ -582,7 +628,7 @@ begin_insertion (type) /* Only close the paragraph if we are not inside of an @example-like environment. */ if (xml) - xml_insert_element (GROUP, START); + xml_insert_element (GROUP, START); else if (!insertion_stack->next || (insertion_stack->next->insertion != display && insertion_stack->next->insertion != smalldisplay @@ -606,9 +652,11 @@ begin_insertion (type) case ifnotinfo: case ifnotplaintext: case ifnottex: + case ifnotxml: case ifplaintext: case ifset: case iftex: + case ifxml: case rawtex: if (in_menu) no_discard++; @@ -648,7 +696,7 @@ begin_insertion (type) inhibit_paragraph_indentation = 1; filling_enabled = indented_fill = no_indent = 0; if (html) - add_word ("<div align=\"left\">"); + add_word ("<div align=\"left\">"); break; case flushright: @@ -657,7 +705,7 @@ begin_insertion (type) inhibit_paragraph_indentation = 1; force_flush_right++; if (html) - add_word ("<div align=\"right\">"); + add_word ("<div align=\"right\">"); break; default: @@ -700,56 +748,62 @@ end_insertion (type) if (xml) { switch (type) - { - case ifinfo: - case documentdescription: - break; - case copying: - xml_insert_element (COPYING, END); - break; - case quotation: - xml_insert_element (QUOTATION, END); - break; - case example: - xml_insert_element (EXAMPLE, END); - break; - case smallexample: - xml_insert_element (SMALLEXAMPLE, END); - break; - case lisp: - xml_insert_element (LISP, END); - break; - case smalllisp: - xml_insert_element (SMALLLISP, END); - break; - case cartouche: - xml_insert_element (CARTOUCHE, END); - break; - case format: - xml_insert_element (FORMAT, END); - break; - case smallformat: - xml_insert_element (SMALLFORMAT, END); - break; - case display: - xml_insert_element (DISPLAY, END); - break; - case smalldisplay: - xml_insert_element (SMALLDISPLAY, END); - break; - case table: - case ftable: - case vtable: - case itemize: - xml_end_table (type); - break; - case enumerate: - xml_end_enumerate (type); - break; - case group: - xml_insert_element (GROUP, END); - break; - } + { + case ifinfo: + case documentdescription: + break; + case copying: + xml_insert_element (COPYING, END); + break; + case quotation: + xml_insert_element (QUOTATION, END); + break; + case example: + xml_insert_element (EXAMPLE, END); + break; + case smallexample: + xml_insert_element (SMALLEXAMPLE, END); + break; + case lisp: + xml_insert_element (LISP, END); + break; + case smalllisp: + xml_insert_element (SMALLLISP, END); + break; + case cartouche: + xml_insert_element (CARTOUCHE, END); + break; + case format: + if (docbook && xml_in_bookinfo && xml_in_abstract) + { + xml_insert_element (ABSTRACT, END); + xml_in_abstract = 0; + } + else + xml_insert_element (FORMAT, END); + break; + case smallformat: + xml_insert_element (SMALLFORMAT, END); + break; + case display: + xml_insert_element (DISPLAY, END); + break; + case smalldisplay: + xml_insert_element (SMALLDISPLAY, END); + break; + case table: + case ftable: + case vtable: + case itemize: + xml_end_table (type); + break; + case enumerate: + xml_end_enumerate (type); + break; + case group: + xml_insert_element (GROUP, END); + break; + } } switch (type) { @@ -763,9 +817,11 @@ end_insertion (type) case ifnotinfo: case ifnotplaintext: case ifnottex: + case ifnotxml: case ifplaintext: case ifset: case iftex: + case ifxml: case rawtex: break; @@ -809,7 +865,7 @@ end_insertion (type) case flushleft: if (html) - add_word ("</div>\n"); + add_word ("</div>\n"); close_insertion_paragraph (); break; @@ -846,6 +902,7 @@ end_insertion (type) current_indent -= default_indentation_increment; if (html) add_word ("</dl>\n"); + close_insertion_paragraph (); break; case itemize: @@ -858,14 +915,14 @@ end_insertion (type) case flushright: force_flush_right--; if (html) - add_word ("</div>\n"); + add_word ("</div>\n"); close_insertion_paragraph (); break; /* Handle the @defun insertions with this default clause. */ default: { - enum insertion_type base_type; + enum insertion_type base_type; if (type < defcv || type > defvr) line_error ("end_insertion internal error: type=%d", type); @@ -880,11 +937,11 @@ end_insertion (type) case deftypevr: case defcv: case defop: - case deftypemethod: - case deftypeop: - case deftypeivar: - if (html) - /* close the tables which has been opened in defun.c */ + case deftypemethod: + case deftypeop: + case deftypeivar: + if (html) + /* close the tables which has been opened in defun.c */ add_word ("</td></tr>\n</table>\n"); break; } /* switch (base_type)... */ @@ -927,9 +984,9 @@ discard_insertions (specials_ok) char *offender = insertion_type_pname (insertion_stack->insertion); file_line_error (insertion_stack->filename, - insertion_stack->line_number, - _("No matching `%cend %s'"), COMMAND_PREFIX, - offender); + insertion_stack->line_number, + _("No matching `%cend %s'"), COMMAND_PREFIX, + offender); pop_insertion (); } } @@ -1003,6 +1060,10 @@ cm_insert_copying () full expansion on copying_text when we saved it. */ insert_string (copying_text); insert ('\n'); + + /* Update output_position so that the node positions in the tag + tables will take account of the copying text. */ + flush_output (); } } @@ -1010,7 +1071,15 @@ void cm_format () { if (xml) - xml_insert_element (FORMAT, START); + { + if (docbook && xml_in_bookinfo) + { + xml_insert_element (ABSTRACT, START); + xml_in_abstract = 1; + } + else + xml_insert_element (FORMAT, START); + } begin_insertion (format); } @@ -1129,7 +1198,7 @@ handle_verbatim_environment (find_end_verbatim) */ if (html) - add_word ("<pre>"); + add_word ("<pre class=\"verbatim\">"); while (input_text_offset < input_text_length) { @@ -1138,19 +1207,25 @@ handle_verbatim_environment (find_end_verbatim) if (character == '\n') line_number++; /* - Assume no newlines in END_VERBATIM + Assume no newlines in END_VERBATIM */ else if (find_end_verbatim && (character == COMMAND_PREFIX) /* @ */ - && (input_text_length - input_text_offset > sizeof (END_VERBATIM)) - && !strncmp (&input_text[input_text_offset+1], END_VERBATIM, - sizeof (END_VERBATIM)-1)) - { - input_text_offset += sizeof (END_VERBATIM); - seen_end = 1; - break; - } + && (input_text_length - input_text_offset > sizeof (END_VERBATIM)) + && !strncmp (&input_text[input_text_offset+1], END_VERBATIM, + sizeof (END_VERBATIM)-1)) + { + input_text_offset += sizeof (END_VERBATIM); + seen_end = 1; + break; + } + + if (html && character == '&' && escape_html) + add_word ("&"); + else if (html && character == '<' && escape_html) + add_word ("<"); + else + add_char (character); - add_char (character); input_text_offset++; } @@ -1205,7 +1280,7 @@ cm_group () void cm_html () { - if (process_html) + if (process_html || process_xml) begin_insertion (rawhtml); else command_name_condition (); @@ -1294,6 +1369,25 @@ cm_ifnottex () else command_name_condition (); } + +void +cm_ifxml () +{ + if (process_xml) + begin_insertion (ifxml); + else + command_name_condition (); +} + +void +cm_ifnotxml () +{ + if (!process_xml) + begin_insertion (ifnotxml); + else + command_name_condition (); +} + /* Begin an insertion where the lines are not filled or indented. */ void @@ -1425,9 +1519,11 @@ cm_item () case ifnotinfo: case ifnotplaintext: case ifnottex: + case ifnotxml: case ifplaintext: case ifset: case iftex: + case ifxml: case rawhtml: case rawtex: case tex: @@ -1465,16 +1561,16 @@ cm_item () else { if (html) - { - if (in_paragraph) - { - add_word ("</p>"); - in_paragraph = 0; - } - add_word ("<li>"); - } - else if (xml) - xml_begin_item (); + { + if (in_paragraph) + { + add_word ("</p>"); + in_paragraph = 0; + } + add_word ("<li>"); + } + else if (xml) + xml_begin_item (); else { start_paragraph (); @@ -1513,12 +1609,12 @@ cm_item () must_start_paragraph = 1; } - /* Handle text directly after the @item. */ - if (*rest_of_line) - { - line_number--; - input_text_offset = original_input_text_offset; - } + /* Handle text directly after the @item. */ + if (*rest_of_line) + { + line_number--; + input_text_offset = original_input_text_offset; + } } break; @@ -1539,7 +1635,7 @@ cm_item () output_paragraph_offset = 0; /* Force the browser to render one blank line before - each new @item in a table. But don't do that unless + each new @item in a table. But don't do that if this is the first <dt> after the <dl>, or if we are converting @itemx. @@ -1569,15 +1665,15 @@ cm_item () last_html_output_position = output_position; add_word ("<dd>"); } - else if (xml) /* && docbook)*/ /* 05-08 */ - { - xml_begin_table_item (); + else if (xml) /* && docbook)*/ /* 05-08 */ + { + xml_begin_table_item (); if (item_func && *item_func) execute_string ("%s{%s}", item_func, rest_of_line); else execute_string ("%s", rest_of_line); - xml_continue_table_item (); - } + xml_continue_table_item (); + } else { /* We need this to determine if we have two @item's in a row diff --git a/contrib/texinfo/makeinfo/insertion.h b/contrib/texinfo/makeinfo/insertion.h index 3a8ccb9..17916e7 100644 --- a/contrib/texinfo/makeinfo/insertion.h +++ b/contrib/texinfo/makeinfo/insertion.h @@ -1,7 +1,7 @@ /* insertion.h -- declarations for insertion.c. - $Id: insertion.h,v 1.13 2002/03/28 16:33:48 karl Exp $ + $Id: insertion.h,v 1.2 2002/09/29 19:15:20 karl Exp $ - Copyright (C) 1998, 99, 2001, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. 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 @@ -28,8 +28,8 @@ enum insertion_type deftypemethod, deftypeop, deftypevar, deftypevr, defun, defvar, defvr, detailmenu, direntry, display, documentdescription, enumerate, example, flushleft, flushright, format, ftable, group, ifclear, - ifhtml, ifinfo, ifnothtml, ifnotinfo, ifnotplaintext, ifnottex, - ifplaintext, ifset, iftex, itemize, lisp, menu, multitable, quotation, + ifhtml, ifinfo, ifnothtml, ifnotinfo, ifnotplaintext, ifnottex, ifnotxml, + ifplaintext, ifset, iftex, ifxml, itemize, lisp, menu, multitable, quotation, rawhtml, rawtex, smalldisplay, smallexample, smallformat, smalllisp, verbatim, table, tex, vtable, bad_type }; @@ -60,4 +60,5 @@ extern void cm_ifhtml (), cm_ifnothtml(), cm_html (); extern void cm_ifinfo (), cm_ifnotinfo (); extern void cm_ifplaintext (), cm_ifnotplaintext(); extern void cm_iftex (), cm_ifnottex (), cm_tex (); +extern void cm_ifxml (), cm_ifnotxml (); #endif /* !INSERTION_H */ diff --git a/contrib/texinfo/makeinfo/lang.c b/contrib/texinfo/makeinfo/lang.c index 468bed8..a9cbfe1 100644 --- a/contrib/texinfo/makeinfo/lang.c +++ b/contrib/texinfo/makeinfo/lang.c @@ -1,7 +1,7 @@ /* lang.c -- language-dependent support. - $Id: lang.c,v 1.14 2001/09/11 18:04:35 karl Exp $ + $Id: lang.c,v 1.5 2002/11/12 18:48:52 feloy Exp $ - Copyright (C) 1999, 2000, 01 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 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 @@ -31,6 +31,8 @@ encoding_code_type document_encoding_code = no_encoding; /* Current language code; default is English. */ language_code_type language_code = en; +iso_map_type us_ascii_map [] = {{NULL, 0, 0}}; /* ASCII map is trivial */ + /* Translation table between HTML and ISO Codes. The last item is hopefully the Unicode. It might be possible that those Unicodes are not correct, cause I didn't check them. kama */ @@ -131,16 +133,13 @@ iso_map_type iso8859_1_map [] = { { "uuml", 0xFC, 0x00FC }, { "yacute", 0xFD, 0x00FD }, { "thorn", 0xFE, 0x00FE }, - { "yuml", 0xFF, 0x00FF } + { "yuml", 0xFF, 0x00FF }, + { NULL, 0, 0 } }; -/* This might be put into structure below and NOT coded via define, - because some translation tables could contain different numbers of - characters, but for now it suffices. */ -#define ISO_MAP_SIZE (sizeof (iso8859_1_map) / sizeof (iso8859_1_map[0])) - encoding_type encoding_table[] = { { no_encoding, "(no encoding)", NULL }, + { US_ASCII, "US-ASCII", us_ascii_map }, { ISO_8859_1, "ISO-8859-1", (iso_map_type *) iso8859_1_map }, { ISO_8859_2, "ISO-8859-2", NULL }, { ISO_8859_3, "ISO-8859-3", NULL }, @@ -349,7 +348,7 @@ cm_search_iso_map (html) if (!iso) return -1; - for (i = 0; i < ISO_MAP_SIZE; i++) + for (i = 0; iso[i].html; i++) { if (strcmp (html, iso[i].html) == 0) return i; @@ -370,7 +369,7 @@ cm_documentencoding () get_rest_of_line (1, &enc_arg); /* See if we have this encoding. */ - for (enc = ISO_8859_1; enc != last_encoding_code; enc++) + for (enc = no_encoding+1; enc != last_encoding_code; enc++) { if (strcasecmp (enc_arg, encoding_table[enc].ecname) == 0) { @@ -400,8 +399,10 @@ add_encoded_char (html_str, info_str) char *html_str; char *info_str; { - if (html || xml) + if (html) add_word_args ("&%s;", html_str); + else if (xml) + xml_insert_entity (html_str); else if (enable_encoding) { /* Look for HTML_STR in the current translation table. */ @@ -439,15 +440,21 @@ cm_accent_generic_html (arg, start, end, html_supported, single, if (strchr (html_supported, curchar ())) { /* Yes; start with an ampersand. The character itself will be added later in read_command (makeinfo.c). */ + int saved_escape_html = escape_html; + escape_html = 0; valid_html_accent = 1; add_char ('&'); + escape_html = saved_escape_html; } else { valid_html_accent = 0; if (html_solo_standalone) { /* No special HTML support, so produce standalone char. */ - add_word_args ("&%s;", html_solo); + if (xml) + xml_insert_entity (html_solo); + else + add_word_args ("&%s;", html_solo); } else /* If the html_solo does not exist as standalone character diff --git a/contrib/texinfo/makeinfo/lang.h b/contrib/texinfo/makeinfo/lang.h index 57d4946..b78ce9c 100644 --- a/contrib/texinfo/makeinfo/lang.h +++ b/contrib/texinfo/makeinfo/lang.h @@ -1,7 +1,7 @@ /* lang.h -- declarations for language codes etc. - $Id: lang.h,v 1.7 2001/09/11 18:04:29 karl Exp $ + $Id: lang.h,v 1.3 2002/11/07 16:10:49 karl Exp $ - Copyright (C) 1999, 2001 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. 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 @@ -79,6 +79,7 @@ extern language_type language_table[]; */ typedef enum { no_encoding, + US_ASCII, ISO_8859_1, /* default for en, de, */ ISO_8859_2, /* actualy not supported like the rest below */ ISO_8859_3, diff --git a/contrib/texinfo/makeinfo/macro.c b/contrib/texinfo/makeinfo/macro.c index 2bba378..357d4ac 100644 --- a/contrib/texinfo/makeinfo/macro.c +++ b/contrib/texinfo/makeinfo/macro.c @@ -1,7 +1,7 @@ /* macro.c -- user-defined macros for Texinfo. - $Id: macro.c,v 1.12 2002/03/02 15:05:21 karl Exp $ + $Id: macro.c,v 1.1 2002/08/25 23:38:38 karl Exp $ - Copyright (C) 1998, 99, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/makeinfo/macro.h b/contrib/texinfo/makeinfo/macro.h index a64c613..5161084 100644 --- a/contrib/texinfo/makeinfo/macro.h +++ b/contrib/texinfo/makeinfo/macro.h @@ -1,5 +1,5 @@ /* macro.h -- declarations for macro.c. - $Id: macro.h,v 1.5 1999/07/15 00:00:46 karl Exp $ + $Id: macro.h,v 1.1 2002/08/25 23:38:38 karl Exp $ Copyright (C) 1998, 99 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/makeinfo.h b/contrib/texinfo/makeinfo/makeinfo.h index ad4ee57..bc322e2 100644 --- a/contrib/texinfo/makeinfo/makeinfo.h +++ b/contrib/texinfo/makeinfo/makeinfo.h @@ -1,7 +1,8 @@ /* makeinfo.h -- declarations for Makeinfo. - $Id: makeinfo.h,v 1.37 2002/03/28 16:33:48 karl Exp $ + $Id: makeinfo.h,v 1.3 2003/01/17 17:14:34 karl Exp $ - Copyright (C) 1996, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software + Foundation, Inc. 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 @@ -194,6 +195,9 @@ DECLARE (int, process_plaintext, -1); /* Nonzero means that we process @tex and @iftex. (--iftex) */ DECLARE (int, process_tex, 0); +/* Nonzero means that we process @xml and @ifxml. (--ifxml) */ +DECLARE (int, process_xml, 0); + /* Maximum number of references to a single node before complaining. (--reference-limit) */ DECLARE (int, reference_warning_limit, 1000); @@ -261,11 +265,6 @@ DECLARE (int, expensive_validation, 0); #define DEFAULT_SPLIT_SIZE 50000 /* Is probably good enough for me. */ DECLARE (int, splitting, 1); /* Defaults to true for now. */ -#define command_char(c) (!cr_or_whitespace(c) \ - && (c) != '{' \ - && (c) != '}' \ - && (c) != '=') - #define skip_whitespace() \ while ((input_text_offset != input_text_length) && \ whitespace (curchar())) \ diff --git a/contrib/texinfo/makeinfo/multi.c b/contrib/texinfo/makeinfo/multi.c index 6b6ec3d..d5cc19c 100644 --- a/contrib/texinfo/makeinfo/multi.c +++ b/contrib/texinfo/makeinfo/multi.c @@ -1,7 +1,8 @@ -/* multi.c -- multitable stuff for makeinfo. - $Id: multi.c,v 1.23 2002/01/19 01:09:08 karl Exp $ +/* multi.c -- multiple-column tables (@multitable) for makeinfo. + $Id: multi.c,v 1.4 2002/11/04 21:28:10 karl Exp $ - Copyright (C) 1996, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software + Foundation, Inc. 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 @@ -423,8 +424,9 @@ multitable_item () /* start at column 1 */ select_output_environment (1); if (!output_paragraph) { - line_error (_("Cannot select column #%d in multitable"), current_env_no); - exit (1); + line_error (_("[unexpected] cannot select column #%d in multitable"), + current_env_no); + xexit (1); } init_column (); diff --git a/contrib/texinfo/makeinfo/node.c b/contrib/texinfo/makeinfo/node.c index b5a90066..10f4c3a 100644 --- a/contrib/texinfo/makeinfo/node.c +++ b/contrib/texinfo/makeinfo/node.c @@ -1,7 +1,8 @@ /* node.c -- nodes for Texinfo. - $Id: node.c,v 1.34 2002/03/26 16:16:29 karl Exp $ + $Id: node.c,v 1.6 2003/01/18 17:16:17 karl Exp $ - Copyright (C) 1998, 99, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 + Free Software Foundation, Inc. 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 @@ -306,7 +307,12 @@ remember_node (node, prev, next, up, position, line_no, fname, flags) node_number++; new->number = node_number; } - new->html_fname = fname; + if (fname) + new->html_fname = fname; + else + /* This happens for Top node under split-HTML, for example. */ + new->html_fname + = normalize_filename (filename_part (current_output_filename)); new->next_ent = tag_table; tag_table = new; } @@ -478,7 +484,7 @@ set_current_output_filename (fname) /* The order is: nodename, nextnode, prevnode, upnode. If all of the NEXT, PREV, and UP fields are empty, they are defaulted. You must follow a node command which has those fields defaulted - with a sectioning command (e.g. @chapter) giving the "level" of that node. + with a sectioning command (e.g., @chapter) giving the "level" of that node. It is an error not to do so. The defaults come from the menu in this node's parent. */ void @@ -652,7 +658,7 @@ cm_node () } line_error - (_("Node `%s' requires a sectioning command (e.g. %c%s)"), + (_("Node `%s' requires a sectioning command (e.g., %c%s)"), node, COMMAND_PREFIX, polite_section_name); } else @@ -914,8 +920,9 @@ cm_node () } if (splitting || !no_headers) - { /* Navigation bar. The <p> avoids the links area running - on with old Lynxen. */ + { /* Navigation bar. */ + add_word ("<div class=\"node\">\n"); + /* The <p> avoids the links area running on with old Lynxen. */ add_word_args ("<p>%s\n", splitting ? "" : "<hr>"); add_word_args ("%s<a name=\"", _("Node:")); tem = expand_node_name (node); @@ -928,7 +935,7 @@ cm_node () tem = expansion (next, 0); add_word (",\n"); add_word (_("Next:")); - add_word ("<a rel=next accesskey=n href=\""); + add_word ("<a rel=\"next\" accesskey=\"n\" href=\""); add_anchor_name (tem, 1); add_word_args ("\">%s</a>", tem); free (tem); @@ -938,7 +945,7 @@ cm_node () tem = expansion (prev, 0); add_word (",\n"); add_word (_("Previous:")); - add_word ("<a rel=previous accesskey=p href=\""); + add_word ("<a rel=\"previous\" accesskey=\"p\" href=\""); add_anchor_name (tem, 1); add_word_args ("\">%s</a>", tem); free (tem); @@ -948,7 +955,7 @@ cm_node () tem = expansion (up, 0); add_word (",\n"); add_word (_("Up:")); - add_word ("<a rel=up accesskey=u href=\""); + add_word ("<a rel=\"up\" accesskey=\"u\" href=\""); add_anchor_name (tem, 1); add_word_args ("\">%s</a>", tem); free (tem); @@ -956,6 +963,7 @@ cm_node () /* html fixxme: we want a `top' or `contents' link here. */ add_word_args ("\n%s<br>\n", splitting ? "<hr>" : ""); + add_word ("</div>\n"); } } else if (docbook) @@ -1274,7 +1282,7 @@ validate (tag, line, label) if (!result) { line_number = line; - line_error (_("%s reference to nonexistent node `%s'"), label, tag); + line_error (_("%s reference to nonexistent node `%s' (perhaps incorrect sectioning?)"), label, tag); return 0; } result->touched++; @@ -1377,7 +1385,7 @@ validate_file (tag_table) } if (you_lose) { - line_error (_("Next field of node `%s' not pointed to"), + line_error (_("Next field of node `%s' not pointed to (perhaps incorrect sectioning?)"), tags->node); file_line_error (temp_tag->filename, temp_tag->line_no, _("This node (%s) has the bad Prev"), @@ -1451,7 +1459,7 @@ validate_file (tag_table) if (!tags->up && !(tags->flags & TAG_FLAG_ANCHOR) && strcasecmp (tags->node, "Top") != 0) - line_error (_("`%s' has no Up field"), tags->node); + line_error (_("`%s' has no Up field (perhaps incorrect sectioning?)"), tags->node); else if (tags->up) { int valid_p = validate (tags->up, tags->line_no, _("Up")); diff --git a/contrib/texinfo/makeinfo/node.h b/contrib/texinfo/makeinfo/node.h index 735a231..a625e88 100644 --- a/contrib/texinfo/makeinfo/node.h +++ b/contrib/texinfo/makeinfo/node.h @@ -1,7 +1,7 @@ /* node.h -- declarations for Node. - $Id: node.h,v 1.6 2002/01/16 15:52:45 karl Exp $ + $Id: node.h,v 1.1 2002/08/25 23:38:39 karl Exp $ - Copyright (C) 1996, 97, 98, 99, 2002 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2002 Free Software Foundation, Inc. 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 diff --git a/contrib/texinfo/makeinfo/sectioning.c b/contrib/texinfo/makeinfo/sectioning.c index 850fc46..761dd39 100644 --- a/contrib/texinfo/makeinfo/sectioning.c +++ b/contrib/texinfo/makeinfo/sectioning.c @@ -1,7 +1,7 @@ -/* sectioning.c -- all related stuff @chapter, @section... @contents - $Id: sectioning.c,v 1.17 2002/02/09 00:54:51 karl Exp $ +/* sectioning.c -- for @chapter, @section, ..., @contents ... + $Id: sectioning.c,v 1.6 2002/11/08 02:21:07 karl Exp $ - Copyright (C) 1999, 2001, 02 Free Software Foundation, Inc. + Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc. 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 @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */ + Originally written by Karl Heinz Marbaise <kama@hippo.fido.de>. */ #include "system.h" #include "cmds.h" @@ -103,10 +103,10 @@ get_sectioning_number (level, num) { p = s + strlen (s); if ((i == 0) && (enum_marker == APPENDIX_MAGIC)) - sprintf (p, "%c.", numbers[i] + 64); /* Should be changed to + sprintf (p, "%c.", numbers[i] + 64); /* Should be changed to be more portable */ else - sprintf (p, "%d.", numbers[i]); + sprintf (p, "%d.", numbers[i]); } /* the last number is never followed by a dot */ @@ -203,7 +203,7 @@ what_section (text) { return_val = section_alist[index].level + section_alist_offset; if (return_val < 0) - return_val = 0; + return_val = 0; else if (return_val > 5) return_val = 5; return return_val; @@ -227,8 +227,8 @@ sectioning_underscore (cmd) free (temp); xml_close_sections (level); /* Mark the beginning of the section - If the next command is printindex, we will remove - the section and put an Index instead */ + If the next command is printindex, we will remove + the section and put an Index instead */ flush_output (); xml_last_section_output_position = output_paragraph_offset; @@ -262,7 +262,7 @@ sectioning_underscore (cmd) { character = scoring_characters[level]; insert_and_underscore (level, character, cmd); - } + } } } @@ -279,44 +279,44 @@ handle_enum_increment (level, index) if (number_sections && section_alist[index].num == ENUM_SECT_NO) { if (level == 0 - && enum_marker != UNNUMBERED_MAGIC) - enum_marker = UNNUMBERED_MAGIC; + && enum_marker != UNNUMBERED_MAGIC) + enum_marker = UNNUMBERED_MAGIC; } /* enumerate only things which are allowed */ if (number_sections && section_alist[index].num) { /* reset the marker if we get into enumerated areas */ if (section_alist[index].num == ENUM_SECT_YES - && level == 0 - && enum_marker == UNNUMBERED_MAGIC) - enum_marker = 0; + && level == 0 + && enum_marker == UNNUMBERED_MAGIC) + enum_marker = 0; /* This is special for appendix; if we got the first time an appendix command then we are entering appendix. Thats the point we have to start countint with A, B and so on. */ if (section_alist[index].num == ENUM_SECT_APP - && level == 0 - && enum_marker != APPENDIX_MAGIC) - { - enum_marker = APPENDIX_MAGIC; - numbers [0] = 0; /* this means we start with Appendix A */ - } + && level == 0 + && enum_marker != APPENDIX_MAGIC) + { + enum_marker = APPENDIX_MAGIC; + numbers [0] = 0; /* this means we start with Appendix A */ + } /* only increment counters if we are not in unnumbered area. This handles situations like this: @unnumbered .... This sets enum_marker to UNNUMBERED_MAGIC @section .... */ if (enum_marker != UNNUMBERED_MAGIC) - { - int i; + { + int i; - /* reset all counters which are one level deeper */ - for (i = level; i < 3; i++) - numbers [i + 1] = 0; + /* reset all counters which are one level deeper */ + for (i = level; i < 3; i++) + numbers [i + 1] = 0; - numbers[level]++; - return xstrdup - (get_sectioning_number (level, section_alist[index].num)); - } + numbers[level]++; + return xstrdup + (get_sectioning_number (level, section_alist[index].num)); + } } /* if (number_sections)... */ return xstrdup (""); @@ -413,7 +413,8 @@ sectioning_html (level, cmd) old_no_indent = no_indent; no_indent = 1; - add_word_args ("<h%d>", level + 2); /* level 0 (chapter) is <h2> */ + /* level 0 (chapter) is <h2> */ + add_word_args ("<h%d class=\"%s\">", level + 2, cmd); /* If we are outside of any node, produce an anchor that the TOC could refer to. */ @@ -426,8 +427,11 @@ sectioning_html (level, cmd) toc_anchor = substring (starting_pos + sizeof (a_name) - 1, output_paragraph + output_paragraph_offset); /* This must be added after toc_anchor is extracted, since - toc_anchor cannot include the closing </a>. For details, - see toc.c:toc_add_entry and toc.c:contents_update_html. */ + toc_anchor cannot include the closing </a>. For details, + see toc.c:toc_add_entry and toc.c:contents_update_html. + + Also, the anchor close must be output before the section name + in case the name itself contains an anchor. */ add_word ("</a>"); } starting_pos = output_paragraph + output_paragraph_offset; @@ -523,7 +527,7 @@ cm_top () if (tag->flags & TAG_FLAG_IS_TOP) { file_line_error (tag->filename, tag->line_no, - _("Here is the %ctop node"), COMMAND_PREFIX); + _("Here is the %ctop node"), COMMAND_PREFIX); return; } tag = tag->next_ent; diff --git a/contrib/texinfo/makeinfo/sectioning.h b/contrib/texinfo/makeinfo/sectioning.h index 75243f0..455fc32 100644 --- a/contrib/texinfo/makeinfo/sectioning.h +++ b/contrib/texinfo/makeinfo/sectioning.h @@ -1,5 +1,5 @@ /* sectioning.h -- all related stuff @chapter, @section... @contents - $Id: sectioning.h,v 1.2 1999/03/09 22:48:15 karl Exp $ + $Id: sectioning.h,v 1.1 2002/08/25 23:38:39 karl Exp $ Copyright (C) 1999 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/texinfo.dtd b/contrib/texinfo/makeinfo/texinfo.dtd index 8345b48..bdd34c9 100644 --- a/contrib/texinfo/makeinfo/texinfo.dtd +++ b/contrib/texinfo/makeinfo/texinfo.dtd @@ -1,4 +1,4 @@ -<!-- $Id: texinfo.dtd,v 1.5 2002/03/23 20:41:32 karl Exp $ +<!-- $Id: texinfo.dtd,v 1.2 2002/12/17 16:34:22 karl Exp $ Document Type Definition for Texinfo. Author: Philippe Martin (feloy@free.fr) @@ -98,7 +98,7 @@ <!-- NODES --> <!-- ***** --> <!ELEMENT node (nodename, nodenext?, nodeprev?, nodeup?, - (para | menu | %section.all;)*) > + (%section.all; | %block;)*) > <!ELEMENT nodename (#PCDATA)> <!ELEMENT nodenext (#PCDATA)> @@ -227,7 +227,7 @@ <!ELEMENT indexterm (#PCDATA | %Inline.phrase;)*> <!ATTLIST indexterm - INDEX CDATA #IMPLIED> + index CDATA #IMPLIED> <!ELEMENT email (emailaddress, emailname?)> <!ELEMENT emailaddress (#PCDATA | %Inline.phrase;)*> diff --git a/contrib/texinfo/makeinfo/texinfo.xsl b/contrib/texinfo/makeinfo/texinfo.xsl index 1740c12..efe36e9 100644 --- a/contrib/texinfo/makeinfo/texinfo.xsl +++ b/contrib/texinfo/makeinfo/texinfo.xsl @@ -1,5 +1,5 @@ <?xml version='1.0'?> -<!-- $Id: texinfo.xsl,v 1.2 2002/04/01 14:06:15 karl Exp $ --> +<!-- $Id: texinfo.xsl,v 1.1 2002/08/25 23:38:39 karl Exp $ --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> diff --git a/contrib/texinfo/makeinfo/toc.c b/contrib/texinfo/makeinfo/toc.c index a9c8986..394a480 100644 --- a/contrib/texinfo/makeinfo/toc.c +++ b/contrib/texinfo/makeinfo/toc.c @@ -1,7 +1,7 @@ /* toc.c -- table of contents handling. - $Id: toc.c,v 1.22 2002/04/01 14:07:11 karl Exp $ + $Id: toc.c,v 1.3 2002/11/07 16:13:59 karl Exp $ - Copyright (C) 1999, 2000, 01, 02 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 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 @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - Written by Karl Heinz Marbaise <kama@hippo.fido.de>. */ + Originally written by Karl Heinz Marbaise <kama@hippo.fido.de>. */ #include "system.h" #include "makeinfo.h" @@ -218,7 +218,7 @@ contents_update_html (fp) flush_output (); /* in case we are writing stdout */ - fprintf (fp, "\n<h2>%s</h2>\n<ul>\n", _("Table of Contents")); + fprintf (fp, "\n<div class=\"contents\">\n<h2>%s</h2>\n<ul>\n", _("Table of Contents")); last_level = toc_entry_alist[0]->level; @@ -237,7 +237,7 @@ contents_update_html (fp) /* @subsubsection ... @chapter ... this IS usual.*/ for (k = 0; k < (last_level-toc_entry_alist[i]->level); k++) - fputs ("</ul>\n", fp); + fputs ("</li></ul>\n", fp); } /* No double entries in TOC. */ @@ -247,6 +247,9 @@ contents_update_html (fp) /* each toc entry is a list item. */ fputs ("<li>", fp); + /* Insert link -- to an external file if splitting, or + within the current document if not splitting. */ + fprintf (fp, "<a "); /* For chapters (only), insert an anchor that the short contents will link to. */ if (toc_entry_alist[i]->level == 0) @@ -259,13 +262,10 @@ contents_update_html (fp) ends, and use that in toc_FOO. */ while (*p && *p != '"') p++; - fprintf (fp, "<a name=\"toc_%.*s\"></a>\n ", + fprintf (fp, "name=\"toc_%.*s\" ", p - toc_entry_alist[i]->name, toc_entry_alist[i]->name); } - - /* Insert link -- to an external file if splitting, or - within the current document if not splitting. */ - fprintf (fp, "<a href=\"%s#%s</a>\n", + fprintf (fp, "href=\"%s#%s</a>\n", splitting ? toc_entry_alist[i]->html_file : "", toc_entry_alist[i]->name); } @@ -276,9 +276,9 @@ contents_update_html (fp) /* Go back to start level. */ if (toc_entry_alist[0]->level < last_level) for (k = 0; k < (last_level-toc_entry_alist[0]->level); k++) - fputs ("</ul>\n", fp); + fputs ("</li></ul>\n", fp); - fputs ("</ul>\n\n", fp); + fputs ("</li></ul>\n</div>\n\n", fp); } /* print table of contents in ASCII (--no-headers) @@ -327,7 +327,7 @@ shortcontents_update_html (fp) flush_output (); /* in case we are writing stdout */ - fprintf (fp, "\n<h2>%s</h2>\n<ul>\n", _("Short Contents")); + fprintf (fp, "\n<div class=\"shortcontents\">\n<h2>%s</h2>\n<ul>\n", _("Short Contents")); if (contents_filename) toc_file = filename_part (contents_filename); @@ -339,14 +339,14 @@ shortcontents_update_html (fp) if (toc_entry_alist[i]->level == 0) { if (contents_filename) - fprintf (fp, "<li><a href=\"%s#toc_%s</a>\n", + fprintf (fp, "<li><a href=\"%s#toc_%s</a></li>\n", splitting ? toc_file : "", name); else fprintf (fp, "<a href=\"%s#%s</a>\n", splitting ? toc_entry_alist[i]->html_file : "", name); } } - fputs ("</ul>\n\n", fp); + fputs ("</ul>\n</div>\n\n", fp); if (contents_filename) free (toc_file); } diff --git a/contrib/texinfo/makeinfo/toc.h b/contrib/texinfo/makeinfo/toc.h index 654a768..0d3e417 100644 --- a/contrib/texinfo/makeinfo/toc.h +++ b/contrib/texinfo/makeinfo/toc.h @@ -1,5 +1,5 @@ /* toc.h -- table of contents handling. - $Id: toc.h,v 1.5 2002/02/09 00:54:51 karl Exp $ + $Id: toc.h,v 1.1 2002/08/25 23:38:39 karl Exp $ Copyright (C) 1999 Free Software Foundation, Inc. diff --git a/contrib/texinfo/makeinfo/xml.c b/contrib/texinfo/makeinfo/xml.c index a7c20ae..16316e0 100644 --- a/contrib/texinfo/makeinfo/xml.c +++ b/contrib/texinfo/makeinfo/xml.c @@ -1,7 +1,7 @@ /* xml.c -- xml output. - $Id: xml.c,v 1.11 2002/03/23 20:41:12 karl Exp $ + $Id: xml.c,v 1.18 2002/12/17 16:34:22 karl Exp $ - Copyright (C) 2001, 02 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. 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 @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - Written by Philippe Martin <feloy@free.fr>. */ + Originally written by Philippe Martin <feloy@free.fr>. */ #include "system.h" #include "makeinfo.h" @@ -93,7 +93,7 @@ element texinfoml_element_list [] = { { "emph", 0, 1 }, { "strong", 0, 1 }, { "cite", 0, 1 }, - { "notfixedwidth", 0, 1 }, + { "notfixedwidth", 0, 1 }, { "i", 0, 1 }, { "b", 0, 1 }, { "r", 0, 1 }, @@ -103,17 +103,17 @@ element texinfoml_element_list [] = { { "sp", 0, 0 }, { "center", 1, 0 }, { "dircategory", 0, 0 }, - { "quotation", 1, 0 }, - { "example", 1, 0 }, - { "smallexample", 1, 0 }, - { "lisp", 1, 0 }, - { "smalllisp", 1, 0 }, + { "quotation", 0, 0 }, + { "example", 0, 0 }, + { "smallexample", 0, 0 }, + { "lisp", 0, 0 }, + { "smalllisp", 0, 0 }, { "cartouche", 1, 0 }, { "copying", 1, 0 }, - { "format", 1, 0 }, - { "smallformat", 1, 0 }, - { "display", 1, 0 }, - { "smalldisplay", 1, 0 }, + { "format", 0, 0 }, + { "smallformat", 0, 0 }, + { "display", 0, 0 }, + { "smalldisplay", 0, 0 }, { "footnote", 0, 1 }, { "itemize", 0, 0 }, @@ -148,7 +148,7 @@ element texinfoml_element_list [] = { { "emailname", 0, 1 }, { "group", 0, 0 }, - + { "printindex", 0, 0 }, { "anchor", 0, 1 }, { "image", 0, 1 }, @@ -165,13 +165,18 @@ element texinfoml_element_list [] = { { "", 0, 0 }, /* INDEXDIV (docbook) */ { "multitable", 0, 0 }, { "", 0, 0 }, /* TGROUP (docbook) */ - { "columnfraction", 0, 0 }, + { "columnfraction", 0, 0 }, { "", 0, 0 }, /* TBODY (docbook) */ { "entry", 0, 0 }, /* ENTRY (docbook) */ { "row", 0, 0 }, /* ROW (docbook) */ { "", 0, 0 }, /* BOOKINFO (docbook) */ { "", 0, 0 }, /* ABSTRACT (docbook) */ { "", 0, 0 }, /* REPLACEABLE (docbook) */ + { "", 0, 0 }, /* ENVAR (docbook) */ + { "", 0, 0 }, /* COMMENT (docbook) */ + { "", 0, 0 }, /* FUNCTION (docbook) */ + { "", 0, 0 }, /* LEGALNOTICE (docbook) */ + { "para", 0, 0 } /* Must be last */ /* name / contains para / contained in para */ }; @@ -207,7 +212,7 @@ element docbook_element_list [] = { { "chapter", 1, 0 }, /* CHAPHEADING */ { "sect1", 1, 0 }, /* HEADING */ { "sect2", 1, 0 }, /* SUBHEADING */ - { "sect3", 1, 0 }, /* SUBSUBHEADING */ + { "simplesect", 1, 0 }, /* SUBSUBHEADING */ { "", 1, 0 }, /* MENU */ { "", 1, 0 }, /* MENUENTRY */ @@ -253,13 +258,13 @@ element docbook_element_list [] = { { "itemizedlist", 0, 0 }, /* ITEMIZE */ { "", 0, 0 }, /* ITEMFUNCTION */ - { "listitem", 1, 0 }, + { "listitem", 1, 0 }, /* ITEM */ { "orderedlist", 0, 0 }, /* ENUMERATE */ { "variablelist", 0, 0 }, /* TABLE */ { "varlistentry", 0, 0 }, /* TABLEITEM */ { "term", 0, 0 }, /* TABLETERM */ - { "indexterm", 0, 1 }, + { "indexterm", 0, 1 }, /* INDEXTERM */ { "xref", 0, 1 }, /* XREF */ { "link", 0, 1 }, /* XREFNODENAME */ @@ -283,8 +288,8 @@ element docbook_element_list [] = { { "", 0, 1 }, /* EMAILNAME */ { "", 0, 0 }, /* GROUP */ - - { "index", 0, 0 }, /* PRINTINDEX */ + + { "index", 0, 1 }, /* PRINTINDEX */ { "", 0, 1 }, /* ANCHOR */ { "", 0, 1 }, /* IMAGE */ { "primary", 0, 1 }, /* PRIMARY */ @@ -307,7 +312,11 @@ element docbook_element_list [] = { { "bookinfo", 0, 0 }, { "abstract", 1, 0 }, { "replaceable", 0, 0 }, - + { "envar", 0, 1 }, + { "comment", 0, 0 }, + { "function", 0, 1 }, + { "legalnotice", 1, 0 }, + { "para", 0, 0 } /* Must be last */ /* name / contains para / contained in para */ }; @@ -324,8 +333,8 @@ typedef struct _replace_element /* Elements to replace - Docbook only ------------------- - if `element_to_replace' have to be inserted - as a child of `element_containing,' + if `element_to_replace' have to be inserted + as a child of `element_containing,' use `element_replacing' instead. A value of `-1' for element_replacing means `do not use any element.' @@ -339,6 +348,12 @@ replace_element replace_elements [] = { { CODE, DFN, -1 }, { CODE, VAR, -1 }, { EMPH, CODE, REPLACEABLE }, + { VAR, VAR, -1}, + { VAR, B, EMPH}, + { B, CODE, ENVAR}, + { CODE, I, EMPH}, + { FORMAT, BOOKINFO, ABSTRACT }, + { QUOTATION, ABSTRACT, -1}, /* Add your elements to replace here */ {-1, 0, 0} }; @@ -354,14 +369,27 @@ int xml_no_para = 0; char *xml_node_id = NULL; int xml_sort_index = 0; +int xml_in_xref_token = 0; +int xml_in_bookinfo = 0; +int xml_in_book_title = 0; +int xml_in_abstract = 0; + static int xml_after_table_term = 0; static int book_started = 0; static int first_section_opened = 0; -static int in_abstract = 0; + +static int xml_in_item[256]; +static int xml_table_level = 0; + +static int in_table_title = 0; + +static int in_indexentry = 0; +static int in_secondary = 0; +static int in_indexterm = 0; static int xml_current_element (); -void +void #if defined (VA_FPRINTF) && __STDC__ xml_insert_element_with_attribute (int elt, int arg, char *format, ...); #else @@ -375,13 +403,14 @@ xml_id (id) char *tem = xmalloc (strlen (id) + 1); char *p = tem; strcpy (tem, id); - while (*p++) + while (*p) { - if (*p == ' ' || *p == '&' || *p == '/' || *p == '+') - *p = '-'; + if (strchr ("~ &/+^;?()%<>\"'$¿", *p)) + *p = '-'; + p++; } p = tem; - while (*p == '-') + if (*p == '-') *p = 'i'; return tem; } @@ -394,7 +423,7 @@ xml_element (name) for (i=0; i<=PARA; i++) { if (strcasecmp (name, texinfoml_element_list[i].name) == 0) - return i; + return i; } printf ("Error xml_element\n"); return -1; @@ -421,7 +450,7 @@ xml_begin_document (output_filename) if (docbook) { if (language_code != last_language_code) - xml_insert_element_with_attribute (TEXINFO, START, "lang=\"%s\"", language_table[language_code].abbrev); + xml_insert_element_with_attribute (TEXINFO, START, "lang=\"%s\"", language_table[language_code].abbrev); } else xml_insert_element (TEXINFO, START); @@ -437,15 +466,15 @@ xml_begin_document (output_filename) static int element_stack[256]; static int element_stack_index = 0; -static void +static void xml_push_current_element (elt) int elt; { element_stack[element_stack_index++] = elt; if (element_stack_index > 200) - printf ("*** stack overflow (%d - %s) ***\n", - element_stack_index, - xml_element_list[elt].name); + printf ("*** stack overflow (%d - %s) ***\n", + element_stack_index, + xml_element_list[elt].name); } void @@ -453,9 +482,9 @@ xml_pop_current_element () { element_stack_index--; if (element_stack_index < 0) - printf ("*** stack underflow (%d - %d) ***\n", - element_stack_index, - xml_current_element()); + printf ("*** stack underflow (%d - %d) ***\n", + element_stack_index, + xml_current_element()); } static int @@ -487,12 +516,15 @@ xml_end_document () if (xml_node_open) { if (xml_node_level != -1) - { - xml_close_sections (xml_node_level); - xml_node_level = -1; - } + { + xml_close_sections (xml_node_level); + xml_node_level = -1; + } xml_insert_element (NODE, END); } + else + xml_close_sections (xml_node_level); + xml_insert_element (TEXINFO, END); insert_string ("\n"); insert_string ("<!-- Keep this comment at the end of the file\n\ @@ -513,7 +545,7 @@ static int start_element_inserted = 1; the next function, since otherwise the Solaris SUNWspro compiler barfs because `element' is a typedef declared near the beginning of this file. */ -void +void #if defined (VA_FPRINTF) && __STDC__ xml_insert_element_with_attribute (int elt, int arg, char *format, ...) #else @@ -526,39 +558,39 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) { /* Look at the replace_elements table to see if we have to change the element */ if (xml_sort_index) - return; + return; if (docbook) { replace_element *element_list = replace_elements; while (element_list->element_to_replace >= 0) - { - if ( ( (arg == START) && - (element_list->element_containing == xml_current_element ()) && - (element_list->element_to_replace == elt) ) || - ( (arg == END) && - (element_list->element_containing == element_stack[element_stack_index-1-start_element_inserted]) && - (element_list->element_to_replace == elt) ) ) - { - elt = element_list->element_replacing; - break; - } - element_list ++; - } - + { + if ( ( (arg == START) && + (element_list->element_containing == xml_current_element ()) && + (element_list->element_to_replace == elt) ) || + ( (arg == END) && + (element_list->element_containing == element_stack[element_stack_index-1-start_element_inserted]) && + (element_list->element_to_replace == elt) ) ) + { + elt = element_list->element_replacing; + break; + } + element_list ++; + } + /* Forget the element */ if (elt < 0) - { - if (arg == START) - start_element_inserted = 0; - else - /* Replace the default value, for the next time */ - start_element_inserted = 1; - return; - } + { + if (arg == START) + start_element_inserted = 0; + else + /* Replace the default value, for the next time */ + start_element_inserted = 1; + return; + } } if (!book_started) - return; + return; if (xml_after_table_term && elt != TABLETERM) { @@ -568,15 +600,15 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) if (docbook && !only_macro_expansion && (in_menu || in_detailmenu)) return; - + if (!xml_element_list[elt].name || !strlen (xml_element_list[elt].name)) { - /* printf ("Warning: Inserting empty element %d\n", elt);*/ + /*printf ("Warning: Inserting empty element %d\n", elt);*/ return; } if (arg == START && !xml_in_para && !xml_no_para - && xml_element_list[elt].contained_in_para + && xml_element_list[elt].contained_in_para && xml_element_list[xml_current_element()].contains_para ) { xml_indent (); @@ -591,7 +623,7 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) insert_string ("</para>"); xml_in_para = 0; } - + if (arg == END && xml_in_para && !xml_element_list[elt].contained_in_para) { xml_indent_end_para (); @@ -602,6 +634,15 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) if (arg == START && !xml_in_para && !xml_element_list[elt].contained_in_para) xml_indent (); + if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title + && arg == START && elt != TABLEITEM && elt != TABLETERM + && !in_indexterm && xml_current_element() == TABLE) + { + in_table_title = 1; + xml_insert_element (TITLE, START); + } + + if (arg == START) xml_push_current_element (elt); else @@ -611,7 +652,7 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) if (arg == END) insert ('/'); insert_string (xml_element_list[elt].name); - + /* printf ("%s ", xml_element_list[elt].name);*/ if (format) @@ -626,7 +667,7 @@ xml_insert_element_with_attribute (elt, arg, format, va_alist) VA_SPRINTF (temp_string, format, ap); #else sprintf (temp_string, format, a1, a2, a3, a4, a5, a6, a7, a8); -#endif +#endif insert (' '); insert_string (temp_string); va_end (ap); @@ -664,8 +705,9 @@ xml_insert_entity (char *entity_name) if (docbook && !only_macro_expansion && (in_menu || in_detailmenu)) return; - if (!xml_in_para && !xml_no_para && !only_macro_expansion - && xml_element_list[xml_current_element ()].contains_para) + if (!xml_in_para && !xml_no_para && !only_macro_expansion + && xml_element_list[xml_current_element ()].contains_para + && !in_fixed_width_font) { insert_string ("<para>"); xml_in_para = 1; @@ -689,13 +731,24 @@ xml_section *last_section = NULL; void xml_begin_node () { + first_section_opened = 1; + if (xml_in_abstract) + { + xml_insert_element (ABSTRACT, END); + xml_in_abstract = 0; + } + if (xml_in_bookinfo) + { + xml_insert_element (BOOKINFO, END); + xml_in_bookinfo = 0; + } if (xml_node_open && ! docbook) { if (xml_node_level != -1) - { - xml_close_sections (xml_node_level); - xml_node_level = -1; - } + { + xml_close_sections (xml_node_level); + xml_node_level = -1; + } xml_insert_element (NODE, END); } xml_insert_element (NODE, START); @@ -706,12 +759,21 @@ void xml_close_sections (level) int level; { - if (!first_section_opened && in_abstract) + if (!first_section_opened) { - xml_insert_element (ABSTRACT, END); - xml_insert_element (BOOKINFO, END); + if (xml_in_abstract) + { + xml_insert_element (ABSTRACT, END); + xml_in_abstract = 0; + } + if (xml_in_bookinfo) + { + xml_insert_element (BOOKINFO, END); + xml_in_bookinfo = 0; + } first_section_opened = 1; } + while (last_section && last_section->level >= level) { xml_section *temp = last_section; @@ -754,10 +816,10 @@ xml_start_menu_entry (tem) if (xml_in_menu_entry) { if (xml_in_menu_entry_comment) - { - xml_insert_element (MENUCOMMENT, END); - xml_in_menu_entry_comment=0; - } + { + xml_insert_element (MENUCOMMENT, END); + xml_in_menu_entry_comment=0; + } xml_insert_element (MENUENTRY, END); xml_in_menu_entry=0; } @@ -769,7 +831,7 @@ xml_start_menu_entry (tem) add_word (string); xml_insert_element (MENUNODE, END); free (string); - + /* The menu item may use macros, so expand them now. */ xml_insert_element (MENUTITLE, START); only_macro_expansion++; @@ -786,7 +848,7 @@ xml_start_menu_entry (tem) get_until_in_line (0, ".", &string); free (string); } - input_text_offset++; /* discard the second colon or the period */ + input_text_offset++; /* discard the second colon or the period */ xml_insert_element (MENUCOMMENT, START); xml_in_menu_entry_comment ++; } @@ -797,10 +859,10 @@ xml_end_menu () if (xml_in_menu_entry) { if (xml_in_menu_entry_comment) - { - xml_insert_element (MENUCOMMENT, END); - xml_in_menu_entry_comment --; - } + { + xml_insert_element (MENUCOMMENT, END); + xml_in_menu_entry_comment --; + } xml_insert_element (MENUENTRY, END); xml_in_menu_entry--; } @@ -814,61 +876,73 @@ xml_add_char (character) int character; { if (!book_started) - return; + return; if (docbook && !only_macro_expansion && (in_menu || in_detailmenu)) return; + + if (docbook && xml_table_level && !xml_in_item[xml_table_level] && !in_table_title + && !cr_or_whitespace (character) && !in_indexterm) + { + in_table_title = 1; + xml_insert_element (TITLE, START); + } - if (!first_section_opened && !in_abstract && xml_current_element () == TEXINFO + if (!first_section_opened && !xml_in_abstract && !xml_in_book_title && !xml_no_para && character != '\r' && character != '\n' && character != ' ') { - xml_insert_element (BOOKINFO, START); + if (!xml_in_bookinfo) + { + xml_insert_element (BOOKINFO, START); + xml_in_bookinfo = 1; + } xml_insert_element (ABSTRACT, START); - in_abstract = 1; + xml_in_abstract = 1; } - if (xml_after_table_term && !xml_sort_index) + if (xml_after_table_term && !xml_sort_index && !xml_in_xref_token) { xml_after_table_term = 0; xml_insert_element (ITEM, START); } - + if (xml_just_after_element && !xml_in_para && !inhibit_paragraph_indentation) { if (character == '\r' || character == '\n' || character == '\t' || character == ' ') - return; - xml_just_after_element = 0; + return; + xml_just_after_element = 0; } - - if (xml_element_list[xml_current_element()].contains_para - && !xml_in_para && !only_macro_expansion && !xml_no_para) + + if (xml_element_list[xml_current_element()].contains_para + && !xml_in_para && !only_macro_expansion && !xml_no_para + && !cr_or_whitespace (character) && !in_fixed_width_font) { xml_indent (); insert_string ("<para>\n"); xml_in_para = 1; } - + if (xml_in_para) { if (character == '\n') - { - if (xml_last_character == '\n' && !only_macro_expansion && !xml_no_para - && xml_element_list[xml_current_element()].contains_para ) - { - xml_indent_end_para (); - insert_string ("</para>"); - xml_in_para = 0; - xml_just_after_element = 1; - if (xml_in_menu_entry_comment) - { - xml_insert_element (MENUCOMMENT, END); - xml_in_menu_entry_comment = 0; - xml_insert_element (MENUENTRY, END); - xml_in_menu_entry = 0; - } - } - } + { + if (xml_last_character == '\n' && !only_macro_expansion && !xml_no_para + && xml_element_list[xml_current_element()].contains_para ) + { + xml_indent_end_para (); + insert_string ("</para>"); + xml_in_para = 0; + xml_just_after_element = 1; + if (xml_in_menu_entry_comment) + { + xml_insert_element (MENUCOMMENT, END); + xml_in_menu_entry_comment = 0; + xml_insert_element (MENUENTRY, END); + xml_in_menu_entry = 0; + } + } + } } - + if (character == '\n' && !xml_in_para && !inhibit_paragraph_indentation) return; @@ -880,7 +954,7 @@ xml_add_char (character) insert_string ("<"); else insert (character); - + return; } @@ -899,9 +973,6 @@ xml_insert_footnote (note) /* * Lists and Tables */ -static int xml_in_item[256]; -static int xml_table_level = 0; - void xml_begin_table (type, item_function) enum insertion_type type; @@ -913,36 +984,36 @@ xml_begin_table (type, item_function) case vtable: case table: /*if (docbook)*/ /* 05-08 */ - { - xml_insert_element (TABLE, START); - xml_table_level ++; - xml_in_item[xml_table_level] = 0; - } + { + xml_insert_element (TABLE, START); + xml_table_level ++; + xml_in_item[xml_table_level] = 0; + } break; case itemize: if (!docbook) - { - xml_insert_element (ITEMIZE, START); - xml_table_level ++; - xml_in_item[xml_table_level] = 0; - xml_insert_element (ITEMFUNCTION, START); - if (*item_function == COMMAND_PREFIX - && item_function[strlen (item_function) - 1] != '}' - && command_needs_braces (item_function + 1)) - execute_string ("%s{}", item_function); - else - execute_string ("%s", item_function); - xml_insert_element (ITEMFUNCTION, END); - } - else - { - xml_insert_element_with_attribute (ITEMIZE, START, - "mark=\"%s\"", - (*item_function == COMMAND_PREFIX) ? - &item_function[1] : item_function); - xml_table_level ++; - xml_in_item[xml_table_level] = 0; - } + { + xml_insert_element (ITEMIZE, START); + xml_table_level ++; + xml_in_item[xml_table_level] = 0; + xml_insert_element (ITEMFUNCTION, START); + if (*item_function == COMMAND_PREFIX + && item_function[strlen (item_function) - 1] != '}' + && command_needs_braces (item_function + 1)) + execute_string ("%s{}", item_function); + else + execute_string ("%s", item_function); + xml_insert_element (ITEMFUNCTION, END); + } + else + { + xml_insert_element_with_attribute (ITEMIZE, START, + "mark=\"%s\"", + (*item_function == COMMAND_PREFIX) ? + &item_function[1] : item_function); + xml_table_level ++; + xml_in_item[xml_table_level] = 0; + } break; } } @@ -957,22 +1028,28 @@ xml_end_table (type) case vtable: case table: /* if (docbook)*/ /* 05-08 */ - { - if (xml_in_item[xml_table_level]) - { - xml_insert_element (ITEM, END); - xml_insert_element (TABLEITEM, END); - xml_in_item[xml_table_level] = 0; - } - xml_insert_element (TABLE, END); - xml_table_level --; - } + { + if (xml_in_item[xml_table_level]) + { + xml_insert_element (ITEM, END); + xml_insert_element (TABLEITEM, END); + xml_in_item[xml_table_level] = 0; + } + xml_insert_element (TABLE, END); + xml_table_level --; + } break; case itemize: if (xml_in_item[xml_table_level]) + { + xml_insert_element (ITEM, END); + xml_in_item[xml_table_level] = 0; + } + /* gnat-style manual contains an itemized list without items! */ + if (in_table_title) { - xml_insert_element (ITEM, END); - xml_in_item[xml_table_level] = 0; + xml_insert_element (TITLE, END); + in_table_title = 0; } xml_insert_element (ITEMIZE, END); xml_table_level --; @@ -996,9 +1073,14 @@ xml_begin_table_item () if (!xml_after_table_term) { if (xml_in_item[xml_table_level]) + { + xml_insert_element (ITEM, END); + xml_insert_element (TABLEITEM, END); + } + if (in_table_title) { - xml_insert_element (ITEM, END); - xml_insert_element (TABLEITEM, END); + in_table_title = 0; + xml_insert_element (TITLE, END); } xml_insert_element (TABLEITEM, START); } @@ -1021,34 +1103,34 @@ xml_begin_enumerate (enum_arg) if (!docbook) xml_insert_element_with_attribute (ENUMERATE, START, "first=\"%s\"", enum_arg); else - { + { if (isdigit (*enum_arg)) { - if (enum_arg[0] == '1') - xml_insert_element_with_attribute (ENUMERATE, START, - "numeration=\"Arabic\"", NULL); - else - xml_insert_element_with_attribute (ENUMERATE, START, - "continuation=\"Continues\" numeration=\"Arabic\"", NULL); + if (enum_arg[0] == '1') + xml_insert_element_with_attribute (ENUMERATE, START, + "numeration=\"arabic\"", NULL); + else + xml_insert_element_with_attribute (ENUMERATE, START, + "continuation=\"continues\" numeration=\"arabic\"", NULL); } else if (isupper (*enum_arg)) - { - if (enum_arg[0] == 'A') - xml_insert_element_with_attribute (ENUMERATE, START, - "numeration=\"Upperalpha\"", NULL); - else - xml_insert_element_with_attribute (ENUMERATE, START, - "continuation=\"Continues\" numeration=\"Upperalpha\"", NULL); + { + if (enum_arg[0] == 'A') + xml_insert_element_with_attribute (ENUMERATE, START, + "numeration=\"upperalpha\"", NULL); + else + xml_insert_element_with_attribute (ENUMERATE, START, + "continuation=\"continues\" numeration=\"upperalpha\"", NULL); } else - { - if (enum_arg[0] == 'a') - xml_insert_element_with_attribute (ENUMERATE, START, - "numeration=\"Loweralpha\"", NULL); - else - xml_insert_element_with_attribute (ENUMERATE, START, - "continuation=\"Continues\" numeration=\"Loweralpha\"", NULL); - } + { + if (enum_arg[0] == 'a') + xml_insert_element_with_attribute (ENUMERATE, START, + "numeration=\"loweralpha\"", NULL); + else + xml_insert_element_with_attribute (ENUMERATE, START, + "continuation=\"continues\" numeration=\"loweralpha\"", NULL); + } } xml_table_level ++; xml_in_item[xml_table_level] = 0; @@ -1080,34 +1162,34 @@ xml_insert_text_file (name_arg) int ch; int save_inhibit_indentation = inhibit_paragraph_indentation; int save_filling_enabled = filling_enabled; - + xml_insert_element (TEXTOBJECT, START); xml_insert_element (DISPLAY, START); inhibit_paragraph_indentation = 1; filling_enabled = 0; last_char_was_newline = 0; - + /* Maybe we need to remove the final newline if the image - file is only one line to allow in-line images. On the - other hand, they could just make the file without a - final newline. */ + file is only one line to allow in-line images. On the + other hand, they could just make the file without a + final newline. */ while ((ch = getc (image_file)) != EOF) - add_char (ch); - + add_char (ch); + inhibit_paragraph_indentation = save_inhibit_indentation; filling_enabled = save_filling_enabled; xml_insert_element (DISPLAY, END); xml_insert_element (TEXTOBJECT, END); - + if (fclose (image_file) != 0) - perror (fullname); + perror (fullname); } else warning (_("@image file `%s' unreadable: %s"), fullname, - strerror (errno)); - + strerror (errno)); + free (fullname); } @@ -1143,8 +1225,9 @@ xml_asterisk () /* * INDEX */ -/* Used to separate primary and secondary entries in an index */ -#define INDEX_SEP ", " +/* Used to separate primary and secondary entries in an index -- we need + to have real multilivel indexing support, not just string analysis. */ +#define INDEX_SEP "@this string will never appear@" /* was , */ xml_insert_indexterm (indexterm, index) char *indexterm; @@ -1153,41 +1236,38 @@ xml_insert_indexterm (indexterm, index) if (!docbook) { xml_insert_element_with_attribute (INDEXTERM, START, "index=\"%s\"", index); + in_indexterm = 1; execute_string ("%s", indexterm); xml_insert_element (INDEXTERM, END); + in_indexterm = 0; } else - { - char *expanded; + { char *primary = NULL, *secondary; - xml_sort_index = 1; - xml_no_para = 1; - expanded = expansion (indexterm); - xml_sort_index = 0; - xml_no_para = 0; - if (strstr (expanded+1, INDEX_SEP)) - { - primary = xmalloc (strlen (expanded) + 1); - strcpy (primary, expanded); - secondary = strstr (primary+1, INDEX_SEP); - *secondary = '\0'; - secondary += strlen (INDEX_SEP); - } + if (strstr (indexterm+1, INDEX_SEP)) + { + primary = xmalloc (strlen (indexterm) + 1); + strcpy (primary, indexterm); + secondary = strstr (primary+1, INDEX_SEP); + *secondary = '\0'; + secondary += strlen (INDEX_SEP); + } xml_insert_element_with_attribute (INDEXTERM, START, "role=\"%s\"", index); + in_indexterm = 1; xml_insert_element (PRIMARY, START); if (primary) - insert_string (primary); + execute_string (primary); else - insert_string (expanded); + execute_string (indexterm); xml_insert_element (PRIMARY, END); if (primary) - { - xml_insert_element (SECONDARY, START); - insert_string (secondary); - xml_insert_element (SECONDARY, END); - } + { + xml_insert_element (SECONDARY, START); + execute_string (secondary); + xml_insert_element (SECONDARY, END); + } xml_insert_element (INDEXTERM, END); - free (expanded); + in_indexterm = 0; } } @@ -1197,9 +1277,7 @@ static char last_division_letter = ' '; static char index_primary[2000]; /** xx no fixed limit */ static int indexdivempty = 0; -static int in_indexentry = 0; -static int in_secondary = 0; -static void +static void xml_close_indexentry () { if (!in_indexentry) @@ -1214,7 +1292,7 @@ xml_close_indexentry () void xml_begin_index () { - /* + /* We assume that we just opened a section, and so that the last output is <SECTION ID="node-name"><TITLE>Title</TITLE> where SECTION can be CHAPTER, ... @@ -1238,11 +1316,15 @@ xml_begin_index () xml_last_section_output_position = 0; xml_pop_current_element (); /* remove section element from elements stack */ - - last_section = last_section->prev; /* remove section from sections stack */ - free (temp->name); - free (temp); - + + if (last_section) + last_section = last_section->prev; /* remove section from sections stack */ + if (temp) + { + free (temp->name); + free (temp); + } + /* We put <INDEX> */ xml_insert_element (PRINTINDEX, START); /* Remove the final > */ @@ -1262,9 +1344,9 @@ void xml_end_index () { xml_close_indexentry (); - if (xml_index_divisions) + if (xml_index_divisions) xml_insert_element (INDEXDIV, END); - xml_insert_element (PRINTINDEX, END); + xml_insert_element (PRINTINDEX, END); } void @@ -1272,20 +1354,20 @@ xml_index_divide (entry) char *entry; { char c; - if (strlen (entry) > (strlen (xml_element_list[CODE].name) + 2) && - strncmp (entry+1, xml_element_list[CODE].name, strlen (xml_element_list[CODE].name)) == 0) + if (strlen (entry) > (strlen (xml_element_list[CODE].name) + 2) && + strncmp (entry+1, xml_element_list[CODE].name, strlen (xml_element_list[CODE].name)) == 0) c = entry[strlen (xml_element_list[CODE].name)+2]; - else + else c = entry[0]; if (tolower (c) != last_division_letter && isalpha (c)) { last_division_letter = tolower (c); xml_close_indexentry (); if (!indexdivempty) - { - xml_insert_element (INDEXDIV, END); - xml_insert_element (INDEXDIV, START); - } + { + xml_insert_element (INDEXDIV, END); + xml_insert_element (INDEXDIV, START); + } xml_insert_element (TITLE, START); insert (toupper (c)); xml_insert_element (TITLE, END); @@ -1311,23 +1393,23 @@ xml_insert_indexentry (entry, node) secondary += strlen (INDEX_SEP); if (in_secondary && strcmp (primary, index_primary) == 0) - { - xml_insert_element (SECONDARYIE, END); - xml_insert_element (SECONDARYIE, START); - insert_string (secondary); - } + { + xml_insert_element (SECONDARYIE, END); + xml_insert_element (SECONDARYIE, START); + execute_string (secondary); + } else - { - xml_close_indexentry (); - xml_insert_element (INDEXENTRY, START); - in_indexentry = 1; - xml_insert_element (PRIMARYIE, START); - insert_string (primary); - xml_insert_element (PRIMARYIE, END); - xml_insert_element (SECONDARYIE, START); - insert_string (secondary); - in_secondary = 1; - } + { + xml_close_indexentry (); + xml_insert_element (INDEXENTRY, START); + in_indexentry = 1; + xml_insert_element (PRIMARYIE, START); + execute_string (primary); + xml_insert_element (PRIMARYIE, END); + xml_insert_element (SECONDARYIE, START); + execute_string (secondary); + in_secondary = 1; + } } else { @@ -1335,7 +1417,7 @@ xml_insert_indexentry (entry, node) xml_insert_element (INDEXENTRY, START); in_indexentry = 1; xml_insert_element (PRIMARYIE, START); - insert_string (entry); + execute_string (entry); } add_word_args (", %s", _("see ")); xml_insert_element_with_attribute (XREF, START, "linkend=\"%s\"", xml_id (node)); @@ -1368,22 +1450,22 @@ xml_begin_multitable (ncolumns, column_widths) xml_insert_element (MULTITABLE, START); xml_insert_element_with_attribute (TGROUP, START, "cols=\"%d\"", ncolumns); for (i=0; i<ncolumns; i++) - { - xml_insert_element_with_attribute (COLSPEC, START, "colwidth=\"%d*\"", column_widths[i]); - xml_pop_current_element (); - } + { + xml_insert_element_with_attribute (COLSPEC, START, "colwidth=\"%d*\"", column_widths[i]); + xml_pop_current_element (); + } xml_insert_element (TBODY, START); xml_no_para = 1; } - else + else { xml_insert_element (MULTITABLE, START); for (i=0; i<ncolumns; i++) - { - xml_insert_element (COLSPEC, START); - add_word_args ("%d", column_widths[i]); - xml_insert_element (COLSPEC, END); - } + { + xml_insert_element (COLSPEC, START); + add_word_args ("%d", column_widths[i]); + xml_insert_element (COLSPEC, END); + } xml_no_para = 1; } } @@ -1420,7 +1502,7 @@ xml_end_multitable () xml_insert_element (MULTITABLE, END); xml_no_para = 0; } - else + else { xml_insert_element (ENTRY, END); xml_insert_element (ROW, END); diff --git a/contrib/texinfo/makeinfo/xml.h b/contrib/texinfo/makeinfo/xml.h index 0a440ee..35be066 100644 --- a/contrib/texinfo/makeinfo/xml.h +++ b/contrib/texinfo/makeinfo/xml.h @@ -1,7 +1,7 @@ /* xml.h -- xml output declarations. - $Id: xml.h,v 1.7 2002/03/23 20:41:21 karl Exp $ + $Id: xml.h,v 1.6 2002/11/11 12:37:34 feloy Exp $ - Copyright (C) 2001, 02 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. 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 @@ -33,6 +33,11 @@ extern int xml_no_para; extern char *xml_node_id; extern int xml_last_section_output_position; +extern int xml_in_xref_token; +extern int xml_in_bookinfo; +extern int xml_in_book_title; +extern int xml_in_abstract; + enum xml_element { TEXINFO=0, SETFILENAME, TITLEFONT, SETTITLE, @@ -71,7 +76,7 @@ enum xml_element IMAGEDATA, TEXTOBJECT, INDEXENTRY, PRIMARYIE, SECONDARYIE, INDEXDIV, MULTITABLE, TGROUP, COLSPEC, TBODY, ENTRY, ROW, - BOOKINFO, ABSTRACT, REPLACEABLE, + BOOKINFO, ABSTRACT, REPLACEABLE, ENVAR, COMMENT, FUNCTION, LEGALNOTICE, PARA }; diff --git a/contrib/texinfo/util/README b/contrib/texinfo/util/README index 20d7bda..d3f8a75 100644 --- a/contrib/texinfo/util/README +++ b/contrib/texinfo/util/README @@ -1,10 +1,14 @@ +$Id: README,v 1.4 2002/12/29 17:47:20 karl Exp $ +texinfo/util/README + + Copyright (C) 2002 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. + Assorted Texinfo-related programs and scripts. texindex, texi2dvi, and install-info get installed. The other items here are for your amusement and/or hacking pleasure. -You may also be interested in a2ps, an ASCII->PostScript program which -has a Texinfo style option. Available from -http://www.inf.enst.fr/~demaille/a2ps/ and -ftp://ftp.enst.fr/pub/unix/a2ps/. - diff --git a/contrib/texinfo/util/texindex.c b/contrib/texinfo/util/texindex.c index 7f8ff59..c7dc64b 100644 --- a/contrib/texinfo/util/texindex.c +++ b/contrib/texinfo/util/texindex.c @@ -1,8 +1,8 @@ -/* Process TeX index dribble output into an actual index. - $Id: texindex.c,v 1.41 2002/03/11 19:55:46 karl Exp $ +/* texindex -- sort TeX index dribble output into an actual index. + $Id: texindex.c,v 1.7 2003/01/19 18:47:15 karl Exp $ - Copyright (C) 1987, 91, 92, 96, 97, 98, 99, 2000, 01, 02 - Free Software Foundation, Inc. + Copyright (C) 1987, 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2001, + 2002, 2003 Free Software Foundation, Inc. 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 @@ -97,9 +97,6 @@ long nlines; /* Directory to use for temporary files. On Unix, it ends with a slash. */ char *tempdir; -/* Start of filename to use for temporary files. */ -char *tempbase; - /* Number of last temporary file. */ int tempcount; @@ -111,6 +108,13 @@ int last_deleted_tempcount; which contains all the lines of data. */ char *text_base; +/* Initially 0; changed to 1 if we want initials in this index. */ +int need_initials; + +/* Remembers the first initial letter seen in this index, so we can + determine whether we need initials in the sorted form. */ +char first_initial; + /* Additional command switches .*/ /* Nonzero means do not delete tempfiles -- for debugging. */ @@ -160,6 +164,9 @@ main (argc, argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); + /* In case we write to a redirected stdout that fails. */ + /* not ready atexit (close_stdout); */ + /* Describe the kind of sorting to do. */ /* The first keyfield uses the first braced field and folds case. */ keyfields[0].braced = 1; @@ -181,8 +188,6 @@ main (argc, argv) decode_command (argc, argv); - tempbase = mktemp (concat ("txiXXXXXX", "", "")); - /* Process input files completely, one by one. */ for (i = 0; i < num_infiles; i++) @@ -217,9 +222,12 @@ main (argc, argv) outfile = concat (infiles[i], "s", ""); } + need_initials = 0; + first_initial = '\0'; + if (ptr < MAX_IN_CORE_SORT) /* Sort a small amount of data. */ - sort_in_core (infiles[i], ptr, outfile); + sort_in_core (infiles[i], (int)ptr, outfile); else sort_offline (infiles[i], ptr, outfile); } @@ -339,7 +347,7 @@ decode_command (argc, argv) There is NO warranty. You may redistribute this software\n\ under the terms of the GNU General Public License.\n\ For more information about these matters, see the files named COPYING.\n"), - "2002"); + "2003"); xexit (0); } else if ((strcmp (arg, "--keep") == 0) || @@ -381,17 +389,33 @@ For more information about these matters, see the files named COPYING.\n"), usage (1); } -/* Return a name for a temporary file. */ +/* Return a name for temporary file COUNT. */ static char * maketempname (count) int count; { + static char *tempbase = NULL; char tempsuffix[10]; + + if (!tempbase) + { + int fd; + char *tmpdir = getenv ("TEMPDIR"); + if (!tmpdir) + tmpdir = "/tmp"; + tempbase = concat (tmpdir, "/txidxXXXXXX"); + + fd = mkstemp (tempbase); + if (fd == -1) + pfatal_with_name (tempbase); + } + sprintf (tempsuffix, ".%d", count); return concat (tempdir, tempbase, tempsuffix); } + /* Delete all temporary files up to TO_COUNT. */ void @@ -861,9 +885,8 @@ readline (linebuffer, stream) /* Sort an input file too big to sort in core. */ void -sort_offline (infile, nfiles, total, outfile) +sort_offline (infile, total, outfile) char *infile; - int nfiles; off_t total; char *outfile; { @@ -942,7 +965,7 @@ fail: for (i = 0; i < ntemps; i++) { char *newtemp = maketempname (++tempcount); - sort_in_core (&tempfiles[i], MAX_IN_CORE_SORT, newtemp); + sort_in_core (tempfiles[i], MAX_IN_CORE_SORT, newtemp); if (!keep_tempfiles) unlink (tempfiles[i]); tempfiles[i] = newtemp; @@ -963,7 +986,7 @@ fail: void sort_in_core (infile, total, outfile) char *infile; - off_t total; + int total; char *outfile; { char **nextline; @@ -1101,6 +1124,23 @@ parsefile (filename, nextline, data, size) return 0; *line = p; + + /* Find the first letter of the first field of this line. If it + is different from the first letter of the first field of the + first line, we need initial headers in the output index. */ + while (*p && *p != '{') + p++; + if (p == end) + return 0; + p++; + if (first_initial) + { + if (first_initial != toupper (*p)) + need_initials = 1; + } + else + first_initial = toupper (*p); + while (*p && *p != '\n') p++; if (p != end) @@ -1210,12 +1250,9 @@ indexify (line, ostream) else { initial = initial1; - initial1[0] = *p; + initial1[0] = toupper (*p); initial1[1] = 0; initiallength = 1; - - if (initial1[0] >= 'a' && initial1[0] <= 'z') - initial1[0] -= 040; } pagenumber = find_braced_pos (line, 1, 0, 0); @@ -1243,8 +1280,9 @@ indexify (line, ostream) /* If this primary has a different initial, include an entry for the initial. */ - if (initiallength != lastinitiallength || - strncmp (initial, lastinitial, initiallength)) + if (need_initials && + (initiallength != lastinitiallength || + strncmp (initial, lastinitial, initiallength))) { fprintf (ostream, "\\initial {"); fwrite (initial, 1, initiallength, ostream); |