如何自动将不同颜色的标题叠加到其自身上

如何自动将不同颜色的标题叠加到其自身上

我希望能够将一种颜色的标题叠加到不同颜色的相同标题上,以实现不同的效果;如果可能的话,我希望能够自动执行此操作,而无需创建特殊环境。(这很容易做到,例如,pspicture使用两个\rput命令)

考虑

\documentclass{book}
\usepackage{xcolor}
\definecolor{aqua}{RGB}{0, 188, 188}

\begin{document}
\thispagestyle{empty}
\Huge

\begin{center}
\textbf{\color{black}{HOW TO OVERLAY THIS TITLE}}

\textbf{\color{aqua}{HOW TO OVERLAY THIS TITLE}}

\vspace*{45pt}

{\textbf{\color{black}{HOW TO OVERLAY THIS TITLE}}}\\[-30pt]

{\textbf{\color{aqua}{HOW TO OVERLAY THIS TITLE}}}
\end{center}

\vspace*{35pt}

That is, how to do it \underline{\textit{automatically}}.
\end{document}   

得出

在此处输入图片描述

在 MWE 中,我想要将浅绿色标题叠加在黑色标题上——我通过“反复试验”和使用一系列\\[]命令检查来完成此操作,直到我确定这\\[-30pt]似乎可行。

但是,我想知道是否有某种命令可以自动执行此操作而无需调用任何特殊环境如pspicturetikz等?(或者,也许,对于通常的文档环境,使用负垂直跳过的反复试验是(唯一)方法?)

答案1

如果两个版本的尺寸完全相同,此方法即可奏效。否则,您必须分别叠加每个字母。

\documentclass{article}
\usepackage{xcolor}
\definecolor{aqua}{RGB}{0, 188, 188}

\newcommand{\mytitle}[1]% #1 = title
{\bgroup
  \Huge
  \sbox0{\parbox{\columnwidth}{\centering\textbf{\color{black}#1}}}%
  \sbox1{\parbox{\columnwidth}{\centering\textbf{\color{aqua}#1}}}%
  \noindent\usebox0\llap{\raisebox{1pt}{\usebox1}}
\egroup}

\begin{document}
\mytitle{HOW TO OVERLAY THIS TITLE}
\end{document}

演示

答案2

一个简单的方法是让 LaTeX 计算刚刚写入的框的宽度,然后水平跳回,如下所示:

\documentclass{book}
\usepackage{xcolor}
\definecolor{aqua}{RGB}{0, 188, 188}

\newlength{\aqualength}
\newcommand{\aqualay}[1]{%
\bfseries%
\settowidth{\aqualength}{#1}%
\color{black}{#1}%
\hspace{-\aqualength}%
\color{aqua}{#1}%
}

\begin{document}
    \thispagestyle{empty}
    \Large
    \begin{center}      
        \aqualay{HOW TO OVERLAY THIS TITLE}
    \end{center}
\end{document}

结果是: 在此处输入图片描述


使用垂直方法,可以使用负片\baselineskip

\documentclass{book}
\usepackage{xcolor}
\definecolor{aqua}{RGB}{0, 188, 188}

\begin{document}
    \thispagestyle{empty}
    \Large
    
    \begin{center}
        \textbf{\color{black}{HOW TO OVERLAY THIS TITLE}}
        
        \textbf{\color{aqua}{HOW TO OVERLAY THIS TITLE}}
        
        \vspace*{45pt}
        
        {\textbf{\color{black}{HOW TO OVERLAY THIS TITLE}}}\\[-\baselineskip]
        
        {\textbf{\color{aqua}{HOW TO OVERLAY THIS TITLE}}}
    \end{center}
    
    \vspace*{35pt}
    
    That is, how to do it \underline{\textit{automatically}}.
\end{document}   

答案3

该包的另一种变体xcoffins允许精确地连接盒子而无需猜测。

该命令\OverlayTitle{color upper}{color back}{text}{x offset}{y offset}将排版覆盖。

A

\documentclass{book}
\textwidth=6.5in
\usepackage{xcolor}
\definecolor{aqua}{RGB}{0, 188, 188}

\usepackage{xcoffins}
\NewCoffin\upperlayer
\NewCoffin\lowerlayer
\NewCoffin\framex
\newcommand{\OverlayTitle}[5]{% 
\SetHorizontalCoffin\upperlayer{\color{#1}#3}
\SetHorizontalCoffin\lowerlayer{\color{#2}#3}
\SetHorizontalCoffin\framex{}
\JoinCoffins*\framex[l,t]\lowerlayer[l,t]   
\JoinCoffins*\framex[l,t]\upperlayer[l,t](#4,#5)
\TypesetCoffin\framex   
}

\begin{document}
    \thispagestyle{empty}
    \Huge
    
    \OverlayTitle{aqua}{black}{HOW TO OVERLAY THIS TITLE}{-0.5pt}{0.5pt}    
    
    \bigskip
    
    \OverlayTitle{red}{black}{HOW TO OVERLAY THIS TITLE}{1pt}{1pt}  
    
\end{document}   

相关内容