Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Jan 2012 22:24:27 +0900 (JST)
From:      Hiroki Sato <hrs@FreeBSD.org>
To:        wblock@wonkity.com
Cc:        freebsd-doc@FreeBSD.org
Subject:   Re: Tidy and HTML tab spacing
Message-ID:  <20120127.222427.2203865340894432901.hrs@allbsd.org>
In-Reply-To: <20120127.155054.2121952239893273004.hrs@allbsd.org>
References:  <20120127.124619.1645166101623286100.hrs@allbsd.org> <alpine.BSF.2.00.1201262148480.25316@wonkity.com> <20120127.155054.2121952239893273004.hrs@allbsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
----Security_Multipart0(Fri_Jan_27_22_24_28_2012_544)--
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Fri_Jan_27_22_24_27_2012_031)--"
Content-Transfer-Encoding: 7bit

----Next_Part(Fri_Jan_27_22_24_27_2012_031)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hiroki Sato <hrs@freebsd.org> wrote
  in <20120127.155054.2121952239893273004.hrs@allbsd.org>:

hr>  I think the attached patch should fix the issue in the PDF format.
hr>  Could you test it?

 The previous patch did not include width calculation of the tab
 expansion (always used 8 spaces).  The attached one does it for a
 simple character sequence.

-- Hiroki

----Next_Part(Fri_Jan_27_22_24_27_2012_031)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
	filename="expand-tabs-freebsd-print.20120127-2.diff"

Index: freebsd-print.dsl
===================================================================
RCS file: /home/ncvs/doc/share/sgml/freebsd-print.dsl,v
retrieving revision 1.2
diff -d -u -I \$FreeBSD:.*\$ -I \$NetBSD:.*\$ -I \$OpenBSD:.*\$ -I \$DragonFly:.*\$ -I \$Id:.*\$ -I \$Translation:.*\$ -I \$hrs:.*\$ -r1.2 freebsd-print.dsl
--- freebsd-print.dsl	8 Dec 2010 06:25:59 -0000	1.2
+++ freebsd-print.dsl	27 Jan 2012 13:20:16 -0000
@@ -6,12 +6,12 @@
 <!ENTITY % output.print.pdf 	"IGNORE">
 <!ENTITY % output.print.justify	"IGNORE">
 <!ENTITY % output.print.twoside	"IGNORE">
+<!ENTITY % output.print.niceheaders	"IGNORE">

 <!ENTITY % freebsd.l10n PUBLIC "-//FreeBSD//ENTITIES DocBook Language Specific Entities//EN">
 %freebsd.l10n;
 <!ENTITY % freebsd.l10n-common PUBLIC "-//FreeBSD//ENTITIES DocBook Language Neutral Entities//EN">
 %freebsd.l10n-common;
-]]>
 ]>

 <style-sheet>
@@ -616,6 +616,94 @@
             (with-mode section-title-mode
 	      (process-node-list subtitles))
             ($section-info$ info))))
+
+	(define %default-tab-spacing% 8)
+
+	(define ($verbatim-display$ indent line-numbers?)
+	  (let* ((width-in-chars (if (attribute-string (normalize "width"))
+				     (string->number
+				       (attribute-string (normalize "width")))
+				     %verbatim-default-width%))
+		 (fsize (lambda () (if (or (attribute-string (normalize "width"))
+					   (not %verbatim-size-factor%))
+				       (/ (/ (- %text-width%
+						(inherited-start-indent))
+					     width-in-chars)
+					  0.7)
+				       (* (inherited-font-size)
+					  %verbatim-size-factor%))))
+		 (vspace-before (if (INBLOCK?)
+				    0pt
+				    (if (INLIST?)
+					%para-sep%
+					%block-sep%)))
+		 (vspace-after (if (INBLOCK?)
+				   0pt
+				   (if (INLIST?)
+				       0pt
+				       %block-sep%))))
+		(make paragraph
+			use: verbatim-style
+			space-before: (if (and (string=? (gi (parent))
+							 (normalize "entry"))
+					       (absolute-first-sibling?))
+					0pt
+					vspace-before)
+			space-after:  (if (and (string=? (gi (parent))
+							 (normalize "entry"))
+					       (absolute-last-sibling?))
+					0pt
+					vspace-after)
+			font-size: (fsize)
+			line-spacing: (* (fsize) %line-spacing-factor%)
+			start-indent: (if (INBLOCK?)
+					(inherited-start-indent)
+					(+ %block-start-indent%
+					   (inherited-start-indent)))
+		 (if (or indent line-numbers?)
+			($linespecific-line-by-line$ indent line-numbers?)
+			(let loop ((kl (children (current-node)))
+				   (tabsp %default-tab-spacing%)
+				   (res (empty-sosofo)))
+			  (if (node-list-empty? kl)
+			      res
+			      (loop
+			       (node-list-rest kl)
+			       (cond
+				((char=? (node-property
+					  'char (node-list-first kl)
+					  default: #\U-0000) #\U-0009)
+				 %default-tab-spacing%)
+				((char=? (node-property
+					  'char (node-list-first kl)
+					  default: #\U-0000) #\U-000D)
+				 %default-tab-spacing%)
+				((char? (node-property
+					 'char (node-list-first kl)
+					 default: #f))
+				 (- (if (= (modulo tabsp %default-tab-spacing%) 0)
+					%default-tab-spacing%
+					(modulo tabsp %default-tab-spacing%))
+				    1))
+				(#t
+				 (- (if (= (modulo tabsp %default-tab-spacing%) 0)
+					%default-tab-spacing%
+					(modulo tabsp %default-tab-spacing%))
+				    1)))
+			       (let ((c (node-list-first kl)))
+				 (if (char=? (node-property
+					      'char c
+					      default: #\U-0000) #\U-0009)
+				     (sosofo-append res
+						    (let sploop ((spc tabsp))
+						      (if (> spc 0)
+							  (sosofo-append
+							   (literal " ")
+							   (sploop (- spc 1)))
+							  (empty-sosofo)))
+						    (process-node-list c))
+				     (sosofo-append res
+						    (process-node-list c)))))))))))
       ]]>

       <![ %output.print.pdf; [

----Next_Part(Fri_Jan_27_22_24_27_2012_031)----

----Security_Multipart0(Fri_Jan_27_22_24_28_2012_544)--
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEABECAAYFAk8ipYwACgkQTyzT2CeTzy3U2ACeMOoaIfj2J853nuyzVL7tPU4x
1P4AoK2Xgtd8PV0yQEETlAFx7otH2RxP
=EqHe
-----END PGP SIGNATURE-----

----Security_Multipart0(Fri_Jan_27_22_24_28_2012_544)----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120127.222427.2203865340894432901.hrs>