Ich verwende derzeit enumitem und habe in einem Dokument eine Umgebung für meine Listen erstellt. Diese sieht wie folgt aus:
\newenvironment{alternativas}[1][0]
{
\begin{enumerate}[label={\Alph*)}, itemsep=#1cm, topsep = 0.5cm, wide=0pt,labelwidth=.5cm,leftmargin=!]
}
{
\end{enumerate}
}
(obwohl ich nicht glaube, dass es für die Frage so wichtig ist)
und ich habe nach einer Möglichkeit gesucht, itemsep automatisch anzupassen, um zwischen allen Elementen den gleichen Abstand zu haben. Das ist, was ichnichtwill passieren:
Da der Bruch mehr Höhe verwendet, unterscheidet sich der Abstand zwischen ABC vom Abstand zwischen CDE und das sieht für mich seltsam aus. Meine aktuelle Lösung besteht darin, den optionalen Parameter in der Umgebung zu verwenden, um den Parameter itemsep manuell anzupassen und ihn so aussehen zu lassen:
Die manuelle Anpassung ist jedoch langsam und ich brauche einige weniger erfahrene Leute, um diese Umgebung zu nutzen. Gibt es eine Möglichkeit, itemsep automatisch auf den größten Abstand zwischen den Elementen einzustellen? Ich habe lange gesucht und konnte es nicht finden (vielleicht hat mein schlechtes Englisch nicht geholfen). Danke!
Antwort1
Meine vorgeschlagene Lösung besteht darin, die Höhe und Tiefe jedes Elements zu messen, um die maximale Höhe und Tiefe zu ermitteln. Bei Bedarf wird der Grundliniensprung auf die maximale Höhe plus die maximale Tiefe plus 2pt eingestellt.
\documentclass{article}
\usepackage{xparse,enumitem,amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\alternatives}{m}
{
\blaz_alternativas:n { #1 }
}
\seq_new:N \l__blaz_alternativas_seq
\box_new:N \l__blaz_alternativas_item_box
\dim_new:N \l__blaz_alternativas_height_dim
\dim_new:N \l__blaz_alternativas_depth_dim
\cs_new_protected:Nn \blaz_alternativas:n
{
% first populate the sequence of items
\seq_set_split:Nnn \l__blaz_alternativas_seq { \\ } { #1 }
% now measure the heights and depths
\dim_zero:N \l__blaz_alternativas_height_dim
\dim_zero:N \l__blaz_alternativas_depth_dim
\seq_indexed_map_inline:Nn \l__blaz_alternativas_seq
{
% set the box to the current item
\hbox_set:Nn \l__blaz_alternativas_item_box { ##2 }
% measure the height if not the first item
\int_compare:nT { ##1 > 1 }
{
\dim_set:Nn \l__blaz_alternativas_height_dim
{
\dim_max:nn { \l__blaz_alternativas_height_dim }
{ \box_ht:N \l__blaz_alternativas_item_box }
}
}
% measure the depth if not the last item
\int_compare:nT { ##1 < \seq_count:N \l__blaz_alternativas_seq }
{
\dim_set:Nn \l__blaz_alternativas_depth_dim
{
\dim_max:nn { \l__blaz_alternativas_depth_dim }
{ \box_dp:N \l__blaz_alternativas_item_box }
}
}
}
\begin{enumerate}[label={\Alph*)},wide=0pt,labelwidth=.5cm,leftmargin=!,itemsep=0pt]
% set the baselineskip
\skip_set:Nn \baselineskip
{
\dim_max:nn { \baselineskip }
{ \l__blaz_alternativas_height_dim + \l__blaz_alternativas_depth_dim }
+ 2pt
}
% deliver the items
\seq_map_inline:Nn \l__blaz_alternativas_seq { \item ##1 }
\end{enumerate}
}
\ExplSyntaxOff
\begin{document}
\alternatives{ $1$ \\ $2$ \\ $3$ \\ $4$ \\ $5$ }
\alternatives{
$1$ \\
$\dfrac{3}{2}$ \\
$\dfrac{3}{4}$ \\
$4$ \\
$5$
}
\end{document}
Hier ist eine Version, die \hphantom{$-$}
vor jedem Element, das nicht mit beginnt , einfügt $-
, vorausgesetzt, dass mindestens eines mit beginnt.
\documentclass{article}
\usepackage{xparse,enumitem,amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\alternatives}{m}
{
\blaz_alternativas:n { #1 }
}
\seq_new:N \l__blaz_alternativas_seq
\box_new:N \l__blaz_alternativas_item_box
\dim_new:N \l__blaz_alternativas_height_dim
\dim_new:N \l__blaz_alternativas_depth_dim
\cs_new_protected:Nn \blaz_alternativas:n
{
% first populate the sequence of items
\seq_set_split:Nnn \l__blaz_alternativas_seq { \\ } { #1 }
% now measure the heights and depths
\dim_zero:N \l__blaz_alternativas_height_dim
\dim_zero:N \l__blaz_alternativas_depth_dim
\seq_indexed_map_inline:Nn \l__blaz_alternativas_seq
{
% set the box to the current item
\hbox_set:Nn \l__blaz_alternativas_item_box { ##2 }
% measure the height if not the first item
\int_compare:nT { ##1 > 1 }
{
\dim_set:Nn \l__blaz_alternativas_height_dim
{
\dim_max:nn { \l__blaz_alternativas_height_dim }
{ \box_ht:N \l__blaz_alternativas_item_box }
}
}
% measure the depth if not the last item
\int_compare:nT { ##1 < \seq_count:N \l__blaz_alternativas_seq }
{
\dim_set:Nn \l__blaz_alternativas_depth_dim
{
\dim_max:nn { \l__blaz_alternativas_depth_dim }
{ \box_dp:N \l__blaz_alternativas_item_box }
}
}
}
\begin{enumerate}[label={\Alph*)},wide=0pt,labelwidth=.5cm,leftmargin=!,itemsep=0pt]
% set the baselineskip
\skip_set:Nn \baselineskip
{
\dim_max:nn { \baselineskip }
{ \l__blaz_alternativas_height_dim + \l__blaz_alternativas_depth_dim }
+ 2pt
}
% check whether some items start with $-
\cs_set_protected:Nn \__blaz_alternativas_minus:n {##1} % do nothing by default
\seq_map_inline:Nn \l__blaz_alternativas_seq
{
\regex_match:nnT { \A \$\- } { ##1 }
{
\seq_map_break:n
{
\cs_set_eq:NN \__blaz_alternativas_minus:n \__blaz_alternativas_addminus:n
}
}
}
% deliver the items
\seq_map_inline:Nn \l__blaz_alternativas_seq { \item \__blaz_alternativas_minus:n {##1} }
\end{enumerate}
}
\cs_new_protected:Nn \__blaz_alternativas_addminus:n
{
\regex_match:nnF { \A \$\- } { #1 } { \hphantom{$-$} } #1
}
\ExplSyntaxOff
\begin{document}
\alternatives{ $1$ \\ $2$ \\ $3$ \\ $4$ \\ $5$ }
\alternatives{
$-1$ \\
$-\dfrac{3}{2}$ \\
$\dfrac{3}{4}$ \\
$4$ \\
$5$
}
\end{document}
Antwort2
Hier ist ein ganz anderer Ansatz, der auf einer Tabelle basiert. Ich habe eine leicht angepasste Version desautomatische Tabellenzeilennummerierung in Kombination mit dem cellspace
Paket für den Abstand um die Einträge. Da ich die Spalte rechtsbündig ausgerichtet habe, scheint dies auch das Problem zu lösenIhre Folgefrage:
\documentclass{article}
\usepackage[column=0]{cellspace}
\setlength\cellspacetoplimit{6pt}
\setlength\cellspacebottomlimit{\cellspacetoplimit}
\usepackage{array,etoolbox}
\preto\tabular{\setcounter{magicrownumbers}{0}}
\newcounter{magicrownumbers}
\newcommand\rownumber{\stepcounter{magicrownumbers}\Alph{magicrownumbers}}
\usepackage{amsmath}
\newenvironment{myalternatives}[1][0]
{\begin{tabular}{@{\makebox[3em][r]{\rownumber)~}} >{$}0r<{$}}}
{\end{tabular}}
\begin{document}
\begin{myalternatives}
1 \\
\dfrac{3}{2} \\
\dfrac{3}{4} \\
4 \\
5 \\
-6\\
\end{myalternatives}
\end{document}