手工制作的解决方案

手工制作的解决方案

我想为公式制作一个列表,在其中我可以解释字母的含义。
以下代码显示了它应该是什么样子:

{\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

相关内容