我如何为这个自己的对齐环境定义一个数字参数?

我如何为这个自己的对齐环境定义一个数字参数?

我正在尝试根据需要更改“0.5”。如果此命令可以有默认值 0.5,那就太完美了。

不幸的是,用“align”环境来创建新的环境似乎非常困难。

\def\blockbegin#1\blockend{
\begin{varwidth}[t]{0.5\textwidth} 
\begin{align*} #1
\end{align*}
\end{varwidth}~\hfill}

修改:我仍然不满意,因为有些重复的事情我想自动化。这是我的应用程序。它只是在两列中显示数学作业。

我怎样才能将右边的框向上移动/垂直对齐到顶部?

\documentclass[12pt,ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{amsmath,varwidth}

\newenvironment{block}[1][0.5]
{\varwidth{#1\textwidth} \csname align*\endcsname}
{\endalign\endvarwidth \hfill}

\newcommand{\void}{\vspace{3ex}
\rule[0cm]{\textwidth}{0.4pt}\\}

\begin{document}

2.b) Berechnen Sie die Fläche, die der Graph von $f$ mit der x-Achse im I. Quadranten einschließt.\\ \\
This is how it's done:\\ % can I include the `\\` in the FIRST ’block’-command
\begin{block}
 A(u) &= \int_{0}^{u} (f(x)) \cdot dx\\
 &= \int_{0}^{u} (3xe^{-x}) \cdot dx\\
 &= \Big[-3(x+1)e^{-x} \Big]_{0}^{u}\\
 &= \Big(-3(u+1)e^{-u} \Big) - \Big(-3(0+1)e^{-0} \Big)\\
 &= \Big( \frac{-3(u+1)}{e^u}  \Big) - \Big(-3 \cdot 1 \Big)\\
 &= \frac{-3(u+1)}{e^u} + 3 
 \end{block}
 \begin{block}
 A =& \lim\limits_{u \to \infty} \Big(A(u)\Big)\\
 =& \lim\limits_{u \to \infty} \Big(\frac{-3(u+1)}{e^u} + 3 \Big)\\ \\
 =& 3
\end{block}
\void % Can I include this at the end of the last ’block’

Here it goes..

\end{document}

在此处输入图片描述

我考虑了一下,这是我实际使用的结构:

\newcommand{\exsection}[3]
{
 #1:\\
 \begin{block}
  #2
 \end{block}
 \hfill
 \begin{block}
  #3
 \end{block}
 \void
}
here it goes..

答案1

我不确定这样做的目的是什么,但它是这样的:

\documentclass{article}
\usepackage{amsmath,varwidth}

\newenvironment{block}[1][0.5]
 {\varwidth{#1\textwidth}\csname align*\endcsname}
 {\endalign\endvarwidth}

\begin{document}

\fbox{xxx
\begin{block}[.25]
a & b\\
c & d
\end{block}
}

\fbox{xxx
\begin{block}[.5]
a & b\\
c & d
\end{block}
}

\fbox{xxx
\begin{block}
a & b\\
c & d
\end{block}
}

\end{document}

在此处输入图片描述

答案2

也许是这样的?编辑使宽度参数成为可选参数,默认为 0.5。

\documentclass{article}
\usepackage{varwidth,amsmath}
\newcommand\blockbegin[1][0.5]{\def\VWid{#1}\blockbeginX}
\def\blockbeginX#1\blockend{
\begin{varwidth}[t]{\VWid\textwidth} 
\begin{align*} #1
\end{align*}
\end{varwidth}~\hfill}
\begin{document}

xxx

\blockbegin
a & b\\
c & d
\blockend

xxx

\blockbegin[0.25]
a & b\\
c & d
\blockend

\end{document}

在此处输入图片描述

答案3

好吧,让它与可选参数一起工作也没什么大不了的;例如,使用xparse

\documentclass{article}
\usepackage{varwidth,amsmath}
\usepackage{xparse}

\NewDocumentCommand \blockbegin { O{0.5} u{\blockend} }
  {
    \begin{varwidth}[t]{#1\textwidth} 
      \begin{align*}#2\end{align*}
    \end{varwidth}~\hfill
  }



\begin{document}

xxx

\blockbegin[.5]
a & b\\
c & d
\blockend

xxx

\blockbegin[.25]
a & b\\
c & d
\blockend

xxx

\blockbegin
a & b\\
c & d
\blockend

\end{document}

当然,手工制作的纯 LaTeX2e 实现也是可能的。

答案4

这是一个典型的类 TeX 实现,它为 提供了一个可选参数\blockbegin

在此处输入图片描述

\documentclass{article}

\usepackage{varwidth,amsmath}

\makeatletter
\def\blockbegin{\@ifnextchar[\blockbegin@i{\blockbegin@i[0.5]}}
\def\blockbegin@i[#1]#2\blockend{%
  \begin{varwidth}[t]{#1\textwidth} 
    \begin{align*} #2
    \end{align*}
  \end{varwidth}%
}
\makeatother

\begin{document}

xxx

\blockbegin
  a & b\\
  c & d
\blockend

xxx

\blockbegin[.25]
  a & b\\
  c & d
\blockend

\end{document}

相关内容