Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Documentation Links

pdfroff(1) manual page
pdfroff(7) manual page
groff_omit(7) manual page
groff_opmode(7) manual page
groff_sanitize(7) manual page
groff_toc(7) manual page

Recent Development Activity

2024-11-03

Recent Wiki Changes

2024-11-02
2023-04-09
2023-02-15

Wiki Guide

Side Bar

Full ChangeLog

  1. 2024-10-30 Keith Marshall <address@hidden>
  2. Update automated preparation for distribution.
  3. * Makefile.in (mandist): Include all generated manual pages.
  4. [mandist] (dist_transform): Adjust experssion to accommodate all.
  5. (docdist): Include all generated PDF manual pages.
  6. (gpgsum): Avoid overwrite prompt.
  7. 2024-10-30 Keith Marshall <address@hidden>
  8. Set version number for new release.
  9. * configure.ac (AC_INIT): Increment argument corresponding to...
  10. (PACKAGE_VERSION): ...this configuration variable, to 24.10.
  11. 2024-10-30 Keith Marshall <address@hidden>
  12. Add groff_sanitize.7 manual page source file.
  13. * man/groff_sanitize.7.man: New file.
  14. * Makefile.in (manpages): Add groff_sanitize.7 to build goals.
  15. 2024-10-24 Keith Marshall <address@hidden>
  16. Support substitutions for dual-token escape sequences.
  17. * tmac/sanitize.tmac (sanitize): Add internal call to...
  18. (sanitize:esc-auto.assign): ...this new auxiliary helper macro;
  19. it dynamically binds a handler for any input escape sequence in...
  20. (sanitize:esc-char.subst): ...this new filter identification string.
  21. (sanitize:esc-auto.assign.init, sanitize:esc-auto.assign.scan)
  22. (sanitize:esc-auto.assign.handler, sanitize:esc-auto.assign.void)
  23. (sanitize:diag): New helper macros; they facilitate implementation...
  24. (sanitize:esc-auto.assign): ...of this.
  25. 2024-10-18 Keith Marshall <address@hidden>
  26. Strip delimited argument escape sequences from sanitized text.
  27. * tmac/sanitize.tmac (sanitize:esc-s, sanitize:esc-v): New macros;
  28. each of these is implemented, internally, as an alias for...
  29. (sanitize:esc-delimited): ...this new generic handler macro.
  30. (sanitize:scan.delimiter.push, sanitize:scan.delimiter.pop): New
  31. helper macros; they are used by...
  32. (sanitize:esc-delimited): ...this, to save, and subsequently restore,
  33. effective escape sequence delimiter context, in...
  34. (sanitize:scan.delimiter.stack): ...this new string.
  35. (sanitize:esc-generic): Refactored; it now uses...
  36. (sanitize:skip-handler): ...this new string; it defines a template,
  37. used for redirection of control to one, or other of...
  38. (sanitize:skip-(, sanitize:skip-[): ...these, as appropriate.
  39. 2024-10-10 Keith Marshall <address@hidden>
  40. Improve handling of groff special characters in sanitized text.
  41. * tmac/sanitize.tmac (sanitize:esc-(hy): Redefine as a string, with
  42. value equivalent to a single ASCII hyphen-minus; now used by...
  43. (sanitize:esc(??.subst): ...this new macro; it handles substitutions
  44. for two-character escapes of the form "\(??", on behalf of...
  45. (sanitize:esc-(): ...this; add a sanity check, to ensure that the
  46. input text residual comprises no fewer than two characters, as needed
  47. to complete the "\(??" escape sequence; otherwise simplify, delegating
  48. handling of the entire substitution operation to...
  49. (sanitize:esc-(??.subst): ...this; it is also used by...
  50. (sanitize:esc-[): ...this new macro; it also performs two-character
  51. escape substitution, for the alternative groff "\[??]" form, such that
  52. escapes of both "\(??" and "\[??]" forms are substituted congruently.
  53. (sanitize:esc-(mi, sanitize:esc-(en): New strings; they define
  54. substitutions for "\(mi" and "\(en", respectively; both are aliases...
  55. (sanitize:esc-(hy): ...for this; thus all three result in substitution
  56. of a single ASCII hyphen-minus glyph.
  57. (sanitize:esc-(em): New string; it defines a substitution for the
  58. "\(em" escape, such that it is replaced by a conjoined pair of ASCII
  59. hyphen-minus glyphs.
  60. 2024-10-07 Keith Marshall <address@hidden>
  61. Improve filtering of groff special tokens from sanitized text.
  62. * tmac/sanitize.tmac (sanitize:scan.reject): New string; with
  63. default value of "'\&\%\:'", it specifies a list of groff special
  64. tokens, enclosed within a matching pair of arbitrary delimiting
  65. tokens, ("'" in this default case), which are to be filtered out
  66. of sanitized text, and thus discarded from this context.
  67. (sanitize:scan.subst): New string; with default value comprising
  68. the space-separated list of quoted macro arguments, "'\-'-'",
  69. and "'\ \~' '", this specifies a collection of special token
  70. substitution groups, arbitrarily delimited by the "'" token.
  71. (sanitize:scan.filter): New macro; called by...
  72. (sanitize): ...this, it interprets, and applies the effect of...
  73. (sanitize:scan.reject, sanitize:scan.subst): ...these filters.
  74. 2024-10-03 Keith Marshall <address@hidden>
  75. Improve escape sequence detection when sanitizing text.
  76. * tmac/sanitize.tmac (sanitize:scan.execute): Incorporate a test
  77. for groff's escape character; substitute string "^[".
  78. (sanitize): Test for "^[", rather than groff's escape character,
  79. to identify the start of any potential escape sequence.
  80. 2024-09-30 Keith Marshall <address@hidden>
  81. Create obfuscation hook for manpage author's e-mail address.
  82. * Makefile.in (AUTHOR_MT_ADDRESS): New macro; define it with its
  83. default value representing the author's true e-mail address.
  84. (manpage_update_script) [@AUTHOR_MT_ADDRESS@]: Expand it.
  85. * man/pdfroff.1.man man/pdfroff.7.man man/groff_opmode.7.man
  86. * man/groff_omit.7.man man/groff_toc.7.man (MT): Substitute...
  87. (@AUTHOR_MT_ADDRESS@): ...this, in place of author's actual e-mail
  88. address, as appropriate.
  89. 2024-08-18 Keith Marshall <address@hidden>
  90. Update macro files copyright notices.
  91. * tmac/anpdf.tmac tmac/omit.tmac tmac/opmode.tmac
  92. * tmac/pdfmark.tmac tmac/pdfroff.tmac tmac/sanitize.tmac
  93. * tmac/spdf-toc.tmac tmac/spdf.tmac tmac/strcase.tmac tmac/toc.tmac:
  94. Make all copyright notices consistent; identify all as originating
  95. from within the groff-pdfmark project.
  96. 2024-08-18 Keith Marshall <address@hidden>
  97. Address build-time warnings generated by groff.
  98. * Makefile.in (PDFROFF): Enable all available warnings; hence...
  99. * pdfmark.ms (FDL-TI-START): ...correct issues identified therein;
  100. in particular, do not use "z" scaling indicator in ".vs" request, and
  101. fix ambiguously nested ".ie"/".el" conditional blocks.
  102. 2024-08-15 Keith Marshall <address@hidden>
  103. Add groff_opmode.7 manual page source file.
  104. * man/groff_opmode.7.man: New file.
  105. * tmac/opmode.tmac (.OP): Update "usage" comment; make it consistent
  106. with actual behaviour, as it is documented in the manual page.
  107. * Makefile.in (manpages): Add groff_opmode.7 to build goals.
  108. 2024-08-09 Keith Marshall <address@hidden>
  109. Improve stylesheet formatting of e-mail addresses.
  110. * cover.ms (.AI): Adjust vertical alignement of "<", "@",
  111. and ">" glyphs, for improved appearance.
  112. 2024-08-09 Keith Marshall <address@hidden>
  113. Add groff_omit.7 manual page source file.
  114. * man/groff_omit.7.man: New file.
  115. * Makefile.in (manpages): Add groff_omit.7 to build goals.
  116. 2024-08-08 Keith Marshall <address@hidden>
  117. Implement a free-standing "omitted sections" API.
  118. * tmac/omit.tmac: New file; it implements the OMIT macro,
  119. factored out from, and adapted from original implementation...
  120. * tmac/spdf.tmac: ...here, whence use it.
  121. * Makefile.in (pdfmark.pdf): Add build-time dependency...
  122. * tmac/omit.tmac: ...on this.
  123. 2024-08-06 Keith Marshall <address@hidden>
  124. Remove inappropriate discretionary hyphenation points.
  125. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.man (.UR):
  126. Delete '\%' prefix from URI argument; it was intended to prevent
  127. hyphenation, but it actually allows insertion of a discretionary
  128. hyphen, and line break, within the bracketted URI output string,
  129. between the opening angle bracket and the URI itself.
  130. 2024-08-06 Keith Marshall <address@hidden>
  131. Drop synopsis section from groff_toc.7 manual page.
  132. * man/groff_toc.7.man: Add paragraph marks.
  133. (Synopsis): Delete section; fold its relevant content into...
  134. (Usage): ...this alternative section, as appropriate; correct...
  135. (.toc error): ...this malformed syntax specification.
  136. (Authors): Some minor wording improvement.
  137. 2024-08-05 Keith Marshall <address@hidden>
  138. Use boiler-plate to standardize manpdf fallback macros.
  139. * Makefile.in (AWK, GREP, USORT): New macros, defined by...
  140. * configure.ac (AC_PROG_AWK, AC_PROG_GREP): ...these, and...
  141. (SORT, UNIQ): ...these AC_PATH_PROG substitutions.
  142. * Makefile.in (manpdf_fallbacks): New macro; it represents...
  143. * man/manpdf-fallbacks.in: ...this new file; it implements in-line
  144. fallbacks for each non-standard -manpdf extension macro; it also
  145. implements a fallback for groff-1.23's .MR macro, for use on any
  146. platform which lacks it, and defines host URI mappings for PDF
  147. renditions of project-local manual pages.
  148. * Makefile.in (manpage_update_script): Add substitutions for...
  149. (@ENUMERATE_MR_REFERENCES@, @IMPORT_LOCAL_FALLBACK_MACROS@): ...each
  150. of these place-holders; appropriate content is generated by...
  151. (usort_awk, refgen_script, refmap_script, mxmap_script, mxgen_script):
  152. ...these new in-line scripts, extracting content as appropriate, from
  153. the boiler-plate defined within the file which is represented by...
  154. (manpdf_fallbacks): ...this new macro; it is used by...
  155. (%.mr, %.mx): ...these new build rules; make them prerequisites...
  156. (all-manpages, all-pdf-manpages): ...for both of these.
  157. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.man
  158. (@ENUMERATE_MR_REFERENCES@, @IMPORT_LOCAL_FALLBACK_MACROS@): Use them
  159. in place of, and to avoid duplication of, content abstracted from...
  160. * man/manpdf-fallbacks.in: ...here.
  161. * tmac/anpdf.tmac (MX-HOST): Make it consistent with usage as...
  162. * man/manpdf-fallbacks.in: ...specified here.
  163. 2024-07-19 Keith Marshall <address@hidden>
  164. Add a convenience makefile rule to build everything.
  165. * Makefile.in (all-inclusive): New build goal; it incorporates...
  166. (all, all-manpages, all-pdf-manpages): ...all of these.
  167. 2024-07-13 Keith Marshall <address@hidden>
  168. Correct a malformed manpage reference.
  169. * man/pdfroff.1.man (.MR gs 1): Should use...
  170. (.MR gs @MAN1EXT@): ...this preferred form; correct it.
  171. 2024-07-13 Keith Marshall <address@hidden>
  172. Configure project-hosted manpage URI references.
  173. * tmac/anpdf.tmac (MX-HOST): Rename original macro, as...
  174. (MR-HOST): ...this; update references accordingly, and then...
  175. (MX-HOST): ...redefine as new; this replacement version now maps
  176. individual manpage references to specific MR-HOST URI indicies.
  177. * configure.ac (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): New AC_SUBST
  178. variables; together, they specify the groff-pdfmark project URI.
  179. * Makefile.in (MANPAGE_URI_ROOT, MANPAGE_URI_PATH): Use them to...
  180. (MR_HOST_3_URI_ROOT, MR_HOST_3_URI_PATH): ...define these new macros,
  181. respectively; substitute their values into generated manpages, via...
  182. (manpage_update_script): ...this internal sed script, mapping to...
  183. (MR_HOST_3_URI, MR_HOST_3_DIR): ...these tags, respectively.
  184. * man/pdfroff.7.man
  185. * man/groff_toc.7.man [groff && MR-HOST defined]: Expand...
  186. (MR_HOST_3_URI, MR_HOST_3_DIR): ...these substitution tags, through...
  187. (MR-HOST-3-URI): ...this troff string, assigning to MR-HOST index 3.
  188. (pdfroff.@MAN1EXT@): Map it to MR-HOST index 3, using...
  189. (MX-HOST): ...this.
  190. * man/pdfroff.7.man (groff_pdfmark.@MAN7EXT@): Also map this, and...
  191. (groff_toc.@MAN7EXT@): ...this, to MR-HOST index 3, again using...
  192. (MX-HOST): ...this.
  193. 2024-07-12 Keith Marshall <address@hidden>
  194. Differentiate groff-pdfmark and groff package versions.
  195. * configure.ac (AC_INIT): Specify YY.MM style groff-pdfmark version.
  196. (GROFF_PACKAGE_VERSION): New AC_SUBST variable; define it to represent
  197. the groff version, with which groff-pdfmark is nominally associated.
  198. (MANPAGE_DATE_FORMAT): New AC_SUBST variable; define it to specify
  199. the default date format for use in groff-pdfmark manual pages.
  200. * Makefile.in (PACKAGE_BASE_VERSION): Use GROFF_PACKAGE_VERSION.
  201. (MANPAGE_DATE): Use MANPAGE_DATE_FORMAT.
  202. 2024-07-12 Keith Marshall <address@hidden>
  203. Support internal references to manpage headings.
  204. * tmac/anpdf.tmac (SR, RK): New macros; define them in terms of...
  205. (anpdf-ref-heading, anpdf-ref-kern): ...these new macros, and...
  206. (anpdf-ref-kern-list): ...this new string.
  207. * man/pdfroff.1.man man/pdfroff.7.man
  208. * man/groff_toc.7.man [!manpdf] (SR, RK): Define fallbacks.
  209. (SR, RK): Use them.
  210. 2024-07-12 Keith Marshall <address@hidden>
  211. Remap some special escape tokens in sanitized text.
  212. * tmac/sanitize.tmac (sanitize:scan-space-token.remap): New macro;
  213. define it, intending it exclusively for conditional internal use by...
  214. (sanitize) ["\ ", "\~", "\0"]: ...this, to substitute ASCII SP.
  215. (sanitize) ["\-"]: Explicitly substitute ASCII hyphen-minus.
  216. 2024-07-08 Keith Marshall <address@hidden>
  217. Use explicit naming for manpage outline reference marks.
  218. * tmac/anpdf.tmac (anpdf-reload-man): Increase...
  219. (PDFHREF.VIEW.LEADING): ...this, for manpage title reference marks.
  220. (anpdf-ref, anpdf-ref-outline): New macros; together, they generate
  221. explicit reference mark names, to associate with manpage headings.
  222. (anpdf-sh-wrapper): Use them.
  223. 2024-06-14 Keith Marshall <address@hidden>
  224. Correct manpage page trap and end macro handling.
  225. * tmac/anpdf.tmac (anpdf-atend): New macro; assign it...
  226. (anpdf-reload-man): ...here, as end macro replacement for...
  227. (an-end): ...this default groff_man(7) internal end macro.
  228. (anpdf-reload-man): Append groff_pdfhref(7) page trap handler to...
  229. (PT): ...this groff_man(7) page trap hook.
  230. 2024-06-11 Keith Marshall <address@hidden>
  231. Eliminate some compatibility mode redundancy.
  232. * tmac/anpdf.tmac (anpdf-reload-man): Use "de1" as defining request;
  233. thus, within it, "do" requests are redundant; remove them.
  234. 2024-06-07 Keith Marshall <address@hidden>
  235. Do not override user preferences in manpage sources.
  236. * man/pdfroff.1.man man/pdfroff.7.man
  237. * man/groff_toc.7.man (CS, CT, MF): Do not assign overriding values;
  238. groff_man(7) defaults may be adjusted by alternative assignments in
  239. man.local, but ultimate reassignment is the prerogative of the user.
  240. * man/groff_pdfroff.1.man (*groff_pdfroff_1_CS, *groff_pdfroff_1_CT)
  241. (*groff_pdfroff_1_MF): Backup stores not required; delete references.
  242. * man/groff_pdfroff.7.man (*groff_pdfroff_7_CS, *groff_pdfroff_7_CT)
  243. (*groff_pdfroff_7_MF): Backup stores not required; delete references.
  244. * man/groff_toc.7.man (*groff_toc_7_CS, *groff_toc_7_CT)
  245. (*groff_toc_7_MF): Backup stores not required; delete references.
  246. 2024-06-07 Keith Marshall <address@hidden>
  247. Some manual page formatting adjustments.
  248. * man/pdfroff.1.man man/pdfroff.7.man man/groff_toc.7.man: Some
  249. miscellaneous input file format adjustments, output font ajustments,
  250. and discretionary hyphenation control changes.
  251. 2024-05-27 Keith Marshall <address@hidden>
  252. Include control character in macro usage annotations.
  253. * tmac/anpdf.tmac (Usage): Consistently include "." as control
  254. character, in every comment which specifies the usage synopsis for
  255. every internal, and public API macro.
  256. 2024-05-27 Keith Marshall <address@hidden>
  257. Support alternative manpage URI host specifications.
  258. * tmac/anpdf.tmac (MX-HOST): New macro; define it, and use it to...
  259. (anpdf-manpage-provider-0, anpdf-manpage-provider-1): ...define these
  260. two built-in default manpage URI templates.
  261. (anpdf-manpage-reference): Use...
  262. (anpdf-manpage-provider-1): ...this as nominal default, but let...
  263. (MX:\\$1.\\$2): ...this manpage-specific numeric index override it.
  264. (anpdf-manpage-reference): Interpret and apply...
  265. (MF): ...this, inline; apply italic corrections as required; hence...
  266. (anpdf-ic): ...this internal template is not required; delete it.
  267. 2024-05-15 Keith Marshall <address@hidden>
  268. Validate link destination name assignments.
  269. * tmac/pdfmark.tmac (pdfhref): In internal-use macros...
  270. (pdf*href-D, pdf*href.set): ...accept only destination name arguments
  271. which are valid as groff identifiers.
  272. 2024-04-25 Keith Marshall <address@hidden>
  273. Add groff_toc.7 manual page.
  274. * man/groff_toc.7.man: New file.
  275. * Makefile.in (manpages): Add reference to...
  276. (groff_toc.7): ...this.
  277. 2024-04-23 Keith Marshall <address@hidden>
  278. Create example macros for groff_toc integration.
  279. * pdfroff.ms (XH-UPDATE-TOC, toc.outline, toc.refmark)
  280. (toc.pageref, toc.end): Factor out; relocate to, and include...
  281. * tmac/spdf-toc.tmac: ...this new file.
  282. * Makefile.in (pdfmark.pdf): Add dependency on...
  283. (spdf-toc.tmac): ...this.
  284. 2024-04-19 Keith Marshall <address@hidden>
  285. Reorganize manpage sources; add pdfroff.7
  286. * man: New directory; relocate...
  287. * pdfroff.1.man: ...this file, without change, to...
  288. * man/pdfroff.1.man: ...here.
  289. * man/pdfroff.7.man: New file.
  290. * Makefile.in [vpath] (%.man): Note change of directory.
  291. (all-manpages, all-pdf-manpages): New make goals; alias to...
  292. (manpages, pdf-manpages): ...these respectively; use them...
  293. (%:%.man, %.pdf:%.man): ...here, converting each of these normal
  294. pattern rules to static pattern rules, respectively.
  295. (manpage_update_script): Add translation for...
  296. (SITE_TMACDIR): ...this.
  297. 2024-04-13 Keith Marshall <address@hidden>
  298. Adopt standard man-pages(7) styling conventions.
  299. * tmac/anpdf.tmac [-dMF=R] (anpdf-ic): Kludge it, so that it
  300. is interpreted as if it were -dMF=B, when processed within...
  301. (MR): ...this macro's context.
  302. * pdfroff.1.man (pdfroff): Set all references in bold type.
  303. (awk, gawk, groff, gs, mawk, mktemp, nawk, sed, groff_tmac): add
  304. manual section references, as appropriate, and set all using...
  305. (MR): ...this; replicate all, as an enumerated list, under...
  306. (See also): ...this section heading.
  307. (-rCS, -rCT, -dMF) [\n(.g]: Preserve initial settings, on entry,
  308. and subsequently restore them, on exit; internally...
  309. (CS, CT): ...set both to one, for standards conformance.
  310. (MF): Keep initial setting, until TH has been evaluated, then
  311. set it to "B", for standard conformant evaluation of...
  312. (MR): ...this, on every occasion of its use.
  313. 2024-04-11 Keith Marshall <address@hidden>
  314. A minor pdfroff.1 manpage correction.
  315. * pdfroff.1.man (TH): s/groff/groff-pdfmark/
  316. (AUTHORS): Refer to author's "OSDN web-site", in preference
  317. to "OSDN site".
  318. * Makefile.in (MANPAGE_DATE): New user overridable variable,
  319. specifying the publication date for all generated manual pages;
  320. define it, by shell substitution, to reflect current date.
  321. (manpage_update_script): Use it, in substitution for...
  322. (MDATE): ...this field value.
  323. 2024-04-11 Keith Marshall <address@hidden>
  324. Revisit dynamic identifier names with invalid content.
  325. * tmac/pdfmark.tmac (pdf*href.format): Simplify change from
  326. 2024-03-25; test identifier for validity, as "while" condition,
  327. then break loop if no matching macro identifier defined.
  328. (pdfbookmark, pdf*href, pdf*href-D, pdf*href-M, pdfnote): Use
  329. corresponding while loop control logic.
  330. 2024-04-08 Keith Marshall <address@hidden>
  331. Describe duplex printing layout adjustment techniques.
  332. * pdfmark.ms (Section 3.1.3, Section 4.2): Add content.
  333. (PO): Compute initial value, to balance left and right margins.
  334. [duplex] (PO): Tweak assignment syntax; add sanity checks.
  335. [duplex] (BT): Assign alternating PO, only as required.
  336. (PG-ADVANCE-TO-ODD): Simplify, and rename it as...
  337. (NEW-RECTO-PAGE): ...this; update references.
  338. 2024-04-04 Keith Marshall <address@hidden>
  339. Eliminate trailing white-space from document source.
  340. * pdfmark.ms pdfroff.sh tmac/pdfmark.tmac tmac/s.tmac
  341. * fdl/fdl-v1.3.txt fdl/Makefile.sub: Delete all extraneous
  342. white-space, where present, from the end of every input line.
  343. 2024-03-25 Keith Marshall <address@hidden>
  344. Avoid dynamic identifier names with invalid content.
  345. * tmac/pdfmark.tmac (pdf*href.format): Verify each potential
  346. formatting keyword, read from the input data stream, as a valid
  347. groff identifier, before attempting to match it.
  348. 2023-12-17 Keith Marshall <address@hidden>
  349. Designate the GNU Free Documentation License as invariant.
  350. * cover.ms (pub@licensing): Update grant of permissions to copy,
  351. distribute, and/or modify, to declare Appendix A, the content of
  352. which is the GNU Free Documentation License, as "invariant", thus
  353. forbidding its modification in any redistributed publication of
  354. the associated document.
  355. 2023-12-17 Keith Marshall <address@hidden>
  356. Propagate FDL section headings to outline and TOC.
  357. * pdfmark.ms (FDL-XH-UPDATE-TOC): New helper macro, used by...
  358. (FDL-XH): ...this new document-local macro variant; define them.
  359. * fdl/fdl-v1.3.ms.in (FDL-SH): Some heading format adjustments.
  360. [d FDL-XH]: Invoke it.
  361. 2023-12-11 Keith Marshall <address@hidden>
  362. Avoid necessity to repeat document meta-data.
  363. * pdfmark.ms (mso): Include...
  364. * cover-info.ms: New file; complementary to cover.ms, when included by
  365. document source, it defines alternative implementations of CS, AU, and
  366. CE macros, which extract title and author meta-data from within inline
  367. CS ... CE blocks, propagating their content to PDF meta-data...
  368. (.pdfinfo /Title, .pdfinfo /Author): ...specs, respectively.
  369. * pdfmark.ms (.pdfinfo): Delete previously redundant...
  370. (/Title, /Author): ...meta-data assignments.
  371. * Makefile.in (tmacdir): Add direct ${srcdir} reference.
  372. (pdfmark.pdf): Assert additional build-time dependencies on...
  373. * cover.ms cover-info.ms: ...each of these.
  374. 2023-12-10 Keith Marshall <address@hidden>
  375. Correct some misplaced line continuation marks.
  376. * pdfmark.ms (Sections 2.5.5.4, 3.1.2.3): In constructs...
  377. (.CWI ... \c, .CWB ... \c): ...adjust placement of "\c" mark, to
  378. ensure that macro expansion results in its ultimate location at
  379. the bitter end of the resultant output line fragment.
  380. 2023-05-28 Keith Marshall <address@hidden>
  381. Some typographic and grammatical man page corrections.
  382. * pdfroff.1.man (option --no-kill-null-pages): s/where/whence/ as
  383. argument descriptor; s/any/all/ as valid argument value.
  384. 2023-05-23 Keith Marshall <address@hidden>
  385. Use RCS keywords more consistently.
  386. * tmac/opmode.tmac tmac/pdfmark.tmac tmac/pdfroff.tmac
  387. * tmac/spdf.tmac tmac/toc.tmac ($Id$, $RCSfile$): Add annotations.
  388. 2023-05-23 Keith Marshall <address@hidden>
  389. Provide pdfroff binding macros for rendering man pages.
  390. * tmac/anpdf.tmac: New file; it is a wrapper around andoc.tmac,
  391. supporting use of -man only; (currently, -mdoc is not supported).
  392. * Makefile.in (man2pdf): Use it.
  393. (MAN2PDF_FLAGS): Enable features, controlled by addition of...
  394. (CS, CT): ...these registers; set both to 1.
  395. * tmac/sanitize.tmac (sanitize:esc-f): New alias; map it to...
  396. (sanitize:esc-generic): ...this, making its handling analogous to...
  397. (sanitize:esc-F): ...this.
  398. * tmac/strcase.tmac: New file; it retrospectively emulates...
  399. (.stringup, .stringdown): ...this pair of new groff-1.23 requests.
  400. * pdfroff.sh (MANPDF_OPTIONS): New internal-use variable; it provides
  401. a hook capability, whereby '-manpdf' triggers processing of '\" hints
  402. in man page source, causing nominated preprocessors to be invoked.
  403. * pdfroff.1.man: Various layout, and grammatical adjustments;
  404. reserve vertical space, as required, to avoid widow and orphan lines.
  405. (PDFROFF_POSTPROCESSOR_COMMAND): Disallow a page break within text
  406. specifying the default command.
  407. 2023-05-13 Keith Marshall <address@hidden>
  408. Describe method of finished document assembly.
  409. * pdfmark.ms (Section 4.1.7): Add content.
  410. (Section 4.1.4): Omit "$" prompt from "pdfroff" command example,
  411. to maintain consistency with all earlier, and new examples.
  412. 2023-05-09 Keith Marshall <address@hidden>
  413. Describe method of document body formatting.
  414. * pdfmark.ms (Section 4.1.6): Add content.
  415. 2023-05-02 Keith Marshall <address@hidden>
  416. Describe default method of table of contents generation.
  417. * pdfmark.ms (Section 4.1.5): Add content.
  418. 2023-05-02 Keith Marshall <address@hidden>
  419. Eliminate a macro loading order dependency.
  420. * tmac/opmode.tmac [!rPDFOPMODE] (OPMODE): Define it, otherwise...
  421. [rPDFOPMODE] (OPMODE): ...alias it, to make them equivalent.
  422. 2023-04-28 Keith Marshall <address@hidden>
  423. Describe provisions for formatting front-matter.
  424. * pdfmark.ms (Section 4.1.4): Add content.
  425. 2023-04-19 Keith Marshall <address@hidden>
  426. Describe in-document optional processing hints support.
  427. * pdfmark.ms (Section 4.1.3): Add content.
  428. 2023-04-17 Keith Marshall <address@hidden>
  429. Describe pdfroff's reference resolution procedure.
  430. * pdfmark.ms (Section 4.1.2): Add content.
  431. 2023-04-11 Keith Marshall <address@hidden>
  432. Add description of pdfroff operating principles.
  433. * pdfmark.ms (Section 4.1.1): Add content, and subsequent link
  434. target headings, as required to satisfy planned forward references.
  435. (Section 4.2): Modify heading text, to clarify relationship to...
  436. (Section 4.1.2): ...this planned content.
  437. 2023-04-11 Keith Marshall <address@hidden>
  438. Handle hyphenation special characters in PDF outlines.
  439. * tmac/sanitize.tmac (sanitize): Interpret "\%" specially.
  440. (sanitize:esc-(, sanitize:esc-(hy): New macros; they add generic
  441. support for "\(xx", and specialization for "\(hy", respectively.
  442. 2023-04-11 Keith Marshall <address@hidden>
  443. Manage page break placement within the table of contents.
  444. * pdfmark.ms (toc.end): New document-local macro; initially define
  445. with no content, and subsequently remap as an alias for KE, after
  446. first use, to close a not-yet-opened KS/KE block, within...
  447. (toc.outline): ...this; use toc.end in place of KE, to close any
  448. previously opened KS/KE block, then insert KS to open a new block,
  449. prior to output of any TOC entry at outline-level one.
  450. (toc end): Add after inclusion of TOC file, to close its final,
  451. residually open KS/KE block.
  452. 2023-04-09 Keith Marshall <address@hidden>
  453. Add PDF publishing process introduction.
  454. * pdfmark.ms (Section 4): Add introductory text.
  455. (Section 4.1): Insert new subsection, with introductory content,
  456. referring to the pdfroff command; increment following subsection
  457. numbers accordingly.
  458. 2023-04-06 Keith Marshall <address@hidden>
  459. Implement a standardized snapshot distribution procedure.
  460. * configure.ac (AC_INIT): Assign package name and version.
  461. (chmod): Perform AC_PATH_PROG assignment to "CHMOD" AC_SUBST variable.
  462. * Makefile.in: Perform some cosmetic clean-up.
  463. (PACKAGE_TARNAME, PACKAGE_VERSION, CHMOD): Use autoconf assignments.
  464. (pdfroff-posix, pdfroff-win32): New build targets; they build variants
  465. of pdfroff suitable for POSIX, and MS-Windows, respectively, using...
  466. (CHMOD): ...this autoconf-assigned program, to make them executable.
  467. (dist): New primary build target; it delegates operations to...
  468. (srcdist, bindist, docdist, mandist, tmacdist): ...these subsidiary
  469. build targets; implement them; they employ programs identified by...
  470. (TAR_CMD, ZIP_CMD, ZIP_EXT): ...these new make variables; define them,
  471. permitting user override, subject to GNU tar, and XZ compatibility.
  472. 2023-04-04 Keith Marshall <address@hidden>
  473. Implement a duplex printing layout capability.
  474. * pdfmark.ms [duplex] (BT): Augment macro definition, to alternate
  475. left and right margin widths, between even and odd numbered pages;
  476. activated by "-duplex" option to pdfroff command, (i.e. define a
  477. string called "uplex", with "-duplex=true", for example).
  478. [duplex && pdfroff] (preserve_blank_pages): Suggest it for...
  479. [body]: ...this document assembly component.
  480. 2023-04-03 Keith Marshall <address@hidden>
  481. Support in-document hints for --no-kill-null-pages option.
  482. * pdfroff.sh [--no-kill-null-pages]: Record option argument in...
  483. (preserve_blank_pages): ...this shell variable; defer its evaluation
  484. until processing of in-document hints, during reference resolution.
  485. (safe_hints): Add "preserve_blank_pages" to authorized list.
  486. 2023-04-02 Keith Marshall <address@hidden>
  487. Number pages contiguously, including front-matter page count.
  488. * pdfmark.ms (PG-ADVANCE-TO-ODD): New macro; it advances the effective
  489. page number to next available odd-numbered page, while suppressing the
  490. display of the page number on that page; use it to number the starting
  491. page number for the document text, accounting for the number of pages
  492. which are already occupied by front-matter, and table of contents.
  493. (HD): Define groff-ms hook, to restore normal page numbering sequence,
  494. after use of PG-ADVANCE-TO-ODD to establish a starting page number.
  495. (XH-APPENDIX): Simplify it, by use of PG-ADVANCE-TO-ODD; this offers
  496. the added benefit of starting each appendix at an odd page number.
  497. 2023-03-31 Keith Marshall <address@hidden>
  498. Improve selectivity of pdfroff's blank-page removal feature.
  499. * pdfroff.sh (--no-kill-null-pages): Accept an optional argument,
  500. with permitted values of "all", "body", or "toc"; interpret to set...
  501. (TC_FILTER, BD_FILTER): ...these new internal-use variables, which
  502. subsequently establish the scope of operation for...
  503. (PDFROFF_COLLATE): ...this internal filter.
  504. * pdfroff.1.man (--no-kill-null-pages): Document argument usage.
  505. * tmac/spdf.tmac (TC) [PHASE>1]: Make it a no-op.
  506. 2023-03-29 Keith Marshall <address@hidden>
  507. Append GNU Free Documentation Licence to document body.
  508. * fdl: New directory.
  509. * fdl/fdl-v1.3.txt: New file; it is an unmodified verbatim copy of
  510. the original FDL plain-text document, imported from groff sources.
  511. * fdl/Makefile.sub: New file; it implements an inline txt2roff filter,
  512. suitable for creating a generic groff-marked-up copy of the FDL.
  513. * fdl/fdl-v1.3.ms.in: New file; it provides boiler-plate mark-up to
  514. map txt2roff generic mark-up for use with groff-ms.
  515. * Makefile.in: Include fdl/Makefile.sub, configured by...
  516. (txt2roff_srcdir, txt2roff_tmac_suffix): ...these unconditional...
  517. [fdl-v1.3.ms] (TXT2ROFF_PREFIX): ...and this conditional assignment.
  518. (pdfmark.pdf): Add dependency on fdl-v1.3.ms
  519. * pdfmark.ms (Appendix A): Define and use...
  520. (XH-APPENDIX, XH-APPENDIX-NUMBER-FORMAT): ...these new local macros,
  521. to set up the appendix heading, and page numbering format; include
  522. generated file fdl-v1.3.ms, subject to formatting specified by...
  523. (FDL-SETUP, FDL-BACKUP-AND-REPLACE, FDL-SH-START, FDL-TI-START)
  524. (FDL-RESTORE): ...these temporary local macros, which also use...
  525. (fdl:replacement.tag, fdl:title.block): ...these temporary strings...
  526. (fdl:title.lines): ...and this temporary numeric register.
  527. (TC-MARGIN): Increase its width, to accommodate up to seven digits.
  528. (XH-UPDATE-TOC) [%%]: Use as pageref, when defined; it represents the
  529. true page number, when \n% has been temporarily reset to one, as it is
  530. by XH-APPENDIX, after saving its original value in \n(%%, to suppress
  531. page numbering at particular locations within the document body.
  532. 2023-03-28 Keith Marshall <address@hidden>
  533. Add a copyright assignment page to document front-matter.
  534. * cover.ms: Add template content, supported by...
  535. (PUB, ASSERT-RIGHTS, FDL-REFERENCE): ...these new public macros...
  536. (pub@initial, pub@collect, pub@revised, pub@enum, pub@rights)
  537. (pub@post, au@assert-rights, au@asserted, au@uk-asserted): ...these
  538. new internal-use helper macros, additionally augmented by...
  539. (pub@preformat.content): ...this new temporary diversion...
  540. (FDL-SECTION, FDL-SECTION-TITLE, pub@copyright, pub@series, pub@last)
  541. (pub@revlist, au@pronoun, ASSERT-RIGHTS@his, ASSERT-RIGHTS@her)
  542. (au@plural, au@pending, au@list): ...these new strings, and...
  543. (au@count, pub@revcount): ...these new counter registers.
  544. (au@next): Extend it, to assign, and manage...
  545. (au@count, au@list, au@pending): ...these.
  546. * pdfmark.ms (ASSERT-RIGHTS, FDL-REFERENCE, PUB): Use them.
  547. 2023-03-19 Keith Marshall <address@hidden>
  548. Ignore potentially unsafe pdfroff hint assignments.
  549. * pdfroff.sh (safe_hints): New shell variable; it enumerates the
  550. names of hint variables which are deemed to be safe for assignment.
  551. (safer_hint): New shell function; it ensures that assignments are made
  552. for variables which are enumerated as "safe"; use it to evaluate all
  553. hints which are identified during pdfhref reference resolution.
  554. 2023-03-18 Keith Marshall <address@hidden>
  555. Fix a constant-width font usage inconsistency.
  556. * pdfmark.ms (Section 2.5.5.4): Consistently use '\f(CI', not '\fI',
  557. for named argument identification in document mark-up examples.
  558. 2023-03-18 Keith Marshall <address@hidden>
  559. Correct some minor typographic errors.
  560. * pdfroff.1.man (See also): Identify...
  561. (groff-pdfmark): ...this as reference manual distriutor.
  562. (Environment): In reference to GROFF_AWK_INTERPRETER, correct
  563. spelling of 'continues'; s/continue/continues/
  564. 2023-03-17 Keith Marshall <address@hidden>
  565. Support safe mode TOC record collection within pdfroff.
  566. * pdfroff.sh [pdfroff-option:set]: Evaluate early, relocating...
  567. [toc_relocation=enabled]: ...this option set-up to, and adding...
  568. [toc_file=<file_name>]: ...this assignment at end of first reference
  569. resolution loop pass, and updating toc_file content at end of this,
  570. and every subsequent pass of this loop.
  571. * tmac/toc.tmac (toc file) [pdfroff]: Emit 'toc_file' hint.
  572. [!pdfroff]: Fall back to unsafe mode file output.
  573. * Makefile.in (%.pdf: %.ms): Remove "-U" option from 'pdfroff'
  574. command invocation; it is no longer required.
  575. 2023-03-16 Keith Marshall <address@hidden>
  576. Add support for in-document pdfroff option hints.
  577. * tmac/pdfroff.tmac: New macro file; it defines...
  578. (pdfroff): ...a default implementation for this new macro, and...
  579. (PDF-TOC-ONLY, PDF-BODY-TEXT): ...these (effectively constant)
  580. processing phase indicating register values.
  581. * tmac/spdf.tmac (TC): Use pdfroff macro, when defined, to set...
  582. [toc_relocation=enabled]: ...this pdfroff operating mode option.
  583. * Makefile.in (pdfmark.ms): Add a further dependency on...
  584. (pdfroff.tmac): ...this new macro file.
  585. * pdfroff.sh (GROFF_STYLE): Append "-mpdfroff" option.
  586. 2023-03-13 Keith Marshall <address@hidden>
  587. Generalize support for phased output mode control.
  588. * tmac/spdf.tmac (OP, OPMODE): Factor out definitions; relocate to...
  589. * tmac/opmode.tmac: ...this additional new macro file.
  590. * tmac/spdf.tmac (opmode.tmac): Source it.
  591. * Makefile.in (pdfmark.ms): Add a further dependency on...
  592. (opmode.tmac): ...this new macro file.
  593. 2023-03-12 Keith Marshall <address@hidden>
  594. Eliminate warnings emanating from document source.
  595. * pdfmark.ms (\s): Use 'z' units, not 'p', throughout.
  596. (toc.refmark): Separate collected text for TOC entry into...
  597. (toc.refmark.tag): ...this pdfhref destination name tag, and...
  598. (toc.refmark.text): ...this additional text; when passed to...
  599. (toc.pageref): ...here, quote it for expansion in pdfhref.
  600. (pdf-publishing): Do not encode reference in terms of...
  601. (XR): ...this; it requires the semantics of...
  602. (XR-NO-PREFIX): this, hence use it; do not redefine...
  603. (PDFHREF.PREFIX): ...this; it is no longer required.
  604. (CW): Quote arguments with embedded tabs.
  605. 2023-03-12 Keith Marshall <address@hidden>
  606. Eliminate warnings emanating from pdfmark macros.
  607. * tmac/pdfmark.tmac (pdf*href.format): On entry, initialize...
  608. (PDFHREF.TEXT): ...this string, without any content, then append...
  609. (PDFHREF.PREFIX): ...this, only if it has been, and remains defined.
  610. (pdf:note.newline): Ensure it is defined, on package load.
  611. 2023-03-12 Keith Marshall <address@hidden>
  612. Eliminate warnings emanating from TOC macros.
  613. * tmac/toc.tmac (toc.file): Do not attempt to close...
  614. [toc#stream > 0] (toc!stream): ...this file stream, when...
  615. (toc#stream): ...this register has not been defined.
  616. 2023-03-11 Keith Marshall <address@hidden>
  617. Clean up ugly spacing within pdfroff manpage.
  618. * pdfroff.1.man (PDFWRITER): Be more verbose, in order to provide
  619. more opportunities for word wrapping between unbreakable words.
  620. 2023-03-11 Keith Marshall <address@hidden>
  621. Do not try to read a nonexistent pdfroff temporary file.
  622. * pdfroff.sh [--no-reference-dictionary] (WRKFILE): This will never
  623. be written; assign it to /dev/null (or its MS-Windows equivalent), so
  624. that subsequent read attempts may succeed, albeit reading nothing.
  625. 2023-03-11 Keith Marshall <address@hidden>
  626. Make the --emit-ps option work correctly.
  627. * pdfroff.sh.in [--emit-ps] (PDFWRITER): New variable; define it,
  628. to select "ps2write" for GhostScript output; do not redefine...
  629. (PDFROFF_POSTPROCESSOR_COMMAND): ...this; when it is subsequently
  630. invoked, use "-sDEVICE=$PDFWRITER", with "pdfwrite" as default.
  631. * pdfroff.1.man (PDFWRITER): Document it.
  632. 2023-03-10 Keith Marshall <address@hidden>
  633. Accept user-specified build-time pdfroff options.
  634. * Makefile.in (PDFROFF_FLAGS): New macro; undefined unless specified
  635. by the user, at build time; honour it when defined.
  636. 2023-03-10 Keith Marshall <address@hidden>
  637. Specify associated GNU troff package name and version.
  638. * Makefile.in (PACKAGE_BASE_TARNAME, PACKAGE_BASE_VERSION):
  639. New macros; define, and combine them to additionally define...
  640. (PACKAGE): ...this; it is required to complete the definition of...
  641. (pdfdocdir): ...this locally-named, autoconf assigned macro.
  642. 2023-03-09 Keith Marshall <address@hidden>
  643. Use consistent quoting of document titles in references.
  644. * pdfroff.1.man (See also): Add quotes around the title of the primary
  645. groff manual, making it consistent with that of the reference guide to
  646. PDF document publishing.
  647. 2023-03-09 Keith Marshall <address@hidden>
  648. Revise text and format of manpage 'apropos' description.
  649. * pdfroff.1.man (Name): Improve wording; italicize...
  650. (groff): ...this name.
  651. 2023-03-09 Keith Marshall <address@hidden>
  652. Tidy manpage synopsis, particularly for troff-mode output.
  653. * pdfroff.1.man (Synopsis): Optimize order of entries; coalesce font
  654. alternation argument lists, where practicable; do not use '\~' escape.
  655. (Options): Similarly, avoid using '\~'.
  656. 2023-03-09 Keith Marshall <address@hidden>
  657. Explicitly forbid hyphenation of specific names.
  658. * pdfroff.1.man (pdfmark): Do not rely on the 'hw' request.
  659. (groff, pdfmark, pdfroff, pdf??.*): Prefix with '\%'; additionally,
  660. protect derived forms, with arbitrary suffixes, and with path name
  661. prefixes; allow non-hyphenated breaks after directory separators.
  662. 2023-03-09 Keith Marshall <address@hidden>
  663. Add legacy support for "MR" manpage macro.
  664. * pdfroff.1.man [!.g or !d MR] (MR): New macro; define it locally,
  665. to minimally emulate the formal macro introduced in groff-1.23.
  666. 2023-03-09 Keith Marshall <address@hidden>
  667. Adapt manpage compatibility-mode save for legacy use.
  668. * pdfroff.1.man (.cp): Do not refer to this number register; use...
  669. (_C): ...this new compatibility-mode-safe register; set it equal to...
  670. (.C): ...this, using compatibility-mode-safe assignment syntax, then
  671. use a compatibility-mode bypass request, to rename it as...
  672. (*groff_pdfroff_1_man_C): ...this.
  673. 2023-03-07 Keith Marshall <address@hidden>
  674. Suppress noisy "invalid substring index" warnings.
  675. * tmac/sanitize.tmac (sanitize:scan.execute): On reaching...
  676. (sanitize:residual) [sanitize:residual.length < 1]: ...this expected
  677. state, residual substring extraction will fail; do not attempt it.
  678. 2023-03-07 Keith Marshall <address@hidden>
  679. Avoid misinterpretation of comments in "eo" scope.
  680. * tmac/sanitize.tmac (eo): Move all macros to normal scope; double up
  681. all escapes which require deferred evaluation; remove scope.
  682. 2023-02-24 Keith Marshall <address@hidden>
  683. Do not emit redundant 'pdfhref Z' records.
  684. * pdfroff.sh [grohtml-info] (pdfhref Z): Adapt awk script, to emit...
  685. (pdfhref Z 0 0 0): ...this conditionally, only if at least one prior
  686. record has been emitted; delete unconditional emission, which caused
  687. the anomaly reported as groff issue #63133.
  688. 2023-02-24 Keith Marshall <address@hidden>
  689. Clean up Z-shell initialization logic.
  690. * pdfroff.sh [ZSH_VERSION]: Tidy initialization code for...
  691. (NULLCMD, emulate sh): ...these; bring it more into alignment with
  692. contemporary GNU autoconf usage.
  693. 2023-02-23 G. Branden Robinson <address@hidden>
  694. Document new groff-pdfmark source repository location.
  695. * pdfroff.1.man (Authors): Note URI for Keith Marshall's new primary
  696. development site; (cf. https://savannah.gnu.org/bugs/?63827).
  697. 2023-02-19 Keith Marshall <address@hidden>
  698. Suppress reference dictionary processing for manpages.
  699. * Makefile.in (%.pdf: %.man): Within build procedure, add...
  700. (--no-reference-dictionary, --no-toc-relocation): ...this pair of
  701. options, when invoking the 'pdfroff' command.
  702. (GROFF_MANFLAGS): Rename macro as...
  703. (MAN2PDF_FLAGS): ...this.
  704. 2023-02-14 Keith Marshall <address@hidden>
  705. Tidy "see also" section layout in pdfroff manpage.
  706. * pdfroff.1.man (See also): Eliminate ugly TP macro usage, when
  707. referring to "Portable Document Format Publishing with GNU Troff".
  708. 2023-02-14 Keith Marshall <address@hidden>
  709. Implement build-time infrastructure for manpage updates.
  710. * Makefile.in (%.man): Specify as implicit prerequisite for...
  711. (%, %.pdf): ...these implicit build goals; implement separate build
  712. rules for each, with both procedures based on...
  713. (manpage_update_script): ...this inline sed script; output for...
  714. (%.pdf): ...this is filtered through pdfroff, directed by...
  715. (GROFF_MANFLAGS): ...these user-defineable options.
  716. 2023-02-14 Keith Marshall <address@hidden>
  717. Correct pdfroff operation with no input files specified.
  718. * pdfroff.sh [while $#]: At end of loop...
  719. [$# == 1]: ...before discarding this final argument, ensure that...
  720. [INPUT_FILES]: ...this includes at least one file, or "-" flag...
  721. [!INPUT_FILES]: ...otherwise, append one extra "-" argument.
  722. 2023-02-13 Keith Marshall <address@hidden>
  723. Improve pdfroff's "-T<dev>" option handling.
  724. * pdfroff.sh (-Tpdf): Accept as implicit default; remap it to...
  725. (-Tps): ...this former default, as required for subsequent GhostScript
  726. processing; if specified explicitly, assume that it implies...
  727. (--emit-ps): ...this ultimate output option.
  728. * pdfroff.1.man (Options) [-Tpdf, -Tps]: Document modified behaviour.
  729. 2023-02-11 Keith Marshall <address@hidden>
  730. Implement build-time procedure for pdfroff script generation.
  731. * Makefile.in (PDFROFF): New macro; map to local build.
  732. (path_search_setup_posix, path_search_setup_win32): New computed
  733. macros; they differentiate between building for POSIX and MS-Windows.
  734. (pdfmark.pdf): Add build-time dependency on local build of...
  735. (pdfroff): ...this; add rule to build it, by invocation of...
  736. (pdfroff_generator_script): ...this inline sed script, run via...
  737. (SED): ...this new configuration-determined macro, to substitute...
  738. (PACKAGE_TARNAME, PACKAGE_VERSION): ...these package specific, and...
  739. (RC, EXT, AWK_PROGRAM_NAMES, GHOSTSCRIPT_PROGRAM_NAMES): ...these
  740. build-time user-overrideable macro values, in place of...
  741. * pdfroff.sh (PROVIDER, VERSION, GROFF_AWK_INTERPRETERS)
  742. (GROFF_GHOSTSCRIPT_INTERPRETERS): ...these respective place holders,
  743. subject to combination of "PACKAGE_VERSION", "RC", and "EXT" as one.
  744. (SHOW_VERSION) [--version selected]: Add "PROVIDER" place holder.
  745. (PATH_SEARCH_SETUP): Replace with MS-Windows specific code between...
  746. (BEGIN_PATH_SEARCH_SETUP, END_PATH_SEARCH_SETUP): ...these markers...
  747. [POSIX build]: ...delete markers, and MS-Windows code, whereas...
  748. [MS-Windows build]: ...delete markers only.
  749. * configure.ac (AC_PROG_SED): Evaluate it, to define...
  750. (SED): ...this makefile substitution.
  751. 2023-01-29 Keith Marshall <address@hidden>
  752. Implement robust double-quoting of pdfnote content.
  753. * tmac/pdfmark.tmac (PDFNOTE.QUOTED): New string, referring to...
  754. (pdf:note.quote, pdf:note.quoted, pdf:note.special): ...these new
  755. internal strings; they implement the interface, in terms of...
  756. (pdf*note.pre-pdfmark.compose.hook): ...additional mapping of...
  757. (pdf:note.special.compose): ...this new string, mapped to...
  758. (pdf:note.special): ...this, ultimately remapped by...
  759. (pdf*note.pre-pdfmark.post.hook): ...this, to...
  760. (pdf:note.special.final): ...this new string.
  761. * pdfmark.ms: Update to use...
  762. (PDFNOTE.QUOTED): ...this, via document-local alias...
  763. (""): ...named thus; document it in footnote.
  764. 2023-01-22 Keith Marshall <address@hidden>
  765. Improve operation of pdfnote macro, and document it.
  766. * tmac/pdfmark.tmac: Tidy layout.
  767. (pdfnote): Support new -C, -I, -O, and -DP options, via...
  768. (pdf:note-C, pdf:note-I, pdf:note-O, pdf:note-DP): ...these new
  769. option handler macros, respectively; interpret "--" as inhibitor.
  770. (PDFNOTE.LEADING): New numeric register; define it to set downward
  771. displacement of annotation icons, from the top of the current text.
  772. (PDFNOTE.OFFSET): New string; it defines a numeric expression for
  773. computation of annotation icons offset from the left side of the page.
  774. (PDFNOTE.HEIGHT, PDFNOTE.WIDTH): Adjust, reflecting actual usage.
  775. (PDFNOTE.NEWLINE, PDFNOTE.PILCROW): New pre-defined strings; they
  776. serve as the user-visible interfaces for insertion of each of...
  777. (pdf:note.newline, pdf:note.pilcrow): ...these context-neutral
  778. internal strings, which, in turn, are defined in terms of...
  779. (pdf:note.newline.compose, pdf:note.newline.final): ...this pair of
  780. internal context-specific alternatives, which are activated by...
  781. (pdf*note.pre-pdfmark.compose.hook, pdf*note.pdfmark.post.hook):
  782. ...these new hook macros; map them, on invocation of...
  783. (pdfnote): ...this, such that they become associated with...
  784. (pdf*pre-pdfmark.compose.hook, pdf*pre-pdfmark.post.hook): ...these
  785. new hooks, respectively; define do-nothing default handlers, and...
  786. (pdf*pdfmark.end.hook): ...this reset handler.
  787. (pdfmark): Invoke hooks, in context.
  788. * pdfmark.ms (pdfnote): Document it; add content for...
  789. (Section 2.6): ...this previously declared, but empty section.
  790. (Sections 2.6.1, 2.6.2, 2.6.3): Add new subsections.
  791. 2023-01-06 Keith Marshall <address@hidden>
  792. Adjust margins, and internal spacing, of block-quote content.
  793. * pdfmark.ms (PI, QI, DI): Explicitly define, setting each to 3n.
  794. (IP): Add explicit adjustments for individual instances.
  795. 2023-01-04 Keith Marshall <address@hidden>
  796. Improve formatting of interpolated em-dash punctuation.
  797. * pdfmark.ms (em): New string; define and use it in place of the \(em
  798. escape, to achieve British style spacing around em-dash punctuation.
  799. 2022-12-30 Keith Marshall <address@hidden>
  800. Tweak table of contents layout.
  801. * pdfmark.ms (toc.outline): Compute section number indentation to
  802. align each nested level with the title text of its containing level.
  803. (XH-UPDATE-TOC) [toc.outline.current=1]: Increment font size; adjust
  804. section number field width to preserve text alignment with computed
  805. indentation for any contained level two section reference entries.
  806. (toc.pageref) [toc.outline.current=1]: Reset font size at end.
  807. (TC-VS1): Add extra vertical space above level one headings.
  808. * Makefile.in (pdfmark.toc): Delete explicit dependencies, and rules
  809. for explicit generation; it will be generated implicitly, when...
  810. (pdfroff.pdf): ...this is being updated, but it is not required when
  811. this is already up to date w.r.t. all of its prerequisites.
  812. 2022-12-29 Keith Marshall <address@hidden>
  813. Correct several typographic errors.
  814. * pdfmark.ms: s/accomodate/accommodate/; s/analagous/analogous/;
  815. s/assocated/associated/; s/ouput/output/; s/preceed/precede/
  816. 2022-03-30 Keith Marshall <address@hidden>
  817. Clean up extraneous trailing white-space.
  818. * pdfmark.ms: Delete all white-space at end-of-line, throughout.
  819. 2022-03-30 Keith Marshall <address@hidden>
  820. Avoid keeps for widow and orphan line control.
  821. * pdfmark.ms (KS, KE): Avoid using these for widow and orphan line
  822. control; in particular do not include any section heading within such
  823. a construct, as it may result in incorrect page numbering within the
  824. generated table of contents; instead, use "ne" requests, with...
  825. (\n[PD]u): ...this form for paragraph distance references used
  826. consistently, in preference to...
  827. (\n(PDu): ...this.
  828. 2022-03-29 Keith Marshall <address@hidden>
  829. Implement a more effective TOC generation strategy.
  830. * tmac/toc.tmac: New file; it implements a basic, extensible,
  831. table of contents generator macro framework; use it...
  832. * pdfmark.ms (XH-UPDATE-TOC): ...here; modify it to generate...
  833. (pdfmark.toc): ...this new file, subsequently included and used by...
  834. (toc.outline, toc.refmark, toc.pageref): ...these new document-local
  835. toc.tmac extending macros, to generate TOC in-line, superseding...
  836. (TC): ...use of this spdf.tmac macro; delete reference.
  837. [TOC] (PDFHREF.TEXT.COLOUR): Set it to match...
  838. (\n[.m]): ...this.
  839. * Makefile.in (pdfmark.pdf): Update dependencies, requiring...
  840. (pdfmark.toc): ...this new intermediate file; add rules to generate
  841. it, by performing a separate pre-processing pass over...
  842. (pdfmark.ms): ...this primary source file.
  843. (clean): Remove "*.toc" files.
  844. 2022-03-28 Keith Marshall <address@hidden>
  845. Preserve pdfhref link text colour specification.
  846. * tmac/pdfmark.tmac (pdf*href)
  847. [d PDFHREF.TEXT.COLOUR & !d PDFHREF.TEXT.COLOR]: Redefine...
  848. (PDFHREF.TEXT.COLOR): ...this, by specifying it as an alias for...
  849. (PDFHREF.TEXT.COLOUR): ...this; otherwise...
  850. [d PDFHREF.TEXT.COLOR & !d PDFHREF.TEXT.COLOUR]: Redefine...
  851. (PDFHREF.TEXT.COLOUR): ...this, by specifying it as an alias for...
  852. (PDFHREF.TEXT.COLOR): ...this; otherwise...
  853. [!d PDFHREF.TEXT.COLOUR & !d PDFHREF.TEXT.COLOR]: Redefine...
  854. (PDFHREF.TEXT.COLOR): ...this, by assignment of default value, and...
  855. (PDFHREF.TEXT.COLOUR): ...this, as an alias for it.
  856. 2022-03-28 Keith Marshall <address@hidden>
  857. Maintain separation of in-document pdfroff hints.
  858. * pdfroff.sh (pdfroff-option:set): Quote collected hints, as returned
  859. by sed, to preserve separating newlines; without this, all hints will
  860. be evaluated as if representing a single, possibly malformed command,
  861. which is unlikely to have the desired effect.
  862. 2022-03-28 Keith Marshall <address@hidden>
  863. Always set the PHASE indicator when formatting body text.
  864. * pdfroff.sh (BODY_FORMAT): Do not clear it, when...
  865. [--no-toc-relocation]: ...this option is active; we require...
  866. [-rPHASE=2]: ...this, even when PHASE=1 is omitted.
  867. 2022-03-26 Keith Marshall <address@hidden>
  868. Improve handling of pdfbookmark names.
  869. * tmac/pdfmark.tmac (pdfbookmark): Define...
  870. (PDFBOOKMARK.NAME): ...this, on entry, rather than on final output.
  871. (pdfbookmark) [-N]: Add support; suppress automatic name generation,
  872. and use specified bookmark name instead; separate name sequencing from
  873. bookmark cache sequencing; transfer automatic name sequencing to...
  874. (pdf:bm.ix): ...this new auto-incrementing register, retaining...
  875. (pdf:bm.nr): ...this for cache sequencing; make it auto-increment.
  876. 2022-03-24 Keith Marshall <address@hidden>
  877. Place outline references before generating TOC entries.
  878. * tmac/spdf.tmac (spdf:XH.format, spdf:XN.format): Do not call...
  879. (XH-UPDATE-TOC): ...this directly; instead, call it indirectly from...
  880. (spdf:XH.finalize): ...here, whence call it after invoking...
  881. (pdfhref O): ...this.
  882. 2022-03-01 Keith Marshall <address@hidden>
  883. Document "ms" section headings support features.
  884. * pdfmark.ms (Section 3.1.2): Update and expand; refer to...
  885. (XH, XN): ...this pair of section heading specification macros.
  886. (Subsection 3.1.2.1): Add content to document them.
  887. (Subsection 3.1.2.2): Add content; document...
  888. (XH-INIT, XN-INIT): ...this pair of user-definable macros.
  889. (Subsection 3.1.2.3): Add content; document...
  890. (XH-UPDATE-TOC): ...this user-redefinable macro.
  891. (Subsection 3.1.2.4): Add content; document...
  892. (XH-REPLACEMENT, XN-REPLACEMENT): ...these user-redefinable macros.
  893. * tmac/spdf.tmac (XN): Correct comment typo; should refer to...
  894. (NH <n>): ...this, rather than implied use after self.
  895. 2022-02-27 Keith Marshall <address@hidden>
  896. Add discussion of "ms" document structure.
  897. * pdfmark.ms (Section 3.1.1): Add content.
  898. (Section 4): Add cross-reference label, named...
  899. (pdf-publishing): ...thus.
  900. 2022-02-27 Keith Marshall <address@hidden>
  901. Add footnote concerning choice of layout macro package.
  902. * pdfmark.ms (Section 3): Add footnote #16.
  903. 2022-02-26 Keith Marshall <address@hidden>
  904. Correct page trap macro assignment syntax.
  905. * pdfmark.ms (Section 2.5.6.1): Insert missing initial period...
  906. (pfdhref I -PT ...): ...introducing this macro usage example.
  907. 2022-02-11 Keith Marshall <address@hidden>
  908. Document reference text custom formatting capabilities.
  909. * pdfmark.ms (Section 2.5.5.4): Replace and expand content; explain
  910. operation of the default reference text formatting macro, and use of
  911. 'pdfhref K', to implement user-defined formatting keywords.
  912. 2022-02-11 Keith Marshall <address@hidden>
  913. Add support for custom location keyword interpretation.
  914. * pdfmark.tmac (pdf*href.format): Generalize keyword interpreter.
  915. (pdf*href-K): New internal macro; it implements the interpreter for
  916. "pdfhref K ..." macro calls; use it to map location keywords to...
  917. (PDFHREF.FILEREF, PDFHREF.PAGEREF, PDFHREF.SECTREF): ...these; thus...
  918. (pdf*href.format.file, pdf*href.format.page, pdf*href.format.section):
  919. ...these become redundant; delete them.
  920. * pdfmark.ms (pdfhref K): Document it; add keeps, to avoid potential
  921. widow lines in following paragraphs.
  922. 2021-12-31 Keith Marshall <address@hidden>
  923. Describe automatic pdfhref annotation capability.
  924. * pdmark.ms (Section 2.5.5.3): Add content; introduce and explain
  925. the default provisions, with examples, for the automatic generation
  926. of reference text to describe pdfhref links.
  927. 2021-12-31 Keith Marshall <address@hidden>
  928. Fix a "pdfhref" arguments evaluation bug.
  929. * pdfmark.tmac: Squeeze unnecessary vertical space.
  930. (pdf*href) [.$]: Do not delay assignment of arguments to...
  931. (PDFHREF.DESC): ...this; deferring the evaluation of \$*, until...
  932. (pdf*href.format): ...here, is too late; it interprets the wrong \$*,
  933. resulting in failure of the intended arguments override feature;
  934. additionally, quote PDFHREF.DESC, only when NOT overridden.
  935. 2021-12-20 Keith Marshall <address@hidden>
  936. Describe explicit pdfhref annotation capability.
  937. * pdfmark.ms (Section 2.5.5.2): Add content; show, by example, how
  938. text within a link "hot-spot" may be explicitly specified at time of
  939. link placement.
  940. 2021-12-15 Keith Marshall <address@hidden>
  941. Describe pdfhref colour management mechanism.
  942. pdfmark.ms (Section 2.5.5.1): Add content; state purpose and use of...
  943. (PDFHREF.BORDER, PDFHREF.COLOUR, PDFHREF.TEXT.COLOUR): ...these.
  944. 2021-11-18 Keith Marshall <address@hidden>
  945. Correct a statement with inverted logic.
  946. * pdfmark.ms (Section 2.5.6): Insert missing "not", in opening
  947. paragraph; links become problematic when they do not function as
  948. expected, not when they do!
  949. 2021-11-18 Keith Marshall <address@hidden>
  950. Avoid unwanted line-breaks at hard hyphenation points.
  951. * pdfmark.ms: Ensure that all explicitly hyphenated words are prefixed
  952. by "\%", to make hard hyphens non-breaking.
  953. 2021-11-18 Keith Marshall <address@hidden>
  954. Set initial view to page width.
  955. * pdfmark.ms (pageview): Add /View /FitH specification for /Page 1.
  956. 2021-11-17 Keith Marshall <address@hidden>
  957. Widow and orphan line adjustments.
  958. * pdfmark.ms: Add vertical space reservations, or specify keeps, as
  959. appropriate, to avoid widow lines and orphaned examples, when a short
  960. paragraph precedes an example; adjust paragraph spacing, as necessary
  961. around keeps.
  962. 2021-11-17 Keith Marshall <address@hidden>
  963. Adjust spacing following footnote markers at end-of-sentence.
  964. * pdfmark.ms (FZ): New document-local macro; define it such that it
  965. behaves as FE, augmented to preserve the effect of sentence spacing,
  966. when invoked with arguments having end-of-sentence punctuation.
  967. [GhostScript 8.14.\**, MSYS.\**]: Follow with FS ... FZ.
  968. 2021-11-15 Keith Marshall <address@hidden>
  969. Adjust footnote marker position over punctuation.
  970. * pdfmark.ms ["," or "." followed by "\**"]: Suppress horizontal
  971. spacing in way of the punctuation mark, causing the footnote marker to
  972. be positioned above it.
  973. 2021-11-15 Keith Marshall <address@hidden>
  974. Correct paragraph spacing irregularities.
  975. * pdfmark.ms [QS followed by IP, QS followed by LD]
  976. [DE followed by QE, QE followed by LP]: Each of these combinations
  977. results in doubling of the normal inter-paragraph vertical spacing at
  978. the location of the combination; suppress the excess.
  979. 2021-11-14 Keith Marshall <address@hidden>
  980. Implement publication system management infrastructure.
  981. * configure.ac Makefile.in: New files; they support independent
  982. publication per GNU autoconf build-system conventions.
  983. 2021-11-14 Keith Marshall <address@hidden>
  984. Create free-standing groff-pdfmark publication system.
  985. * cover.ms pdfmark.ms pdfroff.1.man
  986. * pdfroff.sh: Import from GNU Troff project.
  987. * tmac/pdfmark.tmac tmac/s.tmac tmac/sanitize.tmac tmac/spdf.tmac
  988. * artwork/gnu.eps: Import, and relocate.
  989. 2021-10-24 Keith Marshall <address@hidden>
  990. Adapt to accommodate global XH and XN implementations.
  991. cf. <https://savannah.gnu.org/bugs/?58946#comment13>
  992. * spdf.tmac (XH-INIT, XN-INIT, XH-UPDATE-TOC): Delete definitions;
  993. the defaults, provided by s.tmac, are now sufficient.
  994. (XH-REPLACEMENT, XN-REPLACEMENT): Define these, rather than...
  995. (XH, XN): ...these, respectively.
  996. 2021-10-02 Keith Marshall <address@hidden>
  997. Make a minor layout adjustment.
  998. * pdfmark.ms (Section 2.4.3): Add a vertical space reservation, to
  999. avoid a widow line at the end of the paragraph explaining use of...
  1000. (PDFHREF.Y): ...this computed register, in the definition of...
  1001. (PDFBOOKMARK.VIEW): ...this.
  1002. 2021-10-02 Keith Marshall <address@hidden>
  1003. Clarify references to use of the -Tpdf option.
  1004. * pdfmark.ms (Section 2, Section 3.1): Add footnotes, indicating that
  1005. only "-Tps" and "-Tpdf" output formats are supported, and that "-Tpdf"
  1006. may avoid a separate step, to convert from PostScript to PDF.
  1007. 2021-10-02 Keith Marshall <address@hidden>
  1008. Work around misplacement of link "hot-spots" in footnotes.
  1009. * pdfmark.ms (pdfhref-nobreak): New document-local macro; used instead
  1010. of "pdfhref", this forces paragraph adjustment before placement of any
  1011. unbreakable link text, for which line-wrap may be required. Currently
  1012. observed only within footnotes, without adjustment, the "hot-spot" for
  1013. the link may be placed 1v above its associated text.
  1014. 2021-10-02 Keith Marshall <address@hidden>
  1015. Link footnote reference marks to footnote text.
  1016. * pdfmark.ms (FP): Redefine locally; replace s.tmac default.
  1017. (FF): Do not redefine; our FP replacement macro does not use it.
  1018. [d FS-MARK] (FS-MARK): Redefine locally; map it to...
  1019. (pdf:fn.mark): ...this locally defined macro.
  1020. [!d FS-MARK] (@FS): Rename s.tmac implementation as...
  1021. (pdf:fn.record): ...this, then redefine @FS itself, to call...
  1022. (pdf:fn.mark, pdf:fn.record): ...these, in respective order.
  1023. (groff-1.19.1, GhostScript-8.14): Update footnote reference syntax.
  1024. (Ghostscript-8.14, MSYS): Emulate sentence space after footnote mark.
  1025. (*): Replace s.tmac string definition; make it equivalent to "\c",
  1026. after renaming its original implementation as...
  1027. (pdf:fn.index): ...this; synchronize references with changes to...
  1028. (pdf:fn.index.count): ...this new locally defined register; it is
  1029. auto-incremented by one, as each footnote is placed.
  1030. 2021-10-01 Keith Marshall <address@hidden>
  1031. Incorporate user-defined TOC leader style.
  1032. * pdfmark.ms: Make some comment tidy-up adjustments.
  1033. (TC-LEADER, TC-MARGIN): Define them, to take advantage of new
  1034. s.tmac features; cf. <https://savannah.gnu.org/bugs/?61157>.
  1035. 2021-09-18 Keith Marshall <address@hidden>
  1036. Factor a further unnecessary macro out of spdf.tmac
  1037. * spdf.tmac (XR): Remove it; relocate it to...
  1038. * pdfmark.ms (XR): ...here.
  1039. 2021-09-13 Keith Marshall <address@hidden>
  1040. Add comments to annotate locally-defined font change macros.
  1041. * pdfmark.ms (EM): Annotate this locally-defined emphasis macro...
  1042. (CWB, CWI, CWBI): ...these constant width font interpolation macros...
  1043. (=): ...and this locally-defined IP tag variant string.
  1044. 2021-09-13 Keith Marshall <address@hidden>
  1045. Update defunct internet URL references.
  1046. * pdfmark.ms (pdfmark-manual): Adobe moved the document (again);
  1047. update the document reference macro, to follow the URL relocation.
  1048. (www.mingw.org): The MinGW Project has relinquished this domain;
  1049. update the URL reference, to follow web-site relocation to...
  1050. (mingw.osdn.io): ...here.
  1051. 2021-09-13 Keith Marshall <address@hidden>
  1052. Factor document-specific bloat out of spdf.tmac
  1053. * spdf.tmac: Reorganize; add many comments.
  1054. (XN): Retained, but reimplemented, to serve as...
  1055. (XH, XN): ...both of these; add callback hooks for...
  1056. (XH-INIT, XN-INIT, XH-UPDATE-TOC): ...these; provide no-op stubs;
  1057. factor out TOC collection code, delegating to XH-UPDATE-TOC.
  1058. (opt*XN-N, opt*XN-S, opt*XN-X): Rename internal macros to...
  1059. (de spdf:XH-N, de spdf:XH-S, de spdf:XH-X): ...these, respectively.
  1060. (AN, @AN, IE, IS, LU, NN, PXREF, SAME-PAGE, XM): Delete; we do not
  1061. require these; if users do, they should define their own.
  1062. (pdf@toc): Delete internal macro; fold body into...
  1063. (TC): ...this.
  1064. * pdfmark.ms (XH-UPDATE-TOC): Implement callback; it is based on...
  1065. (XN): ...original implementation of this, factored out of spdf.tmac,
  1066. but with significant simplification, to remove unnecessary code.
  1067. (XNVS1, XNVS2, XNVS3): Tighten vertical spacing.
  1068. 2021-09-04 Keith Marshall <address@hidden>
  1069. Reduce potential for user-space exposure of "ms" internals.
  1070. * spdf.tmac (@NH): Append to s.tmac macro; assign...
  1071. (spdf:nh*hl): ...this new internal register; alias it to...
  1072. (.NH): ...this new public name, hence making it track...
  1073. (nh*hl): ...this s.tmac internal numeric register.
  1074. (XN): Use \n[.NH] instead of \n[nh*hl].
  1075. 2021-09-03 Keith Marshall <address@hidden>
  1076. Sanitize text for use in PDF document outlines.
  1077. * sanitize.tmac: New file; it implements...
  1078. (sanitize): ...this new macro; interprets its first argument as a
  1079. string name, and copies its remaining arguments to the named string,
  1080. discarding specific embedded troff escape sequences; currently...
  1081. (\F): ...only this is identified as "specifically discardable".
  1082. * pdfmark.am (TMACFILES): Add sanitize.tmac
  1083. * spdf.tmac (mso): Include sanitize.tmac
  1084. (xn*ref, xn*argc): Rename all occurrences...
  1085. (spdf:refname, spdf:argc): ...to these, respectively.
  1086. (XN): Stop inserting $* directly into PDF outlines; instead, use...
  1087. (spdf:bm.text): ...this new string; this is locally defined by...
  1088. (spdf:bm.define): ...this new macro; passed the original $* from
  1089. XN, this itself, is locally defined as a redirectable alias for...
  1090. (spdf:bm.basic): ...this new local macro; it simply copies $*,
  1091. passed from XN, to the string named by its first argument, (which is
  1092. always spdf:bm.text), so reproducing previous behaviour.
  1093. (opt*XN-S): New macro; defined for internal use only, it adds a "-S"
  1094. option to XN, such that, when specified, it temporarily redirects...
  1095. (spdf:bm.define): ...this macro mapping alias to...
  1096. (sanitize): ...this.
  1097. * pdfmark.ms (XN): Add "-S" option for all headings which include...
  1098. (\F[C]...\F[]): ...this escape sequence.
  1099. 2021-08-21 Keith Marshall <address@hidden>
  1100. Define, and use registered trade mark strings.
  1101. * pdfmark.ms (Adobe, Acrobat, Distiller, PostScript, Microsoft):
  1102. Define as strings. Each expands to its own name, followed by the
  1103. registered trademark symbol, as a superscript, and optional trailing
  1104. punctuation, below the superscript. Use each as required.
  1105. 2021-08-21 Keith Marshall <address@hidden>
  1106. Prefer "-ize" to "-ise" where etymology permits.
  1107. * pdfmark.ms: For all verbs, and their derivative nouns, for which
  1108. British English allows either "-ise" or "-ize" as ending, prefer the
  1109. "-ize" form of verb, and "-ization" form of noun, throughout.
  1110. 2021-08-20 Keith Marshall <address@hidden>
  1111. Correct a spelling error.
  1112. * pdfmark.ms (Section 2.5.3.1): Fix typo: s/exanple/example/.
  1113. 2021-08-20 Keith Marshall <address@hidden>
  1114. Space out section headings in pdfmark.ms source.
  1115. * pdfmark.ms (.NH): Precede each instance by one null request, to
  1116. improve readability.
  1117. 2021-08-18 Keith Marshall <address@hidden>
  1118. Refine pdfroff "missing ghostscript" diagnostic.
  1119. * pdfroff.sh [$GS = ":"]: Fix typo: s/connot/cannot/; refine text.
  1120. 2020-12-25 G. Branden Robinson <address@hidden>
  1121. * pdfmark.am (PDFROFF): Call pdfroff without
  1122. `--keep-temporary-files` option. Temporary directories are
  1123. created with mktemp(1) and files with an embedded process
  1124. identifier, which frustrates reproducible builds.
  1125. See <https://savannah.gnu.org/bugs/?57218>.
  1126. 2018-02-28 Werner LEMBERG <address@hidden>
  1127. * pdfmark.am (pdfmark.pdf): Use $(GROFF_V).
  1128. 2018-02-28 Werner LEMBERG <address@hidden>
  1129. * pdfmark.am (pdfroff): Use $(AM_V_GEN) to silence file generation.
  1130. 2015-08-22 Bernd Warken <address@hidden>
  1131. * pdfroff.1.man: Rename `pdfroff.man'.
  1132. * pdfmark.am: Add `Last update'. Setup Emacs mode.
  1133. 2015-08-05 Bernd Warken <address@hidden>
  1134. * pdfmark.am: Add `Last update'. Setup Emacs mode.
  1135. 2015-04-03 Werner LEMBERG <address@hidden>
  1136. * pdfroff.man: Make it work in compatibility mode.
  1137. 2014-10-14 Keith Marshall <address@hidden>
  1138. Deduce "--no-toc-relocation" from input stream (revisited).
  1139. * pdfroff.sh (WRKFILE): Correct malformed sed expression.
  1140. * spdf.tmac (TC): Prefer value of pdfroff's PHASE register to defined
  1141. state of pdf:href.map, when choosing to emit control record to...
  1142. (toc_relocation): ...enable this.
  1143. 2014-10-13 Keith Marshall <address@hidden>
  1144. Deduce "--no-toc-relocation" from input stream.
  1145. * pdfroff.sh (WRKFILE): Scan it for "pdfroff-option:set" records;
  1146. apply settings; check for equivalent of "--no-toc-relocation" option.
  1147. * spdf.tmac (TC): Emit "pdfroff-option:set toc-relocation=enabled".
  1148. 2014-10-12 Keith Marshall <address@hidden>
  1149. Avoid spurious user visible control messages on stderr.
  1150. * pdfroff.sh (REFCOPY): Ensure that at least one pdfhref mark of type
  1151. 'Z' will remain in the reference map, after all references have been
  1152. resolved; this is required, to suppress writing of reference control
  1153. records to stderr during the final PDF output processing phase.
  1154. 2014-09-04 Bernd Warken <address@hidden>
  1155. * all pdfmark source files: Copying (remove last updates and
  1156. replace years with package years) and Emacs setup.
  1157. 2014-03-30 Steffen Nurpmeso <address@hidden>
  1158. * Makefile.sub: Put straight error-prevention prefixes for `rm'.
  1159. 2014-03-29 Steffen Nurpmeso <address@hidden>
  1160. * Makefile.sub: Handle examples separately, controlled by
  1161. $(make{_,_install_,_uninstall_}examples).
  1162. 2013-01-28 Deri James <address@hidden>
  1163. * pdfmark.tmac (pdfmark, pdf:composed): Use `\!' instead of `\X'.
  1164. With the old pdfmark there are gaps between two of the lines, but
  1165. with the new version they disappear. The use of `.br' and `.in 0'
  1166. is arbitrary any request which causes an implicit break could be
  1167. used. Two breaks together only produce one line break, but if there
  1168. is an intervening `\X' then the second break finds the line buffer
  1169. not empty and generates another line break.
  1170. Using `\!' does alter the position of the pdfmark lines in the
  1171. intermediate file sent to grops (the pdfmark lines are output
  1172. immediately rather than being serialised through the output line
  1173. processing), but this has no effect since the contents of the
  1174. pdfmark line stay the same. It is the contents which determine
  1175. where bookmarks jump to not the position of the record in the input
  1176. stream to grops.
  1177. I initially used `.output', but hit a snag if a pdfbookmark occurs
  1178. before the document starts to output (message saying to insert an
  1179. explicit `.br'), this is quite likely for things like `.pdfinfo
  1180. /Author' which occur at the top of the document. So I'm using the
  1181. `\!' escape.
  1182. 2012-09-20 Werner LEMBERG <address@hidden>
  1183. Simplify environment handling.
  1184. Suggested by Ivan Shmakov <address@hidden>.
  1185. * Makefile.sub (PDFROFF): Don't use export.
  1186. 2011-12-26 Mike Frysinger <address@hidden>
  1187. Fix parallel build race failure.
  1188. Sometimes building in parallel will fail in the pdfmark directory:
  1189. make[2]: Entering directory '.../contrib/pdfmark'
  1190. rm -f pdfroff
  1191. rm -f pdfmark.pdf
  1192. sed -f ... ./pdfroff.sh >pdfroff
  1193. ...; ./pdfroff ... pdfmark.ms >pdfmark.pdf
  1194. /bin/sh: ./pdfroff: Permission denied
  1195. chmod +x pdfroff
  1196. make[2]: *** [pdfmark.pdf] Error 126
  1197. This is because the generated pdf files use the local generated
  1198. pdfroff helper script, but they don't depend directly upon it, so
  1199. make tries to create the two in parallel and randomly falls over.
  1200. * Makefile.sub: Have all the .pdf files explicitly depend on the
  1201. `pdfroff' helper script.
  1202. 2010-12-23 Keith Marshall <address@hidden>
  1203. Update copyright notices; pdfmark.tmac bug-fix.
  1204. * pdfmark.tmac: Update copyright notices.
  1205. (pdf*href.mark.resolve): Avoid premature removal, by aliasing to...
  1206. (pdf*href.mark.begin): ...this, rather than renaming.
  1207. * pdfroff.sh, pdfroff.man: Update copyright notices.
  1208. 2010-12-14 Keith Marshall <address@hidden>
  1209. Clean up handling of temporary files directory.
  1210. * .cvsignore (pdfroff-*): Ignore sub-directories matching this.
  1211. * Makefile.sub (MOSTLCLEANDIRADD): Schedule them for removal.
  1212. 2010-12-02 Keith Marshall <address@hidden>
  1213. Address potential temporary file security vulnerabilities.
  1214. * pdfroff.sh (GROFF_TMPDIR): Use mktemp(1) to assign it, if possible;
  1215. fall back to ${TMPDIR}, ${TMP} or ${TEMP} if unsuccessful.
  1216. * pdfroff.man: Document it.
  1217. 2009-08-16 Colin Watson <address@hidden>
  1218. Make pdfroff's GhostScript invocation safer.
  1219. * pdfroff.sh (PDFROFF_POSTPROCESSOR_COMMAND): Add `-dSAFER' option.
  1220. * pdfroff.man: Document it.
  1221. 2008-12-28 Keith Marshall <address@hidden>
  1222. Avoid phantom line wrapping in pdfhref hot-spots.
  1223. * pdfmark.tmac (pdf*href.mark.end): Emit hot-spot end markers within
  1224. scope of `\Z', to prevent possible output line length overflow which
  1225. may occur only in the layout computation passes, but not in the final
  1226. output pass. Problem observed and identified by Nick Stoughton; it
  1227. causes some hot-spots to be displaced from their proper locations.
  1228. 2007-04-11 Keith Marshall <address@hidden>
  1229. Avoid stray newlines in folded pdfmark literal content.
  1230. * pdfmark.tmac (pdf*pdfmark.dispatch.wrapped): New string; define it
  1231. when accumulating long literal content; make it undefined otherwise.
  1232. (PDFMARK.FOLDWIDTH, PDFMARK.FOLDWIDTH.MAX): Reserve space for two
  1233. extra characters, to accommodate a space and an escaped newline,
  1234. while accumulating literal content, in case folding is required.
  1235. (pdf*pdfmark.dispatch) [pdf*pdfmark.dispatch.wrapped]: Add them.
  1236. 2007-04-11 Keith Marshall <address@hidden>
  1237. * pdfmark.tmac (pdfbookmark): Don't evaluate within diversions; defer
  1238. placement until diversion is copied out at top level.
  1239. 2007-02-06 Eric S. Raymond <address@hidden>
  1240. * pdfroff.man: Update .UR/.UE and .MT/.ME to latest changes in
  1241. an-ext.tmac.
  1242. 2007-01-30 Werner LEMBERG <address@hidden>
  1243. * pdfroff.man: Updated.
  1244. 2007-01-21 Werner LEMBERG <address@hidden>
  1245. * pdfroff.man: Revised, based on a patch from Eric Raymond. It now
  1246. uses the new macros from an-ext.tmac. This is the first of a series
  1247. of man patches which Eric has contributed.
  1248. 2006-07-30 Keith Marshall <address@hidden>
  1249. * pdfroff.sh (PDFROFF_KILL_NULL_PAGES): Require `%%BeginPageSetup' on
  1250. PostScript output line immediately following `%%Page:'.
  1251. 2006-07-29 Keith Marshall <address@hidden>
  1252. * pdfroff.sh (PDFROFF_KILL_NULL_PAGES): Require `sed' to match a more
  1253. explicit regular expression, for detection of redundant pages.
  1254. 2006-07-14 Keith Marshall <address@hidden>
  1255. * pdfroff.sh (PDFWRITE): Local shell variable replaced...
  1256. (PDFROFF_POSTPROCESSOR_COMMAND): by this new environment variable...
  1257. (GROFF_GHOSTSCRIPT_INTERPRETER): with this bound to it.
  1258. (PDFROFF_COLLATE, PDFROFF_KILL_NULL_PAGES): New environment variables.
  1259. (--no-kill-null-pages): New command line option; implement it, and...
  1260. (--help): Add description for it.
  1261. * pdfroff.man (PDFROFF_POSTPROCESSOR_COMMAND): Document it.
  1262. (PDFROFF_COLLATE, PDFROFF_KILL_NULL_PAGES): Document them.
  1263. (--no-kill-null-pages): Document it.
  1264. 2006-07-14 Zvezdan Petkovic <address@hidden>
  1265. * pdfroff.sh (--emit-ps): New command line option; implement it.
  1266. (--help): Add description for it.
  1267. * pdfroff.man (--emit-ps): Document it.
  1268. 2006-06-11 Werner LEMBERG <address@hidden>
  1269. * pdfroff.man: Add `.ig' block after NAME section to make mandb
  1270. happy.
  1271. 2006-03-31 Keith Marshall <address@hidden>
  1272. Split `pdfmark' output as required, to avoid excessively long
  1273. `ps:exec' intermediate output records.
  1274. * pdfmark.tmac (pdfmark): Macro extended to deploy ...
  1275. (pdf*pdfmark.limit): New macro; use it to define ...
  1276. (PDFMARK.FOLDWIDTH, PDFMARK.FOLDWIDTH.MAX): New registers.
  1277. (pdf*compose.first, pdf*compose.next, pdf*compose.literal): New
  1278. macros; each will be aliased as required to ...
  1279. (pdf*compose): ... this, to dynamically construct ...
  1280. (pdf:composed.line, pdf:composed.literal): ... these new strings.
  1281. (pdf:compose.test): New dynamically constructed string; use it to
  1282. detect parenthesised literals in pdfmark content, so folding can be
  1283. avoided within them, subject to honouring of `PDFMARK.FOLDWIDTH'.
  1284. (pdf*length.increment): New macro; it triggers output folding when ...
  1285. (pdf:length): ... this new register exceeds `PDFMARK.FOLDWIDTH.MAX'.
  1286. (pdf*pdfmark.post.first, pdf*pdfmark.post.next): New macros; each will
  1287. be aliased as required to ...
  1288. (pdf*pdfmark.post): ... this, and invoked by ...
  1289. (pdf*pdfmark.dispatch): ... this new macro; use it to define ...
  1290. (pdf:composed): ... this dynamically constructed macro; use ...
  1291. (pdf*end): ... this new macro to terminate it.
  1292. 2006-03-09 Keith Marshall <address@hidden>
  1293. Incorporate portability recommendations by Ralf Wildenhues
  1294. <address@hidden>
  1295. * pdfroff.sh: Avoid unsafe quoting in variable substitutions of
  1296. the form "${VAR+"set"}"; remove outer quotes everywhere; prefix
  1297. with `x' on each side of comparisons.
  1298. ($NULLCMD): Define when `$ZSH_VERSION' is set, i.e. when host
  1299. has `/bin/sh -> zsh'; also...
  1300. (emulate sh): Invoke, for this case.
  1301. Enhancement/bug fix requested by Werner LEMBERG <address@hidden>
  1302. * pdfroff.sh (--help): Direct output to `stdout', not `stderr'.
  1303. (--keep-temporary-files): New option; implement it.
  1304. * pdfroff.man (OPTIONS): Document `--keep-temporary-files' option.
  1305. (FILES): Note names and purpose of files it affects.
  1306. * Makefile.sub (PDFROFF): Add `--keep-temporary-files' option;
  1307. retain them in `GROFF_TMPDIR=.'.
  1308. (CLEANADD): Include temporary files matching `pdf[0-9]*'.
  1309. 2006-03-08 Werner LEMBERG <address@hidden>
  1310. * pdfmark.ms: Update URL for Adobe Reference Manual.
  1311. 2006-02-26 Claudio Fontana <address@hidden>
  1312. * Makefile.sub: Add DESTDIR to install and uninstall targets
  1313. to support staged installations.
  1314. 2006-02-25 Werner LEMBERG <address@hidden>
  1315. * pdfmark.ms: Correct typo; reported by Thomas Klausner.
  1316. 2006-02-24 Werner LEMBERG <address@hidden>
  1317. * pdfmark.ms, pdfroff.sh: Replace legal/illegal with valid/invalid.
  1318. 2005-06-22 Keith Marshall <address@hidden>
  1319. pdfroff.sh portability enhancement.
  1320. * pdfroff.sh (ARGLIST): Variable removed.
  1321. (GROFF_STYLE): Use it for all groff invocations.
  1322. (INPUT_FILES): Pass to all groff invocations, instead of ARGLIST.
  1323. (CS_MACRO, CE_MACRO): Initialize independently.
  1324. (CS_FILTER): Simplify quoting; it used to confuse some shells.
  1325. (Source): CVS keyword removed; replaced by...
  1326. (RCSfile, Revision): these.
  1327. 2005-06-17 Keith Marshall <address@hidden>
  1328. * pdfroff.sh (MATCH): Correct quoting.
  1329. (Source): Add terminating `$' on CVS keyword.
  1330. 2005-06-17 Zvezdan Petkovic <address@hidden>
  1331. * Makefile.sub: (RM): Define as `rm -f', for `make' programs
  1332. which don't predefine it.
  1333. 2005-06-16 Bernd Warken <address@hidden>
  1334. * pdfroff.sh (NULLDEV): Correct misspelled instance of NULDEV.
  1335. 2005-05-28 Werner LEMBERG <address@hidden>
  1336. * Makefile.sub (.ms.pdf): Use `--stylesheet', not `--style'.
  1337. 2005-05-26 Werner LEMBERG <address@hidden>
  1338. * Makefile.sub, pdfmark.tmac, pdfroff.sh, spdf.tmac: Update postal
  1339. address for Free Software Foundation.
  1340. 2005-05-17 Keith Marshall <address@hidden>
  1341. Improve portability of `pdfroff' shell script.
  1342. * pdfroff.sh: Add space in shebang, conforming to portability
  1343. guidelines in `autoconf' docs.
  1344. (searchpath): New shell function; use it instead of `type' command
  1345. to locate prerequisite helper programs.
  1346. * pdfroff.man: Document influence of `OSTYPE' and `PATH_SEPARATOR'
  1347. environment variables.
  1348. * Makefile.sub (pdfroff): Make it depend on SH_DEPS_SED_SCRIPT,
  1349. from arch/misc/shdeps.sh; use it to customize PATH_SEPARATOR
  1350. initialization code for `searchpath' function in pdfroff.sh.
  1351. 2005-05-16 Keith Marshall <address@hidden>
  1352. Interim documentation update.
  1353. * pdfmark.ms (GROFF-WEBSITE): New string; use it in references and
  1354. examples.
  1355. (Section 2.5): Add definitions of D and Z operators, for use with
  1356. pdfhref macro.
  1357. (Section 2.5.4): Complete description of pdfhref macro usage for
  1358. `Linking to Internet Resources'; provide examples.
  1359. 2005-05-14 Nick Stoughton <address@hidden>
  1360. * pdfmark.tmac (LB): Renamed to ...
  1361. (PDFLB): This to avoid conflicts with mm's LB macro.
  1362. 2005-05-02 Keith Marshall <address@hidden>
  1363. Handle parsing anomalies in Cygwin's `ash', and similar, shells.
  1364. * pdfroff.sh ($CAT, $GREP, $SED, $GROFF, $DIFF): Avoid interpreting
  1365. misdirected error messages, which `type' sends to `stdout' in some
  1366. shells, as a successful program file match.
  1367. ($AWK, $GS): Likewise; also ensure that multiple choice match
  1368. prototypes are eval'ed as such, in case token splitting occurs
  1369. before variable expansion.
  1370. 2005-04-24 Keith Marshall <address@hidden>
  1371. Add support for folded outlines in PDF documents.
  1372. * pdfmark.tmac (PDFOUTLINE.FOLDLEVEL): New register.
  1373. (pdf:bm.emit): Use it.
  1374. * pdfmark.ms: Document it.
  1375. 2005-03-25 Werner LEMBERG <address@hidden>
  1376. * Makefile.in: Removed.
  1377. 2005-03-24 Werner LEMBERG <address@hidden>
  1378. * Makefile: Renamed to...
  1379. * Makefile.in: This.
  1380. 2005-03-22 Keith Marshall <address@hidden>
  1381. * pdfroff.sh: Eliminate invalid program reference to $AWK, when
  1382. invoked with `--no-reference-dictionary' option.
  1383. 2005-03-02 Keith Marshall <address@hidden>
  1384. * contrib/pdfmark/Makefile.sub (install_data): Use $(INSTALL_SCRIPT)
  1385. to install `pdfroff'.
  1386. * contrib/pdfmark/pdfroff.man (opte): New macro.
  1387. Use it to remove spurious equal signs from SYNOPSIS.
  1388. 2005-02-28 Keith Marshall <address@hidden>
  1389. Provide `pdfroff' shell script, and manpage to document it;
  1390. runs multiple groff passes, to format PDF documents.
  1391. * pdfroff.sh: New shell script template;
  1392. * pdfroff.man: New man page to document it.
  1393. Integrate `pdfmark' into normal groff build system;
  1394. install macro `pdfmark' packages, build and install `pdfroff',
  1395. and PDF format documentation.
  1396. * Makefile.sub: Rewritten.
  1397. * pdfmark.tmac: Modified.
  1398. (pdfhref): New macro operators, `D' and `Z'.
  1399. (pdf*href-D, pdf*href-Z): New macros: implement them.
  1400. (pdf*href.mark.resolve, pdf*href.mark.emit, pdf*href.mark.flush):
  1401. Modified macro algorithm, to eliminate inconsistencies between
  1402. `grohtml' representations of `opminy' from differing groff versions.
  1403. (pdf*href.mark, pdf*href.mark.release, pdf*href.mark.close):
  1404. deleted (redundant macros).
  1405. (PDFHREF.LEADING): Default value changed (was 2.5p; now -1.0p).
  1406. Global comment updates.
  1407. * TODO: Updated.
  1408. 2004-12-10 Werner LEMBERG <address@hidden>
  1409. * TODO: Updated.
  1410. 2004-12-08 Keith Marshall <address@hidden>
  1411. First import of pdfmark files.
  1412. ________________________________________________________________________
  1413. Copyright (C) 2004-2024 Free Software Foundation, Inc.
  1414. Copying and distribution of this file, with or without modification,
  1415. are permitted in any medium without royalty provided the copyright
  1416. notice and this notice are preserved.
  1417. Local Variables:
  1418. fill-column: 78
  1419. mode: change-log
  1420. version-control: never
  1421. End:
  1422. vim:set autoindent textwidth=78: