Я использую acronym
-package для своих аббревиатур.
Для создания списка сокращений в моем main.tex есть следующий код:
\usepackage[printonlyused, withpage]{acronym}
...
\section*{List of Acronyms}
\input{../assets/acronyms}
и acronyms.tex выглядит так:
\begin{acronym}
...
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
...
\end{acronym}
Мне очень не нравятся пробелы между аббревиатурами, и я бы предпочел вообще не иметь межстрочного интервала, как в моем списке объявлений:
решение1
Поскольку acronym
среда на самом деле является просто description
средой, одной из возможностей является указание itemsep
среды acronym
:
\documentclass{report}
\usepackage[withpage]{acronym}
\begin{document}
\tableofcontents
\section*{List of Acronyms}
\begin{acronym}[JSONP]\itemsep0pt %change this amount as desired
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
\end{acronym}
\section{Foo}
\ac{JSON} and \ac{JSONP}.
\section{Bar}
\ac{REST}.
\end{document}
решение2
Среда, которую нужно пропатчить, называется AC@deflist
, и мы хотим ее добавить \setlength{\itemsep}{0pt}
.
\documentclass{report}
\usepackage[printonlyused,withpage]{acronym}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\AC@deflist}
{\addtolength{\leftmargin}{\labelsep}}
{\addtolength{\leftmargin}{\labelsep}\setlength{\itemsep}{0pt}}
{}{}
\makeatother
\begin{document}
\tableofcontents
\section*{List of Acronyms}
\begin{acronym}[JSONP]
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
\end{acronym}
\section{Foo}
\ac{JSON} and \ac{JSONP}.
\section{Bar}
\ac{REST}.
\end{document}
решение3
Внутренне acronym
использует description
. Так что вы можете либо (1) переопределить, acronym
используя собственную структуру списка, либо (2) непосредственно перед acronym
переопределением description
. Вот второй подход. Я добавил \itemsep0pt\parsep0pt
к стандартному определению description
.
\documentclass{article}
\usepackage{acronym}
\pagestyle{empty}
\begin{document}
\renewenvironment{description}
{\list{}{\labelwidth0pt\itemindent-\leftmargin
\parsep0pt\itemsep0pt\let\makelabel\descriptionlabel}}
{\endlist}
\begin{acronym}
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
\end{acronym}
\end{document}
ОБНОВЛЯТЬПри perpage
использовании option пакет добавляет дополнительный \\
, вероятно, это ошибка. Поэтому в этом случае нам нужно переопределить способ, которым пакет также выводит элементы:
\documentclass{article}
\usepackage[printonlyused, withpage]{acronym}
\pagestyle{empty}
\makeatletter
\def\AC@@acro#1[#2]#3{%
\ifAC@nolist%
\else%
\ifAC@printonlyused%
\expandafter\ifx\csname acused@#1\endcsname\AC@used%
\item[\protect\AC@hypertarget{#1}{\aclabelfont{#2}}] #3%
\ifAC@withpage%
\expandafter\ifx\csname r@acro:#1\endcsname\relax%
\PackageInfo{acronym}{%
Acronym #1 used in text but not spelled out in
full in text}%
\else%
\dotfill\pageref{acro:#1}% Sputious \\ deleted
\fi
\fi%
\fi%
\else%
\item[\protect\AC@hypertarget{#1}{\aclabelfont{#2}}] #3%
\fi%
\fi%
\begingroup
\def\acroextra##1{}%
\@bsphack
\protected@write\@auxout{}%
{\string\newacro{#1}[\string\AC@hyperlink{#1}{#2}]{#3}}%
\@esphack
\endgroup}
\makeatother
\begin{document}
We use \ac{JSON}, \ac{JSONP}, \ac{REST}.
\renewenvironment{description}
{\list{}{\labelwidth0pt\itemindent-\leftmargin
\parsep0pt\itemsep0pt\let\makelabel\descriptionlabel}}
{\endlist}
\begin{acronym}
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
\end{acronym}
\end{document}
\documentclass{beamer}
\usepackage{graphicx}
\begin{document}
\begin{figure}
\begin{center}
\input{tmp1.tex}
\caption{Enter caption here}
\label{Enter label here}
\end{center}
\end{figure}
\end{document}
решение4
Я знаю, что этому уже несколько лет. Однако у меня была та же проблема, и я нашел более простое решение, которым хочу поделиться.
При определении списка сокращений, как в вопросе:
\begin{acronym}
...
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
...
\end{acronym}
Просто добавьте самую длинную аббревиатуру в квадратных скобках после начального оператора, например:
\begin{acronym}[JSONP]
...
\acro{JSON}{JavaScript Object Notation}
\acro{JSONP}{JavaScript Object Notation with Padding}
\acro{REST}{Representational State Transfer}
...
\end{acronym}
Да, это все, \itemsep0pt
это просто необходимо, если вам нужен индивидуальный межстрочный интервал.