emacs latex whitespace org-mode

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.



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.&nbsp;a, b, c</p>