xelatex 中的轮廓文本

xelatex 中的轮廓文本

我有这个 MWE,它工作得很好pdflatex

\documentclass[border=3mm]{standalone}
\usepackage{xcolor}
\usepackage[outline]{contour}
\contourlength{1.2pt}

\pagecolor{blue!30}

\begin{document}

\contour{yellow}{\Huge This is a sample text}\par

\end{document}  

我怎样才能做同样的事情xelatex

在此处输入图片描述

答案1

添加包“bidicontour”和“bidi”(按此顺序)并在轮廓宏中添加“bidi”前缀:

\documentclass[border=3mm]{standalone}
\usepackage{xcolor}
\usepackage{bidicontour}
\usepackage{bidi}

\bidicontourlength{1.2pt}
\pagecolor{blue!30}

\begin{document}
\bidicontour{yellow}{\Huge This is a sample text}\par
\end{document} 

答案2

这不是一个解决方案,而是一个变通方法。

看起来,这样contour做在某种程度上是 pdf 独有的,而且显然 XeTeX 不支持这一点。例如和这个

显然,在 XeTeX 中制作轮廓的方法是使用低级 pdf 命令,就像上面链接的答案中显示的命令一样(PS:在我写这篇文章的时候,remco 证明了并非如此。无论如何......)。

我合并了其他几个问题的解决方案,并制作了一个模拟的宏\contour

\fillstroke{<fill color>}{<contour color>}{<stroke width>}{<text>}

其中<fill color><contour color>是有效的颜色名称,<stroke width>是数字,不是一个维度,所以不允许单位,并且<text>是文本(哇)。

以下是宏:

\usepackage{xcolor}
\def\rgbtoarray#1,#2,#3\null{[#1 #2 #3]}
\def\csvtoarray#1{%
  \expandafter\rgbtoarray#1\null%
}
\newcommand{\extractrgb}[2]{%
  \extractcolorspecs{#1}{\model}{\mycolor}%
  \convertcolorspec{\model}{\mycolor}{rgb}{\printcol}%
  \edef#2{\printcol}%
}
\newcommand*{\fillstroke}[4]{%
  \extractrgb{#1}{\colorvector}%
  \extractrgb{#2}{\strokevector}%
  \special{pdf:bcolor \csvtoarray{\colorvector} \csvtoarray{\strokevector}}%
  \special{pdf:literal direct #3 w 2 Tr}%
  #4%
  \special{pdf:ecolor}%
  \special{pdf:literal direct 0 Tr}%
}

唯一需要的包是xcolor

这是你的 MWE:

\documentclass[border=3mm]{standalone}
\usepackage{xcolor}

\pagecolor{blue!30}

\def\rgbtoarray#1,#2,#3\null{[#1 #2 #3]}
\def\csvtoarray#1{%
  \expandafter\rgbtoarray#1\null%
}
\newcommand{\extractrgb}[2]{%
  \extractcolorspecs{#1}{\model}{\mycolor}%
  \convertcolorspec{\model}{\mycolor}{rgb}{\printcol}%
  \edef#2{\printcol}%
}
\newcommand*{\fillstroke}[4]{%
  \extractrgb{#1}{\colorvector}%
  \extractrgb{#2}{\strokevector}%
  \special{pdf:bcolor \csvtoarray{\colorvector} \csvtoarray{\strokevector}}%
  \special{pdf:literal direct #3 w 2 Tr}%
  #4%
  \special{pdf:ecolor}%
  \special{pdf:literal direct 0 Tr}%
}

\begin{document}

\fillstroke{black}{yellow}{0.5}{\Huge This is a sample text}\par

\end{document}

在此处输入图片描述

相关内容