我正在尝试根据需要更改“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}