使用 LaTeX 复制 ConTeXt 书籍封面

使用 LaTeX 复制 ConTeXt 书籍封面

我最近发现了一个用 ConTeXt 生成的书籍封面。它看起来很简单,但我想有一些事情需要考虑,比如根据页面高度调整文本大小。

覆盖 在 LaTeX 中怎样实现它?

编辑:左边的部分很容易做到:

\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}

在此处输入图片描述

您可以根据需要调整距离和比例因子。

相关内容