我最近发现了一个用 ConTeXt 生成的书籍封面。它看起来很简单,但我想有一些事情需要考虑,比如根据页面高度调整文本大小。
编辑:左边的部分很容易做到:
\documentclass{amsbook}
\usepackage{afterpage}
\usepackage{xcolor}
\definecolor{emerald}{HTML}{0a6666}
\newcommand{\upperbold}[1]{\textbf{\textsf{\MakeUppercase{#1}}}}
\begin{document}
\begin{titlepage}
\color{white}
\pagecolor{emerald}\afterpage{\nopagecolor}
\Huge \noindent\upperbold{Hans Hagen}\bigskip\par
\huge \noindent\upperbold{Context MKIV}
\end{titlepage}
\end{document}
编辑:我的问题没有得到解决展示用 TeX 制作的精美标题页因为提供的代码不是 LaTeX 格式的。
答案1
我认为最终解决这个问题的正确方法是使用textpos
,但使用表格(如前面的答案)或创造性地摆弄 TeX 框当然也可以。
如果您选择后者,诀窍是让 TeX 将框视为独立的,以便进行定位。我通过使它们基本上都是零维度来实现这一点:我将它们全部包裹起来,\vbox to0pt{\vss\rlap{\llap{contents}}\vss}
这样 TeX 就会认为它们的高度和宽度都是 0 点。这样我就可以随意定位它们。然后只需将\hskip
所有\vskip
内容放到位即可。
\documentclass{amsbook}
\usepackage{afterpage}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{xcolor}
\definecolor{emerald}{HTML}{0a6666}
\newcommand{\upperbold}[1]{\textbf{\textsf{\MakeUppercase{#1}}}}
\begin{document}
\begin{titlepage}
\color{white}
\pagecolor{emerald}\afterpage{\nopagecolor}
\noindent\hskip-0.75in\vbox to0pt{%
\vskip2in%
\fontsize{42pt}{42pt}\selectfont%
\noindent\upperbold{Hans Hagen}\bigskip\par%
\vskip1em%
\fontsize{35pt}{35pt}\selectfont%
\noindent\upperbold{Context MKIV}\bigskip\par%
}%
\vskip3.45in%
\hskip0.75\linewidth%
\vbox to0pt{%
\vss%
\llap{%
\rlap{%
\rotatebox{-90}{%
{\fontsize{220pt}{220pt}\selectfont\upperbold{UNITS}}%
}%
}%
}%
\vss%
}%
\end{titlepage}
\end{document}
这将导致以下内容:
现在,我倾向于洒%
在所有台词的结尾加上这句话,生怕自己忘记了真正需要它的地方,而我确实这样做了很多这里缩进的量比实际需要的多,但是却能达到目的。
不过,我还是要再说一遍:我认为研究textpos
是可行的方法。但是由于您似乎想要一些更基本的 TeX/LaTeX,所以我就这么做了。
答案2
事实上,使用luamplib
和仅仅少数定义,你可以直接复制来自 Units 手册的 MetaPost 代码并将其粘贴到您的 LaTeX 文档中。
\documentclass[a4paper]{article}
\usepackage{dejavu-otf}
\usepackage{luamplib}
\mplibsetformat{metafun}
\mplibtextextlabel{enable}
\everymplib{
def StartPage =
begingroup ;
path Page ;
Page := unitsquare xscaled (\mpdim{\paperwidth}) yscaled (\mpdim{\paperheight}) ;
enddef;
def StopPage =
setbounds currentpicture to Page ;
endgroup ;
enddef;
verbatimtex \leavevmode etex;
beginfig(0);
}
\everyendmplib{endfig;}
\usepackage{xcolor}
\definecolor{darkcyan}{rgb}{0,.4,.4}
\newcommand\MPcolor[1]{mplibcolor("#1")}
\newcommand\ssbf{\sffamily\bfseries}
\newcommand\WORD{\MakeUppercase}
\newcommand\documentvariable[1]{\begincsname @#1\endcsname}
\newcommand\setdocumentvariable[1]{\long\expandafter\def\csname @#1\endcsname}
\newbox\MPpagebox
\def\stopMPpage{}
\long\def\startMPpage#1\stopMPpage{%
\clearpage
\begingroup
\setbox\MPpagebox\hpack{%
\begin{mplibcode}%
#1%
\end{mplibcode}}
\hoffset=-1in
\voffset=-1in
\pagewidth=\wd\MPpagebox
\pageheight=\ht\MPpagebox
\advance\pageheight by \dp\MPpagebox % will this box ever have non-zero depth?
\shipout\box\MPpagebox
\endgroup}
\title{Units}
\author{Hans Hagen}
\setdocumentvariable{extra}{ConTeXt MkIV}
\begin{document}
% from "doc/context/sources/general/manuals/units/units-mkiv.tex"
\startMPpage
StartPage ;
fill Page enlarged 2mm withcolor \MPcolor{darkcyan} ;
pickup pencircle scaled 2mm ;
picture p, q, r ;
p := textext("\ssbf\WORD{\documentvariable{title}}") xsized (bbheight Page - 2cm) rotated 90 ;
q := textext("\ssbf\WORD{\documentvariable{author}}") ysized 1cm ;
r := textext("\ssbf\WORD{\documentvariable{extra}}") xsized bbwidth q ;
draw anchored.rt (p, center rightboundary Page shifted (-1cm, 0mm)) withcolor white ;
draw anchored.lft(q, ulcorner Page shifted ( 1cm, -84mm)) withcolor white ; % \MPcolor{darkred} ;
draw anchored.lft(r, ulcorner Page shifted ( 1cm,-108mm)) withcolor white ; % \MPcolor{darkred} ;
StopPage ;
\stopMPpage
\end{document}
答案3
这使得它更接近所需的标题页。(我还看到字体没有恰恰匹配,但也许这样就没问题了。)
\documentclass{amsbook}
\usepackage{afterpage}
\usepackage{xcolor}
\usepackage{graphicx}
\definecolor{emerald}{HTML}{0a6666}
\newcommand{\upperbold}[1]{\textbf{\textsf{\MakeUppercase{#1}}}}
\begin{document}
\begin{titlepage}
\color{white}%
\pagecolor{emerald}\afterpage{\nopagecolor}%
\hspace*{-3cm}\begin{tabular}{lp{4cm}c}
\begin{tabular}{l}
\scalebox{3}{\upperbold{Hans Hagen}}\\[2cm]
\scalebox{2}{\upperbold{Context MKIV}}\\[8cm]
\end{tabular} & &
\rotatebox[origin=c]{90}{\scalebox{18}{\upperbold{Units}}}
\end{tabular}
\end{titlepage}
\end{document}
您可以根据需要调整距离和比例因子。