我希望表格中两个项目之间的空白处用点填充。请考虑下图来了解这个想法。
到目前为止,我尝试按照以下顺序实现此输出。
%!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
这里有两个选项:
手动使用箱子长度计算:
\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}
用白色背景框的条目覆盖
\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}
以下是两者的输出: