aboutsummaryrefslogtreecommitdiff
path: root/src/guile
diff options
context:
space:
mode:
authorLudovic Courtès2012-05-10 23:47:01 +0200
committerLudovic Courtès2012-05-10 23:47:01 +0200
commitd266c260e569d3372fa09c121a04755e6d3c3bbb (patch)
tree82e135756eabfffa6c5a2c5f9dc6d229b4b5286e /src/guile
parent966f7afaf9c370be463543da21f379a85d508804 (diff)
downloadskribilo-d266c260e569d3372fa09c121a04755e6d3c3bbb.tar.gz
skribilo-d266c260e569d3372fa09c121a04755e6d3c3bbb.tar.lz
skribilo-d266c260e569d3372fa09c121a04755e6d3c3bbb.zip
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.
Diffstat (limited to 'src/guile')
-rw-r--r--src/guile/skribilo/engine/html.scm2
-rw-r--r--src/guile/skribilo/engine/info.scm7
-rw-r--r--src/guile/skribilo/engine/latex.scm13
-rw-r--r--src/guile/skribilo/engine/lout.scm18
4 files changed, 37 insertions, 3 deletions
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 <ludo@gnu.org>
+;;; Copyright 2008, 2009, 2012 Ludovic Courtès <ludo@gnu.org>
;;; 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 <ludo@gnu.org>
+;;; Copyright 2007, 2009, 2012 Ludovic Courtès <ludo@gnu.org>
;;; 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