aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/guile/skribilo/package/eq.scm15
-rw-r--r--src/guile/skribilo/package/eq/lout.scm20
2 files changed, 30 insertions, 5 deletions
diff --git a/src/guile/skribilo/package/eq.scm b/src/guile/skribilo/package/eq.scm
index 8b4d325..90db17b 100644
--- a/src/guile/skribilo/package/eq.scm
+++ b/src/guile/skribilo/package/eq.scm
@@ -60,6 +60,11 @@
;; native engine.
(make-parameter #f))
+(define-public *use-lout-eq2?*
+ ;; Whether the use the new Lout `eq2' package instead of `eq'.
+ (make-parameter #f))
+
+
(define %operators
'(/ * + - = != ~= < > <= >= sqrt expt sum product script
in notin apply limit combinations set))
@@ -130,6 +135,16 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g.,
((#t) #t)
(else #f)))))
+(define-public (direct-equation-child? m)
+ "Return @code{#t} if @var{m} is a direct child of an @code{eq} markup."
+ (let ((parent (ast-parent m)))
+ (and (is-markup? parent 'eq)
+ (let ((body (markup-body parent)))
+ (or (eq? body m)
+ (and (list? body)
+ (memq m body)))))))
+
+
;;;
;;; Operator precedence.
diff --git a/src/guile/skribilo/package/eq/lout.scm b/src/guile/skribilo/package/eq/lout.scm
index d0d9570..bd4ccc7 100644
--- a/src/guile/skribilo/package/eq/lout.scm
+++ b/src/guile/skribilo/package/eq/lout.scm
@@ -45,7 +45,9 @@
;; Append the `eq' include file
(engine-custom-set! lout 'includes
(string-append includes "\n"
- "@SysInclude { eq }\n")))))
+ "@SysInclude { "
+ (if (*use-lout-eq2?*) "eq2" "eq")
+ " }\n")))))
;;;
@@ -131,7 +133,8 @@
(and first?
(is-markup? eq-parent 'eq-display)
(eq? ',sym
- (markup-option eq :align-with))))
+ (markup-option eq :align-with))
+ (direct-equation-child? node)))
(op (car operands))
(eq-op? (equation-markup? op))
(need-paren?
@@ -232,9 +235,12 @@
(let ((body (markup-body node))
(var (markup-option node :var))
(limit (markup-option node :limit)))
- (display "{ lim from { ")
+ (format #t "{ lim ~a { { "
+ (if (*use-lout-eq2?*)
+ "atop @SubScriptStyle"
+ "from"))
(output var engine)
- (display " --> ")
+ (display " } --> ")
(output limit engine)
(display (string-append " } } @VContract { " %left-paren))
(output body engine)
@@ -262,7 +268,11 @@
(let ((from (markup-option node :from))
(to (markup-option node :to))
(body (markup-body node)))
- (display ,(string-append " { big " lout-name
+ (display ,(string-append " { "
+ (if (*use-lout-eq2?*)
+ ""
+ "big ")
+ lout-name
" from { "))
(output from engine)
(display " } to { ")