如何通过轮廓或阴影突出显示多行文本?我找到了一些解决方案(轮廓,影子文本,pdf-翻译),但没有一个能够换行多行文本。
一些带轮廓和阴影的文本示例:
概述文本后续行动
看以下寻求解决方案。
阴影文字跟进(仍在寻求最终解决方案)
可能的解决方案 #1
pdflatex
对于像我这样使用(和选项)进行编译的人来说,一个有前途的解决方案-shell-escape
看起来是这个(MWE 改编自 Herbert 的很好的回答,这里实现了一个用户定义的shadetext
命令):
\documentclass[a5paper]{article}
\usepackage[pdf]{pstricks}
\usepackage{pst-text,pst-blur}
\newcommand{\shadetext}[1]{% compile with pdflatex -shell-escape
\begin{postscript}
\pscharpath[
shadow=true,
shadowsize=.1em,
shadowangle=-40,
shadowcolor=gray,
fillstyle=solid,
fillcolor=black,
linestyle=none,
linecolor=black,
linewidth=0pt
]{\parbox{\linewidth}{#1}}
\end{postscript}
}
\begin{document}
\shadetext{Text to be shaded.} Unshaded text.
\end{document}
这种解决方案也具有多行换行和连字符功能,但有一个主要问题(至少对我来说)和一个小问题。大问题是,如果您使用该babel
包(我\usepackage[greek,italian]{babel}
在序言中提到过),它就不会编译,从而阻止您完全使用它。小问题是,如果您混合阴影文本和普通文本,结果远非完美(有时甚至很混乱,这取决于您如何混合阴影文本和普通文本):
可能的解决方案 #2
我使用shadowtext
包和以下代码(改编自这里) 在序言中,自动将阴影(通过新定义的命令\wordshadow
)应用于参数的每个单词(␣
将被空格字符替换):
\makeatletter
\def\wordshadow#1{\expandafter\wordshadow@i#1 \@nil}
\def\wordshadow@i#1 #2\@nil{%
\shadowtext{#1}\␣
\ifx\relax#2\relax\else\wordshadow@i#2\@nil\fi}
\makeatother
但结果虽然比没有包装要好,但并不完美,如下所示:
有什么线索吗?
答案1
该包pdfrender
能够“突出显示”可以跨行甚至跨页的文本(PK 字体除外):
\documentclass[a5paper]{article}
\usepackage{xcolor}
\usepackage{pdfrender}
\usepackage{lipsum}
\begin{document}
\textpdfrender{
TextRenderingMode=FillStroke,
FillColor=red,
LineWidth=.07ex,
}{\lipsum[2]}
\end{document}
答案2
它不能有分页符,并且只能与 一起使用latex->dvips->ps2pdf
。XeTeX 无法处理模糊阴影:
\documentclass[a5paper]{article}
\usepackage{pst-text,pst-blur}
\usepackage{lipsum}
\begin{document}
\pscharpath[shadow,blur]{%
\parbox{\linewidth}{%
\section{foo}
\large\lipsum[2]}}
\end{document}
或pdflatex --shell-escape
用于
\documentclass[a5paper]{article}
\usepackage[pdf]{pstricks}% for pdflatex --shell-escape
\usepackage{pst-text,pst-blur}
\usepackage{lipsum}
\begin{document}
\begin{postscript}% for pdflatex --shell-escape
\pscharpath[shadow,blur]{%
\parbox{\linewidth}{%
\section{foo}
\large\lipsum[2]}}
\end{postscript}% for pdflatex --shell-escape
\end{document}