Aloha Nicolas, This in the org file: (fig. [[fig:old-wood]]) exports to this in the latex file: (fig. \ref{fig-old-wood}) I think the exporter is replacing the colon with a hyphen, which breaks the reference. Also, is there some way to toggle a non-breaking space, e.g., (fig.~\ref{fig:old-wood})? I thought to use \tilde{}, but this wouldn't work with other back ends. All the best, Tom -- T.S. Dye & Colleagues, Archaeologists 735 Bishop St, Suite 315, Honolulu, HI 96813 Tel: 808-529-0866, Fax: 808-529-0884 http://www.tsdye.com
Hello, tsd@tsdye.com (Thomas S. Dye) writes: > This in the org file: > > (fig. [[fig:old-wood]]) > > exports to this in the latex file: > > (fig. \ref{fig-old-wood}) > > I think the exporter is replacing the colon with a hyphen, which breaks > the reference. Correct. It's done by the function `org-export-solidify-link-text'. The problem is that it isn't used consistently across the back-end. It should be fixed now. > Also, is there some way to toggle a non-breaking space, e.g., > (fig.~\ref{fig:old-wood})? I thought to use \tilde{}, but this wouldn't > work with other back ends. You may use \nbsp{} entity. My keyboard layout allows for easy access to non-breaking spaces. So I use the following instead (_ character stands for the non-breaking space): #+begin_src emacs-lisp (defun ngz-latex-filter-nobreaks (text backend info) "Ensure \"_\" are properly handled in Beamer/LaTeX export." (when (memq backend '(e-beamer e-latex)) (replace-regexp-in-string "_" "~" text))) (add-to-list 'org-export-filter-plain-text-functions 'ngz-latex-filter-nobreaks) #+end_src HTH, Regards, -- Nicolas Goaziou
Aloha Nicolas, Nicolas Goaziou <n.goaziou@gmail.com> writes: > Hello, > > tsd@tsdye.com (Thomas S. Dye) writes: > >> This in the org file: >> >> (fig. [[fig:old-wood]]) >> >> exports to this in the latex file: >> >> (fig. \ref{fig-old-wood}) >> >> I think the exporter is replacing the colon with a hyphen, which breaks >> the reference. > > Correct. It's done by the function `org-export-solidify-link-text'. The > problem is that it isn't used consistently across the back-end. It > should be fixed now. Yes, link text is consistently changed so cross references work. Thanks. >> Also, is there some way to toggle a non-breaking space, e.g., >> (fig.~\ref{fig:old-wood})? I thought to use \tilde{}, but this wouldn't >> work with other back ends. > > You may use \nbsp{} entity. > > My keyboard layout allows for easy access to non-breaking spaces. So > I use the following instead (_ character stands for the non-breaking > space): > > #+begin_src emacs-lisp > (defun ngz-latex-filter-nobreaks (text backend info) > "Ensure \"_\" are properly handled in Beamer/LaTeX export." > (when (memq backend '(e-beamer e-latex)) > (replace-regexp-in-string "_" "~" text))) > (add-to-list 'org-export-filter-plain-text-functions > 'ngz-latex-filter-nobreaks) > #+end_src Thanks very much for the filter, which makes for an aesthetically pleasing org buffer. I changed the underscore to a non-breaking space character in the call to replace-regexp-in-string and now get tildes in my LaTeX export. All the best, Tom -- Thomas S. Dye http://www.tsdye.com
Hi Thomas,
Thomas S. Dye wrote:
>> I use the following instead (_ character stands for the non-breaking
>> space):
>>
>> #+begin_src emacs-lisp
>> (defun ngz-latex-filter-nobreaks (text backend info)
>> "Ensure \"_\" are properly handled in Beamer/LaTeX export."
>> (when (memq backend '(e-beamer e-latex))
>> (replace-regexp-in-string "_" "~" text)))
>> (add-to-list 'org-export-filter-plain-text-functions
>> 'ngz-latex-filter-nobreaks)
>> #+end_src
>
> Thanks very much for the filter, which makes for an aesthetically
> pleasing org buffer. I changed the underscore to a non-breaking
> space character in the call to replace-regexp-in-string and now get
> tildes in my LaTeX export.
I use this:
#+begin_src emacs-lisp
;; replace space by nobreak-space where it fits well
(defun my/replace-space-before-colon ()
"Replace space by nobreak-space in front of a colon."
(interactive)
(cond ((eq (char-before) ?\ ) ;; normal space
(backward-delete-char 1)
(cond ((equal mode-name "PDFLaTeX")
(insert "~:"))
((equal mode-name "Org")
(if (and (fboundp 'org-in-src-block-p)
(org-in-src-block-p))
(insert " :")
(insert " :")))
;; FIXME Don't put a nobreak space when specifying Org
;; Babel properties (such as :exports both)
(t
(insert " :")))) ;; non-breaking space
;; remove nobreak-space if two colons are put one after the
;; other (for terms and definitions in Org)
((and (eq (char-before) ?\:)
(eq (char-before (- (point) 1)) ?\ ))
(backward-delete-char 2)
(insert " ::")) ;; normal space
(t
(insert ":"))
))
;; French typography
(defun my/nobreak-keys ()
"If any, replace space in front of colons, question marks, exclamation
marks, etc. to avoid line break problems."
(interactive)
(local-set-key ":" 'my/replace-space-before-colon))
(add-hook 'text-mode-hook 'my/nobreak-keys)
(add-hook 'message-mode-hook 'my/nobreak-keys)
#+end_src
in order to have real nbsp as well in my Org buffer. They aren't translated
neither to HTML nor to LaTeX (they're simply copied across), allowing for
consistent view in all the buffers (source + outputs).
Best regards,
Seb
--
Sebastien Vauban