用点填充表格内的空间

用点填充表格内的空间

我希望表格中两个项目之间的空白处用点填充。请考虑下图来了解这个想法。

用点填充的空白

到目前为止,我尝试按照以下顺序实现此输出。

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[10pt]{article}
\usepackage{booktabs}

\begin{document}

\begin{table}[!htbp]

\begin{tabular}{lrrr}
        \toprule
    Anzahl & Behandlungstyp & Einzelpreis & Gesamtpreis\\
        \midrule
    10\dotfill& Manuelle Therapie\dotfill & €32,63\dotfill & €326,30\\
    10\dotfill &Krankengymastik\dotfill &€26,93\dotfill &€269,30\\
        \bottomrule
    \end{tabular}

\end{table}

\end{document}

然而,这会产生不令人满意的结果,因为会留下未点化的间隙。 输出

如何实现像第一张图片中那样没有空白的连续虚线?

答案1

这是一个丑陋的黑客行为

\documentclass[10pt]{article}
\usepackage{booktabs}

\begin{document}

\begin{table}[!htbp]

\begin{tabular}{l@{}r@{}lr}
 \toprule
    Anzahl \quad 
    & \multicolumn{1}{r@{}}{\hspace{1cm}Behandlungstyp}\quad  
    & Einzelpreis  
    & Gesamtpreis\\
 \midrule
    10\dotfill 
    & Manuelle Therapie\dotfill
    &\multicolumn{2}{@{}c}{€32,63\dotfill  €326,30}\\
    %%
    10\dotfill 
    & Krankengymastik\dotfill  
    &\multicolumn{2}{@{}c}{€26,93\dotfill €269,30}\\
 \bottomrule
\end{tabular}    
\end{table}

\end{document}

在此处输入图片描述

对于评论中要求的对齐

\begin{tabular}{lcr@{}r@{}r}
 \toprule
    Anzahl
    &
    & Behandlungstyp  
    & \multicolumn{1}{@{\hspace{1em}}r@{}}{Einzelpreis}
    & \multicolumn{1}{@{\hspace{1em}}r}{Gesamtpreis}\\
 \midrule
    \multicolumn{3}{c@{}}{10\dotfill Manuelle Therapie}
    & \dotfill 32,63
    & \dotfill 326,30\\
    %%
    \multicolumn{3}{c@{}}{10\dotfill Krankengymastik}
    & \dotfill 26,93
    & \dotfill 269,30\\
 \bottomrule
\end{tabular}

在此处输入图片描述

答案2

我相信您只需要带有或位于单元格内的@{}分隔符和 p{}列。\dotfill\hfill

另一方面,由于缺少包,我丢失了 MWE 中的 € 符号fontspec。为了进行比较,我还包含了eurosym更正式的符号包(显示在第三列中)。

平均能量损失

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[10pt]{article}
\usepackage{fontspec} % needed for the € symbol
\usepackage{eurosym} % another way to obtain the € symbol 
\usepackage{booktabs}
\begin{document}
\begin{table}[!htbp]
\begin{tabular}{p{.4\textwidth}@{}p{.2\textwidth}@{}p{.2\textwidth}@{}}
\toprule
Anzahl \hfill Behandlungstyp & \hfill Einzelpreis & \hfill Gesamtpreis\\
\midrule
10\dotfill  Manuelle Therapie & \dotfill\euro32,63 & \dotfill€326,30\\
10\dotfill  Krankengymastik & \dotfill\euro26,93 &\dotfill€269,30\\
\bottomrule
\end{tabular}
\end{table}
\end{document}

答案3

这里有两个选项:

  1. 手动使用箱子长度计算:

    \documentclass{article}
    \usepackage{booktabs}% http://ctan.org/pkg/booktabs
    \newlength{\tmplenA}\newlength{\tmplenB}
    \begin{document}
    
    \begin{tabular}{lrrr}
      \toprule
      Anzahl & Behandlungstyp & Einzelpreis & Gesamtpreis\\
      \midrule
      \settowidth{\tmplenA}{Anzahl}\settowidth{\tmplenB}{10}\addtolength{\tmplenA}{-\tmplenB}%
      10\rlap{\makebox[\dimexpr\tmplenA+2\tabcolsep][l]{\dotfill}} & Manuelle Therapie 
      & \settowidth{\tmplenA}{Einzelpreis}\settowidth{\tmplenB}{€32,63}\addtolength{\tmplenA}{-\tmplenB}%
      \llap{\makebox[\dimexpr\tmplenA+2\tabcolsep][r]{\dotfill}}€32,63 
      & \settowidth{\tmplenA}{Gesamtpreis}\settowidth{\tmplenB}{€326,30}\addtolength{\tmplenA}{-\tmplenB}%
      \llap{\makebox[\dimexpr\tmplenA+2\tabcolsep][r]{\dotfill}}€326,30 \\
      \settowidth{\tmplenA}{Anzahl}\settowidth{\tmplenB}{10}\addtolength{\tmplenA}{-\tmplenB}%
      \settowidth{\tmplenB}{Manuelle Therapie}\addtolength{\tmplenA}{\tmplenB}%
      \settowidth{\tmplenB}{Krankengymastik}\addtolength{\tmplenA}{-\tmplenB}%
      10\rlap{\makebox[\dimexpr\tmplenA+2\tabcolsep][l]{\dotfill}} & Krankengymastik
      & \settowidth{\tmplenA}{Einzelpreis}\settowidth{\tmplenB}{€26,93}\addtolength{\tmplenA}{-\tmplenB}%
      \llap{\makebox[\dimexpr\tmplenA+2\tabcolsep][r]{\dotfill}}€26,93 
      & \settowidth{\tmplenA}{Gesamtpreis}\settowidth{\tmplenB}{€269,30}\addtolength{\tmplenA}{-\tmplenB}%
      \llap{\makebox[\dimexpr\tmplenA+2\tabcolsep][r]{\dotfill}}€269,30\\
      \bottomrule
    \end{tabular}
    
    \end{document}​
    
  2. 用白色背景框的条目覆盖\dotfill整个宽度:tabular

    \documentclass{article}
    \usepackage{booktabs}% http://ctan.org/pkg/booktabs
    \usepackage{xcolor}% http://ctan.org/pkg/xcolor
    \usepackage{array}% http://ctan.org/pkg/array
    \makeatletter
    \newcolumntype{L}{>{\begin{lrbox}{\@tempboxa}}l<{\end{lrbox}\colorbox{white}{\usebox{\@tempboxa}}}}
    \newcolumntype{R}{>{\begin{lrbox}{\@tempboxa}}r<{\end{lrbox}\colorbox{white}{\usebox{\@tempboxa}}}}
    \makeatother
    \newlength{\tmplenA}
    \setlength{\fboxrule}{0pt}\setlength{\fboxsep}{0pt}
    \begin{document}
    
    \settowidth{\tmplenA}{AnzahlManuelleTherapieEinzelpreisGesamtpreis\hspace*{6\tabcolsep}}
    \begin{tabular}{LRRR}
      \toprule
      Anzahl & Behandlungstyp & Einzelpreis & Gesamtpreis\\
      \midrule
      \rlap{\makebox[\tmplenA][l]{\dotfill}}\colorbox{white}{10} & Manuelle Therapie & €32,63 & €326,30 \\
      \rlap{\makebox[\tmplenA][l]{\dotfill}}\colorbox{white}{10} & Krankengymastik & €26,93 & €269,30\\
      \bottomrule
    \end{tabular}
    \end{document}​
    

以下是两者的输出:

在此处输入图片描述

相关内容