В документе LaTeX, который я пишу, я получаю предупреждение о переполнении hbox из-за слова «мультидисциплинарный», которое оказывается в конце строки.
Я могу избавиться от этого предупреждения, заменив его на multi-discipli\-nary
, но та же проблема возникнет и в другом месте, поскольку это слово часто используется в статье.
Я бы хотел использовать \hyphenation{}
вместо этого команду, но, очевидно, мой предварительный \hyphenation{multi-disci-pli-na-ry}
вариант не работает, потому что он неправильно понимает первую черту.
Какое заклинание мне нужно, чтобы получить правильный отступ в слове, уже содержащем тире?
Дополнительный вопрос: где я мог сам найти ответ на этот вопрос?
latex
hyphenation
Gyom
источник
источник
Ответы:
С https://texfaq.org/FAQ-nohyph :
Или вы можете
\newcommand
использовать команду, которая расширяется доmulti-discipli\-nary
(используйте Search + Replace All, чтобы заменить существующие слова).источник
\newcommand
везде (вот почему я искал что-то на основе\hyphenation
). Думаю, я просто оставлю его «как есть» по умолчанию и добавлю явные дефисы вручную, когда Latex жалуется на переполнение боксов.Проблема (как заметил Кенни) в том, что LaTeX не переносит слова с тире. К счастью, есть стандартный пакет (часть ncctools), который решает именно эту проблему, и называется
extdash
. Это определяет новые команды дефиса и тире, которые не нарушают расстановку переносов и которые могут разрешать или предотвращать перенос строки в дефисе / тире. Я предпочитаю использовать его сshortcuts
опцией, поэтому я могу использовать, например,\-/
вместо\Hyphdash
. Вот что вам нужно:\usepackage[shortcuts]{extdash}
...multi\-/disciplinary
Чтобы предотвратить разрыв этого дефиса, используйте
multi\=/disciplinary
(Кроме того: Чикагское руководство по стилю рекомендует опускать дефисы, прикрепляющие такие аффиксы, как «мульти», если слово без него не является двусмысленным или непонятным.)
источник
Package hyperref Warning: Token not allowed in a PDF string
. Там работает другое предложенное решение (\def\hyph{-\penalty0\hskip0pt\relax}
).\texorpdfstring
(который обеспечивает условную компиляцию для строк, которые входят в заголовки глав). Я скрываю употребление внутри семантических макросов (здесь, наверное\multidisciplinary
). Да не идеально.Я использую пакет,
hyphenat
а затем пишу сложные слова, такие как финское слово Internet-yhteys (англ. Internet connection ) какInternet\hyp yhteys
. Выглядит глупо, но кажется самым элегантным способом, который я нашел.источник
multi-disciplinary
не будет переноситься через дефис, как объяснил kennytm. Ноmulti-\-disciplinary
имеет те же возможности расстановки переносов, чтоmultidisciplinary
и.Признаюсь, я не знаю, почему это работает. Это отличается от поведения, описанного здесь (выделено мной):
источник
-
на-\-
не меняет вывод, по крайней мере, с настройками по умолчанию на overleaf.com (возможно, pdflatex, но на обороте ничего не сказано).У меня такая же проблема. Я использую дефис плюс следующий макрос:
Обратите внимание, что здесь используется пакет эксплоре3 из latex3.
Это делает
-
символ активным, который просматривает вперед, чтобы увидеть, не следует ли за ним еще тире. Если это так, он остается-
, чтобы убедиться--
и---
продолжить работу. В противном случае он становится\hyp
командой от дефиса, разрешая разрывы слов в остальной части слова. Это универсальное решение, при котором все слова, содержащие явные дефисы, переносятся как обычно.Обратите внимание, что это
-
становится макросом, который нельзя полностью раскрыть, поэтому попробуйте включить его после загрузки других пакетов, которые не могут-
быть макросом.Изменить: это моя вторая версия, первая версия была менее надежной, если после дефиса был
{
или}
. Этого нет, но, в отличие от первой версии,-
в этой версии нельзя полностью расширить.источник
Например, вы можете определить как
а затем напишите
Обратите внимание, что в пакете русского языка babel есть собственный набор дефисов, который не запрещает расстановку переносов, например
"~
(двойные кавычки + тильда).источник
multi-\hskip0pt disciplinary
. Как и в вашем MWE, он слишком сильно раздувается. Просто установите\setlength{\textwidth}{0.1cm}
, чтобы попробовать это.Я ответил примерно так: LaTeX разбивает слишком много слов
Я сказал:
вы должны установить штраф за перенос где-нибудь в преамбуле:
Значение 750 соответствовало моим потребностям в макете из двух столбцов на бумаге формата Letter (8,5x11 дюймов) с шрифтом 12 pt. Отрегулируйте значение в соответствии со своими потребностями. Чем выше число, тем меньше переносов будет. Вы также можете взглянуть на пакет дефисов, он обеспечивает немного больше, чем просто штраф за перенос
источник
Чтобы избежать переноса в слове, уже написанном через дефис, я использовал неразрывный пробел
~
в сочетании с обратным пробелом\!
. Например, командаиспользуется в тексте, не переносить перенос в слове 3-D. Наверное, не лучшее решение, но у меня оно сработало!
источник
\mbox{3-D}
.