![自定义 .sty 包中的 \input{} 命令](https://linux22.com/image/393429/%E8%87%AA%E5%AE%9A%E4%B9%89%20.sty%20%E5%8C%85%E4%B8%AD%E7%9A%84%20%5Cinput%7B%7D%20%E5%91%BD%E4%BB%A4.png)
这是我的设置:
- 两台电脑(一台台式机和一台笔记本电脑)
- 两个 Texmaker 和 MikTex 的安装(完全相同的版本)
我已经创建了自己的包(.sty 文件),并且该包使用外部文件(位于与包相同的目录中)。这些文件是通过 \input{...} 命令添加的
我在两台电脑上都完美地使用了该软件包很长一段时间,但现在笔记本电脑在编译时(使用该软件包的文档)出现错误
LaTeX Error: File 'basic_packages.tex' not found. Type X...
我设法了解发生了什么:
- 桌面将“\input{...}”解释为“去查找文件在包的目录中
- 笔记本电脑寻找文件在文档的目录中。我当然希望包含的文件保留在包中。
这是我的代码(简化)
包裹
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesPackage{sdlibV1}[14/03/2019 custom package]
\newif\if@all\@allfalse
\DeclareOption{all}{\@alltrue}
\ProcessOptions\relax
\input{basic_packages} %<-- this input
%\input{basic_macros} also not useful for the question
\if@all
%stuff, not useful here
\fi
\endinput
基本包.tex
\RequirePackage[table,dvipsnames,named]{xcolor}
\RequirePackage{tikz}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage{siunitx}
\RequirePackage{enumitem}
\RequirePackage{multicol}
\RequirePackage{tabu}
\RequirePackage{makecell}
\RequirePackage{array}
文档
\documentclass{report}
\usepackage{sdlibV1}% <-- package loaded here
\usepackage[margin=1.5cm]{geometry}
\begin{document}
\subfile{calcul_integral}% I've tried removing those, and only using "hello world"
\subfile{algebre_lineaire}
\subfile{equations_differentielles}
\end{document}
文件路径:
文档:\HEIG-VD\Cours\Math2\Notes
sdlibV1.sty 和 basic_packages.text:\HEIG-VD\Notes\LaTex\packages\tex\latex\sdlibV1
(包文件夹已正确配置为包“源”)我还尝试过:
- 检查 pdflatex 的命令
- 使用临时文档(独立的,其中没有任何内容,只有一个“hello world”)
- 使用 \include 命令(根本不起作用)
- 把我包含的所有文件(16 个元素)放入 .sty 文件中,虽然可以工作,但效果非常糟糕
答案1
问题已经解决!
在对包(和/或其中包含的文件)进行更改后,MikTex 控制台中运行以下命令(运行作为管理员)
initexmf -u --admin