Zentrieren von Mathematik mit Kommentaren auf der rechten Seite

Zentrieren von Mathematik mit Kommentaren auf der rechten Seite

Ich versuche, eine gather*Umgebung zu haben, in der die mathematischen Gleichungen in ihrem Raum zentriert sind, aber rechts Kommentare stehen, die die Schritte erklären. Wie kann ich das machen? Unten ist ein Code, der die mathematischen Gleichungen in ihrem Raum rechtsbündig ausrichtet. Wie kann ich das stattdessen zentrieren? Ich möchte das machen, ohne alle Gleichheitszeichen auszurichten, da einige der Gleichungen lange rechte Seiten haben, während andere lange linke Seiten haben.

\begin{align*}
y'+Py=Q & \quad\textrm{by \eqref{eq:1}}\\
e^{\int Pdx}(y'+Py)=e^{\int Pdx}Q & \quad\textrm{multiply both sides by }I=J=e^{\int Pdx}\\
(ye^{\int Pdx})'=e^{\int Pdx}Q & \quad\textrm{by \eqref{eq:3}}\\
ye^{\int Pdx}=\int e^{\int Pdx}Q dx + C\\
y=e^{-\int Pdx}\int e^{\int Pdx}Q dx + Ce^{-\int Pdx}\\
\end{align*}

BEARBEITEN:

Ich habe festgestellt, dass Sie hierfür die Array-Umgebung verwenden können, aber die mathematischen Zeilen scheinen sehr nah beieinander zu liegen. Gibt es eine Möglichkeit, das zu beheben?

\begin{displaymath}
\begin{array}{cl}
 y'+Py=Q & \quad\textrm{by \eqref{eq:1}}\\
 e^{\int Pdx}(y'+Py)=e^{\int Pdx}Q & \quad\textrm{multiply both sides by }I=J=e^{\int Pdx}\\
 (ye^{\int Pdx})'=e^{\int Pdx}Q & \quad\textrm{by \eqref{eq:3}}\\
 ye^{\int Pdx}=\int e^{\int Pdx}Q dx + C\\
 y=e^{-\int Pdx}\int e^{\int Pdx}Q dx + Ce^{-\int Pdx}\\
\end{array}
\end{displaymath}

Antwort1

Erzwingen Sie dies \displaystylein der Spalte „Mathematik“ und erweitern Sie den Inhalt, sodass er dem entspricht, was Sie normalerweise für align-ähnliche Umgebungen erhalten würden:

Bildbeschreibung hier eingeben

\documentclass{article}

\usepackage{amsmath,array}
\newcommand{\dx}{\mathrm{d}x}
\newcommand{\eqcomment}[1]{\qquad\textrm{#1}}

\begin{document}

\[
  \renewcommand{\arraystretch}{1.5}
  \begin{array}{ >{\displaystyle}c l }
                    y' + Py = Q                                  & \eqcomment{by (1)} \\
           e^{\int P \dx}(y' + Py) = e^{\int P\dx} Q             & \eqcomment{multiply both sides by $I = J = e^{\int P \dx}$} \\
        (ye^{\int P \dx})' = e^{\int P \dx} Q                    & \eqcomment{by (3)} \\
        ye^{\int P \dx} = \int e^{\int P \dx}Q \dx + C           \\
   y = e^{-\int P \dx}\int e^{\int P \dx}Q \dx + Ce^{-\int P\dx}
  \end{array}
\]

\end{document}

Antwort2

Hier ist eine Implementierung, die die Kommentare misst; wenn es keine Überlappung gibt, zentriert der Code die Gleichungen wie bei gather, andernfalls zentriert er sie im verbleibenden Platz.

Die Toleranz für die Überlappung beträgt 1 em, kann aber auf einen negativen Wert gesetzt werden, falls wir dies für machbar halten.

Wie Sie sehen, würde Ihr Code eine der Gleichungen über den linken Rand hinaus schieben (erstes Beispiel), aber mit einer negativen Überlappung können wir sie passend machen.

Ein weiterer Parameter, der festgelegt werden kann stretch, ist , um einen größeren vertikalen Abstand zu ermöglichen (Standard 1,2, im zweiten Beispiel ist er auf 1,8 festgelegt).

\documentclass{article}
\usepackage{amsmath,xparse,environ,array}

\usepackage{showframe} % just to see the text block borders

\ExplSyntaxOn
\NewEnviron{gathercomment}[1][]
 {
  \keys_set:nn { gathercomment } { #1 }
  \begin{equation*}
  \gathercomment:V \BODY
  \end{equation*}
 }

\keys_define:nn { gathercomment }
 {
  overlap .dim_set:N = \l__gathercomment_overlap_dim,
  stretch .code:n = \renewcommand{\arraystretch}{#1},
  stretch .initial:n = 1.2,
 }

\seq_new:N \l__gathercomment_lines_seq
\seq_new:N \l__gathercomment_arow_seq
\dim_new:N \l__gathercomment_equations_dim
\dim_new:N \l__gathercomment_comments_dim
\box_new:N \l__gathercomment_equation_box
\box_new:N \l__gathercomment_comment_box

\cs_new_protected:Nn \gathercomment:n
 {
  \seq_set_split:Nnn \l__gathercomment_lines_seq { \\ } { #1 }
  \dim_zero:N \l__gathercomment_equations_dim
  \dim_zero:N \l__gathercomment_comments_dim
  \seq_map_function:NN \l__gathercomment_lines_seq \__gathercomment_measure:n
  % compare the widths
  \dim_compare:nTF
   {
    \l__gathercomment_equations_dim + \l__gathercomment_comments_dim + \l__gathercomment_overlap_dim
    >
    0.5\displaywidth
   }
   {% there would be overlap
    \begin{tabular}
     {
      @{}
      >{$\displaystyle}w{c}{\dim_eval:n {\displaywidth-\l__gathercomment_comments_dim - \l__gathercomment_overlap_dim}}<{$}
      @{\hspace{\l__gathercomment_overlap_dim}}
      w{r}{\l__gathercomment_comments_dim}
      @{}
     }
    \seq_use:Nn \l__gathercomment_lines_seq { \\ }
    \end{tabular}
   }
   {% no overlap
    \begin{tabular}
     {
      @{}
      >{$\displaystyle}w{c}{\displaywidth}<{$}
      @{}
      w{r}{0pt}
      @{}
     }
    \seq_use:Nn \l__gathercomment_lines_seq { \\ }
    \end{tabular}
   }
 }
\cs_generate_variant:Nn \gathercomment:n { V }

\cs_new_protected:Nn \__gathercomment_measure:n
 {
  \seq_set_split:Nnn \l__gathercomment_arow_seq { & } { #1 }
  % measure the half widths of the equations
  \hbox_set:Nn \l__gathercomment_equation_box
   { $\displaystyle \seq_item:Nn \l__gathercomment_arow_seq { 1 }$ }
  \dim_set:Nn \l__gathercomment_equations_dim
   {
    \dim_max:nn
     { \l__gathercomment_equations_dim }
     { \box_wd:N \l__gathercomment_equation_box / 2 }
   }
  % measure the widths of the comments
  \hbox_set:Nn \l__gathercomment_comment_box
   { \seq_item:Nn \l__gathercomment_arow_seq { 2 } }
  \dim_set:Nn \l__gathercomment_comments_dim
   {
    \dim_max:nn
     { \l__gathercomment_comments_dim }
     { \box_wd:N \l__gathercomment_comment_box }
   }
 }

\ExplSyntaxOff

\begin{document}

\begin{gathercomment}
y'+Py=Q & by \eqref{eq:1} \\
e^{\int P\,dx}(y'+Py)=e^{\int P\,dx}Q & multiply both sides by $I=J=e^{\int P\,dx}$ \\
(ye^{\int P\,dx})'=e^{\int P\,dx}Q & by \eqref{eq:3} \\
ye^{\int P\,dx}=\int e^{\int Pdx}Q dx + C \\
y=e^{-\int P\,dx}\int e^{\int P\,dx}Q\,dx + Ce^{-\int P\,dx}
\end{gathercomment}

\begin{gathercomment}[stretch=1.8,overlap=-2em]
y'+Py=Q & by \eqref{eq:1} \\
e^{\int P\,dx}(y'+Py)=e^{\int P\,dx}Q & multiply both sides by $I=J=e^{\int P\,dx}$ \\
(ye^{\int P\,dx})'=e^{\int P\,dx}Q & by \eqref{eq:3} \\
ye^{\int P\,dx}=\int e^{\int Pdx}Q dx + C \\
y=e^{-\int P\,dx}\int e^{\int P\,dx}Q\,dx + Ce^{-\int P\,dx}
\end{gathercomment}


\begin{gathercomment}
abc=def & xyz \\
x=y & xx \\
1=2 \\
xxx=xxxxxxx & x
\end{gathercomment}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen