emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rasmus <rasmus@gmx.us>
To: emacs-orgmode@gnu.org
Subject: Re: Automatically escaping single spaces
Date: Tue, 19 Mar 2013 17:05:48 +0100	[thread overview]
Message-ID: <874ng7l6hv.fsf@pank.iue.private> (raw)
In-Reply-To: 0C7B7610-34DF-47E5-970C-6CBBF3DDC8EF@gmail.com

Ivan Andrus <darthandrus@gmail.com> writes:

> Oops, forgot to reply to the list.
>
> On Mar 18, 2013, at 9:59 PM, Aaron Ecay <aaronecay@gmail.com> 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	other threads:[~2013-03-19 16:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 13:40 Automatically escaping single spaces Suvayu Ali
2013-03-18 16:31 ` Marcin Borkowski
2013-03-19  3:59 ` Aaron Ecay
2013-03-19 15:20   ` Ivan Andrus
2013-03-19 16:05     ` Rasmus [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874ng7l6hv.fsf@pank.iue.private \
    --to=rasmus@gmx.us \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).