为什么 acro 的首字母缩略词列表会溢出 hbox(水平页面溢出)?

为什么 acro 的首字母缩略词列表会溢出 hbox(水平页面溢出)?

我有一个类似于此的文件(简化版本):

% !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 太宽)

…从视觉上看,它显然不正确:

Sars-CoV-19 溢出页面的缩写

我认为通过全部包装和加载英语 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}

编辑:我必须补充这个答案也无济于事。

DSGVO 也溢出了文档中的 \hbox

答案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”中的所有连字符是否都正确,但是......

相关内容