它源自我之前的问题:plantuml 的 \DeclareGraphicsRule 不适用于 LuaLaTeX
我有这个MWE:
\documentclass{article}
\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf,.png,.jpg,.tif,.svg,.puml}
\DeclareGraphicsRule{.tif}{png}{.png}%
{%
`convert #1 `dirname #1`/`basename #1 .tif`-tif-converted-to.png %
}
\DeclareGraphicsRule{.svg}{pdf}{.pdf}%
{%
`inkscape -D -z --file=#1 --export-pdf=`dirname #1`/`basename #1 .svg`-svg-converted-to.pdf %
}
\DeclareGraphicsRule{.puml}{png}{.png}%
{%
`pumlconvert #1 %
}
\begin{document}
\includegraphics{пример_свг} %svg example
\includegraphics{пример_тифф} %tiff example
\includegraphics{puml_example}
\includegraphics{диаграмма} %puml example in Russian
\end{document}
pumlconvert
bash
是一个处理文件的小脚本puml
:
#!/bin/bash
PUMLFILE=$1
fname="${PUMLFILE%.*}"
PUMLCONVERTED="$fname-puml-converted-to.png"
create_png_and_rename () {
plantuml -charset UTF-8 $PUMLFILE
mv "$fname.png" "$PUMLCONVERTED"
}
if [ -f "$PUMLCONVERTED" ]
then
echo "$PUMLCONVERTED found."
if [ "$PUMLFILE" -nt "$PUMLCONVERTED" ]
then
echo "$PUMLFILE is newer than $PUMLCONVERTED."
create_png_and_rename
fi
else
create_png_and_rename
echo "$PUMLCONVERTED not found."
fi
一切都完美适用于罗马文件名。Inkscape
也convert
适用于西里尔文件名。但plantuml
如果文件名中有非罗马字母,则无法执行。如果从终端执行,它运行良好,但从终端执行则LuaLaTeX
不行。
可能存在什么问题?为什么其他应用程序可以处理来自 的非罗马文件名LuaLaTeX
,而plantuml
却不能?
答案1
我已添加此字符串来pumlconvert
手动设置语言环境:
LC_CTYPE=en_US.utf8
现在一切都如我所愿了。