DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T d

⟦80ec29307⟧ TextFile

    Length: 8864 (0x22a0)
    Types: TextFile
    Names: »detex.el«

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« 
        └─⟦036c765ac⟧ 
            └─⟦this⟧ »TeX3.0/TeXemacs/detex.el« 
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
    └─⟦this⟧ »./tex82/TeXemacs/detex.el« 
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« 
        └─⟦c58930e5c⟧ 
            └─⟦this⟧ »TeX3.14/TeXemacs/detex.el« 

TextFile

;;; Detex
;;; Bengt Martensson
;;; LastEditDate="Sun Oct  4 17:54:06 1987"
     
;;; For redistribution the same rules apply as for GNU Emacs.
;;; These rules are the following (quoted from a GNU Emacs .el file)

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY.  No author or distributor
;; accepts responsibility to anyone for the consequences of using it
;; or for whether it serves any particular purpose or works at all,
;; unless he says so in writing.  Refer to the GNU Emacs General Public
;; License for full details.

;; Everyone is granted permission to copy, modify and redistribute
;; GNU Emacs, but only under the conditions described in the
;; GNU Emacs General Public License.   A copy of this license is
;; supposed to have been given to you along with GNU Emacs so you
;; can know your rights and responsibilities.  It should be in a
;; file named COPYING.  Among other things, the copyright notice
;; and this notice must be preserved on all copies.

(defvar detex-tex-commands-with-garbage-argument
  '("input" "special" "message")
  "List of TeX-commands for which their argument should be filtered out
by detex.")

(defvar detex-latex-commands-with-garbage-argument
  (append detex-tex-commands-with-garbage-argument
	  '("documentstyle" "pagestyle" "thispagestyle" 
	    "pagenumbering" "typeout" "typein" "label" "ref" "pageref"
	    "bibliography" "bibitem" "bibliographystyle"
	    "cite" "include" "includeonly" "begin" "end"))
    "List of LaTeX-commands for which their argument should be filtered out
by delatex.")

(defvar detex-latex-garbage-environments
  '("array" "equation" "eqnarray" "eqnarray*" "verbatim" "displaymath")
  "List of LaTeX environments which will be deleted by delatex.")

(defvar detex-tex-escape "" "TeX escape character used by detex.")
(defvar detex-re-tex-escape ""
  "Regular expression for TeX escape character.  Used by detex.")
(defvar detex-not-tex-escape ""
  "Regular expression that matches anything but TeX escape character.
Used by detex.")
(defvar detex-latex-optional-left ""
  "LaTeX character denoting left bracket for optional argument.
Used by detex.")
(defvar detex-tex-left "" "TeX left group character used by detex.")
(defvar detex-tex-right "" "TeX right group character used by detex.")

(make-variable-buffer-local 'detex-tex-escape)
(make-variable-buffer-local 'detex-re-tex-escape)
(make-variable-buffer-local 'detex-not-tex-escape)
(make-variable-buffer-local 'detex-latex-optional-left)
(make-variable-buffer-local 'detex-tex-left)
(make-variable-buffer-local 'detex-tex-right)

(set-default 'detex-tex-escape "\\")
(set-default 'detex-re-tex-escape "\\\\")
(set-default 'detex-not-escape "[^\\\\]")
(set-default 'detex-latex-optional-left "\\[")
(set-default 'detex-tex-left "{")
(set-default 'detex-tex-right "}")

(defun detex-remove-latex-commands-with-garbage-argument ()
  "Deletes latex-commands in detex-latex-commands-with-garbage-argument
together with their arguments."
  ;;(message "detex-remove-latex-commands-with-garbage-argument...")
  (mapcar 'detex-remove-latex-command-with-garbage-argument
	  detex-latex-commands-with-garbage-argument))

(defun detex-remove-tex-commands-with-garbage-argument ()
  "Deletes tex-commands in detex-tex-commands-with-garbage-argument
together with their arguments."
  (mapcar 'detex-remove-tex-command-with-garbage-argument
	  detex-tex-commands-with-garbage-argument)) 

(defun detex-remove-latex-command-with-garbage-argument (com)
"Deletes latex-command COM together with its arguments."
  (let ((command (concat detex-tex-escape com))
	(re-command (concat detex-re-tex-escape com "\\b"))
	b)
    (goto-char (point-min))
    (while (re-search-forward re-command (point-max) t)
      (search-backward command)
      (setq b (point))
      (search-forward command)
      (re-search-forward "[ \t]*")
      (if (looking-at detex-latex-optional-left)
	  (forward-sexp 1))
      (re-search-forward "[ \t]*")
      (if (looking-at detex-tex-left)
	  (forward-sexp 1)
	(forward-word 1))
      (delete-region b (point)))))

(defun detex-remove-tex-command-with-garbage-argument (com)
"Deletes tex-command COM together with its arguments."
  (let ((command (concat detex-tex-escape com))
	(re-command (concat detex-re-tex-escape com "\\b"))
	b)
    (goto-char (point-min))
    (while (re-search-forward re-command (point-max) t)
      (search-backward command)
      (setq b (point))
      (search-forward command)
      (re-search-forward "[ \t]*")
      (if (looking-at detex-tex-left)
	  (forward-sexp 1)
	(forward-word 1))
      (delete-region b (point)))))

(defun detex-remove-latex-garbage-environments ()
  "Deletes the latex environments in detex-latex-garbage-environments."
  ;;(message "detex-remove-latex-garbage-environments")
  (mapcar 'detex-remove-latex-environment detex-latex-garbage-environments))

(defun detex-remove-latex-environment (env)
  "Deletes latex environment ENV."
  (goto-char (point-min))
  (while (search-forward
	  (concat detex-tex-escape "begin" detex-tex-left env) (point-max) t)
    (search-backward detex-tex-escape)
    (setq b (point))
    (if (search-forward
	 (concat detex-tex-escape "end" detex-tex-left env) (point-max) t)
	(if (looking-at detex-tex-right)
	    (delete-region b (1+ (point)))))))
  
(defun detex-remove-discretionary-hyphens ()
  "Removes \\-."
  ;;(message "detex-remove-hyphens...")
  (goto-char (point-min))
  (while (re-search-forward (concat detex-re-tex-escape "-") (point-max) t)
    (replace-match "")))

(defun detex-remove-display (&optional flavor)
  "Deletes displays delimited by ""$$"".  If optional argument FLAVOR is 
""latex"", then it also recognizes LaTeX displays."
  (let (beg)
    (goto-char (point-min))
    ;;(message "detex-remove-display...")
    (while (re-search-forward (concat detex-not-escape "\\$\\$") (point-max) t)
      (setq beg (- (point) 2))
      (if (re-search-forward (concat detex-not-escape "\\$\\$") (point-max) t)
	  (delete-region beg (point))))
    (if (equal flavor "latex")
	(progn
	  (goto-char (point-min))
	  (while (search-forward (concat detex-tex-escape "[") (point-max) t)
	    (setq beg (- (point) 2))
	    (if (search-forward (concat detex-tex-escape "]") (point-max) t)
		(delete-region beg (point))))))))

(defun detex-remove-math (&optional flavor)
  "Deletes math mode.  If optional argument FLAVOR is ""latex"", it also
recognizes LaTeX constructions."
  (let (beg)
    ;;(message "detex-remove-math...")
    (goto-char (point-min))
    (while (re-search-forward (concat detex-not-escape "\\$") (point-max) t)
      (setq beg (1- (point)))
      (if (re-search-forward (concat detex-not-escape "\\$") (point-max) t)
	  (delete-region beg (point))))
    (if (equal flavor "latex")
	(progn
	  (goto-char (point-min))
	  (while (search-forward (concat detex-tex-escape "(") (point-max) t)
	    (setq beg (- (point) 2))
	    (if (search-forward (concat detex-tex-escape ")") (point-max) t)
		(delete-region beg (point))))))))

(defun detex-remove-tex-commands ()
  ;;(message "detex-remove-tex-commands")
  (goto-char (point-min))
  (while (re-search-forward
	  (concat detex-re-tex-escape "[a-zA-Z]*") (point-max) t)
    (replace-match "")))
     
(defun detex-remove-comments ()
  ;;(message "detex-remove-comments...")
  (goto-char (point-min))
  (while (re-search-forward (concat detex-not-escape "%.*$") (point-max) t)
    (delete-region (1+ (match-beginning 0)) (match-end 0))))
 
(defun detex-remove-font ()
  (goto-char (point-min))
  (while (re-search-forward (concat detex-re-tex-escape "font[^=]* *= *\\w*")
			    (point-max) t)
    (replace-match "")))

(defun detex-remove-double-single-quotes ()
  (goto-char (point-min))
  (replace-string "''" "" nil))
			    
;;; If using a TeX/LaTeX dialect which uses other characters for 
;;; escape and grouping, this function should be rewritten to
;;; redefine TeX escape character etc, possibly mode-dependent.

(defun detex-regler ()
  (interactive)
  (setq detex-tex-escape "!")
  (setq detex-re-tex-escape "!")
  (setq detex-not-escape "[^!]")
  (setq detex-tex-left "<")
  (setq detex-tex-right ">")
  (detex))
  
(defun delatex ()
  (interactive)
  ;;(define-escape-and-group)
  (detex-remove-latex-garbage-environments)
  (detex-remove-display "latex")
  (detex-remove-math "latex")
  (detex-remove-comments)
  (detex-remove-latex-commands-with-garbage-argument)
  (detex-remove-discretionary-hyphens)
  (detex-remove-double-single-quotes)
  (detex-remove-tex-commands))

(defun detex ()
  (interactive)
  ;;(define-escape-and-group)
  (detex-remove-display "tex")
  (detex-remove-math "tex")
  (detex-remove-comments)
  (detex-remove-font)
  (detex-remove-tex-commands-with-garbage-argument)
  (detex-remove-discretionary-hyphens)
  (detex-remove-double-single-quotes)
  (detex-remove-tex-commands))