git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Force listingblocks to be monospaced in manpages

From
Julian Phillips <julian@quantumfyre.co.uk>
Date
Jul 18, 2007, 21:33 UTC
Message-ID
<20070719014852.4573.65336.julian@quantumfyre.co.uk>
In-Reply-To
<Pine.LNX.4.64.0707190157430.1964@beast.quantumfyre.co.uk>

For the html output we can use a stylesheet to make sure that the listingblocks are presented in a monospaced font. For the manpages do it manually by inserting a ".ft C" before and ".ft" after the block in question. This makes the ascii-art diagrams readable in PS output.

In order for these roff commands to get through to the manpage they have to be element encoded to prevent quoting. In particular with docbook xsl 1.72.0 and newer we have to use U+2302 instead of . to prevent the roff command being escaped. We also add a small perl script for docbook < 1.72.0.

Signed-off-by: Julian Phillips <julian@quantumfyre.co.uk>
---
On Thu, 19 Jul 2007, Julian Phillips wrote:
Show 29 quoted lines
> On Wed, 18 Jul 2007, Junio C Hamano wrote:
>
>>  I tried with your patch, both with asciidoc7 and asciidoc8.  Did
>>  you really mean "&#x2302;" above?  Replacing them with "."  gave
>>  me a series of these changes (diff between output before and
>>  after your patch with the "s/\&#x2302;/./g" fixup):
>
> I did mean it.  I originally just had .ft, but I was getting \&.ft in the
> manpage, which then just came out as .ft in the console.
>
> I got the &#x2302; from
> http://docbook.sourceforge.net/release/xsl/current/manpages/utility.xsl, so I
> assumed it was the "correct" thing to use ...
>
> This was with asciidoc 7 and docbook xsl stylesheet 1.72.0.
>
>
>>  whatever that 2302 is...
>
> &#x2302; (or U+2302) seems to be a character from the unicode "Misc.
> Technical" section ... looks a bit like a house.
>
> See sixth bullet from
> http://docbook.sourceforge.net/release/xsl/current/RELEASE-NOTES.html#V1.72.0$
>
> looks like it may need to depend on which docbook xsl version you are using
> ...
>
>

I couldn't find any way to detect the docbook version - perhaps someone more with more knowledge of asciidoc might know?

Otherwise, something like this perhaps?
 Documentation/Makefile          |    3 +++
 Documentation/asciidoc.conf     |    6 ++++++
 Documentation/replace_U+2303.pl |    6 ++++++
 3 files changed, 15 insertions(+), 0 deletions(-)
 create mode 100755 Documentation/replace_U+2303.pl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index b062757..e381b2e 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -121,6 +121,9 @@ clean:
 
 %.1 %.5 %.7 : %.xml
 	xmlto -m callouts.xsl man $<
+	mv $@ $@.tmp
+	./replace_U+2303.pl < $@.tmp > $@
+	$(RM) $@.tmp
 
 %.xml : %.txt
 	$(RM) $@+ $@
diff --git a/Documentation/asciidoc.conf b/Documentation/asciidoc.conf
index 6b6220d..d54fe29 100644
--- a/Documentation/asciidoc.conf
+++ b/Documentation/asciidoc.conf
@@ -27,7 +27,13 @@ ifdef::backend-docbook[]
 [listingblock]
 <example><title>{title}</title>
 <literallayout>
+ifdef::doctype-manpage[]
+&#10;&#x2302;ft C&#10;
+endif::doctype-manpage[]
 |
+ifdef::doctype-manpage[]
+&#10;&#x2302;ft&#10;
+endif::doctype-manpage[]
 </literallayout>
 {title#}</example>
 endif::backend-docbook[]
diff --git a/Documentation/replace_U+2303.pl b/Documentation/replace_U+2303.pl
new file mode 100755
index 0000000..b086949
--- /dev/null
+++ b/Documentation/replace_U+2303.pl
@@ -0,0 +1,6 @@
+#!/usr/bin/perl -w
+
+while ($line = <>) {
+	$line =~ s/^\x{2302}/./;
+	print $line;
+}
-- 
1.5.2.2
Previous: Julian PhillipsNext: Junio C Hamano
Message 7 of 16 in “Manpage rendering faults”
  1. Fredrik TolfJul 18, 2007
  2. Julian PhillipsJul 18, 2007
  3. Fredrik TolfJul 18, 2007
  4. Force listingblocks to be monospaced in manpagesJulian Phillips, Jul 18, 2007
  5. Junio C HamanoJul 18, 2007
  6. Julian PhillipsJul 19, 2007
  7. Force listingblocks to be monospaced in manpagesJulian Phillips, Jul 18, 2007
  8. Junio C HamanoJul 20, 2007
  9. Julian PhillipsJul 20, 2007
  10. Update listingblock monospace fix to support all docbook versionsJulian Phillips, Jul 20, 2007
  11. Junio C HamanoJul 20, 2007
  12. Brian GernhardtJul 20, 2007
  13. Julian PhillipsJul 20, 2007
  14. Force listingblocks to be monospaced in manpagesJonas Fonseca, Jul 19, 2007
  15. Julian PhillipsJul 19, 2007
  16. Jonas FonsecaJul 19, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.