我正在为 LaTeX 编写一个类,我需要使它通用。我想在类中包含一个简单的图像,一个徽标,它将作为一个简单的命令插入到文档中\insertCompanyLogo
。为了避免额外的文件,我在文件中添加了徽标的 PostScript 定义.sty
。
% Include PSTricks package
\usepackage{pstricks}
% Create new command to insert logo
\newcommand{\insertCompanyLogo}{
\psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
\begin{pspicture}(180,180)
\psline(0,0)(180,180) %The actual image is far more complex
\end{pspicture}
}
当我使用 编译文档时,此方法运行良好latex <filename>
。但是,当我尝试使用 时,它失败了pdflatex
。
为了将 PSTricks 与 一起使用pdflatex
,需要进行一些修改。例如,我可以在.sty
文件中添加\usepackage[pdf]{pstricks}
。
然后使用 编译文档pdflatex -shell-escape <filename>
。但这不是通用的,使用常规命令不起作用latex
。
我的问题是:有没有办法定义一个命令来识别文档是否使用pdflatex
或进行编译latex
?这样我就可以在 PSTricks 的包含行中添加几个。因此,使用此类并调用\ifthenelse{}{}{}
的文档可以使用这两个命令进行编译而无需任何修改。.sty
\insertCompanyLogo
我希望我说得足够清楚。一如既往,任何解决方案、提示、建议或解决方法都是非常受欢迎的。
编辑:忘了说了,我认为像xelatex
和asymptote
这样的软件包可以让这一切变得更容易。但我希望它能与标准的 TexLive 或 MiKTeX 安装一起使用,这可能是 95% 的此类用户都会安装的
编辑 2:这个问题被标记为重复。其他问题解决了引擎问题(pdflatex 与 latex)。有用的信息。但他们忽略了 PSTricks 部分,以及如何使其使用灵活且多引擎,这就是我提出这个问题的原因。
编辑 3:最后,我选择了一个完全不同的解决方案。我想要的是放置一个带有宏的徽标,该宏适用于两个引擎,latex
并且pdflatex
。我使用了TiKz
\documentclass{article}
% Include package TiKz
\includepackage{tikz}
% Create new command to insert logo
\newcommand{\insertCompanyLogo}{
\begin{tikzpicture}
\draw[thick,rounded corners=8pt] (0,0) -- (0,2) -- (1,3.25)
-- (2,2) -- (2,0) -- (0,2) -- (2,2) -- (0,0) -- (2,0);
\end{tikzpicture}
}
\begin{document}
\insertCompanyLogo
\end{document}
实际的徽标和环境内容tikzpicture
都是我从 Inkscape 中获取的,并使用扩展程序来导出TiKz
格式。
答案1
这有点棘手,因为不能\ifpdf
与允许 PSTricks 代码一起使用xelatex
。以下示例适用于latex
、、和:pdflatex
xelatex
lualatex
\documentclass{article}
\usepackage{ifpdf}
\providecommand\insertCompanyLogo{}
\newif\ifPSTricks \PSTrickstrue
\usepackage{ifxetex}
\ifpdf
\PSTricksfalse
\ifxetex\PSTrickstrue\fi
\fi
\ifPSTricks
% Include PSTricks package
\usepackage{pstricks}
% Create new command to insert logo
\renewcommand\insertCompanyLogo{%
\psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
\begin{pspicture}(180,180)
\psline(0,0)(180,180) %The actual image is far more complex
\end{pspicture}}
\fi
\begin{document}
PSTricks code is \ifPSTricks\else not \fi possible: \insertCompanyLogo
\end{document}