Evite quebra de página para multicols

Evite quebra de página para multicols

Estou tentando adicionar uma história de usuário Scrum a um arquivo latex, mas a quebra de página no final da página interrompe o fluxo. Por exemplo, estou tentando alcançar: insira a descrição da imagem aqui

Porém, quando as colunas chegam a uma quebra de página, elas ficam distorcidas e ficam assim:insira a descrição da imagem aqui

Isto é basicamente o que tenho no meu arquivo latex:

\begin{multicols}{2}
[
\textbf{Priority:} \textit{5}\hfill \textbf{Size Estimate:} \textit{2}
\linebreak As a \textit{developer}, I want to \textit{implement a basic local database with a single table} in order to \textit{have a basis for storing more information and expanding it at a later point}.
]
\textbf{Set of Tasks}
\begin{itemize}
    \item Research the setup process for a local database.
    \item Create database.
    \item Add restrictions to the database.
    \item Add new entry in the form of a table.
\end{itemize}

\columnbreak

\textbf{Acceptance Criteria}
\begin{itemize}
    \itemsep0em 
    \item Test the functionality of the table.
    \item Test restrictions concerning password, access and privileges.
    \item Successful queries to the table with simple INSERT, SELECT, UPDATE and DELETE operations.
\end{itemize}
\end{multicols}

Tentei contornar isso criando uma tabela, mas as tabelas parecem não aceitar seções discriminadas. Existe alguma maneira de contornar esta quebra de página ou qualquer outra solução para este problema? Qualquer ajuda seria muito apreciada!

Responder1

Você realmente não pode ter as duas coisas. De certa forma, você está usando mal o multicol (que tenta equilibrar o material e adiciona quebras de página, se necessário, enquanto o que você parece querer é uma "tabela" de duas colunas com "tarefas" à esquerda e "critérios" à direita.

Para conseguir isso, você força explicitamente uma quebra de coluna entre os dois. Mas para que isso funcione, todo o seu material precisa caber no espaço restante da página, em particular deve haver espaço suficiente para caber totalmente o material da tarefa na primeira coluna.

Como não é o caso, o \columnbreaktermina na segunda coluna e encerra-a. Então você tem que decidir o que realmente quer ver nesse caso

  • corrija manualmente (por exemplo, com \enlargethispageos parâmetros de espaçamento de multicols) ou você precisa de uma solução automatizada (banco de dados)?
  • inicie uma nova página se a história do usuário não couber em uma única página
  • alterar o comportamento da história do usuário quando ela aparece em uma quebra de página (bastante difícil se funcionar automaticamente)

Se você sempre deseja que uma história de usuário esteja sempre em uma única página, você pode colocar a história inteira em uma caixa (minipágina) para que ela não possa quebrar e separar as histórias com algo como

   \vfil\penalty9999\vfilneg

dessa forma, o TeX quebraria antes de uma história se ela não coubesse totalmente (assumindo que as histórias nunca ultrapassam uma página).

Atualizar

Eu provavelmente deveria dizer que, para o seu caso, usar uma tabela seria de fato mais simples, por exemplo

\usepackage{tabularx}
\newcolumntype{Y}{>{\fussy}X}

\noindent\begin{tabularx}{\textwidth}{YY}
\textbf{Set of Tasks}
\begin{itemize}
    \item Research the setup process for a local database.
    \item Create database.
    \item Add restrictions to the database.
    \item Add new entry in the form of a table.
\end{itemize}
&
\textbf{Acceptance Criteria}
\begin{itemize}
    \itemsep0em 
    \item Test the functionality of the table.
    \item Test restrictions concerning password, access and privileges.
    \item Successful queries to the table with simple INSERT, SELECT, UPDATE and DELETE operations.
\end{itemize}
\end{tabularx}

ou uma variação adequada do mesmo (o acima apenas manteria as tarefas e os critérios juntos)

informação relacionada