无法使用 ifthen 包含带有 \includegraphics 的文件

无法使用 ifthen 包含带有 \includegraphics 的文件

我使用 TexLive 和 TexStudio 作为编译器。我创建了一个自定义类来生成测试。在该类文件中有一个颜色输出选项,因此我可以选择例如如果我想将测试上传到互联网上则使用蓝色,如果我想打印则使用黑色。

test.cls正如我们在下面的类文件中看到的,ifthen包被加载并读取我想要给出的选项。如果里面的选项是,documentclass那么internet文档的主颜色是红色,如果我使用该选项,print那么颜色将设置为黑色。

测试.cls

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{test}[29/7/2019 Test]
\DeclareOption{print}{\newcommand{\coloroutput}{print}}
\DeclareOption{internet}{\newcommand{\coloroutput}{internet}}
\ProcessOptions\relax
\LoadClass[a4paper,11pt]{article}
\RequirePackage[table]{xcolor}
\RequirePackage[explicit]{titlesec}
\RequirePackage{sectsty}
\RequirePackage{tikz,tkz-euclide}
\RequirePackage{enumitem}
\RequirePackage[left=2.00cm, right=2.00cm, top=2.00cm, bottom=3.00cm]{geometry}
\RequirePackage[framemethod=TikZ]{mdframed}
\sectionfont{\centering}

\RequirePackage{ifthen}
\ifthenelse{\equal{\coloroutput}{internet}}
{\def\Col{red}
\def\image{Test.eps}}
{}
\ifthenelse{\equal{\coloroutput}{print}}
{\def\Col{black}
\def\image{Test1.eps}}
{}


\newcommand{\titleStart}[3]{
\begin{center}
{\begin{figure}[h]
\centering
\includegraphics[width=0.4\linewidth]{C:/texlive/texmf-local/tex/latex/local/test/\image}
\end{figure}}\vspace{-5mm}
\rule{14.7cm}{.1mm}\\
\vspace{3mm}
{\bf {\Large Test}}
\end{center}

\begin{center}
{\Large\bf\MakeUppercase{#1}}
\end{center}
\section*{{\huge \textcolor{\Col}{#2}}}
\vspace{-1mm}
\begin{center}
{\large\bf{\MakeUppercase{Test type: #3}}}
\end{center}
\vspace{1cm}}

文档顶部应该加载一个图像,当选项打开时为红色internet,当选项关闭时为黑色print。这些图像分别位于以下C:\texlive\texmf-local\tex\latex\local\test名为 Test.eps 和 Test1.eps 的目录中。该ifthen命令读取documentclass选项并导入红色Test.eps文件用于互联网或黑色文件Test1.eps用于打印,使用\image命令。

错误就出现在这里。我得到了错误File C:/texlive/texmf-local/tex/latex/local/test/Test.eps' not found. \titleStart{Mathematics}{Algebra}{X}

在我切换到之前,Texlive我使用了MikTex,并且该类运行良好,产生了所需的输出。现在避免错误的唯一方法是在命令中指定我想要使用的文件的确切名称,而\includegraphics不是\image

我引用了MWE和我想要使用的两种不同类型的考试。

\documentclass[print]{test}
\usepackage[no-math,cm-default]{fontspec}
\usepackage{xunicode}
\let\hbar\relax
\defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\setmainfont[Mapping=tex-text,Numbers=Lining,Scale=1.0,BoldFont={Times New Roman Bold}]{Times New Roman}
\usepackage[explicit]{titlesec}
\usepackage{graphicx}

\begin{document}
\titleStart{Mathematics}{Algebra}{X}
\end{document}

在此处输入图片描述

在此处输入图片描述

答案1

正如解释的那样如何在‘includegraphics’中使用命令作为路径?\includegraphics命令在解析由多个元素组成的文件名时出现问题。该帖子中也给出了解决方案,尽管有点隐蔽。其思路是编写一个完全展开的路径+文件名字符串并将其用作参数。

代码:

\def\image{yourimage.eps}
\edef\imagepath{/path/to/your/file/\image} % note the \edef, i.e., expanded def
\includegraphics{\imagepath}

或者,如https://tex.stackexchange.com/a/493974/,使用该grffile包也有效。

代码:

\documentclass{article}
\usepackage{graphicx}
\usepackage{grffile}
\begin{document}
\def\image{yourimage.eps}
\includegraphics{/path/to/your/file/\image}
\end{document}

相关内容