调整小页面以填充剩余的垂直空间

调整小页面以填充剩余的垂直空间

我正在尝试使用 minipages 将文档分成三部分。首先,我创建了一个顶部条带,然后我想将文档分成两部分,并使这些部分完全填满页面剩余的垂直间距

我的问题是我必须手动计算第二和第三小页的高度,以便它们填满整个页面。是否可以自动执行此操作,这样如果我更改顶部条带的高度,它们会自动修改?

代码:

% Heavily commented to hopefully undestand what I am doing (Help!)
%

% Start a document with the here given default font size and paper size.
\documentclass[10pt,a4paper]{article}

% Call needed packages
\usepackage[a4paper,margin=0pt]{geometry} % Set the page margins.
\usepackage{lipsum} % To create random text
\usepackage{fontspec}
\usepackage{xcolor}

% Setup the language.
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\hyphenation{Some-long-word}

%Colors used
\definecolor{babyblueeyes}{rgb}{0.63, 0.79, 0.95}
\definecolor{blizzardblue}{rgb}{0.67, 0.9, 0.93}

% Command to check margins
\newcommand\redbox[1]{%
    \setlength\fboxsep{0pt}\fcolorbox{red}{white}{#1}
}

\begin{document}

    %--- TOP STRIP ---%
        \noindent % Delete indentation white space
        \colorbox{babyblueeyes}{% Background color
            \begin{minipage}[c][0.65in]{\textwidth}% Height and width of minipage
                \centering
                \textcolor{black}{\fontsize{14pt}{0pt}%
                \textbf{John Doe Peter}}
                \\ \medskip
                \textcolor{white}{\fontsize{14pt}{0pt}%
                \textbf{Evolving Latex apprentice}}
            \end{minipage}
        }
%
    %--- LEFT STRIP ---%    
    \noindent
    \colorbox{blizzardblue}{% Background color
    \begin{minipage}[t][10in]{0.2\textwidth}% Height and width of minipage
        \vspace{0pt}
        \textcolor{black}{\fontsize{14pt}{0pt}%
            \textbf{Title side strip}}
        \\ \medskip
        \textcolor{white}{\fontsize{14pt}{0pt}%
            \textbf{Text side strip}}
    \end{minipage}% 
    }%
%
    %--- RIGHT PART ---%
    \begin{minipage}[t][8in]{0.75\textwidth}%
        \vspace{0pt}
        \lipsum[1-5]
    \end{minipage}

\end{document}

答案1

我找到了解决方案。感谢用户@KOLEYGR。

所用代码如下。calculateBottomStripHeight 中的 -0.2in 是手动选择的,我猜它是来自 minipage 或 colorbox 中某种内部填充或边距的值,但我无法通过编程将其删除。

\newlength{\availafter}
\newlength{\topstripheight} % Top strip height
\setlength{\topstripheight}{0.65in}
\def\calculateBottomStripHeight{%
    \setlength{\availafter}{%
        \the\dimexpr\textheight-0.2in-\topstripheight-\pagetotal\relax}}

此后,我仅对顶部条带使用 \topstripheight,然后调用 \calculateBottomStripHeight 并使用 \avaliafter 作为其他两个小页面的高度。我已经测试过了,它似乎工作正常。

完整代码:

% Start a document with the here given default font size and paper size.
\documentclass[10pt,a4paper]{article}

% Call needed packages
\usepackage[a4paper,margin=0pt]{geometry} % Set the page margins.
\usepackage{lipsum} % To create random text
\usepackage{fontspec}
\usepackage{xcolor}

% Setup the language.
\usepackage[english]{babel}
\hyphenation{Some-long-word}

%Colors used
\definecolor{babyblueeyes}{rgb}{0.63, 0.79, 0.95}
\definecolor{blizzardblue}{rgb}{0.67, 0.9, 0.93}

% Command to check margins
\newcommand\redbox[1]{%
    \setlength\fboxsep{0pt}\fcolorbox{red}{white}{#1}
}

% Set top strip height and remaining space
% Credits to KOLEYGR
\newlength{\availafter}

\newlength{\topstripheight} % Top strip height
\setlength{\topstripheight}{0.65in}

\def\calculateBottomStripHeight{%
    \setlength{\availafter}{%
        \the\dimexpr\textheight-0.2in-\topstripheight-\pagetotal\relax}}

\begin{document}

    %--- TOP STRIP ---%
        \noindent % Delete indentation white space
        \colorbox{babyblueeyes}{% Background color
            \begin{minipage}[c][\topstripheight]{\textwidth}% Height and width of minipage
                \centering
                \textcolor{black}{\fontsize{14pt}{0pt}%
                \textbf{John Doe Peter}}
                \\ \medskip
                \textcolor{white}{\fontsize{14pt}{0pt}%
                \textbf{Evolving \LaTeX{} apprentice}}
            \end{minipage}
        }
    \calculateBottomStripHeight
    %--- LEFT STRIP ---%    
    \noindent
    \colorbox{blizzardblue}{% Background color
    \begin{minipage}[t][\availafter]{0.2\textwidth}% Height and width of minipage
        \vspace{0pt}
        \textcolor{black}{\fontsize{14pt}{0pt}%
            \textbf{Title side strip} Jesús María y José}
        \\ \medskip
        \textcolor{white}{\fontsize{14pt}{0pt}%
            \textbf{Text side strip}}
    \end{minipage}% 
    }%
%
    %--- RIGHT PART ---%
    \begin{minipage}[t][\availafter]{0.75\textwidth}%
        \vspace{0pt}
        \lipsum[1-5]
    \end{minipage}

\end{document}

相关内容