使用列表环境重构杂乱的表格

使用列表环境重构杂乱的表格

我正在用 Latex 写一本书(显然)。实际上是 Xetex。我制作了很多表格,\parbox表格单元格中有 es。最后有很多重复,结果代码看起来很糟糕(很难找到树的内容~)。我隐约相信我已经看到了一些建议,建议使用某种列表环境以及自定义(模块化?)命令和长度来重构代码并使其更精简。这可能吗?那会怎样?

我将十分感激您的帮助。

我的 MWE 写在书里,如下

\documentclass{scrartcl}
\usepackage{fontspec} % for the Swedish chars
\usepackage{booktabs}
\begin{document}
\begin{table}[tb]
  \centering
  \begin{tabular}{@{}lll@{}}
    \toprule
    Lager & Vävnad & Syfte\\
    \midrule
    \parbox[t][][t]{.15\textwidth}{\raggedright\em
      Tunica intima
    } &
    \parbox[t][][t]{.25\textwidth}{\raggedright\em
      Tunt lager av endotelceller på insidan av ett lager av
      epitel- och bindvävsceller. 
    } &
    \parbox[t][][t]{.4\textwidth}{\raggedright\em
      Endotelet har flera viktiga funktioner.
    } \\

    \parbox[t][][t]{.15\textwidth}{\raggedright\em
      Tunica medica 
    } &
    \parbox[t][][t]{.25\textwidth}{\raggedright\em
      Smidig muskelvävnad och bindväv.
    } &
    \parbox[t][][t]{.4\textwidth}{\raggedright\em
      Genom att kontrahera musklerna minskar lumen och blodtrycket
      höjs.
    } \\

    \parbox[t][][t]{.15\textwidth}{\raggedright\em
      Tunica externa 
    } &
    \parbox[t][][t]{.25\textwidth}{\raggedright\em
      Yttre, skyddande bindvävslager.
    } &
    \parbox[t][][t]{.4\textwidth}{\raggedright\em
      Skyddar och håller kärlet i läge.
    } \\
    \bottomrule
  \end{tabular}  
  \caption[Kärlväggarnas tre lager]{De tre lagren som kärlväggarna
    består av.\label{tab:tunica}}
\end{table}
\end{document}

干杯

答案1

LaTeXp{length}为此提供了一个说明符。使用array.sty,您可以通过定义新的列说明符来减少重复代码量:

\documentclass{scrartcl}
\usepackage{fontspec} % for the Swedish chars
\usepackage{array,booktabs,ragged2e}

\newcolumntype{N}[1]{>{\hspace{0pt}\RaggedRight\itshape}p{#1\textwidth}}

\begin{document}
\begin{table}[tb]
  \centering
  \begin{tabular}{@{}N{.15}N{.25}N{.4}@{}}
    \toprule
    Lager & Vävnad & Syfte\\
    \midrule
    Tunica intima
          & Tunt lager av endotelceller på insidan av ett lager av
            epitel- och bindvävsceller. 
                   & Endotelet har flera viktiga funktioner. \\
    Tunica medica
          & Smidig muskelvävnad och bindväv.
                   & Genom att kontrahera musklerna minskar lumen och blodtrycket
                     höjs. \\
    Tunica externa 
          & Yttre, skyddande bindvävslager.
                   & Skyddar och håller kärlet i läge.\\
    \bottomrule
  \end{tabular}  
  \caption[Kärlväggarnas tre lager]{De tre lagren som kärlväggarna
    består av.\label{tab:tunica}}
\end{table}
\end{document}

在此处输入图片描述

答案2

我提出了一个解决方案tabularx。我还使用cellspace包在行之间(自动)添加了一些垂直填充:

\documentclass[11pt]{scrartcl}
\usepackage{fontspec} % for the Swedish chars
\usepackage{polyglossia}
\setmainlanguage{swedish}
\usepackage{fontspec} % for the Swedish chars
\setmainfont{Minion Pro}

\usepackage{array,booktabs,ragged2e, tabularx}
\newcolumntype{L}{>{\RaggedRight\itshape\arraybackslash\hsize=.18\hsize}X}
\newcolumntype{M}{>{\RaggedRight\itshape\arraybackslash\hsize=.32\hsize}X}
\newcolumntype{R}{>{\RaggedRight\itshape\arraybackslash\hsize=.5\hsize}X}
\usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}
\addparagraphcolumntypes{L, M, R}

 \begin{document}

\begin{table}[tb]
  \centering
  \begin{tabularx}{\linewidth}{@{}S{L}S{M}S{R}@{}}
    \toprule
    Lager & Vävnad & Syfte\\
    \midrule
    Tunica intima
          & Tunt lager av endotelceller på insidan av ett lager av
            epitel- och bindvävsceller.
                   & Endotelet har flera viktiga funktioner. \\
    Tunica medica
          & Smidig muskelvävnad och bindväv.
                   & Genom att kontrahera musklerna minskar lumen och blodtrycket
                     höjs. \\
    Tunica externa
          & Yttre, skyddande bindvävslager.
                   & Skyddar och håller kärlet i läge.\\
    \bottomrule
  \end{tabularx}
  \caption[Kärlväggarnas tre lager]{De tre lagren som kärlväggarna
    består av.\label{tab:tunica}}
\end{table}

\end{document} 

在此处输入图片描述

相关内容