这个问题导致了一个新的方案的出现:
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
序列进行 编译。latex
dvips
ps2pdf
根据你的编辑器,有不同的方法可以做到这一点。由于你使用的是 Mac,我将概述如何在 TeXShop 和 TeXworks 中做到这一点。
特克斯沃克斯
TeXworks 默认不支持编译latex+dvips
,因此您首先需要在其首选项中添加“latex”编译命令。请参阅此问题以了解如何执行此操作:
完成此操作后,您可以从文档窗口的下拉菜单中选择“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}
这对于报告等中的多行标题非常有用。
以下是一个例子: