使用 fbox 在表格中垂直对齐

使用 fbox 在表格中垂直对齐

我在发票模板的单行标题表中垂直对齐内容时遇到问题。目前它看起来像这样: 例子 我必须做什么才能

  1. 将顶部 fbox 与右侧单元格的顶部对齐?
  2. 将底部 fbox 与右侧单元格的底部对齐?

    \documentclass[10pt,a4paper]{article}
    \usepackage[MeX]{polski}
    \usepackage[utf8]{inputenc}
    
    \setlength{\marginparwidth}{0pt}
    \setlength{\parindent}{0pt}
    
    \usepackage[
    top    = 1.50cm,
    bottom = 1.50cm,
    left   = 1.50cm,
    right  = 1.50cm]{geometry}
    
    \usepackage{tabularx}
    
    \pagestyle{empty}
    
    \renewcommand{\familydefault}{\sfdefault}
    
    \newcommand{\datasprzedazy}{3.03.2006}
    \newcommand{\terminplatnosci}{17.03.2006}
    \newcommand{\nrfaktury}{3/2006} 
    \newcommand{\netto}{1000.00} 
    \newcommand{\vat}{220.00}
    \newcommand{\brutto}{1220.00}
    \newcommand{\slownie}{jeden tysiąc dwieście dwadzieścia złotych}
    
    \begin{document}
    
    \renewcommand\arraystretch{1.3}
    \renewcommand\tabcolsep{0pt}
    
    \begin{tabularx}{\linewidth}{ X X }
        \begin{minipage}[t]{0.47\textwidth}
            \fbox
            {
                \parbox[t]{\textwidth}
                {
                    \begin{minipage}[t]{0.5\textwidth}
                        \begin{tabular}[t]{l l }
                        Company Name & Logo\\
                        Address & \\
                        Street & \\
                        Tax ID &\\
                        Other Info
                        \end{tabular}\par\medskip
                    \end{minipage}  
                }
            }
        \end{minipage}
    &
        \begin{minipage}[t]{0.47\textwidth}
            \framebox[\textwidth]{\textbf{Faktura VAT nr \nrfaktury}} \par
            \begin{tabular}{lr}
            Data sprzedaży: & \datasprzedazy \\
            Data wystawienia: & \datasprzedazy
            \end{tabular}
            \framebox[\textwidth]{\textbf{ORYGINAŁ}} \par
         \end{minipage}
    \end{tabularx}
    \end{document}
    

答案1

一些低级 TeX 编程使这项工作变得更容易:我们将左侧框(假设其垂直尺寸最大)设置为\hrule顶部和底部;第一个框没有高度,最后一个框只是为了对称。更重要的是将最后一个框设置为\hrule右侧框,这样可以避免 TeX 考虑最后一个内框的深度。

右侧框设置在 中\vtop to \dp0,因此其垂直尺寸与左侧框相同。然后我们对这两个框进行排版。

\documentclass[10pt,a4paper]{article}
\usepackage[MeX]{polski}
\usepackage[utf8]{inputenc}

\setlength{\parindent}{0pt}

\usepackage[
  top    = 1.50cm,
  bottom = 1.50cm,
  left   = 1.50cm,
  right  = 1.50cm,
]{geometry}

\usepackage{tabularx}

\pagestyle{empty}

\renewcommand{\familydefault}{\sfdefault}

\newcommand{\datasprzedazy}{3.03.2006}
\newcommand{\terminplatnosci}{17.03.2006}
\newcommand{\nrfaktury}{3/2006} 
\newcommand{\netto}{1000.00} 
\newcommand{\vat}{220.00}
\newcommand{\brutto}{1220.00}
\newcommand{\slownie}{jeden tysiąc dwieście dwadzieścia złotych}

\begin{document}

\renewcommand\arraystretch{1.3}
\renewcommand\tabcolsep{0pt}


\setbox0=\vtop{
  \hrule height 0pt
  \hbox{\fbox{%
    \begin{minipage}[t]{0.47\textwidth}
    \begin{tabular}[t]{ l l }
      Company Name & Logo\\
      Address & \\
      Street & \\
      Tax ID &\\
      Other Info
    \end{tabular}
    \end{minipage}%
  }}% end the \fbox and the \hbox
  \hrule height 0pt
  }% end the \vtop

\setbox2=\vtop to \dp0{
  \hrule height 0pt
  \hbox{\framebox[0.47\textwidth]{\textbf{Faktura VAT nr \nrfaktury}}}
  \vfill
  \hbox{\begin{tabular}{lr}
    Data sprzedaży: & \datasprzedazy \\
    Data wystawienia: & \datasprzedazy
  \end{tabular}}
  \vfill
  \hbox{\framebox[0.47\textwidth]{\textbf{ORYGINAŁ}}}
  \hrule height 0pt
  }

\leavevmode\box0\hfill\box2\par
\end{document}

在此处输入图片描述

答案2

当然不是一个强大的解决方案,但如果您的发票模板始终具有您列出的尺寸(无文本换行,额外条目等),那么您可以将右列设置为

\begin{minipage}[t]{0.47\textwidth}
    \vspace{-14.5pt}
    \framebox[\textwidth]{\textbf{Faktura VAT nr \nrfaktury}} \par

    \begin{tabular}{lr}
    Data sprzedaży: & \datasprzedazy \\
    Data wystawienia: & \datasprzedazy
    \end{tabular}

    \vspace{27pt}
    \framebox[\textwidth]{\textbf{ORYGINAŁ}} \par
 \end{minipage}

我会稍微玩一下,看看是否能想出一种方法来自动为您完成此操作。

相关内容