2023-04-04  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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=<file_name>]: ...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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Revise text and format of manpage 'apropos' description.

	* pdfroff.1.man (Name): Improve wording; italicize...
	(groff): ...this name.

2023-03-09  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <g.branden.robinson@gmail.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Improve pdfroff's "-T<dev>" 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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Clean up extraneous trailing white-space.

	* pdfmark.ms: Delete all white-space at end-of-line, throughout.

2022-03-30  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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 <n>): ...this, rather than implied use after self.

2022-02-27  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Add footnote concerning choice of layout macro package.

	* pdfmark.ms (Section 3): Add footnote #16.

2022-02-26  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Set initial view to page width.

	* pdfmark.ms (pageview): Add /View /FitH specification for /Page 1.

2021-11-17  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Adapt to accommodate global XH and XN implementations.

	cf. <https://savannah.gnu.org/bugs/?58946#comment13>

	* 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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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. <https://savannah.gnu.org/bugs/?61157>.

2021-09-18  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Correct a spelling error.

	* pdfmark.ms (Section 2.5.3.1): Fix typo: s/exanple/example/.

2021-08-20  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Refine pdfroff "missing ghostscript" diagnostic.

	* pdfroff.sh [$GS = ":"]: Fix typo: s/connot/cannot/; refine text.

2020-12-25  G. Branden Robinson <g.branden.robinson@gmail.com>

	* 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 <https://savannah.gnu.org/bugs/?57218>.

2018-02-28  Werner LEMBERG  <wl@gnu.org>

	* pdfmark.am (pdfmark.pdf): Use $(GROFF_V).

2018-02-28  Werner LEMBERG  <wl@gnu.org>

	* pdfmark.am (pdfroff): Use $(AM_V_GEN) to silence file generation.

2015-08-22  Bernd Warken  <groff-bernd.warken-72@web.de>

	* pdfroff.1.man: Rename `pdfroff.man'.

	* pdfmark.am: Add `Last update'.  Setup Emacs mode.

2015-08-05  Bernd Warken  <groff-bernd.warken-72@web.de>

	* pdfmark.am: Add `Last update'.  Setup Emacs mode.

2015-04-03  Werner LEMBERG  <wl@gnu.org>

	* pdfroff.man: Make it work in compatibility mode.

2014-10-14  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <groff-bernd.warken-72@web.de>

	* all pdfmark source files: Copying (remove last updates and
	replace years with package years) and Emacs setup.

2014-03-30  Steffen Nurpmeso  <sdaoden@yandex.com>

	* Makefile.sub: Put straight error-prevention prefixes for `rm'.

2014-03-29  Steffen Nurpmeso  <sdaoden@yandex.com>

	* Makefile.sub: Handle examples separately, controlled by
	$(make{_,_install_,_uninstall_}examples).

2013-01-28  Deri James  <deri@chuzzlewit.myzen.co.uk>

	* 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  <wl@gnu.org>

	Simplify environment handling.

	Suggested by Ivan Shmakov <oneingray@gmail.com>.

	* Makefile.sub (PDFROFF): Don't use export.

2011-12-26  Mike Frysinger  <vapier@gentoo.org>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <cjwatson@debian.org>

	Make pdfroff's GhostScript invocation safer.

	* pdfroff.sh (PDFROFF_POSTPROCESSOR_COMMAND): Add `-dSAFER' option.
	* pdfroff.man: Document it.

2008-12-28  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	* pdfmark.tmac (pdfbookmark): Don't evaluate within diversions; defer
	placement until diversion is copied out at top level.

2007-02-06  Eric S. Raymond  <esr@snark.thyrsus.com>

	* pdfroff.man: Update .UR/.UE and .MT/.ME to latest changes in
	an-ext.tmac.

2007-01-30  Werner LEMBERG  <wl@gnu.org>

	* pdfroff.man: Updated.

2007-01-21  Werner LEMBERG  <wl@gnu.org>

	* 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  <keith.d.marshall@ntlworld.com>

	* pdfroff.sh (PDFROFF_KILL_NULL_PAGES): Require `%%BeginPageSetup' on
	PostScript output line immediately following `%%Page:'.

2006-07-29  Keith Marshall  <keith.d.marshall@ntlworld.com>

	* 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  <keith.d.marshall@ntlworld.com>

	* 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  <zpetkovic@acm.org>

	* 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  <wl@gnu.org>

	* pdfroff.man: Add `.ig' block after NAME section to make mandb
	happy.

2006-03-31  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	Incorporate portability recommendations by Ralf Wildenhues
	<ralf.wildenhues@gmx.de>

	* 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 <wl@gnu.org>

	* 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  <wl@gnu.org>

	* pdfmark.ms: Update URL for Adobe Reference Manual.

2006-02-26  Claudio Fontana  <claudio@gnu.org>

	* Makefile.sub: Add DESTDIR to install and uninstall targets
	to support staged installations.

2006-02-25  Werner LEMBERG  <wl@gnu.org>

	* pdfmark.ms: Correct typo; reported by Thomas Klausner.

2006-02-24  Werner LEMBERG  <wl@gnu.org>

	* pdfmark.ms, pdfroff.sh: Replace legal/illegal with valid/invalid.

2005-06-22  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	* pdfroff.sh (MATCH): Correct quoting.
	(Source): Add terminating `$' on CVS keyword.

2005-06-17  Zvezdan Petkovic  <zpetkovic@acm.org>

	* Makefile.sub: (RM): Define as `rm -f', for `make' programs
	which don't predefine it.

2005-06-16  Bernd Warken <groff-bernd.warken-72@web.de>

	* pdfroff.sh (NULLDEV): Correct misspelled instance of NULDEV.

2005-05-28  Werner LEMBERG  <wl@gnu.org>

	* Makefile.sub (.ms.pdf): Use `--stylesheet', not `--style'.

2005-05-26  Werner LEMBERG  <wl@gnu.org>

	* Makefile.sub, pdfmark.tmac, pdfroff.sh, spdf.tmac: Update postal
	address for Free Software Foundation.

2005-05-17  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <nick@usenix.org>

	* pdfmark.tmac (LB): Renamed to ...
	(PDFLB): This to avoid conflicts with mm's LB macro.

2005-05-02  Keith Marshall  <keith.d.marshall@ntlworld.com>

	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  <keith.d.marshall@ntlworld.com>

	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  <wl@gnu.org>

	* Makefile.in: Removed.

2005-03-24  Werner LEMBERG  <wl@gnu.org>

	* Makefile: Renamed to...
	* Makefile.in: This.

2005-03-22  Keith Marshall  <keith.d.marshall@ntlworld.com>

	* pdfroff.sh: Eliminate invalid program reference to $AWK, when
	invoked with `--no-reference-dictionary' option.

2005-03-02  Keith Marshall  <keith.d.marshall@ntlworld.com>

	* 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  <keith.d.marshall@ntlworld.com>

	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  <wl@gnu.org>

	* TODO: Updated.

2004-12-08  Keith Marshall  <keith.d.marshall@ntlworld.com>

	First import of pdfmark files.

________________________________________________________________________

Copyright (C) 2004-2021 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:
