我想为公式制作一个列表,在其中我可以解释字母的含义。
以下代码显示了它应该是什么样子:
{\renewcommand{\arraystretch}{1.3}\tabcolsep0pt
\begin{tabularx}{\textwidth}{p{8mm} r p{4mm} X}
& ${{L_{{\text{10m}}}}}$ && die erweiterte Lebensdauer bei
90\% Erlebenswahrscheinlichkeit (in~Millionen Umdrehungen) \\
& $L_\mathrm{10m1}$, $L_\mathrm{10m2}$, \dots && die anteilige erweiterte
Lebensdauer bei 90\% Erlebenswahrscheinlichkeit während der Betriebsbedingungen
\mbox{1, 2, \dots} (in~Millionen Umdrehungen) \\
& $U_1$, $U_2$, \ldots && Anteil am Gesamtlebenszyklus während der
Betriebsbedingungen \mbox{1, 2, \dots} (${U_1+U_2+ \ldots+U_n=1}$)
\end{tabularx}}
这个结构的特点如下:
1. 首先有一个 8mm 宽的空列。这实际上是我的数学公式(我使用左对齐公式)
2. 第二列是右对齐样式的公式
3. 4mm 空间,因为\tabcolsep
会设置为零。我设置它,因为我希望描述文本运行到页面边框。4
. 最后是描述
我对这个表格唯一的问题是,它是牢不可破的......
像一个列表环境
\begin{mydescription}
\item[$the formula$] The explnaiton lorem ipsum
\end{mydescription}
看起来并不复杂,但我没有足够的知识来创建它。
所以这就是我需要帮助的地方(它应该与回忆录课程一起用(也许这很重要))
答案1
这是做正确事情的标准列表
\documentclass[german]{article}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{calc}
\newenvironment{mylist}[1]
{\begin{list}{}{%
\renewcommand\makelabel[1]{\hfil##1}%
\settowidth\labelwidth{\makelabel{#1}}%
\setlength\itemindent{0pt}%
\setlength\labelsep{4mm}%
\setlength\leftmargin{\labelwidth+\labelsep+8mm}}}%
{\end{list}}
\begin{document}
\noindent\hrulefill\par
\begin{mylist}{$L_\mathrm{10m1}$, $L_\mathrm{10m2}$, \dots}%% Widest element
\item[$L_{\text{10m}}$]
die erweiterte Lebensdauer bei 90\%
Erlebenswahrscheinlichkeit (in~Millionen Umdrehungen)
\item[$L_\mathrm{10m1}$, $L_\mathrm{10m2}$, \dots]
die anteilige erweiterte Lebensdauer bei 90\%
Erlebenswahrscheinlichkeit während der Betriebsbedingungen
\mbox{1, 2, \dots} (in~Millionen Umdrehungen)
\item[$U_1$, $U_2$, \ldots]
Anteil am Gesamtlebenszyklus während der Betriebsbedingungen
\mbox{1, 2, \dots} (${U_1+U_2+ \ldots+U_n=1}$)
\end{mylist}
\end{document}
导致
答案2
马丁建议采取禁忌,这或许是一个答案。
手工制作的解决方案
\usepackage{environ}
\makeatletter
\newdimen\desclen
\newcommand\@mylist[1]{\setbox0=\vbox{\tabskip=0pt
\let\\\cr
\halign{&##\cr#1\crcr}
\setbox2=\lastbox
\setbox2=\hbox{\unhbox2 \unskip
\setbox4=\lastbox
\unskip\global\setbox1=\lastbox}
\expandafter}\expandafter\desclen\the\wd\@ne
\advance\desclen12mm
\par\addvspace{\topsep}
\begingroup\everycr={\noalign{\kern.3\baselineskip}}\def\\{\unskip\cr}
\kern-.3\baselineskip % one too much!
\halign{\kern8mm##\hfil&
\kern4mm\vtop{
\sloppy\hsize=\dimexpr\hsize-\desclen\relax
\noindent##}\cr
#1\crcr}
\kern-.3\baselineskip % one too much!
\endgroup
\addvspace{\topsep}
}
\newenvironment{mylist}
{\Collect@Body\@mylist\ignorespaces}{\ignorespacesafterend}
\makeatother
您将输入列表作为
\begin{mylist}
$formula$ & description \\
$formula$ & description
\end{mylist}
禁忌版本
带有禁忌的版本应该是
\usepackage{longtable,tabu}
\newenvironment{mylist2}
{\renewcommand{\arraystretch}{1.3}%
\begin{longtabu} to\textwidth{@{}>{\kern8mm}l<{\kern4mm}@{}X@{}}}
{\end{longtabu}}
与之前输入相同
\begin{mylist2}
$formula$ & description \\
$formula$ & description
\end{mylist2}
评论
更喜欢哪个?当然是第二个,但我喜欢“手工制作”的那个,因为它展示了如何使用 计算对齐中的列宽;在 a 中\halign
设置并切掉其最后一行(重要的是它是完整的,因此添加了一个幻像行)。在本例中,此框包含两个并粘合;丢弃第二个框并将全局框寄存器设置为此框,以便我们可以测量它。然后执行第二个,这次知道第二列必须有多宽。\halign
\vbox
\hbox
\halign