[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?