Determine o comprimento do restante de uma linha de exibição matemática para linhas múltiplas

Determine o comprimento do restante de uma linha de exibição matemática para linhas múltiplas
\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\[
  \text{beginning}\land
  \begin{multlined}[t][\linewidth]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2]
\end{document}

rendimentos

saída

O que dizer em vez do argumento \linewidthtal que a segunda linha matemática (uma substituição entre colchetes) esteja alinhada à direita da margem direita do texto, em vez de ir além dela? Ou seja, como calculamos “o comprimento do resto da linha até a margem direita”?

(Como você pode imaginar, esta é uma versão simplificada de um exemplo maior da vida real, portanto, para este mesmo MWE, não sugira o uso, multline*porque em meu exemplo maior, esse material está aninhado dentro de outro ambiente matemático de bloco.)

Responder1

Você pode usar o linegoalpacote (não que esteja livre de bugs, mas para um único aplicativo deve estar OK).

\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{linegoal}
\usepackage{lipsum}

\begin{document}
\lipsum[1][1-3]
\[
  \text{beginning}\land
  \begin{multlined}[t][\linegoal]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2][1-3]
\[
  \text{beginning}\land
  \begin{multlined}[t][0.95\linegoal]
   (\text{extremely long and boring junk occupying lots of space})\\\relax
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[3][1-3]

\end{document}

No segundo caso reduzi a largura desejada para evitar a compressão do espaço ao redor \lande ainda obter uma centralização visível (mas sem desperdiçar muito espaço).

insira a descrição da imagem aqui

Responder2

Você coloca o multilinedambiente no meio da linha, então, para não deixar que ele se sobreponha à margem direita, ele deve ser mais curto do que \linewidtha parte que você adicionou antes dele.

Já que mathtoolscarrega o calcpacote, você pode usar a macro \widthofque fornece a largura do texto arbitrário. Usando isso, você pode subtrair da \linewidthlargura o material que você adiciona antes do multilinedambiente (a desvantagem é que você precisa digitar esse material duas vezes, então não tenho certeza se isso é viável em sua configuração):

\documentclass{article}
\pagestyle{empty}
\usepackage{mathtools}
\usepackage{lipsum}

\begin{document}
\lipsum[1]
\[
  \text{beginning} \land
  \begin{multlined}[t][\linewidth-\widthof{$\text{beginning} \land$}]
   (\text{extremely long and boring junk occupying lots of space}) \\
   [\text{a variable substitution in brackets}]
 \end{multlined}
\]
\lipsum[2]
\end{document}

insira a descrição da imagem aqui

informação relacionada