вертикальное выравнивание текста в окружении multicols

Вопрос или проблема

Я пытаюсь выровнять текст в обоих столбцах по вертикали. Я пытался устранить пробелы/перерывы, о которых я знаю (parskip, отступы до/после раздела). После начала раздела ‘Результаты’ выравнивание нарушается. Используемая мной среда figure, подпись и подсекция, похоже, работают нормально, отступы задаются исключительно с использованием кратных baselineskip. Однако перед новым разделом, похоже, добавляется какое-то пространство.

Минимальный работающий пример:

\documentclass[ 11pt, a4paper]{scrbook} 
\usepackage[top=2cm,bottom=2cm, includehead, headheight=0.5cm]{geometry}
\setkomafont{disposition}{\fontfamily{lmss}\normalfont}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[singlelinecheck=off, font={sf, bf}, labelfont=bf,    
    labelsep=period, margin=0cm,skip=0pt, belowskip=0pt]{caption} 
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{lipsum}

\newenvironment{Figure2col}[1]
  {\par\noindent\minipage[][#1\baselineskip][t]{\linewidth}}
  {\endminipage\par}

\usepackage{multicol}
\setlength{\multicolsep}{0pt plus 0pt minus 0pt}

\RedeclareSectionCommand[
  runin=false,
  afterindent=false,
  beforeskip=0pt,
  afterskip=0pt]{section}
\RedeclareSectionCommand[
  runin=true,
  afterindent=false,
  beforeskip=\baselineskip,
  afterskip=30pt]{subsection}
\RedeclareSectionCommands[
  runin=true,
  beforeskip=0pt,
  afterskip=0pt]{paragraph,subparagraph}

\setkomafont{section}{\centering \Large \bfseries \scshape}
\setkomafont{subsection}{\large \bfseries \scshape}

\setcounter{secnumdepth}{-1}

\begin{document}
\setlength{\parskip}{0pt}

\section{Аннотация}
\lipsum[1-2]

\vspace{0.5cm}

\begin{multicols}{2}
\section{Введение}
    \lipsum[3]
\subsection{Некоторое вводное содержание}
    \lipsum[4-8]
\section{Результаты}
    \lipsum[3-4]
\begin{Figure2col}{12}
    \includegraphics[width=\linewidth]{example-image-a}
\end{Figure2col}
\begin{minipage}[][1\baselineskip][c]{\linewidth}
    \captionof{figure}[Рисунок A]{\textit{Рисунок A}}
\end{minipage}
\subsection{Больше результатов}
    \lipsum[3-5]
\end{multicols}

\end{document}

alignment_1
alignment_2

Я пробовал вставить \nointerlineskip перед \section{Результаты}, но это не помогло. Изменение размера шрифта заголовка секции на \normalfont также не дало результата. В реальном коде я добавляю hrules и baselineskips вокруг раздела, но поскольку это ничего не изменило, я опустил это здесь. Я пытался найти ответы повсюду, но ничего не сработало. Это сводит меня с ума. Любое предложение будет крайне ценным!

Ответ или решение

Проблема с вертикальным выравниванием текста в многоколонном окружении может быть сложной, особенно если применяются значительные настройки пробелов, как в вашем случае. Ваша минимальная рабочая версия (MWE) демонстрирует, что после секции "Results" вы сталкиваетесь с дополнительным пространством, которое нарушает вертикальное выравнивание.

Вот несколько шагов и подходов, которые могут помочь решить вашу проблему:

  1. Устранение дополнительного пробела перед секцией: В вашем случае, скорее всего, причина в настройках пробелов, заданных в \RedeclareSectionCommand. Убедитесь, что у вас в секции "Results" нет дополнительных команд, придающих отступы. В данном случае, вы можете попробовать уменьшить beforeskip для секции или полностью отключить его. Например:

    \RedeclareSectionCommand[
      beforeskip=0pt,  % Установите это значение на 0pt
      afterskip=0pt
    ]{section}
  2. Использование \nointerlineskip: Это решение вы пробовали, однако важно его правильно расположить. Разместите команду \nointerlineskip перед секцией "Results", чтобы устранить нежелательные пробелы. Например:

    \nointerlineskip
    \section{Results}
  3. Проверка настроек multicol: Убедитесь, что вы правильно настроили параметры multicol. Попробуйте установить отступы и пробелы для колонок, чтобы они не мешали отображению:

    \setlength{\columnsep}{0pt}
    \setlength{\multicolsep}{0pt plus 0pt minus 0pt}
  4. *Использование `\vspace{…}**: Если вам все еще не удается добиться нужного выравнивания, попробуйте использовать команду\vspace*{-<размер>}` для устранения лишнего пространства. Например:

    \vspace*{-10pt} % Уберите 10pt (настроите по необходимости)
    \section{Results}
  5. Перепроверка других настроек: Убедитесь, что в других частях вашего документа нет настроек, которые могут мешать вашему выравниванию. Например, проверьте, есть ли в других окружениях пробелы, изменяющие общий отступ.

Пример измененного кода будет выглядеть так:

\documentclass[11pt,a4paper]{scrbook} 
\usepackage[top=2cm,bottom=2cm, includehead, headheight=0.5cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[singlelinecheck=off, font={sf, bf}, labelfont=bf, labelsep=period, margin=0cm,skip=0pt, belowskip=0pt]{caption} 
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{lipsum}
\usepackage{multicol}

\setlength{\columnsep}{0pt}
\setlength{\multicolsep}{0pt plus 0pt minus 0pt}
\setlength{\parskip}{0pt}

\RedeclareSectionCommand[beforeskip=0pt, afterskip=0pt]{section}
\RedeclareSectionCommand[beforeskip=0pt, afterskip=0pt]{subsection}

\begin{document}
\section{Abstract}
\lipsum[1-2]
\vspace{0.5cm}

\begin{multicols}{2}
\section{Introduction}
    \lipsum[3]
\subsection{Some Intro Part}
    \lipsum[4-8]
\nointerlineskip
\section{Results}
    \lipsum[3-4]
    \begin{figure}
        \includegraphics[width=\linewidth]{example-image-a}
        \caption{Figure A}
    \end{figure}
\subsection{More Results}
    \lipsum[3-5]
\end{multicols}

\end{document}

При реализации этих рекомендаций вы, скорее всего, сможете добиться необходимого вертикального выравнивания текста в многоколонной среде. Если у вас останутся вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...