emacs - Cómo hacer que los espacios no se rompan(empates) en modo Org que se exporta correctamente a LaTeX
whitespace org-mode (4)
En (La) TeX, los espacios que no se rompen se llaman lazos y están hechos por ~
. Los vínculos se utilizan, por ejemplo, después de abreviaturas para que no haya un salto de línea directamente después de ellos y para que los puntos que terminan con las abreviaturas no se traten como oraciones finales. El último uso es importante porque, de manera estándar, LaTeX pone un espacio más largo después de los puntos que entre palabras.
Cuando se exporta desde Org-mode a LaTeX ~
se trata como un carácter explícito y no como un empate. Ignorar el uso de espacios que no se rompen no es una alternativa porque conduce a un espaciado incorrecto (consulte la segunda oración en el ejemplo anterior). Una alternativa es forzar el modo Org para tratar a ~
como LaTeX con #+BEGIN_LaTeX ~ #+END_LaTeX
pero es detallado y se exporta a otros formatos. Finalmente, el uso de espacios sin ruptura UTF-8, como se sugiere en http://comments.gmane.org/gmane.emacs.orgmode/24716 , no funciona porque LaTeX no lo trata como un espacio. Entonces, ¿cómo puedo usar espacios sin interrupción en modo Org que se exportan correctamente a LaTeX?
Aquí hay un ejemplo para aclarar. La primera oración falla porque ~
se trata como un carácter explícito. La segunda oración falla, obviamente, porque el último punto se trata como la finalización de una oración por LaTeX. La tercera oración se exporta correctamente, pero es detallada y rompe la exportación a otros formatos. La cuarta línea (separada por un espacio sin ruptura UTF-8 que se inserta por Cx 8 Space ) falla porque laTeX no la trata como un espacio:
#+title:Title
e.g.~example
e.g. example
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
e.g. example
Esto exporta ( Cx Ce L ) al siguiente código LaTeX:
e.g./~{}example
e.g. example
e.g.~example
e.g. example
Lo que se traduce como:
Estoy ejecutando Org-mode 7.6 en Emacs 23.3.1.
En http://orgmode.org/manual/Special-symbols.html encontré la solución al problema del doble espacio:
Org
e.g./nbsp{}example
Látex
e.g.~example
Incluí lo siguiente en el encabezado de mi documento / plantilla / esqueleto:
/#+LaTeX_HEADER: /DeclareUnicodeCharacter{00A0}{~}
Y utilizo Cx 8 SPC
para insertar el espacio de no ruptura de Unicode en el texto. Esto debería funcionar exportando a LaTeX o HTML.
Explicación:
La macro DeclareUnicodeCharacter
se define en el archivo utf8.def
(el archivo utilizado por inputenc
para definir la asignación utf8) para definir el significado de los caracteres Unicode. El primer argumento es el código hexadecimal para el personaje, y el segundo es el código LaTeX de reemplazo.
El espacio sin interrupciones es U+00A0
, por lo tanto, el primer argumento es 00A0. En LaTeX, se genera un espacio de no separación con una tilde, por lo tanto, el segundo argumento es una sola tilde.
La respuesta está insinuada en el hilo gmane que has vinculado. En particular, la última respuesta dice que use /nbsp
como su espacio de no ruptura. Por sí solo, esto no funcionará ya que necesita un espacio después de /nbsp
para que lo reconozca como un comando y no solo como parte de su texto.
Sin embargo, los siguientes trabajos (agregando a su lista de intentos:
#+title:Title
* Test
1) e.g.~example
2) e.g. example
3)
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
4) e.g. example
5) e.g./nbsp example
(non-breaking /240 space between /nbsp and example)
Que da salida a LaTeX como:
/item e.g./~{}example
/item e.g. example
/item e.g.~example
/item e.g. example
/item e.g.~ example %/240 non-breaking between ~ and example
Y esto se traduce como:
EDITAR
Acabo de volver a probar mis resultados, de alguna manera, los espacios que no se rompieron no se exportaron correctamente la primera vez y mis resultados han cambiado (hacia lo que debería esperarse en lugar de lo que se mostró). Nuevos resultados a continuación para retener el historial y mantener los comentarios con sentido.
Org#+title:Title
* Test
1) e.g.~example
2) e.g. example
3)
#+BEGIN_LaTeX
e.g.~example
#+END_LaTeX
4) e.g. example %Space is non-breaking
5) e.g./nbsp example %Space is non-breaking
Látex
/item e.g./~{}example
/item e.g. example
/item e.g.~example
/item e.g. example %Space is non-breaking
/item e.g.~ example %Space is non-breaking
Rendido
Esto corresponde al doble espacio indicado (así como al espacio de no separación que se exporta correctamente)
Todas las demás respuestas funcionan bien, sin embargo, me gustaría mencionar org-entities
en aras de la integridad. Más aún, ya que puede aprovechar este mecanismo para realizar personalizaciones de exportación más genéricas, así como admitir múltiples backends.
Establecer org-entities
en algo como esto:
(setq org-entities-user
''(("space" "~" nil " " " " " " " ")))
La siguiente fuente de Org:
E.g./space{}a, b, c
Exporta a LaTeX como:
E.g.~a, b, c
y exporta a HTML como:
<p>
E.g. a, b, c</p>