是否可以使用集成的逐项环境来更改“X”列类型上定义的列宽?

是否可以使用集成的逐项环境来更改“X”列类型上定义的列宽?

这是 Bernard 回答的下一个问题问题 作为解决方案,他提出了新的列类型:

\newcolumntype{J}{>{\arraybackslash
                    \itemize[nosep, leftmargin=*,
                             before={\vspace*{-0.35\baselineskip}}, 
                             after={\vspace*{-0.7\baselineskip}}
                                ]
                       }X<{\enditemize}}

其使用示例为:

\documentclass{article}
\usepackage[utf8]{inputenc} %
\usepackage[a4paper]{geometry}%
\usepackage{enumitem} %
\usepackage{tabularx}

\newcolumntype{J}[1]{>{\arraybackslash
                       \itemize[nosep, leftmargin=*,
                                before={\vspace*{-0.35\baselineskip}},  
                                after={\vspace*{-0.7\baselineskip}}
                                ]
                       }X<{\enditemize}}

\begin{document}
\begin{tabularx}{\linewidth}{| >{\setlength\hsize{0.25\hsize}}J | 
                               >{\setlength\hsize{0.75\hsize}}J |}
    \hline
\item Dequalifizierung und Vertiefung von Arbeitsteilung
\item Automatisierung, insbes. Verlust einfacher Arbeitsplätze
    &    \item Voraussetzung für eine humanorientierte Arbeitsgestaltung
         \item Erweiterung des Aufgabenspektrums und Erhöhung von Qualifikationen \\
    \hline
  \end{tabularx}
\end{document}

这会产生意想不到的结果:

在此处输入图片描述

两列的宽度相同,但我希望它们的比例为 1:3。如何防止如此定义的列类型不遵守

>{\setlength\hsize{0.5\hsize}}X 

例如

\newcolumntype{L}{>{\raggedright\arraybackslash}X}

例如使用如下形式:

>{\setlength\hsize{0.5\hsize}}L 

到目前为止,我解决这个问题的尝试失败了,列宽仍然保持由内部决定(我想)的状态tabularx,即宽度相等。所以我想知道,在J列类型的定义中必须改变什么,才能使改变列的标准方法也X适用于J列。

答案1

与此同时,我整理出了一些解决方案,但并不是我想要的那种方式。使用未使用的enumitem包,我可以更改J列类型的宽度,但不是标准方式:

\documentclass{article}
\usepackage{calc}
\usepackage{tabularx}
%---------------------------------------------------------------%    
\newcolumntype{J}[1]{
    >{\setlength\hsize{#1\hsize}    % <-- added
    \minipage[t]{\hsize+2\tabcolsep}% <-- added
    \arraybackslash%
    \setlength{\leftmargini}%
            {\widthof{\labelitemi}+\labelsep}% less list indent
    \itemize%
        \addtolength{\rightskip}{0pt + 10pt}% for ragged right
        \setlength{\itemsep}{-\parsep}%
        \setlength\labelsep{1ex}%
        \setlength{\listparindent}{3em}
    }X<{\@finalstrut\@arstrutbox\enditemize\endminipage
        }%
                    }
\makeatother
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
%---------------------------------------------------------------%
\renewcommand\arraystretch{1.5}
\usepackage{geometry}

\begin{document}
table with column type \verb+J+:\\
\begin{tabularx}{\textwidth}{| J{0.25} | J{0.75} |}
    \hline
\item   short tex in the first column
    &   \item   long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long tex in the second column  \\
    \hline
  \end{tabularx}

table with column type \verb+L+:\\
    \begin{tabularx}{\textwidth}{|>{\setlength\hsize{0.25\hsize}}L |
                                  >{\setlength\hsize{0.75\hsize}}L |}
    \hline
short tex in the first column
    &   long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long, long tex in the second column  \\
    \hline
    \end{tabularx}
\end{document}

这使:

在此处输入图片描述

该解决方案的缺点:

  • 没有标准方法来确定柱子的配比tabularx
  • 的比例系数\hsize必须小于一,并且它们的总和应该为一(否则列宽和\hline宽度之间会出现差异。

所以我仍在寻找更好的解决方案。

相关内容