Я использую последнюю версию acronym
( acronym 2010/09/08 v1.36
) с Lualatex (версия beta-0.70.2-2012060719
) и имею длинную аббревиатуру, состоящую из шести слов, которая неправильно расставлена. Пакет showhyphens
показывает, что первое из слов в тексте не имеет вариантов расстановки переносов, хотя в списке сокращений оно расставлено правильно.
LaTeX-Community.org: пакет аббревиатур и расстановка переносовпоказывает решение и GoLaTeX: расстановка переносов с аббревиатурой пакета (на немецком языке) другой, но, к сожалению, оба они мне не подходят.
Есть ли другое решение или кто-нибудь сталкивался (и решил) подобную проблему?
Редактировать: Я подготовил MWE. Однако это довольно неуловимая ошибка. Поэтому я сократил текст до такой степени, что не смог удалить больше пакетов/текста, потому что переполненный hbox не отображался. Надеюсь, это поможет прояснить мою проблему.
\documentclass[DIV=calc,fontsize=12pt,titlepage=false]{scrartcl}
\usepackage{showhyphens}
\usepackage{fontspec}
\usepackage{microtype}
\newfontfeature{Microtype}{protrusion=default;expansion=false}
\setmainfont[Microtype]{Linux Libertine O}
\usepackage[ngerman,british]{babel}
\usepackage[smaller,printonlyused,withpage]{acronym}
\usepackage{bookmark}
\usepackage{booktabs}
\begin{document}
\hyphenation{Mi-ni-a-tur-netz-wer-ke}
Invertebrate neurons are larger than their vertebrate counterparts, which makes it easier to handle them.
This text is part of an interdisciplinary project: \ac{MIMU}.
\section*{List of abbreviations}
\begin{acronym}[MIMU]
\acro{MIMU}{Miniaturnetzwerke aus Insektenneuronen in multilateralen Umgebungen}
\end{acronym}
\end{document}
MWE выдает мне следующий вывод для текста и списка сокращений:
- 1: Переполненный hbox в тексте
- 2: Одно и то же слово (Miniaturnetzwerke) правильно пишется через дефис
решение1
Похоже, что acronym
пакет помещает что-то перед первым упоминанием аббревиатуры (какой-то код, записывающий в файл для создания метки; я не анализировал это более подробно), что фактически запрещает перенос первого слова текста аббревиатуры.
Следующее изменение преамбулы исправит неисправную команду, так что переносы будут восстановлены. Извините за странный шаблон исправления, но, \patchcmd
похоже, всегда заменяется только первое вхождение (но их два для \AC@acl
).
\usepackage{etoolbox}
\makeatletter
\patchcmd\@acf{\AC@acl}{\AC@foo}{}{}
\patchcmd\@acf{\AC@acl}{\AC@foo}{}{}
\patchcmd\@acf{\AC@foo}{\hskip\z@\AC@acl}{}{}
\patchcmd\@acf{\AC@foo}{\hskip\z@\AC@acl}{}{}
\makeatother
\begin{document}
Пожалуйста, также примите во внимание совет egregs: вы добьетесь лучшего переноса немецкого текста, если правильно пометите его как немецкий.
решение2
Необходимо указать, что аббревиатура на немецком языке:
\documentclass[DIV=calc,fontsize=12pt,titlepage=false]{scrartcl}
\usepackage{showhyphens}
\usepackage[ngerman,british]{babel}
\usepackage[smaller,printonlyused,withpage]{acronym}
\usepackage{hyperref,bookmark}
\begin{document}
Invertebrate neurons are larger than their vertebrate counterparts, which makes it easier to handle them.
This text is part of an interdisciplinary project: \ac{MIMU}.
\section*{List of abbreviations}
\begin{acronym}[MIMU]
\acro{MIMU}{\foreignlanguage{ngerman}{Mi"-niaturnetzwerke aus Insektenneuronen in multilateralen Umgebungen}}
\end{acronym}
\end{document}
Я не знаю точно, почему первое слово нельзя переносить; однако добавление подходящей точки переноса, похоже, может стать обходным решением.