Как я заставляю ЛАТЕКС писать через дефис слово, которое содержит тире?

В ЛАТЕКСНОМ документе я пишу, я получаю переполненное предупреждение hbox из-за "мультидисциплинарного" слова, который, оказывается, представляется в конце строки.

Я могу избавиться от этого конкретного предупреждения путем изменения его в multi-discipli\-nary, но та же проблема произойдет в другом месте, так как это слово используется много в газете.

Я хотел бы использовать \hyphenation{} команда вместо этого, но очевидно мое предварительное \hyphenation{multi-disci-pli-na-ry} не работает, потому что это не понимает первого тире правильно.

Какое колдовство я должен получить корректное добавление отступа, одним словом, которое уже содержит тире?

Вопрос о премии: Где я, возможно, нашел ответ на тот вопрос сам?

102
задан Peter Mortensen 17 June 2016 в 13:38
поделиться

3 ответа

Из https: // texfaq.org / FAQ-nohyph :

TeX не переносит слово, которое уже было перенесено. Например, (карикатурная) английская фамилия Смит-Постлтуэйт не будет содержать дефис, что может вызвать проблемы. Это правильный английский стиль набора (он может быть неправильным для других языков), но если необходимо, вы можете заменить дефис в имени на \ hyph Команда , определенная

  \ def \ hyph {- \ штраф0 \ hskip0pt \ relax} 
 

Это не то, что обычно рекомендуется в этом FAQ … Пакет hyphenat определяет набор таких команд (для введения точек переноса в различных знаках пунктуации).


Или вы можете \ newcommand команду, которая расширяется до multi-schemeli \ -nary (используйте Search + Replace All, чтобы заменить существующие слова).

51
ответ дан 24 November 2019 в 04:34
поделиться

Глядя на второй пример того, как он работает, кажется, что если замок не был приобретен, вы собираетесь выйти, пропустив важную часть вашего кода.

Подход Mutex гораздо проще понять, и у меня не было никаких проблем с производительностью.

-121--4746342-

Для этого необходимо использовать плотность экрана.

Context.getResources().getDisplayMetrics().density

Согласно документации

Логическая плотность дисплея. Это коэффициент масштабирования для модуля DIP, где один DIP - один пиксель на экране приблизительно 160 dpi (например, экран 240x320, 1,5 «x2»), обеспечивающий базовую линию дисплея системы. Таким образом, на экране 160dpi это значение плотности будет равно 1; на экране 120 dpi будет 0,75; и т.д.

Это значение в точности не соответствует реальному размеру экрана (в соответствии с xdpi и ydpi), а используется для масштабирования всего пользовательского интерфейса по шагам на основе грубых изменений в dpi дисплея. Например, экран 240x320 будет иметь плотность 1, даже если его ширина равна 1,8, «1,3» и т.д. Однако если разрешение экрана увеличивается до 320x480, но размер экрана остается 1,5 «x2», то плотность будет увеличена (вероятно, до 1,5).

-121--1100069-

Я ответил здесь на нечто подобное: LaTeX разбивает слишком много слов

Я сказал:

вы должны установить штраф за расстановку переносов где-то в вашей преамбуле:

\hyphenpenalty=750

Значение 750 подходило моим потребностям для размещения двух столбцов на бумаге (8,5x11 в) Настройте значение в соответствии с вашими потребностями. Чем больше число, тем меньше расстановки переносов. Вы также можете посмотреть на пакет расстановки переносов, он предоставляет немного больше, чем просто штраф за расстановку переносов

-3
ответ дан 24 November 2019 в 04:34
поделиться

Чтобы избежать переноса в слове, уже написанном через дефис, я использовал неразрывный пробел ~ в сочетании с обратным пробелом \! . Например, команда

3~\!\!\!\!-~\!\!\!D

, используемая в тексте, подавляет расстановку переносов в слове 3-D. Наверное, не лучшее решение, но у меня оно сработало!

-4
ответ дан 24 November 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: