Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Jan 2012 01:58:46 +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:  <20120128.015846.1752534900695634367.hrs@allbsd.org>
In-Reply-To: <alpine.BSF.2.00.1201270821540.28751@wonkity.com>
References:  <20120127.155054.2121952239893273004.hrs@allbsd.org> <20120127.222427.2203865340894432901.hrs@allbsd.org> <alpine.BSF.2.00.1201270821540.28751@wonkity.com>

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

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

Warren Block <wblock@wonkity.com> wrote
  in <alpine.BSF.2.00.1201270821540.28751@wonkity.com>:

wb> On Fri, 27 Jan 2012, Hiroki Sato wrote:
wb>
wb> > Hiroki Sato <hrs@freebsd.org> wrote
wb> >  in <20120127.155054.2121952239893273004.hrs@allbsd.org>:
wb> >
wb> > hr> I think the attached patch should fix the issue in the PDF format.
wb> > hr>  Could you test it?
wb> >
wb> > The previous patch did not include width calculation of the tab
wb> > expansion (always used 8 spaces).  The attached one does it for a
wb> > simple character sequence.
wb>
wb> That helps a lot!  Single tabs and multiple tabs are slightly
wb> different, but it's close.
wb> http://www.wonkity.com/~wblock/porters/tab1.png  (good!)
wb> http://www.wonkity.com/~wblock/porters/tab2.png  (close)
wb>
wb> http://www.wonkity.com/~wblock/porters/tab3.png
wb>
wb> Should be:
wb> LIB_DEPENDS+=           foo.0:${PORTSDIR}/devel/foo
wb> CONFIGURE_ARGS+=        --enable-foo
wb>
wb> The second line '=' lands right before a tab stop, and the tab is
wb> replaced with a single space.
wb>
wb> Thanks!

 How about the attached one?  A bug that could cause an extra space
 was fixed.

-- Hiroki

----Next_Part(Sat_Jan_28_01_58_46_2012_017)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
	filename="expand-tabs-freebsd-print.20120127-3.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 16:56:59 -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,99 @@
             (with-mode section-title-mode
 	      (process-node-list subtitles))
             ($section-info$ info))))
+
+	;; Expand a literal tab character to spaces in elements like
+	;; programlisting.
+	(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%))
+				    (modulo (string-length (data (node-list-first kl)))
+					    %default-tab-spacing%))))
+			       (let ((c (node-list-first kl)))
+				 (if (char=? (node-property
+					      'char c
+					      default: #\U-0000) #\U-0009)
+				     (sosofo-append res
+						    (let sploop ((spc
+								  (if (= tabsp 0)
+								      %default-tab-spacing%
+								      tabsp)))
+						      (if (> spc 0)
+							  (sosofo-append
+							   (literal " ")
+							   (sploop (- spc 1)))
+							  (empty-sosofo))))
+				     (sosofo-append res
+						    (process-node-list c)))))))))))
       ]]>

       <![ %output.print.pdf; [

----Next_Part(Sat_Jan_28_01_58_46_2012_017)----

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

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

iEYEABECAAYFAk8i18YACgkQTyzT2CeTzy2inACfViAmpGYie5ZWPiJ25t6KSp+M
3tEAniHfsBFnIIS9/6rnlUFCckgZ9cG0
=yubZ
-----END PGP SIGNATURE-----

----Security_Multipart0(Sat_Jan_28_01_58_46_2012_885)----



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