From d266c260e569d3372fa09c121a04755e6d3c3bbb Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Thu, 10 May 2012 23:47:01 +0200 Subject: info/latex/lout: Set the output port's encoding. * src/guile/skribilo/engine/html.scm (document): Fix typo in comment. * src/guile/skribilo/engine/info.scm (document)[guile-2]: Set the current output port's encoding to "UTF-8". * src/guile/skribilo/engine/latex.scm (latex-engine)[encoding]: New custom. (document): Set the output port's encoding to that. When that encoding is "UTF-8", add the right \usepackage. * src/guile/skribilo/engine/lout.scm (lout-engine)[encoding]: New custom. (document): Set the output encoding. Emit `@SysInclude { latin2 }' for ISO-8859-2. --- src/guile/skribilo/engine/html.scm | 2 +- src/guile/skribilo/engine/info.scm | 7 ++++++- src/guile/skribilo/engine/latex.scm | 13 ++++++++++++- src/guile/skribilo/engine/lout.scm | 18 ++++++++++++++++++ 4 files changed, 37 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/guile/skribilo/engine/html.scm b/src/guile/skribilo/engine/html.scm index ae414b6..1621595 100644 --- a/src/guile/skribilo/engine/html.scm +++ b/src/guile/skribilo/engine/html.scm @@ -611,7 +611,7 @@ (cond-expand (guile-2 - ;; Make sure the output is suitable encoded. + ;; Make sure the output is suitably encoded. (and=> (engine-custom e 'charset) (lambda (charset) (set-port-encoding! (current-output-port) diff --git a/src/guile/skribilo/engine/info.scm b/src/guile/skribilo/engine/info.scm index ec92ce5..592e1fe 100644 --- a/src/guile/skribilo/engine/info.scm +++ b/src/guile/skribilo/engine/info.scm @@ -1,7 +1,7 @@ ;;; info.scm -- GNU Info engine. ;;; -*- coding: iso-8859-1 -*- ;;; -;;; Copyright 2008, 2009 Ludovic Courtès +;;; Copyright 2008, 2009, 2012 Ludovic Courtès ;;; Copyright 2001, 2002 Manuel Serrano ;;; ;;; @@ -186,6 +186,11 @@ :options '(:title :author :ending) :action (lambda (doc e) (check-node-title-conflicts doc e) + + (cond-expand + (guile-2 (set-port-encoding! (current-output-port) "UTF-8")) + (else #t)) + (let ((title (markup-option doc :title)) (authors (markup-option doc :author)) (body (markup-body doc)) diff --git a/src/guile/skribilo/engine/latex.scm b/src/guile/skribilo/engine/latex.scm index ab19ee4..eeae1fc 100644 --- a/src/guile/skribilo/engine/latex.scm +++ b/src/guile/skribilo/engine/latex.scm @@ -1,7 +1,7 @@ ;;; latex.scm -- LaTeX engine. ;;; -*- coding: iso-8859-1 -*- ;;; -;;; Copyright 2007, 2009 Ludovic Courtès +;;; Copyright 2007, 2009, 2012 Ludovic Courtès ;;; Copyright 2003, 2004 Manuel Serrano ;;; ;;; @@ -356,6 +356,7 @@ :delegate (find-engine 'base) :filter (make-string-replace latex-encoding) :custom '((documentclass "\\documentclass{article}") + (encoding "UTF-8") (class-has-chapters? #f) (usepackage "\\usepackage{epsfig}\n") (predocument "\\newdimen\\oldframetabcolsep\n\\newdimen\\oldcolortabcolsep\n\\newdimen\\oldpretabcolsep\n") @@ -517,6 +518,16 @@ (if dc (begin (display dc) (newline)) (display "\\documentclass{article}\n"))) + + (cond-expand + (guile-2 + (let ((encoding (engine-custom e 'encoding))) + (set-port-encoding! (current-output-port) encoding) + (set-port-conversion-strategy! (current-output-port) 'error) + (if (string-ci=? encoding "UTF-8") ; FIXME: other encodings? + (display "\\usepackage[utf8]{inputenc}\n")))) + (else #t)) + (if (latex-color? e) (display (engine-custom e 'color-usepackage))) (if (engine-custom e 'hyperref) diff --git a/src/guile/skribilo/engine/lout.scm b/src/guile/skribilo/engine/lout.scm index 93a7f5b..7ce8efa 100644 --- a/src/guile/skribilo/engine/lout.scm +++ b/src/guile/skribilo/engine/lout.scm @@ -577,6 +577,9 @@ ;; file is deduced from `document-type'. (document-include auto) + ;; Encoding of the output file. + (encoding "ISO-8859-1") + (includes "@SysInclude { tbl }\n") (initial-font "Palatino Base 10p") (initial-break @@ -1080,6 +1083,21 @@ (markup-writer 'document :options '(:title :author :ending :keywords :env) :before (lambda (n e) ;; `e' is the engine + (cond-expand + (guile-2 + ;; Make sure the output is suitably encoded. + (let ((encoding (engine-custom e 'encoding))) + (set-port-encoding! (current-output-port) encoding) + (set-port-conversion-strategy! (current-output-port) 'error) + (cond ((string-ci=? encoding "ISO-8859-2") + (display "@SysInclude { latin2 }\n")) + ((not (string-ci=? encoding "ISO-8859-1")) + (raise (condition + (&invalid-argument-error + (proc-name 'lout) + (argument encoding)))))))) + (else #t)) + (let* ((doc-type (let ((d (engine-custom e 'document-type))) (if (string? d) (begin -- cgit v1.2.3