Xelatex 在处理 graphviz 代码时,将 RGB 颜色规范之前的井号 (#) 字符加倍。
例如 latex/graphviz 代码:
\digraph [scale=1]{mygraph} {
node [color="#365559"]
a->b
}
得到的 mygraph.dot:
digraph mygraph {
node [color="##365559"]
a->b
}
我该如何克服这个{bug/feature},而不接触shell(例如sed)?
答案1
在包中定义了一个宏,它有三个参数:图形选项、图形文件的名称和内容。在该宏中,这些参数的内容使用命令graphviz
写入文件。.dot
\write
LaTeX 试图避免将#
宏参数内容中的字符视为参数本身,因此字符被重复。如果将#
视为逐字处理,则在当前用例中会更直观一些。但是,您可以使用包将其定义为逐字处理newverbs
(类似于https://tex.stackexchange.com/a/37757) 并在图表代码中使用该宏。
梅威瑟:
\documentclass{article}
\usepackage{newverbs}
\usepackage{graphviz}
\begin{document}
\Verbdef\myhash{#}
\digraph [scale=1]{mygraph} {
node [color="\myhash FF0000"]
a->b
}
\end{document}
结果: