如何在 LaTeX 中获得多行轮廓/阴影文本?

如何在 LaTeX 中获得多行轮廓/阴影文本?

如何通过轮廓或阴影突出显示多行文本?我找到了一些解决方案(轮廓影子文本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}

在此处输入图片描述

相关内容