我使用 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}