我想用乳胶创建一个封面,其中包含可选字段,以便其他字段根据可选字段是否存在来获取其位置。
\savebox
我找到了使用和的技巧\ht\mybox
,但当框中只有变量时,高度会不一致。高度不能根据变量是文本还是空进行很好的调整,如果是文本,则根据变量有一行或多行进行调整。
这是一个最小的工作示例。通常情况下,“非可选”文本应始终位于页面顶部,但当变量中的文本\texttoprew
发生变化时,它会改变位置,而我原本希望负数\vspace
能够补偿这些变化。知道为什么吗?
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc}
\usepackage{fancyhdr}
\usepackage{geometry}
\makeatletter
\def\texttoprew#1{\def\@texttoprew{#1}}
\def\textbot#1{\def\@textbot{#1}}
\def\maketitle{
\newsavebox{\titbox}
\sbox{\titbox}{%
\begin{minipage}{\textwidth}
\@texttoprew
\end{minipage}
}
\pagestyle{empty}
\newgeometry{left=2cm, right=2cm, top=0in, bottom=0in}
\parskip 0pt
\parindent 0pt
\if \@texttoprew\empty
\else
\usebox{\titbox}
\vspace{-\ht\titbox}
\fi
\@textbot
}
\makeatother
% changing this variable (texttoprew) between empty {} and one or several line text
% changes the position of the text in textbot
\texttoprew{regreg\\ewfewf\\ewfewfwfe\\ewewfqwf\\ewfewf}
\textbot{Not Optional}
\begin{document}
\maketitle
\end{document}
我知道要让文本停留在页面顶部还有其他选择,我的问题出现在更复杂的情况下,这只是一个 MWE。
感谢您的帮助!
答案1
我猜到了原帖作者的意思,显然成功了。
我使用了[t]
op 对齐,minipage
这样\texttoprew
文本就会一直向下增长。因为它在一个框中,所以我\strut
在开头添加了一个,这样它的顶行定位就不会取决于第一行内容的高度(例如xxx
vs )。XXX
但是,顶部对齐意味着minipage
大多数框的垂直尺寸是深度而不是高度。所以我确保垂直位移是它们的组合,就像这样-\dimexpr\ht\titbox+\dp\titbox
。
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[OT1]{fontenc}
\usepackage{fancyhdr}
\usepackage{geometry}
\makeatletter
\def\texttoprew#1{\def\@texttoprew{#1}}
\def\textbot#1{\def\@textbot{#1}}
\def\maketitle{
\newsavebox{\titbox}
\sbox{\titbox}{%
\begin{minipage}[t]{\textwidth}
\strut\@texttoprew
\end{minipage}
}
\pagestyle{empty}
\newgeometry{left=2cm, right=2cm, top=0in, bottom=0in}
\parskip 0pt
\parindent 0pt
\if \@texttoprew\empty
\else
\usebox{\titbox}
\vspace{-\dimexpr\ht\titbox+\dp\titbox}
\fi
\@textbot
}
\makeatother
% changing this variable (texttoprew) between empty {} and one or several line text
% changes the position of the text in textbot
\texttoprew{regreg\\ewfewf\\ewfewfwfe\\ewewfqwf\\ewfewf}
\textbot{Not Optional}
\begin{document}
\maketitle
\end{document}
不确定为什么重叠的线条会有轻微差异。可以手动用 来\vspace
补偿-\dimexpr.95\ht\titbox+\dp\titbox
。