Eu quero manter algumas linhas juntas. Então, a página não deve ser quebrada entre elas. Como posso evitar que a página se quebre nesse ponto?

perguntou 18 Jul, 16:50

felipe's gravatar image

felipe
4301
accept rate: 0%

edited 18 Jul, 16:50


Comumente, é necessário que um bloco de material tipografado seja mantido na mesma página; organizar isto se revela surpreendentemente complicado.

O LaTeX fornece um ambiente samepage , que alega fazer este tipo de coisa para você. Ele procede definindo infinitas penalidades para todo tipo de situações de quebra de página; mas em muitas situações em que você deseja evitar uma quebra de página, o samepage não ajuda. Se você estiver tentando continuar a executar o texto juntos, você precisa terminar o parágrafo dentro do ambiente (veja (see Preservando parâmetros de parágrafo). Além disso, se as coisas que você estiver tentando manter juntas inserirem suas próprias sugestões de quebra de página, o samepage não terá poder sobre eles (embora as tentativas de itens de lista — eles sugerem quebras de página entre itens — sejam subvertidas pelo samepage). Naturalmente, se o samepage funcionar , ele será capaz de deixar coisas ultrapassando a margem inferior da página.

Outro truque conveniente é definir todas as coisas relevantes em uma parbox (ou em uma minipage se houver coisas como texto verbatim que não possa ser usado no argumento de uma parbox). A caixa resultante certamente não vai se quebrar entre páginas, mas isso não quer dizer que ela vai fazer o que você quer que ela faça: novamente, a caixa pode ser deixada ultrapassando a margem inferior da página. Por que nenhuma dessas coisas óbvias funciona? — Porque o TeX não consegue decidir entre coisas infinitamente horríveis. O Samepage tornará qualquer possível ponto de quebra “infinitamente ruim” e as caixas nem mesmo oferecem a opção de quebras, mas se a alternativa for deixar alguns centímetros infinitamente ruins de papel em branco na parte inferior da página, o TeX tomará o caminho de menor resistência e não fará nada.

Este problema ainda surge mesmo se você tiver o raggedbottom em vigor: o TeX não percebe o valor daquilo até que ele realmente comece a enviar uma página. Uma abordagem é definir:

\raggedbottom
\addtolength{\topskip}{0pt plus 10pt}

O 10pt dá a dica para a rotina de saída de que a coluna é extensível; isso fará com que o TeX seja mais tolerante com a necessidade de alongar ao construir a página. Se você estiver fazendo isto como uma medida temporária, cancele a alteração no \topskip com:

\addtolength{\topskip}{0pt plus-10pt}

bem como redefinindo o flushbottom. (Perceba que o 10pt nunca aparece realmente, porque fica suplantado quando a página é enviada pela extensibilidade introduzida pelo raggedbottom; contudo, ele poderia muito bem ter um efeito se o flushbottom estivesse em vigor.) Uma alternativa (que deriva de uma sugestão de Knuth no TeXbook) é o pacote needspace ou a classe memoir , que definem um comando needspace cujo argumento diz a ele qual é o espaço necessário. Se o espaço não estiver disponível, a página atual será limpa e o material que precisa ser mantido junto será inserido na nova página. Por exemplo, se 4 linhas de texto precisam ser mantidas juntas, a sequência

\par
\needspace{4\baselineskip}
% the stuff that must stay together

% now stuff we don't mind about

Há ainda outro truque de Knuth que é útil se você tiver uma sequência de pequenos blocos de texto que precisam, individualmente, serem mantidos em sua própria página. Insira o comando \filbreak antes de cada pequeno bloco, e o efeito é alcançado. A técnica pode ser usada no caso de sequências de seções no estilo LaTeX incorporando \filbreak na definição de um comando (como em Adaptar comandos existentes). Um patch simples e eficaz seria:

\let\oldsubsubsection=\subsubsection
\renewcommand{\subsubsection}{%
  \filbreak
  \oldsubsubsection
}

Embora o truque funcione para sequências consecutivas de blocos, é um pouco complicado sair dessas sequências, a menos que a sequência seja interrompida por uma quebra de página forçada (tal como clearpage, que pode ser introduzida por um comando chapter , ou o fim do documento). Se a sequência não for interrompida, o último bloco provavelmente será forçado para uma nova página, mesmo que isso não seja necessário. Aqueles que estiverem dispostos a aceitar que nem tudo pode ser realizado de forma totalmente automática, o caminho a percorrer é compor o documento e verificar as coisas que podem dar problema. Em um cenário assim (que tem o respaldo da autoridade de Knuth, desde que se acredite nas poucas palavras que ele diz sobre o assunto no TeXbook) pode-se decidir, caso a caso, como lidar com os problemas na última etapa de revisão. Nesse estágio, você pode alterar manualmente a quebra de página, usando tanto o pagebreak quanto o clearpage, ou colocar um comando nopagebreak para suprimir as quebras infelizes. Além disso, você pode fazer pequenos ajustes na geometria da página, usando o enlargethispage. Supondo que você tenha uma linha ou duas que se desviem: emita o comando enlargethispage{2baselineskip} e duas linhas serão adicionadas à página que você estiver compondo. Se isso parece impossivelmente horrível ou inteiramente aceitável depende do contexto do documento, mas o comando continua sendo um item útil no arsenal.

Observe que o pagebreak e o nopagebreakaceitam um argumento numérico opcional para ajustar a maneira com que o comando deve ser interpretado. Assim, o comando pagebreak[0] ‘sugere’ que uma quebra de página pode valer a pena, enquanto pagebreak[4] ‘exige’ uma quebra de página. Similarmente, nopagebreak[0] dá uma sugestão, enquanto nopagebreak[4] é uma exigência. Nos dois comandos, o valor padrão do argumento opcional é 4.

https://texfaq.org/FAQ-nopagebrk

link

respondeu 19 Jul, 05:49

stefan's gravatar image

stefan ♦♦
614
accept rate: 0%

Sua resposta
Ligar/desligar pré-visualização

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **negrito** or __negrito__
  • link:[texto](http://url.com/ "título")
  • imagem?![alt texto](/path/img.jpg "título")
  • lista numerada: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • comandos HTML também podem ser usados

Palavras-chave:

×4
×3
×2
×1

Questão feita: 18 Jul, 16:50

Vista: 680 vezes

Última atualização: 19 Jul, 05:49

powered by Bitnami OSQA