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>