многоколоночный список с интервалами до и после заголовков разделов

многоколоночный список с интервалами до и после заголовков разделов

Как можно добиться одинакового интервала до и после itemizeокружения внутри multicolsокружения, если список находится сразу после или непосредственно перед началом раздела?

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

Список в Foo2 представляет собой enumitemсписок, а интервалы до и после списка, по-видимому, соответствуют интервалам до и после текста в Foo1.

Список в Foo3 — это тот же enumitemсписок, но заключенный в multicolsокружение. Слишком много вертикального пространства до и после двухколоночного списка.

Список в Foo4 такой же, как Foo3, за исключением того, \multicolsepчто установлен на 0pt. Пространство перед ним все еще слишком много, но не так плохо, а после списка теперь слишком мало места.

Как это исправить, чтобы интервал был одинаковым?

Вот код:

\documentclass{article}
\usepackage{calc}
\usepackage[vmargin=1em,hmargin=0.25in+1em,papersize={2in,2.7in}]{geometry}

\usepackage{titlesec}
\titleformat{\section}[block]{\normalfont\large\scshape}{}{0pt}{}[\titlerule]
\titlespacing*{\section}{-0.25in}{*0.25}{*0.25}[-0.25in]

\usepackage{multicol}
\usepackage{enumitem}
\SetEnumitemKey{twocol}{
  before=\raggedcolumns\begin{multicols}{2},
  after=\end{multicols},
}
\SetEnumitemKey{twocol0}{
  before=\raggedcolumns\setlength{\multicolsep}{0pt}\begin{multicols}{2},
  after=\end{multicols},
}
\setlist[itemize]{leftmargin=*,nosep,}

\begin{document}%
\section{Foo1}Aj%
\section{Foo2}\begin{itemize}\item{}Aj\end{itemize}%
\section{Foo3}\begin{itemize}[twocol,]\item{}Aj\item{}Aj\end{itemize}%
\section{Foo4}\begin{itemize}[twocol0,]\item{}Aj\item{}Aj\end{itemize}%
\section{Foo5}Aj%
\end{document}

Версии:

  • multicol 2014/08/24 v1.8g multicolumn formatting (FMi)
  • enumitem 2011/09/28 v3.5.2 Customized lists

решение1

Если вам нужна multicolumnтолько онлайн- itemize среда, я предлагаю другой подход, основанный на shortlstпакете. Вы найдете его на CTAN, но его нет ни в одном дистрибутиве по причинам лицензирования.

Я определяю tabitemizeсреду для столбцово-отображаемых элементов; количество столбцов контролируется ключом nc(по умолчанию 3). Я думаю, что следующий код дает то, что вы хотите:

\documentclass{article}
\usepackage{calc}
\usepackage[vmargin=1em,hmargin=0.25in+1em,papersize={2in,2.7in}]{geometry}

\usepackage{titlesec}
\titleformat{\section}[block]{\normalfont\large\scshape}{}{0pt}{}[\titlerule]
\titlespacing*{\section}{-0.25in}{*0.25}{*0.25}[-0.25in]

\usepackage{multicol}
\usepackage[inline]{enumitem}
\SetEnumitemKey{twocol}{
  before=\raggedcolumns\begin{multicols}{2},
  after=\end{multicols},
}
\SetEnumitemKey{twocol0}{
  before=\raggedcolumns\setlength{\multicolsep}{0pt}\begin{multicols}{2},
  after=\end{multicols},
}
\setlist[itemize]{leftmargin=*,nosep,}


    \usepackage{shortlst, xkeyval}

    \makeatletter
    \newcounter{ncol}
    \define@key{mcl}{nc}[3]{\setcounter{ncol}{#1}}%% 3 columns by default
    \newenvironment{tabitemize}[1][]{%
    \setkeys{mcl}{nc,#1}
    \settowidth{\labelwidth}{\textbullet}
    \setlength{\leftmargini}{\dimexpr\labelwidth+\labelsep\relax}%[1][3]
    \setlength{\shortitemwidth}{\dimexpr\linewidth/\value{ncol}-\labelwidth-2\labelsep\relax}%
          \begin{shortitemize}}%
    {\end{shortitemize}
     \vspace*{\dimexpr-\topsep-\partopsep\relax
     }%

\begin{document}%

\section{Foo1}Aj%
\section{Foo2}\begin{itemize}\item{}Aj\end{itemize}%
\section{Foo3}\begin{tabitemize}[nc = 2]\item{}Aj\item{}Aj\end{tabitemize}%
\section{Foo4}\begin{tabitemize}[nc = 2]\item{}Aj\item{}Aj\end{tabitemize}%
\section{Foo5}Aj%

\end{document} 

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

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