我有一个类似于此的文件(简化版本):
% !TeX program = lualatex
% !TeX encoding = UTF-8
% !TeX spellcheck = de_DE
\documentclass[12pt,a4paper,titlepage,numbers=noenddot,oneside]{scrbook}
\KOMAoption{listof}{totocnumbered, leveldown}
\usepackage{etoolbox}
% https://tex.stackexchange.com/a/69585/98645
\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
% acronyms
\usepackage{acro}
% deutsch
\usepackage[norsk, english, ngerman]{babel}
\usepackage[norsk, english, ngerman]{isodate}
\usepackage{lmodern} % font
\usepackage[german=quotes]{csquotes} % deutsche Anführunsgzeichen mit \enquote
\renewcommand{\small}{\fontsize{10pt}{12pt}\selectfont}
\renewcommand{\footnotesize}{\fontsize{8pt}{9.6pt}\selectfont}
\usepackage{setspace}
\setstretch{1.5} % 1,5 zeilig
\usepackage[
left=2.5cm, % 2,5 cm - 3,0 cm
right=1.5cm, % 1,5 cm - 2,0 cm
top=2.0cm, % 2,0 cm - 2,5 cm
bottom=2.0cm, % 1,5 cm - 2,0 cm
% includefoot,
heightrounded
]{geometry}
\DeclareAcronym{sarsCov}{
short = {SARS-CoV-2},
long = {Schweres-akutes-Atemwegssyndrom-Coronavirus 2},
foreign = \enquote{\foreignlanguage{english}{Severe acute respiratory syndrome-related coronavirus}},
foreign-lang = english,
% cite = {sarsCov2Preprint, sarsCov2Nature},
first-style = reversed
}
% […]
begin{document}
% […]
Name: \ac{sarsCov}
\printacronyms[
name=Abkürzungsverzeichnis,
heading=section
]
\end{document}
现在我认为 acro 应该能够正确完成所有操作,但是对于那个很长的缩写词条目,我得到了:
段落中的 \hbox 过满(39.72452pt 太宽)
…从视觉上看,它显然不正确:
我认为通过全部包装和加载英语 babel 包等,它应该能够正确地包装该词。
这是 texlive-2019-19.fc32.src.rpm (svn52662)。
编辑:我不确定这是否是同样的问题,如果不是,请原谅我,但实际上当我在内容的其他任何地方使用长缩写时,它也不会被分解:
% (same as before)
\DeclareAcronym{dsgvo}{
short = DSGVO,
long = {Datenschutz-Grundverordnung},
foreign = {\enquote{\foreignlanguage{english}{General Data Protection Regulation}}, GDPR}, % GDPR
foreign-lang = english,
cite = dsgvo-eu-2016-679
}
% […]
begin{document}
% […]
Name der \ac{dsgvo}
% […]
\printacronyms[
name=Abkürzungsverzeichnis,
heading=section
]
\end{document}
编辑:我必须补充这个答案也无济于事。
答案1
前言
我假设您是 2.xx 版本acro
。
foreign-lang = english
已经设置了babel语言,添加\foreignlanguage{english}{...}
是多余的。
第一个问题
您的问题是,在带有连字符的单词中,例如syndrome-related
(la)tex,除了连字符所在位置之外,无法再使用连字符。这就是为什么在德语中,"=
如果您想允许在单词的其余部分使用连字符,通常使用 babel 简写:Haftpflicht"=Versicherung
。这对您的问题没有帮助特别指定因为德语简写不能在英语中使用。
最快的解决方案是明确添加断点,例如syn\-drome-related
。如果要使用 babel 简写,则需要将其添加到英语中:
\addto\extrasenglish{\languageshorthands{ngerman}\useshorthands{"}}
并在定义首字母缩略词之前激活它,因为否则简写在序言中不起作用:
\shorthandon{"}
\DeclareAcronym{sarsCov}{
...
foreign = \enquote{Severe acute respiratory syndrome"=related coronavirus},
foreign-lang = english,
...
}
你会得到
第二个问题
如果您明确输入第二个问题的文本,您将获得相同的输出。这不是acro
的错误:
\section{foo bar}
Nach der \ac{dsgvo}
\section{foo bar}
Nach der Datenschutz-Grundverordnung („General Data Protection Regulation“, GDPR, DSGVO)~[?]
这类问题通常可以通过添加\usepackage{microtype}
序言来消除。无论如何,这个包总是一个好主意……
如果没有帮助,而且你又无法改写句子,你可以尝试使用sloppypar
:
\begin{sloppypar}
Nach der \ac{dsgvo}
\end{sloppypar}
笔记
- 我添加了
showframe
选项以geometry
用于示例输出,以显示所选的页面尺寸。除此之外,我只是复制了您的序言。 - 我不确定“Schweres-akutes-Atemwegssyndrom-Coronavirus 2”中的所有连字符是否都正确,但是......