emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Automatically escaping single spaces


From: Rasmus
Subject: Re: [O] Automatically escaping single spaces
Date: Tue, 19 Mar 2013 17:05:48 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Ivan Andrus <address@hidden> writes:

> Oops, forgot to reply to the list.
>
> On Mar 18, 2013, at 9:59 PM, Aaron Ecay <address@hidden> wrote:
>
>> Hi Suvayu,
>> 
>> I’ve had on my list of rainy day ideas for a while writing a function
>> for org-export-filter-plain-text-functions that would implement
>> something like this.  It should be as simple as doing a text replace,
>> either on “. [^ ]” sequences in general or only spaces after a given
>> list of abbreviations.  The advantage of the second approach is that it
>> could catch the case where “e.g.” is at the end of a line in the org
>> document.  (You’d also have to remove the newline: translate “e.g.\nfoo”
>> into “e.g.\ foo”).  Another advantage to pre-specifying is that you might
>> want a non-breaking space in “Fig.~1” but a breakable space in “e.g.\ foo”;
>> so you could keep two lists.
>
> FWIW, You shouldn't have to worry about newlines.  If Emacs is setup
> properly they should never appear except at sentence boundaries. Which
> is to say, autofill and fill-paragraph know not to break lines in the
> middle of a sentence after punctuation.  If the user adds a newline
> manually you can assume they meant it to be a new sentence.  IIRC the
> variable at play is `sentence-end-double-space'.


I use something like this:

#+BEGIN_SRC emacs-lisp
(defun rasmus/latex-filter-double-space (text backend info)
  "Tries to export \"S1. S2\" as \"S1.~S2\",
   while letting \"S1.  S2\" be exported without tilde"
  (when (memq backend '(beamer latex))
    (replace-regexp-in-string "\\(\\. \\)\\{1\\}\\([^ ]\\)" ".~\\2" text)))

(add-to-list 'org-export-filter-final-output-functions
             'rasmus/latex-filter-double-space)
#+END_SRC

The list approach sounds better, I guess. . .   Indeed it does not
catch end of line stuff.


Here's a test case

#+BEGIN_SRC org
#+NAME:ref
#+BEGIN_SRC emacs-lisp
  (replace-regexp "\\(\\. \\)\\{1\\}\\([^ ]\\)" ".~\\2")
#+END_SRC

* Test 
  fig. 1 isn't here.  Here is double  space.  Fig.
  2 does not work
  fig. [[ref]] is also works

#+END_SRC 

which translate to 

#+BEGIN_SRC latex
\section[Test]{Test}
\label{sec-1}
fig.~1 isn't here.  Here is double  space.  Fig.
2 does not work
fig.~\ref{ref} is also works
#+END_SRC

–Rasmus

-- 
Hvor meget poesi tror De kommer ud af et glas isvand?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]