Dans un document LaTeX que j'écris, j'obtiens un avertissement hbox trop plein à cause du mot "multidisciplinaire", qui se trouve être rendu à la fin d'une ligne.
Je peux me débarrasser de cet avertissement en le changeant en multi-discipli\-nary
, mais le même problème se produira ailleurs, car ce mot est beaucoup utilisé dans le journal.
Je voudrais utiliser la \hyphenation{}
commande à la place, mais évidemment ma tentative \hyphenation{multi-disci-pli-na-ry}
ne fonctionne pas, car elle ne comprend pas correctement le premier tiret.
De quelle incantation ai-je besoin pour obtenir une indentation correcte dans un mot qui contient déjà un tiret?
Question bonus: Où aurais-je pu trouver moi-même la réponse à cette question?
latex
hyphenation
Gyom
la source
la source
Réponses:
De https://texfaq.org/FAQ-nohyph :
Ou vous pourriez
\newcommand
une commande qui se développemulti-discipli\-nary
(utilisez Rechercher + Remplacer tout pour remplacer les mots existants).la source
\newcommand
partout (c'est pourquoi je cherchais quelque chose basé sur\hyphenation
). Je suppose que je vais simplement le garder `` tel quel '' par défaut, et ajouter manuellement des traits d'union explicites lorsque Latex se plaint de hboxes surchargées.Le problème (comme l'a noté KennyTM) est que LaTeX ne coupe pas les mots avec des tirets. Heureusement, il existe un package standard (qui fait partie de ncctools) qui résout ce problème, appelé
extdash
. Cela définit de nouvelles commandes de tiret et de tiret qui ne perturbent pas la césure et qui peuvent autoriser ou empêcher les sauts de ligne au niveau du tiret / tiret. Je préfère l'utiliser avec l'shortcuts
option, donc je peux utiliser, par exemple,\-/
plutôt que\Hyphdash
. Voici ce que vous voulez:\usepackage[shortcuts]{extdash}
...multi\-/disciplinary
Pour éviter de casser à ce trait d'union, utilisez
multi\=/disciplinary
(À part: le Chicago Manual of Style conseille de supprimer les traits d'union attachant des affixes comme «multi», sauf si le mot est ambigu ou inintelligible sans lui.)
la source
Package hyperref Warning: Token not allowed in a PDF string
. Là, l'autre solution proposée (\def\hyph{-\penalty0\hskip0pt\relax}
) fonctionne.\texorpdfstring
(qui fournit une compilation conditionnelle pour les chaînes qui vont dans les titres de chapitre). Je cache les utilisations à l'intérieur des macros sémantiques (ici, probablement\multidisciplinary
). Oui, ce n'est pas parfait.J'utilise package
hyphenat
et j'écris des mots composés comme le mot finlandais Internet-yhteys ( connexion Internet en anglais ) commeInternet\hyp yhteys
. Cela a l'air loufoque mais semble être le moyen le plus élégant que j'ai trouvé.la source
multi-disciplinary
ne sera pas coupé, comme expliqué par kennytm. Maismulti-\-disciplinary
a les mêmes possibilités de césure quemultidisciplinary
.J'avoue que je ne sais pas pourquoi cela fonctionne. C'est différent du comportement décrit ici (c'est moi qui souligne):
la source
-
par-\-
ne change pas la sortie, du moins avec les paramètres par défaut dans overleaf.com (probablement pdflatex, mais au verso ne le dit pas réellement).J'ai eu le même problème. J'utilise hyphenat plus la macro suivante:
Notez que cela utilise le package expl3 de latex3.
Cela rend le
-
personnage actif qui scanne vers l'avant pour voir s'il est suivi de plus de tirets. Si c'est le cas, il reste un-
, pour s'assurer--
et---
continuer à fonctionner. Sinon, il devient la\hyp
commande du trait d'union, permettant des sauts de mots dans le reste du mot. Il s'agit d'une solution générique qui fait que tous les mots contenant des tirets explicites sont coupés normalement.Notez que cela
-
devient une macro qui n'est pas entièrement extensible, essayez donc de l'inclure après avoir chargé d'autres packages qui ne-
devraient pas être une macroEdit: C'est ma deuxième version, la première version était moins robuste quand un
{
ou}
suivait un trait d'union. Celui-ci ne l'est pas, mais contrairement à la première version,-
dans cette version n'est pas entièrement extensible.la source
Vous pouvez par exemple définir comme
puis écris
Notez que le package de langue russe babel a son propre jeu de tirets qui n'interdisent pas la césure,
"~
(guillemet double + tilde) par exemple.la source
multi-\hskip0pt disciplinary
. Comme chez vous MWE, il hypenera trop. Il suffit de régler\setlength{\textwidth}{0.1cm}
pour essayer ça.J'ai répondu à quelque chose de similaire ici: LaTeX brise trop de mots
J'ai dit:
vous devez définir une pénalité de césure quelque part dans votre préambule:
La valeur de 750 correspondait à mes besoins pour une mise en page à deux colonnes sur papier à lettre (8,5 x 11 pouces) avec une police de 12 pt. Ajustez la valeur en fonction de vos besoins. Plus le nombre est élevé, moins il y aura de césure. Vous voudrez peut-être aussi jeter un œil au paquet de césure, il fournit un peu plus qu'une simple pénalité de césure
la source
Pour éviter la césure dans un mot déjà coupé, j'ai utilisé un espace insécable
~
en combinaison avec un espace arrière\!
. Par exemple, commandeutilisé dans le texte, supprime la césure dans le mot 3-D. Probablement pas la meilleure solution, mais cela a fonctionné pour moi!
la source
\mbox{3-D}
.