From 8b6f62fc57b6a5a7bce2ee8091561a68e0a91d65 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 28 Sep 2007 03:29:59 +0000 Subject: [PATCH] (tex-suscript-height-ratio, tex-suscript-height-minimum): New customizable variables. (tex-suscript-height): New function. (superscript, subscript): Set height using tex-suscript-height rather than fixing at 0.8. --- etc/ChangeLog | 4 ++++ lisp/ChangeLog | 11 +++++++++++ lisp/textmodes/tex-mode.el | 34 ++++++++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index d8ba4fb60db..7024efa1967 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2007-09-28 Glenn Morris + + * PROBLEMS: Mention Tex superscript font issue. + 2007-09-25 Johannes Weiner * NEWS: Fix typo. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index babc7ac209d..2023fa93c4e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2007-09-28 Glenn Morris + + * mail/supercite.el (sc-attribs-filter-namelist): Use mapc rather + than mapcar. + + * textmodes/tex-mode.el (tex-suscript-height-ratio) + (tex-suscript-height-minimum): New customizable variables. + (tex-suscript-height): New function. + (superscript, subscript): Set height using tex-suscript-height + rather than fixing at 0.8. + 2007-09-27 Juanma Barranquero * progmodes/python.el (python-eldoc-function): Doc fix. diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 110351a6a60..8b1538e8ec3 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -676,12 +676,42 @@ An alternative value is \" . \", if you use a font with a narrow period." (put-text-property beg next 'display nil)) (setq beg next)))) +(defcustom tex-suscript-height-ratio 0.8 + "Ratio of subscript/superscript height to that of the preceding text. +In nested subscript/superscript, this factor is applied repeatedly, +subject to the limit set by `tex-suscript-height-minimum'." + :type 'float + :group 'tex + :version "23.1") + +(defcustom tex-suscript-height-minimum 0.0 + "Integer or float limiting the minimum size of subscript/superscript text. +An integer is an absolute height in units of 1/10 point, a float +is a height relative to that of the default font. Zero means no minimum." + :type '(choice (integer :tag "Integer height in 1/10 point units") + (float :tag "Fraction of default font height")) + :group 'tex + :version "23.1") + +(defun tex-suscript-height (height) + "Return the integer height of subscript/superscript font in 1/10 points. +Not smaller than the value set by `tex-suscript-height-minimum'." + (ceiling (max (if (integerp tex-suscript-height-minimum) + tex-suscript-height-minimum + ;; For bootstrapping. + (condition-case nil + (* tex-suscript-height-minimum + (face-attribute 'default :height)) + (error 0))) + ;; NB assumes height is integer. + (* height tex-suscript-height-ratio)))) + (defface superscript - '((t :height 0.8)) ;; :raise 0.2 + '((t :height tex-suscript-height)) ;; :raise 0.2 "Face used for superscripts." :group 'tex) (defface subscript - '((t :height 0.8)) ;; :raise -0.2 + '((t :height tex-suscript-height)) ;; :raise -0.2 "Face used for subscripts." :group 'tex)