2025-04-28 Keith Marshall Prepare new release for publication. * configure.ac (AC_INIT): Increment version to 25.04 * pdfmark.ms (PUB): Add 2025 as new year of publication. 2025-04-28 Keith Marshall Update hosting provider references to reflect project relocation. * configure.ac: Update copyright notice. (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): These need not be configuration parameters; delete them, and reassign suitably modified values... * Makefile.in (MR_HOST_3_URI_ROOT, MR_HOST_3_URI_PATH): ...to these, directly, replacing all references to OSDN.net with the corresponding savannah.nongnu.org paths, to which hosting has been relocated. (PROJECT_HOST_URL): New macro; it identifies the new hosting home page; define it. * configure.ac (MANPAGE_DATE_FORMAT): Similarly, delete this, and substitute its original value directly, into the expression for... * Makefile.in (MANPAGE_DATE): ...this. * man/groff_mspdf.7.man man/groff_omit.7.man man/groff_opmode.7.man * man/groff_pdfhref.7.man man/groff_pdfmark.7.man man/groff_toc.7.man * man/groff_pdfnote.7.man man/groff_sanitize.7.man man/pdfroff.1.man * man/pdfroff.7.man (PROJECT_HOST_URL, AUTHOR_MT_ADDRESS) (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): Use them, as appropriate. 2025-04-26 Keith Marshall Add pdfhref link management documentation. * pdfmark.ms (Section 4.3): Add content. 2025-04-23 Keith Marshall Propagate custom pdfhref formatting keyword definitions. * pdfroff.sh (WRKFILE): Interpret records tagged with... (gropdf-info:href-keydef): ...this label; incorporate into... (REFFILE): ...this auxiliary file. * tmac/pdfmark.tmac (pdfroff.phase): Implement pdfroff integration hook; assign default register value, if it has not been predefined. (pdf*href-M) [pdf*href.export]: Add "-link" qualifier. (pdf*href-K): Augment it, to conditionally call... (pdf*href-K.export): ...this new internal-use macro; initially define it as a "no-op", until after definition of built-in keywords, then augment it to pass a "-keydef" qualifier in a call to... (pdf*href.export): ...this; adapt it to incorporate "-link", "-keydef", and other arbitrary qualifiers, as appropriate, into... (gropdf-info:href): ...these generated pdfroff records. 2025-04-23 Keith Marshall Simplify implementation of pdfroff macro. * tmac/pdfroff.tmac (pdfroff.phase): Always define it, at top level; do not defer definition to the first call, if any, to... (pdfroff): ...this; hence simplify it; do not redefine it within its first-time call, thus making its dynamic replacement by... (pdfroff@action): ...this unnecessary; rename it to replace... (pdfroff): ...this; make it a silent "no-op" when... [\n(.$]: ...called without arguments. 2025-04-22 Keith Marshall Apply several minor document layout adjustments. * pdfmark.ms (DS I): Substitute... (ID): ...this equivalent macro, throughout. (ID...DE, QS...QE): Suppress excess vertical space before, and after. (ne): Add strategic non-breaking requests, at appropriate locations, to avoid single widow lines following automatic page breaks. (KS...KE): Use to avoid breaking some short paragraphs. 2025-04-21 Keith Marshall Adjust pdfmark.pdf PORPHANS setting. * pdfmark.ms (PORPHANS): Set an explicit value of two lines. 2025-04-20 Keith Marshall Avoid potential indefinitely recursive file name resolution. * Makefile.in (%.eps): Set dependency on... (${abs_srcdir}/artwork/%.eps): ...this, rather than on... (${srcdir}/artwork/%.eps): ...this, which may be susceptible to an indefinitely recursive resolution failure. 2025-04-20 Keith Marshall Add an in-tree copy of the GNU General Public Licence. * gpl-v3.0.txt: New file; it provides a copy of the relevant licence, which we are required to include, but, following segregation from the GNU roff distribution, is no longer automatically inherited thence. 2024-12-09 Keith Marshall Apply a minor cover sheet layout tweak. * cover.ms (AI): Increase downward displacement of "@" glyph. 2024-11-11 Keith Marshall Add groff_pdfnote.7 manual page source file. * man/groff_pdfnote.7.man: New file. * Makefile.in (manpages): Add groff_pdfnote.7 to build goals. 2024-11-06 Keith Marshall Add groff_pdfhref.7 manual page source file. * man/groff_pdfhref.7.man: New file. * Makefile.in (manpages): Add groff_pdfhref.7 to build goals. 2024-11-02 Keith Marshall Add groff_pdfmark.7 manual page source file. * man/groff_pdfmark.7.man: New file. * Makefile.in (manpages): Add groff_pdfmark.7 to build goals. 2024-10-30 Keith Marshall Update automated preparation for distribution. * Makefile.in (mandist): Include all generated manual pages. [mandist] (dist_transform): Adjust experssion to accommodate all. (docdist): Include all generated PDF manual pages. (gpgsum): Avoid overwrite prompt. 2024-10-30 Keith Marshall Set version number for new release. * configure.ac (AC_INIT): Increment argument corresponding to... (PACKAGE_VERSION): ...this configuration variable, to 24.10. 2024-10-30 Keith Marshall Add groff_sanitize.7 manual page source file. * man/groff_sanitize.7.man: New file. * Makefile.in (manpages): Add groff_sanitize.7 to build goals. 2024-10-24 Keith Marshall Support substitutions for dual-token escape sequences. * tmac/sanitize.tmac (sanitize): Add internal call to... (sanitize:esc-auto.assign): ...this new auxiliary helper macro; it dynamically binds a handler for any input escape sequence in... (sanitize:esc-char.subst): ...this new filter identification string. (sanitize:esc-auto.assign.init, sanitize:esc-auto.assign.scan) (sanitize:esc-auto.assign.handler, sanitize:esc-auto.assign.void) (sanitize:diag): New helper macros; they facilitate implementation... (sanitize:esc-auto.assign): ...of this. 2024-10-18 Keith Marshall Strip delimited argument escape sequences from sanitized text. * tmac/sanitize.tmac (sanitize:esc-s, sanitize:esc-v): New macros; each of these is implemented, internally, as an alias for... (sanitize:esc-delimited): ...this new generic handler macro. (sanitize:scan.delimiter.push, sanitize:scan.delimiter.pop): New helper macros; they are used by... (sanitize:esc-delimited): ...this, to save, and subsequently restore, effective escape sequence delimiter context, in... (sanitize:scan.delimiter.stack): ...this new string. (sanitize:esc-generic): Refactored; it now uses... (sanitize:skip-handler): ...this new string; it defines a template, used for redirection of control to one, or other of... (sanitize:skip-(, sanitize:skip-[): ...these, as appropriate. 2024-10-10 Keith Marshall Improve handling of groff special characters in sanitized text. * tmac/sanitize.tmac (sanitize:esc-(hy): Redefine as a string, with value equivalent to a single ASCII hyphen-minus; now used by... (sanitize:esc(??.subst): ...this new macro; it handles substitutions for two-character escapes of the form "\(??", on behalf of... (sanitize:esc-(): ...this; add a sanity check, to ensure that the input text residual comprises no fewer than two characters, as needed to complete the "\(??" escape sequence; otherwise simplify, delegating handling of the entire substitution operation to... (sanitize:esc-(??.subst): ...this; it is also used by... (sanitize:esc-[): ...this new macro; it also performs two-character escape substitution, for the alternative groff "\[??]" form, such that escapes of both "\(??" and "\[??]" forms are substituted congruently. (sanitize:esc-(mi, sanitize:esc-(en): New strings; they define substitutions for "\(mi" and "\(en", respectively; both are aliases... (sanitize:esc-(hy): ...for this; thus all three result in substitution of a single ASCII hyphen-minus glyph. (sanitize:esc-(em): New string; it defines a substitution for the "\(em" escape, such that it is replaced by a conjoined pair of ASCII hyphen-minus glyphs. 2024-10-07 Keith Marshall Improve filtering of groff special tokens from sanitized text. * tmac/sanitize.tmac (sanitize:scan.reject): New string; with default value of "'\&\%\:'", it specifies a list of groff special tokens, enclosed within a matching pair of arbitrary delimiting tokens, ("'" in this default case), which are to be filtered out of sanitized text, and thus discarded from this context. (sanitize:scan.subst): New string; with default value comprising the space-separated list of quoted macro arguments, "'\-'-'", and "'\ \~' '", this specifies a collection of special token substitution groups, arbitrarily delimited by the "'" token. (sanitize:scan.filter): New macro; called by... (sanitize): ...this, it interprets, and applies the effect of... (sanitize:scan.reject, sanitize:scan.subst): ...these filters. 2024-10-03 Keith Marshall Improve escape sequence detection when sanitizing text. * tmac/sanitize.tmac (sanitize:scan.execute): Incorporate a test for groff's escape character; substitute string "^[". (sanitize): Test for "^[", rather than groff's escape character, to identify the start of any potential escape sequence. 2024-09-30 Keith Marshall Create obfuscation hook for manpage author's e-mail address. * Makefile.in (AUTHOR_MT_ADDRESS): New macro; define it with its default value representing the author's true e-mail address. (manpage_update_script) [@AUTHOR_MT_ADDRESS@]: Expand it. * man/pdfroff.1.man man/pdfroff.7.man man/groff_opmode.7.man * man/groff_omit.7.man man/groff_toc.7.man (MT): Substitute... (@AUTHOR_MT_ADDRESS@): ...this, in place of author's actual e-mail address, as appropriate. 2024-08-18 Keith Marshall Update macro files copyright notices. * tmac/anpdf.tmac tmac/omit.tmac tmac/opmode.tmac * tmac/pdfmark.tmac tmac/pdfroff.tmac tmac/sanitize.tmac * tmac/spdf-toc.tmac tmac/spdf.tmac tmac/strcase.tmac tmac/toc.tmac: Make all copyright notices consistent; identify all as originating from within the groff-pdfmark project. 2024-08-18 Keith Marshall Address build-time warnings generated by groff. * Makefile.in (PDFROFF): Enable all available warnings; hence... * pdfmark.ms (FDL-TI-START): ...correct issues identified therein; in particular, do not use "z" scaling indicator in ".vs" request, and fix ambiguously nested ".ie"/".el" conditional blocks. 2024-08-15 Keith Marshall Add groff_opmode.7 manual page source file. * man/groff_opmode.7.man: New file. * tmac/opmode.tmac (.OP): Update "usage" comment; make it consistent with actual behaviour, as it is documented in the manual page. * Makefile.in (manpages): Add groff_opmode.7 to build goals. 2024-08-09 Keith Marshall Improve stylesheet formatting of e-mail addresses. * cover.ms (.AI): Adjust vertical alignement of "<", "@", and ">" glyphs, for improved appearance. 2024-08-09 Keith Marshall Add groff_omit.7 manual page source file. * man/groff_omit.7.man: New file. * Makefile.in (manpages): Add groff_omit.7 to build goals. 2024-08-08 Keith Marshall Implement a free-standing "omitted sections" API. * tmac/omit.tmac: New file; it implements the OMIT macro, factored out from, and adapted from original implementation... * tmac/spdf.tmac: ...here, whence use it. * Makefile.in (pdfmark.pdf): Add build-time dependency... * tmac/omit.tmac: ...on this. 2024-08-06 Keith Marshall Remove inappropriate discretionary hyphenation points. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.man (.UR): Delete '\%' prefix from URI argument; it was intended to prevent hyphenation, but it actually allows insertion of a discretionary hyphen, and line break, within the bracketted URI output string, between the opening angle bracket and the URI itself. 2024-08-06 Keith Marshall Drop synopsis section from groff_toc.7 manual page. * man/groff_toc.7.man: Add paragraph marks. (Synopsis): Delete section; fold its relevant content into... (Usage): ...this alternative section, as appropriate; correct... (.toc error): ...this malformed syntax specification. (Authors): Some minor wording improvement. 2024-08-05 Keith Marshall Use boiler-plate to standardize manpdf fallback macros. * Makefile.in (AWK, GREP, USORT): New macros, defined by... * configure.ac (AC_PROG_AWK, AC_PROG_GREP): ...these, and... (SORT, UNIQ): ...these AC_PATH_PROG substitutions. * Makefile.in (manpdf_fallbacks): New macro; it represents... * man/manpdf-fallbacks.in: ...this new file; it implements in-line fallbacks for each non-standard -manpdf extension macro; it also implements a fallback for groff-1.23's .MR macro, for use on any platform which lacks it, and defines host URI mappings for PDF renditions of project-local manual pages. * Makefile.in (manpage_update_script): Add substitutions for... (@ENUMERATE_MR_REFERENCES@, @IMPORT_LOCAL_FALLBACK_MACROS@): ...each of these place-holders; appropriate content is generated by... (usort_awk, refgen_script, refmap_script, mxmap_script, mxgen_script): ...these new in-line scripts, extracting content as appropriate, from the boiler-plate defined within the file which is represented by... (manpdf_fallbacks): ...this new macro; it is used by... (%.mr, %.mx): ...these new build rules; make them prerequisites... (all-manpages, all-pdf-manpages): ...for both of these. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.man (@ENUMERATE_MR_REFERENCES@, @IMPORT_LOCAL_FALLBACK_MACROS@): Use them in place of, and to avoid duplication of, content abstracted from... * man/manpdf-fallbacks.in: ...here. * tmac/anpdf.tmac (MX-HOST): Make it consistent with usage as... * man/manpdf-fallbacks.in: ...specified here. 2024-07-19 Keith Marshall Add a convenience makefile rule to build everything. * Makefile.in (all-inclusive): New build goal; it incorporates... (all, all-manpages, all-pdf-manpages): ...all of these. 2024-07-13 Keith Marshall Correct a malformed manpage reference. * man/pdfroff.1.man (.MR gs 1): Should use... (.MR gs @MAN1EXT@): ...this preferred form; correct it. 2024-07-13 Keith Marshall Configure project-hosted manpage URI references. * tmac/anpdf.tmac (MX-HOST): Rename original macro, as... (MR-HOST): ...this; update references accordingly, and then... (MX-HOST): ...redefine as new; this replacement version now maps individual manpage references to specific MR-HOST URI indicies. * configure.ac (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): New AC_SUBST variables; together, they specify the groff-pdfmark project URI. * Makefile.in (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): Use them to... (MR_HOST_3_URI_ROOT, MR_HOST_3_URI_PATH): ...define these new macros, respectively; substitute their values into generated manpages, via... (manpage_update_script): ...this internal sed script, mapping to... (MR_HOST_3_URI, MR_HOST_3_DIR): ...these tags, respectively. * man/pdfroff.7.man * man/groff_toc.7.man [groff && MR-HOST defined]: Expand... (MR_HOST_3_URI, MR_HOST_3_DIR): ...these substitution tags, through... (MR-HOST-3-URI): ...this troff string, assigning to MR-HOST index 3. (pdfroff.@MAN1EXT@): Map it to MR-HOST index 3, using... (MX-HOST): ...this. * man/pdfroff.7.man (groff_pdfmark.@MAN7EXT@): Also map this, and... (groff_toc.@MAN7EXT@): ...this, to MR-HOST index 3, again using... (MX-HOST): ...this. 2024-07-12 Keith Marshall Differentiate groff-pdfmark and groff package versions. * configure.ac (AC_INIT): Specify YY.MM style groff-pdfmark version. (GROFF_PACKAGE_VERSION): New AC_SUBST variable; define it to represent the groff version, with which groff-pdfmark is nominally associated. (MANPAGE_DATE_FORMAT): New AC_SUBST variable; define it to specify the default date format for use in groff-pdfmark manual pages. * Makefile.in (PACKAGE_BASE_VERSION): Use GROFF_PACKAGE_VERSION. (MANPAGE_DATE): Use MANPAGE_DATE_FORMAT. 2024-07-12 Keith Marshall Support internal references to manpage headings. * tmac/anpdf.tmac (SR, RK): New macros; define them in terms of... (anpdf-ref-heading, anpdf-ref-kern): ...these new macros, and... (anpdf-ref-kern-list): ...this new string. * man/pdfroff.1.man man/pdfroff.7.man * man/groff_toc.7.man [!manpdf] (SR, RK): Define fallbacks. (SR, RK): Use them. 2024-07-12 Keith Marshall Remap some special escape tokens in sanitized text. * tmac/sanitize.tmac (sanitize:scan-space-token.remap): New macro; define it, intending it exclusively for conditional internal use by... (sanitize) ["\ ", "\~", "\0"]: ...this, to substitute ASCII SP. (sanitize) ["\-"]: Explicitly substitute ASCII hyphen-minus. 2024-07-08 Keith Marshall Use explicit naming for manpage outline reference marks. * tmac/anpdf.tmac (anpdf-reload-man): Increase... (PDFHREF.VIEW.LEADING): ...this, for manpage title reference marks. (anpdf-ref, anpdf-ref-outline): New macros; together, they generate explicit reference mark names, to associate with manpage headings. (anpdf-sh-wrapper): Use them. 2024-06-14 Keith Marshall Correct manpage page trap and end macro handling. * tmac/anpdf.tmac (anpdf-atend): New macro; assign it... (anpdf-reload-man): ...here, as end macro replacement for... (an-end): ...this default groff_man(7) internal end macro. (anpdf-reload-man): Append groff_pdfhref(7) page trap handler to... (PT): ...this groff_man(7) page trap hook. 2024-06-11 Keith Marshall Eliminate some compatibility mode redundancy. * tmac/anpdf.tmac (anpdf-reload-man): Use "de1" as defining request; thus, within it, "do" requests are redundant; remove them. 2024-06-07 Keith Marshall Do not override user preferences in manpage sources. * man/pdfroff.1.man man/pdfroff.7.man * man/groff_toc.7.man (CS, CT, MF): Do not assign overriding values; groff_man(7) defaults may be adjusted by alternative assignments in man.local, but ultimate reassignment is the prerogative of the user. * man/groff_pdfroff.1.man (*groff_pdfroff_1_CS, *groff_pdfroff_1_CT) (*groff_pdfroff_1_MF): Backup stores not required; delete references. * man/groff_pdfroff.7.man (*groff_pdfroff_7_CS, *groff_pdfroff_7_CT) (*groff_pdfroff_7_MF): Backup stores not required; delete references. * man/groff_toc.7.man (*groff_toc_7_CS, *groff_toc_7_CT) (*groff_toc_7_MF): Backup stores not required; delete references. 2024-06-07 Keith Marshall Some manual page formatting adjustments. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.7.man: Some miscellaneous input file format adjustments, output font ajustments, and discretionary hyphenation control changes. 2024-05-27 Keith Marshall Include control character in macro usage annotations. * tmac/anpdf.tmac (Usage): Consistently include "." as control character, in every comment which specifies the usage synopsis for every internal, and public API macro. 2024-05-27 Keith Marshall Support alternative manpage URI host specifications. * tmac/anpdf.tmac (MX-HOST): New macro; define it, and use it to... (anpdf-manpage-provider-0, anpdf-manpage-provider-1): ...define these two built-in default manpage URI templates. (anpdf-manpage-reference): Use... (anpdf-manpage-provider-1): ...this as nominal default, but let... (MX:\\$1.\\$2): ...this manpage-specific numeric index override it. (anpdf-manpage-reference): Interpret and apply... (MF): ...this, inline; apply italic corrections as required; hence... (anpdf-ic): ...this internal template is not required; delete it. 2024-05-15 Keith Marshall Validate link destination name assignments. * tmac/pdfmark.tmac (pdfhref): In internal-use macros... (pdf*href-D, pdf*href.set): ...accept only destination name arguments which are valid as groff identifiers. 2024-04-25 Keith Marshall Add groff_toc.7 manual page. * man/groff_toc.7.man: New file. * Makefile.in (manpages): Add reference to... (groff_toc.7): ...this. 2024-04-23 Keith Marshall Create example macros for groff_toc integration. * pdfroff.ms (XH-UPDATE-TOC, toc.outline, toc.refmark) (toc.pageref, toc.end): Factor out; relocate to, and include... * tmac/spdf-toc.tmac: ...this new file. * Makefile.in (pdfmark.pdf): Add dependency on... (spdf-toc.tmac): ...this. 2024-04-19 Keith Marshall Reorganize manpage sources; add pdfroff.7 * man: New directory; relocate... * pdfroff.1.man: ...this file, without change, to... * man/pdfroff.1.man: ...here. * man/pdfroff.7.man: New file. * Makefile.in [vpath] (%.man): Note change of directory. (all-manpages, all-pdf-manpages): New make goals; alias to... (manpages, pdf-manpages): ...these respectively; use them... (%:%.man, %.pdf:%.man): ...here, converting each of these normal pattern rules to static pattern rules, respectively. (manpage_update_script): Add translation for... (SITE_TMACDIR): ...this. 2024-04-13 Keith Marshall Adopt standard man-pages(7) styling conventions. * tmac/anpdf.tmac [-dMF=R] (anpdf-ic): Kludge it, so that it is interpreted as if it were -dMF=B, when processed within... (MR): ...this macro's context. * pdfroff.1.man (pdfroff): Set all references in bold type. (awk, gawk, groff, gs, mawk, mktemp, nawk, sed, groff_tmac): add manual section references, as appropriate, and set all using... (MR): ...this; replicate all, as an enumerated list, under... (See also): ...this section heading. (-rCS, -rCT, -dMF) [\n(.g]: Preserve initial settings, on entry, and subsequently restore them, on exit; internally... (CS, CT): ...set both to one, for standards conformance. (MF): Keep initial setting, until TH has been evaluated, then set it to "B", for standard conformant evaluation of... (MR): ...this, on every occasion of its use. 2024-04-11 Keith Marshall A minor pdfroff.1 manpage correction. * pdfroff.1.man (TH): s/groff/groff-pdfmark/ (AUTHORS): Refer to author's "OSDN web-site", in preference to "OSDN site". * Makefile.in (MANPAGE_DATE): New user overridable variable, specifying the publication date for all generated manual pages; define it, by shell substitution, to reflect current date. (manpage_update_script): Use it, in substitution for... (MDATE): ...this field value. 2024-04-11 Keith Marshall Revisit dynamic identifier names with invalid content. * tmac/pdfmark.tmac (pdf*href.format): Simplify change from 2024-03-25; test identifier for validity, as "while" condition, then break loop if no matching macro identifier defined. (pdfbookmark, pdf*href, pdf*href-D, pdf*href-M, pdfnote): Use corresponding while loop control logic. 2024-04-08 Keith Marshall Describe duplex printing layout adjustment techniques. * pdfmark.ms (Section 3.1.3, Section 4.2): Add content. (PO): Compute initial value, to balance left and right margins. [duplex] (PO): Tweak assignment syntax; add sanity checks. [duplex] (BT): Assign alternating PO, only as required. (PG-ADVANCE-TO-ODD): Simplify, and rename it as... (NEW-RECTO-PAGE): ...this; update references. 2024-04-04 Keith Marshall Eliminate trailing white-space from document source. * pdfmark.ms pdfroff.sh tmac/pdfmark.tmac tmac/s.tmac * fdl/fdl-v1.3.txt fdl/Makefile.sub: Delete all extraneous white-space, where present, from the end of every input line. 2024-03-25 Keith Marshall Avoid dynamic identifier names with invalid content. * tmac/pdfmark.tmac (pdf*href.format): Verify each potential formatting keyword, read from the input data stream, as a valid groff identifier, before attempting to match it. 2023-12-17 Keith Marshall Designate the GNU Free Documentation License as invariant. * cover.ms (pub@licensing): Update grant of permissions to copy, distribute, and/or modify, to declare Appendix A, the content of which is the GNU Free Documentation License, as "invariant", thus forbidding its modification in any redistributed publication of the associated document. 2023-12-17 Keith Marshall Propagate FDL section headings to outline and TOC. * pdfmark.ms (FDL-XH-UPDATE-TOC): New helper macro, used by... (FDL-XH): ...this new document-local macro variant; define them. * fdl/fdl-v1.3.ms.in (FDL-SH): Some heading format adjustments. [d FDL-XH]: Invoke it. 2023-12-11 Keith Marshall Avoid necessity to repeat document meta-data. * pdfmark.ms (mso): Include... * cover-info.ms: New file; complementary to cover.ms, when included by document source, it defines alternative implementations of CS, AU, and CE macros, which extract title and author meta-data from within inline CS ... CE blocks, propagating their content to PDF meta-data... (.pdfinfo /Title, .pdfinfo /Author): ...specs, respectively. * pdfmark.ms (.pdfinfo): Delete previously redundant... (/Title, /Author): ...meta-data assignments. * Makefile.in (tmacdir): Add direct ${srcdir} reference. (pdfmark.pdf): Assert additional build-time dependencies on... * cover.ms cover-info.ms: ...each of these. 2023-12-10 Keith Marshall Correct some misplaced line continuation marks. * pdfmark.ms (Sections 2.5.5.4, 3.1.2.3): In constructs... (.CWI ... \c, .CWB ... \c): ...adjust placement of "\c" mark, to ensure that macro expansion results in its ultimate location at the bitter end of the resultant output line fragment. 2023-05-28 Keith Marshall Some typographic and grammatical man page corrections. * pdfroff.1.man (option --no-kill-null-pages): s/where/whence/ as argument descriptor; s/any/all/ as valid argument value. 2023-05-23 Keith Marshall Use RCS keywords more consistently. * tmac/opmode.tmac tmac/pdfmark.tmac tmac/pdfroff.tmac * tmac/spdf.tmac tmac/toc.tmac ($Id$, $RCSfile$): Add annotations. 2023-05-23 Keith Marshall Provide pdfroff binding macros for rendering man pages. * tmac/anpdf.tmac: New file; it is a wrapper around andoc.tmac, supporting use of -man only; (currently, -mdoc is not supported). * Makefile.in (man2pdf): Use it. (MAN2PDF_FLAGS): Enable features, controlled by addition of... (CS, CT): ...these registers; set both to 1. * tmac/sanitize.tmac (sanitize:esc-f): New alias; map it to... (sanitize:esc-generic): ...this, making its handling analogous to... (sanitize:esc-F): ...this. * tmac/strcase.tmac: New file; it retrospectively emulates... (.stringup, .stringdown): ...this pair of new groff-1.23 requests. * pdfroff.sh (MANPDF_OPTIONS): New internal-use variable; it provides a hook capability, whereby '-manpdf' triggers processing of '\" hints in man page source, causing nominated preprocessors to be invoked. * pdfroff.1.man: Various layout, and grammatical adjustments; reserve vertical space, as required, to avoid widow and orphan lines. (PDFROFF_POSTPROCESSOR_COMMAND): Disallow a page break within text specifying the default command. 2023-05-13 Keith Marshall Describe method of finished document assembly. * pdfmark.ms (Section 4.1.7): Add content. (Section 4.1.4): Omit "$" prompt from "pdfroff" command example, to maintain consistency with all earlier, and new examples. 2023-05-09 Keith Marshall Describe method of document body formatting. * pdfmark.ms (Section 4.1.6): Add content. 2023-05-02 Keith Marshall Describe default method of table of contents generation. * pdfmark.ms (Section 4.1.5): Add content. 2023-05-02 Keith Marshall Eliminate a macro loading order dependency. * tmac/opmode.tmac [!rPDFOPMODE] (OPMODE): Define it, otherwise... [rPDFOPMODE] (OPMODE): ...alias it, to make them equivalent. 2023-04-28 Keith Marshall Describe provisions for formatting front-matter. * pdfmark.ms (Section 4.1.4): Add content. 2023-04-19 Keith Marshall Describe in-document optional processing hints support. * pdfmark.ms (Section 4.1.3): Add content. 2023-04-17 Keith Marshall Describe pdfroff's reference resolution procedure. * pdfmark.ms (Section 4.1.2): Add content. 2023-04-11 Keith Marshall Add description of pdfroff operating principles. * pdfmark.ms (Section 4.1.1): Add content, and subsequent link target headings, as required to satisfy planned forward references. (Section 4.2): Modify heading text, to clarify relationship to... (Section 4.1.2): ...this planned content. 2023-04-11 Keith Marshall Handle hyphenation special characters in PDF outlines. * tmac/sanitize.tmac (sanitize): Interpret "\%" specially. (sanitize:esc-(, sanitize:esc-(hy): New macros; they add generic support for "\(xx", and specialization for "\(hy", respectively. 2023-04-11 Keith Marshall Manage page break placement within the table of contents. * pdfmark.ms (toc.end): New document-local macro; initially define with no content, and subsequently remap as an alias for KE, after first use, to close a not-yet-opened KS/KE block, within... (toc.outline): ...this; use toc.end in place of KE, to close any previously opened KS/KE block, then insert KS to open a new block, prior to output of any TOC entry at outline-level one. (toc end): Add after inclusion of TOC file, to close its final, residually open KS/KE block. 2023-04-09 Keith Marshall Add PDF publishing process introduction. * pdfmark.ms (Section 4): Add introductory text. (Section 4.1): Insert new subsection, with introductory content, referring to the pdfroff command; increment following subsection numbers accordingly. 2023-04-06 Keith Marshall Implement a standardized snapshot distribution procedure. * configure.ac (AC_INIT): Assign package name and version. (chmod): Perform AC_PATH_PROG assignment to "CHMOD" AC_SUBST variable. * Makefile.in: Perform some cosmetic clean-up. (PACKAGE_TARNAME, PACKAGE_VERSION, CHMOD): Use autoconf assignments. (pdfroff-posix, pdfroff-win32): New build targets; they build variants of pdfroff suitable for POSIX, and MS-Windows, respectively, using... (CHMOD): ...this autoconf-assigned program, to make them executable. (dist): New primary build target; it delegates operations to... (srcdist, bindist, docdist, mandist, tmacdist): ...these subsidiary build targets; implement them; they employ programs identified by... (TAR_CMD, ZIP_CMD, ZIP_EXT): ...these new make variables; define them, permitting user override, subject to GNU tar, and XZ compatibility. 2023-04-04 Keith Marshall Implement a duplex printing layout capability. * pdfmark.ms [duplex] (BT): Augment macro definition, to alternate left and right margin widths, between even and odd numbered pages; activated by "-duplex" option to pdfroff command, (i.e. define a string called "uplex", with "-duplex=true", for example). [duplex && pdfroff] (preserve_blank_pages): Suggest it for... [body]: ...this document assembly component. 2023-04-03 Keith Marshall Support in-document hints for --no-kill-null-pages option. * pdfroff.sh [--no-kill-null-pages]: Record option argument in... (preserve_blank_pages): ...this shell variable; defer its evaluation until processing of in-document hints, during reference resolution. (safe_hints): Add "preserve_blank_pages" to authorized list. 2023-04-02 Keith Marshall Number pages contiguously, including front-matter page count. * pdfmark.ms (PG-ADVANCE-TO-ODD): New macro; it advances the effective page number to next available odd-numbered page, while suppressing the display of the page number on that page; use it to number the starting page number for the document text, accounting for the number of pages which are already occupied by front-matter, and table of contents. (HD): Define groff-ms hook, to restore normal page numbering sequence, after use of PG-ADVANCE-TO-ODD to establish a starting page number. (XH-APPENDIX): Simplify it, by use of PG-ADVANCE-TO-ODD; this offers the added benefit of starting each appendix at an odd page number. 2023-03-31 Keith Marshall Improve selectivity of pdfroff's blank-page removal feature. * pdfroff.sh (--no-kill-null-pages): Accept an optional argument, with permitted values of "all", "body", or "toc"; interpret to set... (TC_FILTER, BD_FILTER): ...these new internal-use variables, which subsequently establish the scope of operation for... (PDFROFF_COLLATE): ...this internal filter. * pdfroff.1.man (--no-kill-null-pages): Document argument usage. * tmac/spdf.tmac (TC) [PHASE>1]: Make it a no-op. 2023-03-29 Keith Marshall Append GNU Free Documentation Licence to document body. * fdl: New directory. * fdl/fdl-v1.3.txt: New file; it is an unmodified verbatim copy of the original FDL plain-text document, imported from groff sources. * fdl/Makefile.sub: New file; it implements an inline txt2roff filter, suitable for creating a generic groff-marked-up copy of the FDL. * fdl/fdl-v1.3.ms.in: New file; it provides boiler-plate mark-up to map txt2roff generic mark-up for use with groff-ms. * Makefile.in: Include fdl/Makefile.sub, configured by... (txt2roff_srcdir, txt2roff_tmac_suffix): ...these unconditional... [fdl-v1.3.ms] (TXT2ROFF_PREFIX): ...and this conditional assignment. (pdfmark.pdf): Add dependency on fdl-v1.3.ms * pdfmark.ms (Appendix A): Define and use... (XH-APPENDIX, XH-APPENDIX-NUMBER-FORMAT): ...these new local macros, to set up the appendix heading, and page numbering format; include generated file fdl-v1.3.ms, subject to formatting specified by... (FDL-SETUP, FDL-BACKUP-AND-REPLACE, FDL-SH-START, FDL-TI-START) (FDL-RESTORE): ...these temporary local macros, which also use... (fdl:replacement.tag, fdl:title.block): ...these temporary strings... (fdl:title.lines): ...and this temporary numeric register. (TC-MARGIN): Increase its width, to accommodate up to seven digits. (XH-UPDATE-TOC) [%%]: Use as pageref, when defined; it represents the true page number, when \n% has been temporarily reset to one, as it is by XH-APPENDIX, after saving its original value in \n(%%, to suppress page numbering at particular locations within the document body. 2023-03-28 Keith Marshall Add a copyright assignment page to document front-matter. * cover.ms: Add template content, supported by... (PUB, ASSERT-RIGHTS, FDL-REFERENCE): ...these new public macros... (pub@initial, pub@collect, pub@revised, pub@enum, pub@rights) (pub@post, au@assert-rights, au@asserted, au@uk-asserted): ...these new internal-use helper macros, additionally augmented by... (pub@preformat.content): ...this new temporary diversion... (FDL-SECTION, FDL-SECTION-TITLE, pub@copyright, pub@series, pub@last) (pub@revlist, au@pronoun, ASSERT-RIGHTS@his, ASSERT-RIGHTS@her) (au@plural, au@pending, au@list): ...these new strings, and... (au@count, pub@revcount): ...these new counter registers. (au@next): Extend it, to assign, and manage... (au@count, au@list, au@pending): ...these. * pdfmark.ms (ASSERT-RIGHTS, FDL-REFERENCE, PUB): Use them. 2023-03-19 Keith Marshall Ignore potentially unsafe pdfroff hint assignments. * pdfroff.sh (safe_hints): New shell variable; it enumerates the names of hint variables which are deemed to be safe for assignment. (safer_hint): New shell function; it ensures that assignments are made for variables which are enumerated as "safe"; use it to evaluate all hints which are identified during pdfhref reference resolution. 2023-03-18 Keith Marshall Fix a constant-width font usage inconsistency. * pdfmark.ms (Section 2.5.5.4): Consistently use '\f(CI', not '\fI', for named argument identification in document mark-up examples. 2023-03-18 Keith Marshall Correct some minor typographic errors. * pdfroff.1.man (See also): Identify... (groff-pdfmark): ...this as reference manual distriutor. (Environment): In reference to GROFF_AWK_INTERPRETER, correct spelling of 'continues'; s/continue/continues/ 2023-03-17 Keith Marshall Support safe mode TOC record collection within pdfroff. * pdfroff.sh [pdfroff-option:set]: Evaluate early, relocating... [toc_relocation=enabled]: ...this option set-up to, and adding... [toc_file=]: ...this assignment at end of first reference resolution loop pass, and updating toc_file content at end of this, and every subsequent pass of this loop. * tmac/toc.tmac (toc file) [pdfroff]: Emit 'toc_file' hint. [!pdfroff]: Fall back to unsafe mode file output. * Makefile.in (%.pdf: %.ms): Remove "-U" option from 'pdfroff' command invocation; it is no longer required. 2023-03-16 Keith Marshall Add support for in-document pdfroff option hints. * tmac/pdfroff.tmac: New macro file; it defines... (pdfroff): ...a default implementation for this new macro, and... (PDF-TOC-ONLY, PDF-BODY-TEXT): ...these (effectively constant) processing phase indicating register values. * tmac/spdf.tmac (TC): Use pdfroff macro, when defined, to set... [toc_relocation=enabled]: ...this pdfroff operating mode option. * Makefile.in (pdfmark.ms): Add a further dependency on... (pdfroff.tmac): ...this new macro file. * pdfroff.sh (GROFF_STYLE): Append "-mpdfroff" option. 2023-03-13 Keith Marshall Generalize support for phased output mode control. * tmac/spdf.tmac (OP, OPMODE): Factor out definitions; relocate to... * tmac/opmode.tmac: ...this additional new macro file. * tmac/spdf.tmac (opmode.tmac): Source it. * Makefile.in (pdfmark.ms): Add a further dependency on... (opmode.tmac): ...this new macro file. 2023-03-12 Keith Marshall Eliminate warnings emanating from document source. * pdfmark.ms (\s): Use 'z' units, not 'p', throughout. (toc.refmark): Separate collected text for TOC entry into... (toc.refmark.tag): ...this pdfhref destination name tag, and... (toc.refmark.text): ...this additional text; when passed to... (toc.pageref): ...here, quote it for expansion in pdfhref. (pdf-publishing): Do not encode reference in terms of... (XR): ...this; it requires the semantics of... (XR-NO-PREFIX): this, hence use it; do not redefine... (PDFHREF.PREFIX): ...this; it is no longer required. (CW): Quote arguments with embedded tabs. 2023-03-12 Keith Marshall Eliminate warnings emanating from pdfmark macros. * tmac/pdfmark.tmac (pdf*href.format): On entry, initialize... (PDFHREF.TEXT): ...this string, without any content, then append... (PDFHREF.PREFIX): ...this, only if it has been, and remains defined. (pdf:note.newline): Ensure it is defined, on package load. 2023-03-12 Keith Marshall Eliminate warnings emanating from TOC macros. * tmac/toc.tmac (toc.file): Do not attempt to close... [toc#stream > 0] (toc!stream): ...this file stream, when... (toc#stream): ...this register has not been defined. 2023-03-11 Keith Marshall Clean up ugly spacing within pdfroff manpage. * pdfroff.1.man (PDFWRITER): Be more verbose, in order to provide more opportunities for word wrapping between unbreakable words. 2023-03-11 Keith Marshall Do not try to read a nonexistent pdfroff temporary file. * pdfroff.sh [--no-reference-dictionary] (WRKFILE): This will never be written; assign it to /dev/null (or its MS-Windows equivalent), so that subsequent read attempts may succeed, albeit reading nothing. 2023-03-11 Keith Marshall Make the --emit-ps option work correctly. * pdfroff.sh.in [--emit-ps] (PDFWRITER): New variable; define it, to select "ps2write" for GhostScript output; do not redefine... (PDFROFF_POSTPROCESSOR_COMMAND): ...this; when it is subsequently invoked, use "-sDEVICE=$PDFWRITER", with "pdfwrite" as default. * pdfroff.1.man (PDFWRITER): Document it. 2023-03-10 Keith Marshall Accept user-specified build-time pdfroff options. * Makefile.in (PDFROFF_FLAGS): New macro; undefined unless specified by the user, at build time; honour it when defined. 2023-03-10 Keith Marshall Specify associated GNU troff package name and version. * Makefile.in (PACKAGE_BASE_TARNAME, PACKAGE_BASE_VERSION): New macros; define, and combine them to additionally define... (PACKAGE): ...this; it is required to complete the definition of... (pdfdocdir): ...this locally-named, autoconf assigned macro. 2023-03-09 Keith Marshall Use consistent quoting of document titles in references. * pdfroff.1.man (See also): Add quotes around the title of the primary groff manual, making it consistent with that of the reference guide to PDF document publishing. 2023-03-09 Keith Marshall Revise text and format of manpage 'apropos' description. * pdfroff.1.man (Name): Improve wording; italicize... (groff): ...this name. 2023-03-09 Keith Marshall Tidy manpage synopsis, particularly for troff-mode output. * pdfroff.1.man (Synopsis): Optimize order of entries; coalesce font alternation argument lists, where practicable; do not use '\~' escape. (Options): Similarly, avoid using '\~'. 2023-03-09 Keith Marshall Explicitly forbid hyphenation of specific names. * pdfroff.1.man (pdfmark): Do not rely on the 'hw' request. (groff, pdfmark, pdfroff, pdf??.*): Prefix with '\%'; additionally, protect derived forms, with arbitrary suffixes, and with path name prefixes; allow non-hyphenated breaks after directory separators. 2023-03-09 Keith Marshall Add legacy support for "MR" manpage macro. * pdfroff.1.man [!.g or !d MR] (MR): New macro; define it locally, to minimally emulate the formal macro introduced in groff-1.23. 2023-03-09 Keith Marshall Adapt manpage compatibility-mode save for legacy use. * pdfroff.1.man (.cp): Do not refer to this number register; use... (_C): ...this new compatibility-mode-safe register; set it equal to... (.C): ...this, using compatibility-mode-safe assignment syntax, then use a compatibility-mode bypass request, to rename it as... (*groff_pdfroff_1_man_C): ...this. 2023-03-07 Keith Marshall Suppress noisy "invalid substring index" warnings. * tmac/sanitize.tmac (sanitize:scan.execute): On reaching... (sanitize:residual) [sanitize:residual.length < 1]: ...this expected state, residual substring extraction will fail; do not attempt it. 2023-03-07 Keith Marshall Avoid misinterpretation of comments in "eo" scope. * tmac/sanitize.tmac (eo): Move all macros to normal scope; double up all escapes which require deferred evaluation; remove scope. 2023-02-24 Keith Marshall Do not emit redundant 'pdfhref Z' records. * pdfroff.sh [grohtml-info] (pdfhref Z): Adapt awk script, to emit... (pdfhref Z 0 0 0): ...this conditionally, only if at least one prior record has been emitted; delete unconditional emission, which caused the anomaly reported as groff issue #63133. 2023-02-24 Keith Marshall Clean up Z-shell initialization logic. * pdfroff.sh [ZSH_VERSION]: Tidy initialization code for... (NULLCMD, emulate sh): ...these; bring it more into alignment with contemporary GNU autoconf usage. 2023-02-23 G. Branden Robinson Document new groff-pdfmark source repository location. * pdfroff.1.man (Authors): Note URI for Keith Marshall's new primary development site; (cf. https://savannah.gnu.org/bugs/?63827). 2023-02-19 Keith Marshall Suppress reference dictionary processing for manpages. * Makefile.in (%.pdf: %.man): Within build procedure, add... (--no-reference-dictionary, --no-toc-relocation): ...this pair of options, when invoking the 'pdfroff' command. (GROFF_MANFLAGS): Rename macro as... (MAN2PDF_FLAGS): ...this. 2023-02-14 Keith Marshall Tidy "see also" section layout in pdfroff manpage. * pdfroff.1.man (See also): Eliminate ugly TP macro usage, when referring to "Portable Document Format Publishing with GNU Troff". 2023-02-14 Keith Marshall Implement build-time infrastructure for manpage updates. * Makefile.in (%.man): Specify as implicit prerequisite for... (%, %.pdf): ...these implicit build goals; implement separate build rules for each, with both procedures based on... (manpage_update_script): ...this inline sed script; output for... (%.pdf): ...this is filtered through pdfroff, directed by... (GROFF_MANFLAGS): ...these user-defineable options. 2023-02-14 Keith Marshall Correct pdfroff operation with no input files specified. * pdfroff.sh [while $#]: At end of loop... [$# == 1]: ...before discarding this final argument, ensure that... [INPUT_FILES]: ...this includes at least one file, or "-" flag... [!INPUT_FILES]: ...otherwise, append one extra "-" argument. 2023-02-13 Keith Marshall Improve pdfroff's "-T" option handling. * pdfroff.sh (-Tpdf): Accept as implicit default; remap it to... (-Tps): ...this former default, as required for subsequent GhostScript processing; if specified explicitly, assume that it implies... (--emit-ps): ...this ultimate output option. * pdfroff.1.man (Options) [-Tpdf, -Tps]: Document modified behaviour. 2023-02-11 Keith Marshall Implement build-time procedure for pdfroff script generation. * Makefile.in (PDFROFF): New macro; map to local build. (path_search_setup_posix, path_search_setup_win32): New computed macros; they differentiate between building for POSIX and MS-Windows. (pdfmark.pdf): Add build-time dependency on local build of... (pdfroff): ...this; add rule to build it, by invocation of... (pdfroff_generator_script): ...this inline sed script, run via... (SED): ...this new configuration-determined macro, to substitute... (PACKAGE_TARNAME, PACKAGE_VERSION): ...these package specific, and... (RC, EXT, AWK_PROGRAM_NAMES, GHOSTSCRIPT_PROGRAM_NAMES): ...these build-time user-overrideable macro values, in place of... * pdfroff.sh (PROVIDER, VERSION, GROFF_AWK_INTERPRETERS) (GROFF_GHOSTSCRIPT_INTERPRETERS): ...these respective place holders, subject to combination of "PACKAGE_VERSION", "RC", and "EXT" as one. (SHOW_VERSION) [--version selected]: Add "PROVIDER" place holder. (PATH_SEARCH_SETUP): Replace with MS-Windows specific code between... (BEGIN_PATH_SEARCH_SETUP, END_PATH_SEARCH_SETUP): ...these markers... [POSIX build]: ...delete markers, and MS-Windows code, whereas... [MS-Windows build]: ...delete markers only. * configure.ac (AC_PROG_SED): Evaluate it, to define... (SED): ...this makefile substitution. 2023-01-29 Keith Marshall Implement robust double-quoting of pdfnote content. * tmac/pdfmark.tmac (PDFNOTE.QUOTED): New string, referring to... (pdf:note.quote, pdf:note.quoted, pdf:note.special): ...these new internal strings; they implement the interface, in terms of... (pdf*note.pre-pdfmark.compose.hook): ...additional mapping of... (pdf:note.special.compose): ...this new string, mapped to... (pdf:note.special): ...this, ultimately remapped by... (pdf*note.pre-pdfmark.post.hook): ...this, to... (pdf:note.special.final): ...this new string. * pdfmark.ms: Update to use... (PDFNOTE.QUOTED): ...this, via document-local alias... (""): ...named thus; document it in footnote. 2023-01-22 Keith Marshall Improve operation of pdfnote macro, and document it. * tmac/pdfmark.tmac: Tidy layout. (pdfnote): Support new -C, -I, -O, and -DP options, via... (pdf:note-C, pdf:note-I, pdf:note-O, pdf:note-DP): ...these new option handler macros, respectively; interpret "--" as inhibitor. (PDFNOTE.LEADING): New numeric register; define it to set downward displacement of annotation icons, from the top of the current text. (PDFNOTE.OFFSET): New string; it defines a numeric expression for computation of annotation icons offset from the left side of the page. (PDFNOTE.HEIGHT, PDFNOTE.WIDTH): Adjust, reflecting actual usage. (PDFNOTE.NEWLINE, PDFNOTE.PILCROW): New pre-defined strings; they serve as the user-visible interfaces for insertion of each of... (pdf:note.newline, pdf:note.pilcrow): ...these context-neutral internal strings, which, in turn, are defined in terms of... (pdf:note.newline.compose, pdf:note.newline.final): ...this pair of internal context-specific alternatives, which are activated by... (pdf*note.pre-pdfmark.compose.hook, pdf*note.pdfmark.post.hook): ...these new hook macros; map them, on invocation of... (pdfnote): ...this, such that they become associated with... (pdf*pre-pdfmark.compose.hook, pdf*pre-pdfmark.post.hook): ...these new hooks, respectively; define do-nothing default handlers, and... (pdf*pdfmark.end.hook): ...this reset handler. (pdfmark): Invoke hooks, in context. * pdfmark.ms (pdfnote): Document it; add content for... (Section 2.6): ...this previously declared, but empty section. (Sections 2.6.1, 2.6.2, 2.6.3): Add new subsections. 2023-01-06 Keith Marshall Adjust margins, and internal spacing, of block-quote content. * pdfmark.ms (PI, QI, DI): Explicitly define, setting each to 3n. (IP): Add explicit adjustments for individual instances. 2023-01-04 Keith Marshall Improve formatting of interpolated em-dash punctuation. * pdfmark.ms (em): New string; define and use it in place of the \(em escape, to achieve British style spacing around em-dash punctuation. 2022-12-30 Keith Marshall Tweak table of contents layout. * pdfmark.ms (toc.outline): Compute section number indentation to align each nested level with the title text of its containing level. (XH-UPDATE-TOC) [toc.outline.current=1]: Increment font size; adjust section number field width to preserve text alignment with computed indentation for any contained level two section reference entries. (toc.pageref) [toc.outline.current=1]: Reset font size at end. (TC-VS1): Add extra vertical space above level one headings. * Makefile.in (pdfmark.toc): Delete explicit dependencies, and rules for explicit generation; it will be generated implicitly, when... (pdfroff.pdf): ...this is being updated, but it is not required when this is already up to date w.r.t. all of its prerequisites. 2022-12-29 Keith Marshall Correct several typographic errors. * pdfmark.ms: s/accomodate/accommodate/; s/analagous/analogous/; s/assocated/associated/; s/ouput/output/; s/preceed/precede/ 2022-03-30 Keith Marshall Clean up extraneous trailing white-space. * pdfmark.ms: Delete all white-space at end-of-line, throughout. 2022-03-30 Keith Marshall Avoid keeps for widow and orphan line control. * pdfmark.ms (KS, KE): Avoid using these for widow and orphan line control; in particular do not include any section heading within such a construct, as it may result in incorrect page numbering within the generated table of contents; instead, use "ne" requests, with... (\n[PD]u): ...this form for paragraph distance references used consistently, in preference to... (\n(PDu): ...this. 2022-03-29 Keith Marshall Implement a more effective TOC generation strategy. * tmac/toc.tmac: New file; it implements a basic, extensible, table of contents generator macro framework; use it... * pdfmark.ms (XH-UPDATE-TOC): ...here; modify it to generate... (pdfmark.toc): ...this new file, subsequently included and used by... (toc.outline, toc.refmark, toc.pageref): ...these new document-local toc.tmac extending macros, to generate TOC in-line, superseding... (TC): ...use of this spdf.tmac macro; delete reference. [TOC] (PDFHREF.TEXT.COLOUR): Set it to match... (\n[.m]): ...this. * Makefile.in (pdfmark.pdf): Update dependencies, requiring... (pdfmark.toc): ...this new intermediate file; add rules to generate it, by performing a separate pre-processing pass over... (pdfmark.ms): ...this primary source file. (clean): Remove "*.toc" files. 2022-03-28 Keith Marshall Preserve pdfhref link text colour specification. * tmac/pdfmark.tmac (pdf*href) [d PDFHREF.TEXT.COLOUR & !d PDFHREF.TEXT.COLOR]: Redefine... (PDFHREF.TEXT.COLOR): ...this, by specifying it as an alias for... (PDFHREF.TEXT.COLOUR): ...this; otherwise... [d PDFHREF.TEXT.COLOR & !d PDFHREF.TEXT.COLOUR]: Redefine... (PDFHREF.TEXT.COLOUR): ...this, by specifying it as an alias for... (PDFHREF.TEXT.COLOR): ...this; otherwise... [!d PDFHREF.TEXT.COLOUR & !d PDFHREF.TEXT.COLOR]: Redefine... (PDFHREF.TEXT.COLOR): ...this, by assignment of default value, and... (PDFHREF.TEXT.COLOUR): ...this, as an alias for it. 2022-03-28 Keith Marshall Maintain separation of in-document pdfroff hints. * pdfroff.sh (pdfroff-option:set): Quote collected hints, as returned by sed, to preserve separating newlines; without this, all hints will be evaluated as if representing a single, possibly malformed command, which is unlikely to have the desired effect. 2022-03-28 Keith Marshall Always set the PHASE indicator when formatting body text. * pdfroff.sh (BODY_FORMAT): Do not clear it, when... [--no-toc-relocation]: ...this option is active; we require... [-rPHASE=2]: ...this, even when PHASE=1 is omitted. 2022-03-26 Keith Marshall Improve handling of pdfbookmark names. * tmac/pdfmark.tmac (pdfbookmark): Define... (PDFBOOKMARK.NAME): ...this, on entry, rather than on final output. (pdfbookmark) [-N]: Add support; suppress automatic name generation, and use specified bookmark name instead; separate name sequencing from bookmark cache sequencing; transfer automatic name sequencing to... (pdf:bm.ix): ...this new auto-incrementing register, retaining... (pdf:bm.nr): ...this for cache sequencing; make it auto-increment. 2022-03-24 Keith Marshall Place outline references before generating TOC entries. * tmac/spdf.tmac (spdf:XH.format, spdf:XN.format): Do not call... (XH-UPDATE-TOC): ...this directly; instead, call it indirectly from... (spdf:XH.finalize): ...here, whence call it after invoking... (pdfhref O): ...this. 2022-03-01 Keith Marshall Document "ms" section headings support features. * pdfmark.ms (Section 3.1.2): Update and expand; refer to... (XH, XN): ...this pair of section heading specification macros. (Subsection 3.1.2.1): Add content to document them. (Subsection 3.1.2.2): Add content; document... (XH-INIT, XN-INIT): ...this pair of user-definable macros. (Subsection 3.1.2.3): Add content; document... (XH-UPDATE-TOC): ...this user-redefinable macro. (Subsection 3.1.2.4): Add content; document... (XH-REPLACEMENT, XN-REPLACEMENT): ...these user-redefinable macros. * tmac/spdf.tmac (XN): Correct comment typo; should refer to... (NH ): ...this, rather than implied use after self. 2022-02-27 Keith Marshall Add discussion of "ms" document structure. * pdfmark.ms (Section 3.1.1): Add content. (Section 4): Add cross-reference label, named... (pdf-publishing): ...thus. 2022-02-27 Keith Marshall Add footnote concerning choice of layout macro package. * pdfmark.ms (Section 3): Add footnote #16. 2022-02-26 Keith Marshall Correct page trap macro assignment syntax. * pdfmark.ms (Section 2.5.6.1): Insert missing initial period... (pfdhref I -PT ...): ...introducing this macro usage example. 2022-02-11 Keith Marshall Document reference text custom formatting capabilities. * pdfmark.ms (Section 2.5.5.4): Replace and expand content; explain operation of the default reference text formatting macro, and use of 'pdfhref K', to implement user-defined formatting keywords. 2022-02-11 Keith Marshall Add support for custom location keyword interpretation. * pdfmark.tmac (pdf*href.format): Generalize keyword interpreter. (pdf*href-K): New internal macro; it implements the interpreter for "pdfhref K ..." macro calls; use it to map location keywords to... (PDFHREF.FILEREF, PDFHREF.PAGEREF, PDFHREF.SECTREF): ...these; thus... (pdf*href.format.file, pdf*href.format.page, pdf*href.format.section): ...these become redundant; delete them. * pdfmark.ms (pdfhref K): Document it; add keeps, to avoid potential widow lines in following paragraphs. 2021-12-31 Keith Marshall Describe automatic pdfhref annotation capability. * pdmark.ms (Section 2.5.5.3): Add content; introduce and explain the default provisions, with examples, for the automatic generation of reference text to describe pdfhref links. 2021-12-31 Keith Marshall Fix a "pdfhref" arguments evaluation bug. * pdfmark.tmac: Squeeze unnecessary vertical space. (pdf*href) [.$]: Do not delay assignment of arguments to... (PDFHREF.DESC): ...this; deferring the evaluation of \$*, until... (pdf*href.format): ...here, is too late; it interprets the wrong \$*, resulting in failure of the intended arguments override feature; additionally, quote PDFHREF.DESC, only when NOT overridden. 2021-12-20 Keith Marshall Describe explicit pdfhref annotation capability. * pdfmark.ms (Section 2.5.5.2): Add content; show, by example, how text within a link "hot-spot" may be explicitly specified at time of link placement. 2021-12-15 Keith Marshall Describe pdfhref colour management mechanism. pdfmark.ms (Section 2.5.5.1): Add content; state purpose and use of... (PDFHREF.BORDER, PDFHREF.COLOUR, PDFHREF.TEXT.COLOUR): ...these. 2021-11-18 Keith Marshall Correct a statement with inverted logic. * pdfmark.ms (Section 2.5.6): Insert missing "not", in opening paragraph; links become problematic when they do not function as expected, not when they do! 2021-11-18 Keith Marshall Avoid unwanted line-breaks at hard hyphenation points. * pdfmark.ms: Ensure that all explicitly hyphenated words are prefixed by "\%", to make hard hyphens non-breaking. 2021-11-18 Keith Marshall Set initial view to page width. * pdfmark.ms (pageview): Add /View /FitH specification for /Page 1. 2021-11-17 Keith Marshall Widow and orphan line adjustments. * pdfmark.ms: Add vertical space reservations, or specify keeps, as appropriate, to avoid widow lines and orphaned examples, when a short paragraph precedes an example; adjust paragraph spacing, as necessary around keeps. 2021-11-17 Keith Marshall Adjust spacing following footnote markers at end-of-sentence. * pdfmark.ms (FZ): New document-local macro; define it such that it behaves as FE, augmented to preserve the effect of sentence spacing, when invoked with arguments having end-of-sentence punctuation. [GhostScript 8.14.\**, MSYS.\**]: Follow with FS ... FZ. 2021-11-15 Keith Marshall Adjust footnote marker position over punctuation. * pdfmark.ms ["," or "." followed by "\**"]: Suppress horizontal spacing in way of the punctuation mark, causing the footnote marker to be positioned above it. 2021-11-15 Keith Marshall Correct paragraph spacing irregularities. * pdfmark.ms [QS followed by IP, QS followed by LD] [DE followed by QE, QE followed by LP]: Each of these combinations results in doubling of the normal inter-paragraph vertical spacing at the location of the combination; suppress the excess. 2021-11-14 Keith Marshall Implement publication system management infrastructure. * configure.ac Makefile.in: New files; they support independent publication per GNU autoconf build-system conventions. 2021-11-14 Keith Marshall Create free-standing groff-pdfmark publication system. * cover.ms pdfmark.ms pdfroff.1.man * pdfroff.sh: Import from GNU Troff project. * tmac/pdfmark.tmac tmac/s.tmac tmac/sanitize.tmac tmac/spdf.tmac * artwork/gnu.eps: Import, and relocate. 2021-10-24 Keith Marshall Adapt to accommodate global XH and XN implementations. cf. * spdf.tmac (XH-INIT, XN-INIT, XH-UPDATE-TOC): Delete definitions; the defaults, provided by s.tmac, are now sufficient. (XH-REPLACEMENT, XN-REPLACEMENT): Define these, rather than... (XH, XN): ...these, respectively. 2021-10-02 Keith Marshall Make a minor layout adjustment. * pdfmark.ms (Section 2.4.3): Add a vertical space reservation, to avoid a widow line at the end of the paragraph explaining use of... (PDFHREF.Y): ...this computed register, in the definition of... (PDFBOOKMARK.VIEW): ...this. 2021-10-02 Keith Marshall Clarify references to use of the -Tpdf option. * pdfmark.ms (Section 2, Section 3.1): Add footnotes, indicating that only "-Tps" and "-Tpdf" output formats are supported, and that "-Tpdf" may avoid a separate step, to convert from PostScript to PDF. 2021-10-02 Keith Marshall Work around misplacement of link "hot-spots" in footnotes. * pdfmark.ms (pdfhref-nobreak): New document-local macro; used instead of "pdfhref", this forces paragraph adjustment before placement of any unbreakable link text, for which line-wrap may be required. Currently observed only within footnotes, without adjustment, the "hot-spot" for the link may be placed 1v above its associated text. 2021-10-02 Keith Marshall Link footnote reference marks to footnote text. * pdfmark.ms (FP): Redefine locally; replace s.tmac default. (FF): Do not redefine; our FP replacement macro does not use it. [d FS-MARK] (FS-MARK): Redefine locally; map it to... (pdf:fn.mark): ...this locally defined macro. [!d FS-MARK] (@FS): Rename s.tmac implementation as... (pdf:fn.record): ...this, then redefine @FS itself, to call... (pdf:fn.mark, pdf:fn.record): ...these, in respective order. (groff-1.19.1, GhostScript-8.14): Update footnote reference syntax. (Ghostscript-8.14, MSYS): Emulate sentence space after footnote mark. (*): Replace s.tmac string definition; make it equivalent to "\c", after renaming its original implementation as... (pdf:fn.index): ...this; synchronize references with changes to... (pdf:fn.index.count): ...this new locally defined register; it is auto-incremented by one, as each footnote is placed. 2021-10-01 Keith Marshall Incorporate user-defined TOC leader style. * pdfmark.ms: Make some comment tidy-up adjustments. (TC-LEADER, TC-MARGIN): Define them, to take advantage of new s.tmac features; cf. . 2021-09-18 Keith Marshall Factor a further unnecessary macro out of spdf.tmac * spdf.tmac (XR): Remove it; relocate it to... * pdfmark.ms (XR): ...here. 2021-09-13 Keith Marshall Add comments to annotate locally-defined font change macros. * pdfmark.ms (EM): Annotate this locally-defined emphasis macro... (CWB, CWI, CWBI): ...these constant width font interpolation macros... (=): ...and this locally-defined IP tag variant string. 2021-09-13 Keith Marshall Update defunct internet URL references. * pdfmark.ms (pdfmark-manual): Adobe moved the document (again); update the document reference macro, to follow the URL relocation. (www.mingw.org): The MinGW Project has relinquished this domain; update the URL reference, to follow web-site relocation to... (mingw.osdn.io): ...here. 2021-09-13 Keith Marshall Factor document-specific bloat out of spdf.tmac * spdf.tmac: Reorganize; add many comments. (XN): Retained, but reimplemented, to serve as... (XH, XN): ...both of these; add callback hooks for... (XH-INIT, XN-INIT, XH-UPDATE-TOC): ...these; provide no-op stubs; factor out TOC collection code, delegating to XH-UPDATE-TOC. (opt*XN-N, opt*XN-S, opt*XN-X): Rename internal macros to... (de spdf:XH-N, de spdf:XH-S, de spdf:XH-X): ...these, respectively. (AN, @AN, IE, IS, LU, NN, PXREF, SAME-PAGE, XM): Delete; we do not require these; if users do, they should define their own. (pdf@toc): Delete internal macro; fold body into... (TC): ...this. * pdfmark.ms (XH-UPDATE-TOC): Implement callback; it is based on... (XN): ...original implementation of this, factored out of spdf.tmac, but with significant simplification, to remove unnecessary code. (XNVS1, XNVS2, XNVS3): Tighten vertical spacing. 2021-09-04 Keith Marshall Reduce potential for user-space exposure of "ms" internals. * spdf.tmac (@NH): Append to s.tmac macro; assign... (spdf:nh*hl): ...this new internal register; alias it to... (.NH): ...this new public name, hence making it track... (nh*hl): ...this s.tmac internal numeric register. (XN): Use \n[.NH] instead of \n[nh*hl]. 2021-09-03 Keith Marshall Sanitize text for use in PDF document outlines. * sanitize.tmac: New file; it implements... (sanitize): ...this new macro; interprets its first argument as a string name, and copies its remaining arguments to the named string, discarding specific embedded troff escape sequences; currently... (\F): ...only this is identified as "specifically discardable". * pdfmark.am (TMACFILES): Add sanitize.tmac * spdf.tmac (mso): Include sanitize.tmac (xn*ref, xn*argc): Rename all occurrences... (spdf:refname, spdf:argc): ...to these, respectively. (XN): Stop inserting $* directly into PDF outlines; instead, use... (spdf:bm.text): ...this new string; this is locally defined by... (spdf:bm.define): ...this new macro; passed the original $* from XN, this itself, is locally defined as a redirectable alias for... (spdf:bm.basic): ...this new local macro; it simply copies $*, passed from XN, to the string named by its first argument, (which is always spdf:bm.text), so reproducing previous behaviour. (opt*XN-S): New macro; defined for internal use only, it adds a "-S" option to XN, such that, when specified, it temporarily redirects... (spdf:bm.define): ...this macro mapping alias to... (sanitize): ...this. * pdfmark.ms (XN): Add "-S" option for all headings which include... (\F[C]...\F[]): ...this escape sequence. 2021-08-21 Keith Marshall Define, and use registered trade mark strings. * pdfmark.ms (Adobe, Acrobat, Distiller, PostScript, Microsoft): Define as strings. Each expands to its own name, followed by the registered trademark symbol, as a superscript, and optional trailing punctuation, below the superscript. Use each as required. 2021-08-21 Keith Marshall Prefer "-ize" to "-ise" where etymology permits. * pdfmark.ms: For all verbs, and their derivative nouns, for which British English allows either "-ise" or "-ize" as ending, prefer the "-ize" form of verb, and "-ization" form of noun, throughout. 2021-08-20 Keith Marshall Correct a spelling error. * pdfmark.ms (Section 2.5.3.1): Fix typo: s/exanple/example/. 2021-08-20 Keith Marshall Space out section headings in pdfmark.ms source. * pdfmark.ms (.NH): Precede each instance by one null request, to improve readability. 2021-08-18 Keith Marshall Refine pdfroff "missing ghostscript" diagnostic. * pdfroff.sh [$GS = ":"]: Fix typo: s/connot/cannot/; refine text. 2020-12-25 G. Branden Robinson * pdfmark.am (PDFROFF): Call pdfroff without `--keep-temporary-files` option. Temporary directories are created with mktemp(1) and files with an embedded process identifier, which frustrates reproducible builds. See . 2018-02-28 Werner LEMBERG * pdfmark.am (pdfmark.pdf): Use $(GROFF_V). 2018-02-28 Werner LEMBERG * pdfmark.am (pdfroff): Use $(AM_V_GEN) to silence file generation. 2015-08-22 Bernd Warken * pdfroff.1.man: Rename `pdfroff.man'. * pdfmark.am: Add `Last update'. Setup Emacs mode. 2015-08-05 Bernd Warken * pdfmark.am: Add `Last update'. Setup Emacs mode. 2015-04-03 Werner LEMBERG * pdfroff.man: Make it work in compatibility mode. 2014-10-14 Keith Marshall Deduce "--no-toc-relocation" from input stream (revisited). * pdfroff.sh (WRKFILE): Correct malformed sed expression. * spdf.tmac (TC): Prefer value of pdfroff's PHASE register to defined state of pdf:href.map, when choosing to emit control record to... (toc_relocation): ...enable this. 2014-10-13 Keith Marshall Deduce "--no-toc-relocation" from input stream. * pdfroff.sh (WRKFILE): Scan it for "pdfroff-option:set" records; apply settings; check for equivalent of "--no-toc-relocation" option. * spdf.tmac (TC): Emit "pdfroff-option:set toc-relocation=enabled". 2014-10-12 Keith Marshall Avoid spurious user visible control messages on stderr. * pdfroff.sh (REFCOPY): Ensure that at least one pdfhref mark of type 'Z' will remain in the reference map, after all references have been resolved; this is required, to suppress writing of reference control records to stderr during the final PDF output processing phase. 2014-09-04 Bernd Warken * all pdfmark source files: Copying (remove last updates and replace years with package years) and Emacs setup. 2014-03-30 Steffen Nurpmeso * Makefile.sub: Put straight error-prevention prefixes for `rm'. 2014-03-29 Steffen Nurpmeso * Makefile.sub: Handle examples separately, controlled by $(make{_,_install_,_uninstall_}examples). 2013-01-28 Deri James * pdfmark.tmac (pdfmark, pdf:composed): Use `\!' instead of `\X'. With the old pdfmark there are gaps between two of the lines, but with the new version they disappear. The use of `.br' and `.in 0' is arbitrary any request which causes an implicit break could be used. Two breaks together only produce one line break, but if there is an intervening `\X' then the second break finds the line buffer not empty and generates another line break. Using `\!' does alter the position of the pdfmark lines in the intermediate file sent to grops (the pdfmark lines are output immediately rather than being serialised through the output line processing), but this has no effect since the contents of the pdfmark line stay the same. It is the contents which determine where bookmarks jump to not the position of the record in the input stream to grops. I initially used `.output', but hit a snag if a pdfbookmark occurs before the document starts to output (message saying to insert an explicit `.br'), this is quite likely for things like `.pdfinfo /Author' which occur at the top of the document. So I'm using the `\!' escape. 2012-09-20 Werner LEMBERG Simplify environment handling. Suggested by Ivan Shmakov . * Makefile.sub (PDFROFF): Don't use export. 2011-12-26 Mike Frysinger Fix parallel build race failure. Sometimes building in parallel will fail in the pdfmark directory: make[2]: Entering directory '.../contrib/pdfmark' rm -f pdfroff rm -f pdfmark.pdf sed -f ... ./pdfroff.sh >pdfroff ...; ./pdfroff ... pdfmark.ms >pdfmark.pdf /bin/sh: ./pdfroff: Permission denied chmod +x pdfroff make[2]: *** [pdfmark.pdf] Error 126 This is because the generated pdf files use the local generated pdfroff helper script, but they don't depend directly upon it, so make tries to create the two in parallel and randomly falls over. * Makefile.sub: Have all the .pdf files explicitly depend on the `pdfroff' helper script. 2010-12-23 Keith Marshall Update copyright notices; pdfmark.tmac bug-fix. * pdfmark.tmac: Update copyright notices. (pdf*href.mark.resolve): Avoid premature removal, by aliasing to... (pdf*href.mark.begin): ...this, rather than renaming. * pdfroff.sh, pdfroff.man: Update copyright notices. 2010-12-14 Keith Marshall Clean up handling of temporary files directory. * .cvsignore (pdfroff-*): Ignore sub-directories matching this. * Makefile.sub (MOSTLCLEANDIRADD): Schedule them for removal. 2010-12-02 Keith Marshall Address potential temporary file security vulnerabilities. * pdfroff.sh (GROFF_TMPDIR): Use mktemp(1) to assign it, if possible; fall back to ${TMPDIR}, ${TMP} or ${TEMP} if unsuccessful. * pdfroff.man: Document it. 2009-08-16 Colin Watson Make pdfroff's GhostScript invocation safer. * pdfroff.sh (PDFROFF_POSTPROCESSOR_COMMAND): Add `-dSAFER' option. * pdfroff.man: Document it. 2008-12-28 Keith Marshall Avoid phantom line wrapping in pdfhref hot-spots. * pdfmark.tmac (pdf*href.mark.end): Emit hot-spot end markers within scope of `\Z', to prevent possible output line length overflow which may occur only in the layout computation passes, but not in the final output pass. Problem observed and identified by Nick Stoughton; it causes some hot-spots to be displaced from their proper locations. 2007-04-11 Keith Marshall Avoid stray newlines in folded pdfmark literal content. * pdfmark.tmac (pdf*pdfmark.dispatch.wrapped): New string; define it when accumulating long literal content; make it undefined otherwise. (PDFMARK.FOLDWIDTH, PDFMARK.FOLDWIDTH.MAX): Reserve space for two extra characters, to accommodate a space and an escaped newline, while accumulating literal content, in case folding is required. (pdf*pdfmark.dispatch) [pdf*pdfmark.dispatch.wrapped]: Add them. 2007-04-11 Keith Marshall * pdfmark.tmac (pdfbookmark): Don't evaluate within diversions; defer placement until diversion is copied out at top level. 2007-02-06 Eric S. Raymond * pdfroff.man: Update .UR/.UE and .MT/.ME to latest changes in an-ext.tmac. 2007-01-30 Werner LEMBERG * pdfroff.man: Updated. 2007-01-21 Werner LEMBERG * pdfroff.man: Revised, based on a patch from Eric Raymond. It now uses the new macros from an-ext.tmac. This is the first of a series of man patches which Eric has contributed. 2006-07-30 Keith Marshall * pdfroff.sh (PDFROFF_KILL_NULL_PAGES): Require `%%BeginPageSetup' on PostScript output line immediately following `%%Page:'. 2006-07-29 Keith Marshall * pdfroff.sh (PDFROFF_KILL_NULL_PAGES): Require `sed' to match a more explicit regular expression, for detection of redundant pages. 2006-07-14 Keith Marshall * pdfroff.sh (PDFWRITE): Local shell variable replaced... (PDFROFF_POSTPROCESSOR_COMMAND): by this new environment variable... (GROFF_GHOSTSCRIPT_INTERPRETER): with this bound to it. (PDFROFF_COLLATE, PDFROFF_KILL_NULL_PAGES): New environment variables. (--no-kill-null-pages): New command line option; implement it, and... (--help): Add description for it. * pdfroff.man (PDFROFF_POSTPROCESSOR_COMMAND): Document it. (PDFROFF_COLLATE, PDFROFF_KILL_NULL_PAGES): Document them. (--no-kill-null-pages): Document it. 2006-07-14 Zvezdan Petkovic * pdfroff.sh (--emit-ps): New command line option; implement it. (--help): Add description for it. * pdfroff.man (--emit-ps): Document it. 2006-06-11 Werner LEMBERG * pdfroff.man: Add `.ig' block after NAME section to make mandb happy. 2006-03-31 Keith Marshall Split `pdfmark' output as required, to avoid excessively long `ps:exec' intermediate output records. * pdfmark.tmac (pdfmark): Macro extended to deploy ... (pdf*pdfmark.limit): New macro; use it to define ... (PDFMARK.FOLDWIDTH, PDFMARK.FOLDWIDTH.MAX): New registers. (pdf*compose.first, pdf*compose.next, pdf*compose.literal): New macros; each will be aliased as required to ... (pdf*compose): ... this, to dynamically construct ... (pdf:composed.line, pdf:composed.literal): ... these new strings. (pdf:compose.test): New dynamically constructed string; use it to detect parenthesised literals in pdfmark content, so folding can be avoided within them, subject to honouring of `PDFMARK.FOLDWIDTH'. (pdf*length.increment): New macro; it triggers output folding when ... (pdf:length): ... this new register exceeds `PDFMARK.FOLDWIDTH.MAX'. (pdf*pdfmark.post.first, pdf*pdfmark.post.next): New macros; each will be aliased as required to ... (pdf*pdfmark.post): ... this, and invoked by ... (pdf*pdfmark.dispatch): ... this new macro; use it to define ... (pdf:composed): ... this dynamically constructed macro; use ... (pdf*end): ... this new macro to terminate it. 2006-03-09 Keith Marshall Incorporate portability recommendations by Ralf Wildenhues * pdfroff.sh: Avoid unsafe quoting in variable substitutions of the form "${VAR+"set"}"; remove outer quotes everywhere; prefix with `x' on each side of comparisons. ($NULLCMD): Define when `$ZSH_VERSION' is set, i.e. when host has `/bin/sh -> zsh'; also... (emulate sh): Invoke, for this case. Enhancement/bug fix requested by Werner LEMBERG * pdfroff.sh (--help): Direct output to `stdout', not `stderr'. (--keep-temporary-files): New option; implement it. * pdfroff.man (OPTIONS): Document `--keep-temporary-files' option. (FILES): Note names and purpose of files it affects. * Makefile.sub (PDFROFF): Add `--keep-temporary-files' option; retain them in `GROFF_TMPDIR=.'. (CLEANADD): Include temporary files matching `pdf[0-9]*'. 2006-03-08 Werner LEMBERG * pdfmark.ms: Update URL for Adobe Reference Manual. 2006-02-26 Claudio Fontana * Makefile.sub: Add DESTDIR to install and uninstall targets to support staged installations. 2006-02-25 Werner LEMBERG * pdfmark.ms: Correct typo; reported by Thomas Klausner. 2006-02-24 Werner LEMBERG * pdfmark.ms, pdfroff.sh: Replace legal/illegal with valid/invalid. 2005-06-22 Keith Marshall pdfroff.sh portability enhancement. * pdfroff.sh (ARGLIST): Variable removed. (GROFF_STYLE): Use it for all groff invocations. (INPUT_FILES): Pass to all groff invocations, instead of ARGLIST. (CS_MACRO, CE_MACRO): Initialize independently. (CS_FILTER): Simplify quoting; it used to confuse some shells. (Source): CVS keyword removed; replaced by... (RCSfile, Revision): these. 2005-06-17 Keith Marshall * pdfroff.sh (MATCH): Correct quoting. (Source): Add terminating `$' on CVS keyword. 2005-06-17 Zvezdan Petkovic * Makefile.sub: (RM): Define as `rm -f', for `make' programs which don't predefine it. 2005-06-16 Bernd Warken * pdfroff.sh (NULLDEV): Correct misspelled instance of NULDEV. 2005-05-28 Werner LEMBERG * Makefile.sub (.ms.pdf): Use `--stylesheet', not `--style'. 2005-05-26 Werner LEMBERG * Makefile.sub, pdfmark.tmac, pdfroff.sh, spdf.tmac: Update postal address for Free Software Foundation. 2005-05-17 Keith Marshall Improve portability of `pdfroff' shell script. * pdfroff.sh: Add space in shebang, conforming to portability guidelines in `autoconf' docs. (searchpath): New shell function; use it instead of `type' command to locate prerequisite helper programs. * pdfroff.man: Document influence of `OSTYPE' and `PATH_SEPARATOR' environment variables. * Makefile.sub (pdfroff): Make it depend on SH_DEPS_SED_SCRIPT, from arch/misc/shdeps.sh; use it to customize PATH_SEPARATOR initialization code for `searchpath' function in pdfroff.sh. 2005-05-16 Keith Marshall Interim documentation update. * pdfmark.ms (GROFF-WEBSITE): New string; use it in references and examples. (Section 2.5): Add definitions of D and Z operators, for use with pdfhref macro. (Section 2.5.4): Complete description of pdfhref macro usage for `Linking to Internet Resources'; provide examples. 2005-05-14 Nick Stoughton * pdfmark.tmac (LB): Renamed to ... (PDFLB): This to avoid conflicts with mm's LB macro. 2005-05-02 Keith Marshall Handle parsing anomalies in Cygwin's `ash', and similar, shells. * pdfroff.sh ($CAT, $GREP, $SED, $GROFF, $DIFF): Avoid interpreting misdirected error messages, which `type' sends to `stdout' in some shells, as a successful program file match. ($AWK, $GS): Likewise; also ensure that multiple choice match prototypes are eval'ed as such, in case token splitting occurs before variable expansion. 2005-04-24 Keith Marshall Add support for folded outlines in PDF documents. * pdfmark.tmac (PDFOUTLINE.FOLDLEVEL): New register. (pdf:bm.emit): Use it. * pdfmark.ms: Document it. 2005-03-25 Werner LEMBERG * Makefile.in: Removed. 2005-03-24 Werner LEMBERG * Makefile: Renamed to... * Makefile.in: This. 2005-03-22 Keith Marshall * pdfroff.sh: Eliminate invalid program reference to $AWK, when invoked with `--no-reference-dictionary' option. 2005-03-02 Keith Marshall * contrib/pdfmark/Makefile.sub (install_data): Use $(INSTALL_SCRIPT) to install `pdfroff'. * contrib/pdfmark/pdfroff.man (opte): New macro. Use it to remove spurious equal signs from SYNOPSIS. 2005-02-28 Keith Marshall Provide `pdfroff' shell script, and manpage to document it; runs multiple groff passes, to format PDF documents. * pdfroff.sh: New shell script template; * pdfroff.man: New man page to document it. Integrate `pdfmark' into normal groff build system; install macro `pdfmark' packages, build and install `pdfroff', and PDF format documentation. * Makefile.sub: Rewritten. * pdfmark.tmac: Modified. (pdfhref): New macro operators, `D' and `Z'. (pdf*href-D, pdf*href-Z): New macros: implement them. (pdf*href.mark.resolve, pdf*href.mark.emit, pdf*href.mark.flush): Modified macro algorithm, to eliminate inconsistencies between `grohtml' representations of `opminy' from differing groff versions. (pdf*href.mark, pdf*href.mark.release, pdf*href.mark.close): deleted (redundant macros). (PDFHREF.LEADING): Default value changed (was 2.5p; now -1.0p). Global comment updates. * TODO: Updated. 2004-12-10 Werner LEMBERG * TODO: Updated. 2004-12-08 Keith Marshall First import of pdfmark files. ________________________________________________________________________ Copyright (C) 2004-2024 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. Local Variables: fill-column: 78 mode: change-log version-control: never End: vim:set autoindent textwidth=78: