acro: переместить перевод на следующую строку только для выбранных аббревиатур

acro: переместить перевод на следующую строку только для выбранных аббревиатур

Принимая во внимание один пример из acroруководства пакета (стр. 38, версия 2.10c),

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[ngerman,english]{babel}
\usepackage[version=2]{acro}
\usepackage{enumitem}

\DeclareAcronym{Rv}{short=Rv,long=Fluss,foreign=\textit{river},foreign-lang=english}
\DeclareAcronym{Drs}{short=Drs,long=Donaudampfschiff,foreign=\textit{Donau river steamer},foreign-lang=english}

\begin{document}

\acuseall

\newlist{acronyms}{description}{1}
\newcommand*\addcolon[1]{#1:}
\setlist[acronyms]{
    labelwidth=3em,
    leftmargin=3.5em,
    noitemsep,
    itemindent=0pt,
    font=\addcolon}
\DeclareAcroListStyle{mystyle}{list}{list=acronyms}
\acsetup{list-style=mystyle}
\twocolumn
\printacronyms

\end{document}

дает

введите описание изображения здесь

Я хотел бы перенести перевод только первой аббревиатуры на следующую строку, так как я думаю, что это улучшит как читабельность, так и внешний вид. Можно ли добавлять a \linebreakк выбранным пользователем аббревиатурам? Обратите внимание, что мне необходимо использовать acroрежим совместимости, поэтому эта version=2опция.

решение1

Решение найдено:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[ngerman,english]{babel}
\usepackage[version=2]{acro}
\usepackage{enumitem}

\DeclareAcronym{Rv}{short=Rv,long=Fluss,foreign=\textit{river},foreign-lang=english}
\DeclareAcronym{Drs}{short=Drs,long=Donaudampfschiff,list=Donaudampfschiff\newline,foreign=\textit{Donau river steamer},foreign-lang=english}

\begin{document}

\acuseall

\newlist{acronyms}{description}{1}
\newcommand*\addcolon[1]{#1:}
\setlist[acronyms]{
    labelwidth=3em,
    leftmargin=3.5em,
    noitemsep,
    itemindent=0pt,
    font=\addcolon}
\DeclareAcroListStyle{mystyle}{list}{list=acronyms}
\acsetup{list-style=mystyle}
\twocolumn
\printacronyms

\end{document}

Производит: введите описание изображения здесь

решение2

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

\DeclareAcroProperty?{boolean-property}

и проверил в шаблоне с помощью

\acroifbooleanTF{boolean-property}{true}{false}

Следующий пример вызывает его foreign-newlineи показывает шаблон, аналогичный предопределенному descriptionшаблону (я не указал поля extraи , pagesно их, конечно, можно добавить):

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english,ngerman]{babel}
\usepackage{acro}
\usepackage{enumitem}

\DeclareAcroProperty?{foreign-newline}

\NewAcroTemplate[list]{custom}{
  \acroheading
  \acropreamble
  \begin{description}[
    labelwidth = 3em ,
    leftmargin = 3.5em ,
    noitemsep ,
    itemindent = 0pt]
    \acronymsmapF{%
      \item[\acrowrite{short}\acroifT{alt}{/}\acrowrite{alt}:]%
        \acrowrite{list}%
        \acroifT{foreign}{%
          \acroifbooleanTF{foreign-newline}{\newline}{ }%
          (\textit{\acrowrite{foreign}})
        }%
    }
    { \item \AcroRerun }%
  \end{description}%
}

\acsetup{
  list/template = custom
}

\DeclareAcronym{Rv}{
  short = Rv ,
  long = Fluss ,
  foreign = river ,
  foreign-babel = english
}
\DeclareAcronym{Drs}{
  short = Drs ,
  long = Donaudampfschiff ,
  foreign = Donau river steamer ,
  foreign-babel = english ,
  foreign-newline = true
}

\begin{document}

\twocolumn

\acuseall

\printacronyms

\end{document}

введите описание изображения здесь

Связанный контент