如何创建带有阴影的文本?

如何创建带有阴影的文本?

这个问题导致了一个新的方案的出现:
shadowtext

我使用了以下代码:

\documentclass{article}

%\usepackage{pst-all}
\usepackage{pstricks}
\usepackage{pst-3d,pst-text}
\usepackage{soul}

\begin{document}

\pscharpath[
   shadow=true,
   shadowsize=5pt,
   shadowangle=-40,
   shadowcolor=blue,
   fillstyle=solid,
   fillcolor=black,
   linestyle=none,
   linecolor=black,
   linewidth=0pt]{\Huge SHADOW TEXT}

\end{document}

问题是,文本旁边没有出现任何阴影。有没有什么办法可以真正有效地为字符串设置阴影?

答案1

抱歉这么无耻地自我宣传,但我曾经写过一个用于阴影的小包,现在可以使用了在 CTAN;它被称为shadowtext。该包与 pdflatex 一起使用。

有点长的 MWE:

\documentclass{article}
\usepackage{shadowtext}
\usepackage{multicol}
%
\begin{document}
%
\setshadowoffset{1pt}
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\shadowtext{This is a shadowtext}
\end{verbatim}}
\shadowtext{This is a shadowtext}
\end{multicols*}
\end{minipage}
%
\section{Changing the position of the shadow}
%
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\setshadowoffset{2pt}
\shadowtext{This is a shadowtext}
\end{verbatim}}
%
\setshadowoffset{2pt}
\shadowtext{This is a shadowtext}
\end{multicols*}
\end{minipage}
%
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\shadowoffsetx=1pt
\shadowoffsety=4pt
\shadowtext{This is a shadowtext}
\end{verbatim}}
%
\shadowoffsetx=1pt
\shadowoffsety=4pt
\shadowtext{This is a shadowtext}\\
\phantom{}
\end{multicols*}
\end{minipage}
%
\section{Changing the color of the shadow}
%
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\setshadowoffset{2pt}
\setshadowcolor{0.66, 0.66, 1}
\shadowtext{This is a shadowtext}
\end{verbatim}}
%
\setshadowoffset{2pt}
\setshadowcolor{0.66, 0.66, 1}
\shadowtext{This is a shadowtext}\\
\phantom{}
\end{multicols*}
\end{minipage}
%
\section{More examples}
The following code illustrates how to use shadowtext in more interesting settings:
%
\definecolor{navy}{rgb}{0,0,0.5}
%
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\definecolor{navy}{rgb}{0,0,0.5}
\color{navy}
\setshadowoffset{1pt}
\shadowtext{
   \fontsize{16}{16}\selectfont
   Large!}
\end{verbatim}}
%
\color{navy}
\setshadowcolor{0.8, 0.8, 1}
\setshadowoffset{2pt}
\shadowtext{\fontsize{16}{16}\selectfont \textbf{Large!}}\\
\phantom{}\\
\phantom{}
\end{multicols*}
\end{minipage}
%
\color{black}
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\setshadowoffset{1pt}
\color{black}
\shadowtext{%
   \begin{tabular}{|l|l|}
   \hline
   1 & 2 \\
   3 & 4 \\
   \hline
   \end{tabular}
}
\end{verbatim}}
%
\setshadowoffset{1pt}
\shadowtext{%
   \begin{tabular}{|l|l|}
   \hline
   1 & 2 \\
   3 & 4 \\
   \hline
   \end{tabular}
}
\phantom{}\\
\phantom{}\\
\phantom{}\\
\phantom{}\\
\phantom{}\\
\phantom{}
\end{multicols*}
(Notice the percent sign right after the shadowtext command. This is necessary!)
\end{minipage}
%    
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\setshadowoffset{1pt}
\shadowtext{$\sqrt{2\pi}e^{-n}$}
\end{verbatim}}

\setshadowoffset{1pt}
\shadowtext{$\sqrt{2\pi}e^{-n}$}\\
\phantom{}
\end{multicols*}
\end{minipage}
%
\color{black}
%
\begin{minipage}{\textwidth}
\begin{multicols*}{2}
{\footnotesize
\begin{verbatim}
\color{navy}
\setshadowoffset{2pt}
\shadowtext{%
   \fontencoding{T1}%
   \fontfamily{pag}%
   \fontseries{b}%
   \fontsize{32}{32}%
   \selectfont%
   Section \arabic{section}%
}
\end{verbatim}}
%
\color{navy}%
\setshadowoffset{2pt}%
\shadowtext{%
   \fontencoding{T1}%
   \fontfamily{pag}%
   \fontseries{b}%
   \fontsize{32}{32}%
   \selectfont%
   Section \arabic{section}%
}
\phantom{}\\
\phantom{}\\
\phantom{}\\
\phantom{}\\
\end{multicols*}
\end{minipage}
%
\end{document}

在此处输入图片描述

答案2

您的代码无法编译的原因是它使用了 PSTricks 并且您尝试使用 进行编译pdflatex。PSTricks 代码使用无法被 解释的 Postcript 命令,因此您需要使用++pdflatex序列进行 编译。latexdvipsps2pdf

根据你的编辑器,有不同的方法可以做到这一点。由于你使用的是 Mac,我将概述如何在 TeXShop 和 TeXworks 中做到这一点。

特克斯沃克斯

TeXworks 默认不支持编译latex+dvips ,因此您首先需要在其首选项中添加“latex”编译命令。请参阅此问题以了解如何执行此操作:

在 Texworks 0.2.3 中配置 latexmk

完成此操作后,您可以从文档窗口的下拉菜单中选择“latex”而不是“pdfLaTeX”。

或者,你可以

% !TeX program = latex

作为文件的第一行。

TeXShop

在 TeXShop 中,您需要从 Typeset 菜单中选择“TeX and DVI”而不是“pdfTeX”。

或者,你可以

% !TEX TS-program = latex

作为文件的第一行。

答案3

与其他一些答案不同,结果不在框中,因此它可以跨换行符、段落符和分页符工作。

从这个意义上讲,它有点像 Karl 的答案。但与 Karl 的答案不同的是,它可以逐字插入到普通文本中。但是,连字符会丢失。

可设置的选项有:

\setlength\shadowHoffset{.3pt}
\setlength\shadowVoffset{-.2pt}
\def\primarycolor{white}
\def\secondarycolor{black}

以下是 MWE:

\documentclass{article}
\usepackage{stackengine,xcolor}

\newcommand\shadowfy[1]{\expandafter\shadowfypars#1\par\relax\relax}
\long\def\shadowfypars#1\par#2\relax{%
  \ifx#1\relax\else
    \shadowfywords#1 \relax\relax%
  \fi%
  \ifx\relax#2\else\par\shadowfypars#2\relax\fi%
}
\def\shadowfywords#1 #2\relax{%
  \ifx#1\relax\else
    \shadowfyletters#1\relax\relax%
  \fi%
  \ifx\relax#2\else\ \shadowfywords#2\relax\fi%
}
\def\shadowfyletters#1#2\relax{%
  \shadow{#1}%
  \ifx\relax#2\else\shadowfyletters#2\relax\fi}

\newlength\shadowHoffset
\newlength\shadowVoffset
\setlength\shadowHoffset{.3pt}
\setlength\shadowVoffset{-.2pt}
\def\primarycolor{white}
\def\secondarycolor{black}

\def\shadow#1{\kern\shadowHoffset%
  \raisebox{\shadowVoffset}{%
  \stackinset{c}{-\shadowHoffset}{c}{-\shadowVoffset}%
  {\textcolor{\primarycolor}{#1}}{\textcolor{\secondarycolor}{#1}}}%
  \kern-\shadowHoffset}

\begin{document}
\def\mytext{%
Problem is, there doesn't appear any shadow next to the text. Any idea how to 
setup shadows to a string on a way that really works?

And for my second paragraph, the problem is, there doesn't appear any shadow 
next to the text. Any idea how to setup shadows to a string on a way that 
really works?
}%
\shadowfy{\mytext}

\def\primarycolor{black}%
\def\secondarycolor{black!30}%
\setlength\shadowHoffset{.3pt}
\setlength\shadowVoffset{-.3pt}
\shadowfy{\mytext}

\def\shadowVoffset{-1pt}%
And it should line up with text: \shadowfy{\mytext}

\LARGE\sffamily%
\def\primarycolor{blue!70!black}%
\def\secondarycolor{cyan!25}%
\def\shadowHoffset{.5pt}%
\def\shadowVoffset{-.8pt}%
And color: \shadowfy{\mytext}
\end{document}

以下是结果的放大图:

在此处输入图片描述

在这里我演示了换行和段落。

在此处输入图片描述

这是从正常文本到阴影文本的中线过渡,夸张的阴影表明主要基线对齐。

在此处输入图片描述

颜色如下:

在此处输入图片描述

答案4

如果您正在寻找多行阴影文本,另一个选择是使用 textpos 包创建主文本的文本块,然后稍微偏移框以创建“阴影”部分。请注意,需要先创建“灰色”文本,以便黑色文本可以覆盖它。

\documentclass{article}

\usepackage[absolute]{textpos}
\TPGrid{100}{100}

\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{lipsum}

\begin{document}


\begin{textblock}{70}(10.2,4.1)
\Huge{\color{Gray}\lipsum[66]}
\end{textblock}

\begin{textblock}{70}(10,4)
\Huge\lipsum[66]
\end{textblock}

\end{document}

这对于报告等中的多行标题非常有用。

以下是一个例子:例子

相关内容