titulos titulo titling subtitulos portadas portada page maketitle hechas error latex hyphenation

titulo - ¿Cómo consigo que LaTeX separe una palabra que contenga un guión?



titulo en latex (8)

En un documento LaTeX que estoy escribiendo, aparece una advertencia de hbox sobrecargada debido a la palabra "multidisciplinario", que se representa al final de una línea.

Puedo deshacerme de esta advertencia en particular al cambiarla a multi-discipli/-nary , pero el mismo problema ocurrirá en cualquier otro lugar, ya que esta palabra se usa mucho en el documento.

Me gustaría utilizar el comando /hyphenation{} lugar, pero obviamente mi tentativa /hyphenation{multi-disci-pli-na-ry} no funciona, porque no comprende el primer guión correctamente.

¿Qué encantamiento necesito para obtener una sangría correcta en una palabra que ya contiene un guión?

Pregunta adicional: ¿Dónde podría haber encontrado la respuesta a esa pregunta yo mismo?


De http://www.tex.ac.uk/cgi-bin/texfaq2html?label=nohyph :

TeX no pliegueará una palabra que ya haya sido dividida en guiones. Por ejemplo, el apellido (caricatura) en inglés Smyth-Postlethwaite no se deslizaría, lo que podría ser problemático. Este es el estilo correcto de composición tipográfica en inglés (puede no ser correcto para otros idiomas), pero si es necesario, puede reemplazar el guión en el nombre con un comando /hyph , definido

/def/hyph{-/penalty0/hskip0pt/relax}

Este no es el tipo de cosas que normalmente recomiendan estas preguntas frecuentes ... El paquete hyphenat define un conjunto de tales comandos (para introducir puntos de separación por sílabas en varios caracteres de puntuación).

O puede /newcommand un comando que se expande a multi-discipli/-nary (use Buscar + Reemplazar todo para reemplazar palabras existentes).


El problema (como lo notó KennyTM) es que LaTeX no enlazará palabras con guiones. Afortunadamente, hay un paquete estándar (parte de ncctools) que soluciona ese problema, llamado extdash . Esto define nuevos comandos de guiones y guiones que no interrumpen la separación silábica y que pueden permitir o evitar saltos de línea en el guión / guión. Prefiero usarlo con la opción de shortcuts , así que puedo usar, por ejemplo, /-/ lugar de /Hyphdash . Esto es lo que quieres:

/usepackage[shortcuts]{extdash} ... multi/-/disciplinary

Para evitar romper ese guión, use multi/=/disciplinary

(Aparte: el Manual de estilo de Chicago recomienda dejar caer los guiones adjuntando afijos como ''multi'', a menos que la palabra sea ambigua o ininteligible sin él).


Para evitar la separación de sílabas en una palabra con guión, utilicé el espacio sin interrupción ~ en combinación con el espacio hacia atrás /! . Por ejemplo, comando

3~/!/!/!/!-~/!/!/!D

utilizado en el texto, suprime la separación silábica en la palabra 3-D. Probablemente no sea la mejor solución, ¡pero funcionó para mí!


Respondí algo similar aquí: LaTeX rompiendo demasiadas palabras

Dije:

deberías establecer una penalización de separación por sílabas en algún lugar de tu preámbulo:

/hyphenpenalty=750

El valor de 750 se ajustaba a mis necesidades para un diseño de dos columnas en papel de carta (8.5x11 in) con una fuente de 12 puntos. Ajuste el valor para satisfacer sus necesidades. Cuanto mayor sea el número, menor será la separación silábica. También es posible que desee echarle un vistazo al paquete hyphenat, proporciona algo más que pena de separación por sílabas


Utilizo el paquete hyphenat y luego escribo palabras compuestas como la palabra finlandesa Internet-yhteys (ing. Conexión a Internet ) como Internet/hyp yhteys . Parece ridículo, pero parece ser la forma más elegante que he encontrado.


Yo tuve el mismo problema. Yo uso hyphenat más la siguiente macro:

/RequirePackage{hyphenat} /RequirePackage{expl3} % The following defs make sure words that contain an explicit `-` (hyphen) are still hyphenated the normal way, and double- and triple hyphens keep working the way they should. Just don''t use a `-` as the last token of your document. Also note that `-` is now a macro that is not fully expandable /ExplSyntaxOn % latex2e doesn''t like commands starting with ''end'', apparently expl3 doesn''t have any problems with it /cs_new:Npn /hyphenfix_emdash:c {---} /cs_new:Npn /hyphenfix_endash:c {--} /cs_new:Npn /hyphenfix_discardnext:NN #1#2{#1} /catcode`/-=/active /cs_new_protected:Npn -{ /futurelet/hyphenfix_nexttok/hyphenfix_i:w } /cs_new:Npn /hyphenfix_i:w { /cs_if_eq:NNTF{/hyphenfix_nexttok}{-}{ %discard the next `-` token /hyphenfix_discardnext:NN{/futurelet/hyphenfix_nexttok/hyphenfix_ii:w} }{ % from package hyphenat /hyp } } /cs_new:Npn /hyphenfix_ii:w { /cs_if_eq:NNTF{/hyphenfix_nexttok}{-}{ /hyphenfix_discardnext:NN{/hyphenfix_emdash:c} }{ /hyphenfix_endash:c } } /ExplSyntaxOff

Tenga en cuenta que esto usa el paquete expl3 de latex3.

Hace que el - un personaje activo que escanea hacia adelante para ver si es seguido por más guiones. Si es así, permanece a - , para asegurarse -- y -- sigue trabajando. De lo contrario, se convierte en el comando /hyp de hyphenat, lo que permite saltar palabras en el resto de la palabra. Esta es una solución genérica que hace que todas las palabras que contienen guiones explícitos guionicen normalmente.

Tenga en cuenta que - convierte en una macro que no es totalmente expandible, intente incluir esto después de cargar otros paquetes que pueden no esperar - para ser una macro

Editar: Esta es mi segunda versión, la primera versión era menos robusta cuando { o } seguía un guión. Este no es, pero a diferencia de la primera versión - en esta versión no es totalmente ampliable.


multi-disciplinary no se dividirá en guiones, como lo explica kennytm. Pero multi-/-disciplinary tiene las mismas oportunidades de división de palabras que tiene el multidisciplinary .

Admito que no sé por qué funciona esto. Es diferente del comportamiento descrito here (énfasis mío):

El comando /- inserta un guión discrecional en una palabra. Esto también se convierte en el único punto donde se permite la separación silábica en esta palabra .


multi/hskip0pt-/hskip0pt disciplinary

Por ejemplo, puedes definir como

/def/:{/hskip0pt}

y luego escribe

multi/:-/:disciplinary

Tenga en cuenta que el paquete de idioma ruso de babel tiene su propio conjunto de guiones que no prohíben la separación silábica, "~ (doble cita + tilde) por ejemplo.