Re: [dk-tug] [OT] emacs makro

Lars Madsen <[email protected]>
Newsgroups gmane.comp.tex.danish
Message-ID <[email protected]>
Et bud (efter først at have lavet den i perl), det skulle nogenlunde kunne match de ting jeg har set i pågældende manus indtil videre


(defun qqtext(beg end)
  (interactive "r")
  (let (str o pre txt left)
    (setq str (buffer-substring beg end))
    ;; start by doing some clean up
    (setq str (replace-regexp-in-string "\\\\\(q\)+uad" " " str))
    (setq str (replace-regexp-in-string "[\t\n ]+" " " str))
    (setq str (replace-regexp-in-string "\\\\ +" " " str))
    (setq str (replace-regexp-in-string " \\{2,\\}" " " str))
    (setq str (replace-regexp-in-string "\` +" "" str))
    (catch 'break
      (while (not (string= str ""))
	(catch 'continue
	  ;; handle embedded \text{...}
	  (when (string-match "\\(.*?\\) *\\\\text{ *\\(.*?\\) *} *\\(.*\\)" str)
	    (setq pre (match-string 1 str))
	    (setq txt (match-string 2 str))
	    (setq left (match-string 3 str))
	    ;; if pre is non-empty, regard it as math, and make it in-line
	    (when (not (string= pre ""))
	      (setq o (concat o "$" pre "$"))
	      )
	    ;; if o is non-empty, we will need a space
	    (when (not (string= o ""))
	      (setq o (concat o " "))
	      )
	    ;; add the text and a space
	    (setq o (concat o txt " "))
	    (setq str left)
	    (throw 'continue nil)
	    )
	  ;; there is no \text left
	  (setq o (concat o "$" str "$"))
	  (setq str "")
	  )
	)
      )
    (delete-region beg end)
    (insert (concat "\\qqtext{" o "}"))
    )
)



/Lars Madsen
Institut for Matematik / Department of Mathematics
Aarhus Universitet / Aarhus University
Mere info: http://au.dk/daleif@imf / More information: http://au.dk/en/daleif@imf


________________________________________
From: [email protected] [[email protected]] on behalf of Lars Madsen [[email protected]]
Sent: 15 January 2013 16:39
To: [email protected]
Subject: [dk-tug] [OT] emacs makro

Der plejer at være en del Emacs-nørder på listen, så jeg ville lige høre hvordan I ville gribe følgende an

I et manus jeg er ved at editere er der mange (A er et matematisk udtryk uden $...$, da dette er skrevet i displaymath)

\forall A
\text{ for all } A
\ A

og lignende

dette sidder jeg og normaliserer til

\qqtext{for all $A$}

\qqtext{for all $A$}

\qqtext{$A$}

Men det kunne man jo lige så godt få Emacs til at hjælpe med at rydde op i. Jeg tænker at det vil være en makro som bliver givet en region som argument (regionen vil indeholde strengen som vist ovenfor), og skal så have skrevet indmaden.

Jeg plejer at lave en hulens masse regexp, men tænkte om en temp buffer kunne være smartere at arbejde med?

hvilken fremgangsmåde ville folk anbefale?


/Lars Madsen
Institut for Matematik / Department of Mathematics
Aarhus Universitet / Aarhus University
Mere info: http://au.dk/daleif@imf / More information: http://au.dk/en/daleif@imf


_______________________________________________
[email protected] mailing list
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.