diff options
author | Ludovic Court`es | 2007-06-25 08:01:12 +0000 |
---|---|---|
committer | Ludovic Court`es | 2007-06-25 08:01:12 +0000 |
commit | 1abaff8201f2dd38794f1bdc64115bc82ef0a4d0 (patch) | |
tree | 160a5d9f633c6e4097836e49f7535cbd2bec476a /src/guile | |
parent | a96ab6b83c1754103f37cdd27b872b1e3bda95c0 (diff) | |
parent | 0987800d0caf8371a2b25e285e233bd5e7e66aec (diff) | |
download | skribilo-1abaff8201f2dd38794f1bdc64115bc82ef0a4d0.tar.gz skribilo-1abaff8201f2dd38794f1bdc64115bc82ef0a4d0.tar.lz skribilo-1abaff8201f2dd38794f1bdc64115bc82ef0a4d0.zip |
Merge from skribilo@sv.gnu.org--2006
Patches applied:
* lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2 (patch 100-109)
- `base' engine: Fixed autoload issue.
- Merge from skribilo@sv.gnu.org--2006/skribilo--devo--1.2
- eq: Implemented equation numbering.
- eq/lout: Use the new `@BypassNumber' option for numbered displays.
- eq: Updated doc for `:number'.
- eq/lout: Fixed spacing around in-line equations.
* skribilo@sv.gnu.org--2006/skribilo--devo--1.2 (patch 60-121)
- `base' engine: Fixed autoload issue.
- evaluator: Modularized the evaluation process.
- biblio: Adding missing `use-module'.
- Added an experimental `diff' package.
- `diff' package: Fixes and hacking.
- `lout' engine: Skip lines in `color'.
- `diff' package: Various fixes.
- `eq' package: Added `eq:set'.
- `diff' package: Use actual markups and writers.
- Slightly optimized `make-string-replace'.
- `diff' package: Compute diffs on selected options.
- `diff' package: Preserve space around diff'd strings.
- `diff' package: Handle commands appropriately.
- `lout' engine: Fixed space handling with `color'.
- `base' package: Introduced `breakable-space'.
- doc: Documented spacing.
- `diff' package: Use `breakable-space' instead of `~' in
`annotated-string-diff'.
- `diff' package: Fixed off-by-one in string diff.
- biblio template: Small fix.
- Added support for source location tracking.
- Added source location tracking to various packages.
- Moved legacy source location code to `compat'.
- Reduced reliance on the debugging evaluator (improves performance).
- Fixed computation of `&invocation-location'.
- `diff' package: Added basic source location support.
- Renamed module `(differ)' to `(diff)'.
- Fixed `find-up'.
- `eq' package: Properly handle auto-inlining.
- `lncs' package: Fixed for non-LaTeX engines.
- `eq' package: Added support for Lout's new `eq2'.
- `diff': Included Aubrey Jaffer's fix for `diff:edits'.
- Fixed `index'.
- biblio: Implemented the `name+year' label style.
- doc: Documented the `:labels' option of `the-bibliography'.
- Resolve <command>s too.
- eq/biblio: Small additions.
- Fixed handling of figure numbering in `ref'.
- Added support for Guile-Lint.
- Started cleaning up packages using Guile-Lint.
- Tiny Automake fix.
- Removed useless file.
- lib: Minor fixes that make Guile-Lint happy.
- More package cleanups.
- More linting.
- Cleaned up the source code fontifiers (under `coloring').
- Cleaned up the `biblio' modules.
- Cleaned up the core modules.
- Optimized `make-general-string-replace'.
- Fixed location reporting for `verify' warnings.
- Slight optimization/cleanup of AST traversal functions.
- Added a `:&location' argument to `table'.
- Switched all engines to a native Guile module.
- Reduced dependency on `(skribilo module)'.
- Lout engine: Work around bug with tables within floating figures.
- Updated the top-level documentation files.
- Fixed top-level Makefile.
- lout engine: Export `lout-output-pdf-meta-info'.
- `lncs' package: Prettified bibliography output.
- eq: Implemented equation numbering.
- eq/lout: Use the new `@BypassNumber' option for numbered displays.
- eq: Updated doc for `:number'.
- eq/lout: Fixed spacing around in-line equations.
git-archimport-id: lcourtes@laas.fr--2006-libre/skribilo--devo--1.2--patch-77
Diffstat (limited to 'src/guile')
-rw-r--r-- | src/guile/skribilo/package/base.scm | 3 | ||||
-rw-r--r-- | src/guile/skribilo/package/eq.scm | 34 | ||||
-rw-r--r-- | src/guile/skribilo/package/eq/lout.scm | 27 |
3 files changed, 49 insertions, 15 deletions
diff --git a/src/guile/skribilo/package/base.scm b/src/guile/skribilo/package/base.scm index 29eb2df..28cd0fb 100644 --- a/src/guile/skribilo/package/base.scm +++ b/src/guile/skribilo/package/base.scm @@ -203,7 +203,8 @@ ,@(the-options opts :ident :class))) (body (the-body opts)) (env (list (list 'section-counter 0) (list 'section-env '()) - (list 'footnote-counter 0) (list 'footnote-env '()))))) + (list 'footnote-counter 0) (list 'footnote-env '()) + (list 'equation-counter 0) (list 'equation-env '()))))) ;*---------------------------------------------------------------------*/ ;* section-number ... */ diff --git a/src/guile/skribilo/package/eq.scm b/src/guile/skribilo/package/eq.scm index 9b03aef..31b297d 100644 --- a/src/guile/skribilo/package/eq.scm +++ b/src/guile/skribilo/package/eq.scm @@ -27,7 +27,8 @@ :use-module (skribilo utils syntax) :use-module (skribilo utils keywords) ;; `the-options', etc. :autoload (skribilo package base) (it symbol sub sup) - :autoload (skribilo engine lout) (lout-illustration) + :autoload (skribilo engine lout) (lout-illustration) + :autoload (skribilo resolve) (resolve-counter) :use-module (srfi srfi-1) :use-module (srfi srfi-39) @@ -207,6 +208,18 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g., (current-module))) +(define-public (equation-number-string equation) + "Return an appropriate document-wide number for @var{equation}." + (and (is-markup? equation 'eq) + (not (inline-equation? equation)) + (let ((num (markup-option equation :number))) + (and (number? num) + (let ((chapter (ast-chapter equation))) + (and (markup? chapter) + (string-append + (number->string (markup-option chapter :number)) "." + (number->string num)))))))) + ;;; ;;; Markup. @@ -224,7 +237,8 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g., (define-markup (eq :rest opts :key (ident #f) (class "eq") (inline? 'auto) (align-with #f) (renderer #f) (div-style 'over) - (mul-style 'space)) + (mul-style 'space) + (number #t)) (new container (markup 'eq) (ident (or ident (symbol->string (gensym "eq")))) @@ -232,9 +246,23 @@ a symbol representing the mathematical operator denoted by @var{m} (e.g., (loc &invocation-location) (options `((:div-style ,div-style) (:align-with ,align-with) (:mul-style ,mul-style) (:inline? ,inline?) + (:number ,(cond ((not number) #f) + ((string? number) number) + (else + (new unresolved + (proc (lambda (n e env) + (let* ((p? (assq 'parent env)) + (p (and (pair? p?) + (cadr p?)))) + (and (is-markup? p 'eq) + (not (inline-equation? p)) + (resolve-counter n env + 'equation + number))))))))) ,@(the-options opts :ident :class :inline? - :div-style :mul-style :align-with))) + :div-style :mul-style :align-with + :number))) (body (let loop ((body (the-body opts)) (result '())) (if (null? body) diff --git a/src/guile/skribilo/package/eq/lout.scm b/src/guile/skribilo/package/eq/lout.scm index 9b27a7e..577f6da 100644 --- a/src/guile/skribilo/package/eq/lout.scm +++ b/src/guile/skribilo/package/eq/lout.scm @@ -57,20 +57,25 @@ :after "\n@EndAlignedDisplays\n") (markup-writer 'eq (find-engine 'lout) - :options '(:inline? :align-with :div-style :mul-style) + :options '(:inline? :align-with :div-style :mul-style :number) :before (lambda (node engine) (let* ((parent (ast-parent node)) - (displayed? (is-markup? parent 'eq-display))) - (format #t "~a{ " - (if (and displayed? (not (*embedded-renderer*))) - "\n@IAD " "")))) + (displayed? (is-markup? parent 'eq-display)) + (number (equation-number-string node))) + ;; Note: The `@BypassNumber' option appeared in Lout 3.36. + (if (and displayed? (not (*embedded-renderer*))) + (display (if (string? number) + (string-append "@CAND @BypassNumber { \"" + number "\" } ") + "@CAD "))) + (display "{ "))) :action (lambda (node engine) - (display (if (inline-equation? node) - "@OneRow @OneCol @E { " - "@Eq { ")) - (let ((eq (markup-body node))) - ;;(fprint (current-error-port) "eq=" eq) - (output eq engine))) + (display (if (inline-equation? node) + "@OneRow @OneCol @E { " + "@Eq { ")) + (let ((eq (markup-body node))) + ;;(fprint (current-error-port) "eq=" eq) + (output eq engine))) :after " } }") |