我在尝试使用 latex 中的 \import 命令时遇到了这个问题。我有嵌套文档,该文档正在 GitLab 管道上编译。我的配置也使用子模块。请查看错误消息图像文件。
我在 GitLab 上的目录结构如下:
我的分支(SP2)
一些与项目相关的文件
doc-operation-handook.tex 主 tex 文件(包含
\input{sub_system_main.tex}
)gitlab 配置文件
sub_system_main.tex(特定于此存储库的管道配置。此文件正在测试阶段使用。)
SP1_BL1子模块目录
sub_system_main.tex 文件(特定于此存储库的管道配置。此文件与问题无关,请忽略它。)
SYSTEM 目录
- system_main.tex(包含
\import{SYSTEM/}{system_section_1.tex}
) - 系统部分1.tex
- system_main.tex(包含
AOCS 目录
- aocs_main.tex(包含
\import{AOCS/}{aocs_section_1.tex}
) - aocs_section_1.tex(包含特定部分内容)
- aocs_main.tex(包含
TCR 目录
- tcr_main.tex(包含与上文相同)
- tcr_section_1.tex
- tcr_section_2.tex
TCS 目录
- ... tex 文件
... 目录
我有一个主要的 latex 文件 (doc-operation-handbook),它位于 SP2 存储库下,并且它调用同一目录下的 sub_system_main.tex,如下所示:
\input{sub_system_main.tex}
在 sub_system_main.tex 文件中,我需要再次调用一些其他 .tex 文件子模块 SP1_BL1但这次我使用了\import
LaTeX 命令,如下所示:
\import{SP1_BL1/SYSTEM/}{system_main.tex}
\import{SP1_BL1/TCR/}{tcr_main.tex}
\import{SP1_BL1/OBCS/}{obcs_main.tex}
\import{SP1_BL1/AOCS/}{aocs_main.tex}
\import{SP1_BL1/PCS/}{pcs_main.tex}
\import{SP1_BL1/TCS/}{tcs_main.tex}
我不知道我哪里做错了,但也许我使用的\import
命令完全错误。完成此配置后,当我从 GitLab 运行管道时,它给出了我上面分享的错误。
但是我有一个其他存储库正常工作,它再次使用了 GitLab 的子模块 Future。此存储库与上述存储库之间的唯一区别在于 sub_system_main.tex 文件。在其他存储库中,我使用\import
如下命令:
\import{SP1_BL1/}{sub_system_main.tex}
如您所见,这次我是从另一个存储库(带有子模块)中的子模块 sub_system_main.tex 文件调用的,该文件以打包的方式包含上面列出的每个 latex 文件。但是当我再次尝试像这样使用它时:
\import{SP1_BL1/SYSTEM/}{system_main.tex}
\import{SP1_BL1/TCR/}{tcr_main.tex}
\import{SP1_BL1/OBCS/}{obcs_main.tex}
\import{SP1_BL1/AOCS/}{aocs_main.tex}
\import{SP1_BL1/PCS/}{pcs_main.tex}
\import{SP1_BL1/TCS/}{tcs_main.tex}
它给了我一个错误..
我认为我使用的\import
命令完全错误。如果你们能帮助我解决这个问题,我将不胜感激。
答案1
\import
使用评论中的澄清,似乎您陷入了想要或想要的中间地带\subimport
。
\import {full-path}{file}
\subimport {path-extension}{file}
如果你已经完成
\import{SP1_BL1/SYSTEM/}{system_main.tex}
如果接下来要加载的文件位于同一目录中,则
system_main.tex 文件可以再次使用完整路径
\import{SP1_BL1/SYSTEM/}{system_section_1.tex}
但更明智的做法是使用
\input{system_section_1.tex}
这种重定向正是\input
import.sty 的意义所在。
现在我们假设目录中的文件布局略有不同。
(main dir) document_main.tex
(module dir "MOD") module_main.tex
(sections dir SEC) m_sec_1.tex, m_sec_2.tex
然后主文档文件会说
\import{MOD/}{module_main.tex}
module_main.tex 文件会说
\subimport{SEC/}{m_sec_1.tex}
\subimport{SEC/}{m_sec_2.tex}
并且“sec”文件可以使用\input
或\includegraphics
不指定路径。
答案2
谢谢你的帮助,唐纳德!
我找到了一个类似的解决方案,现在在 GitLab 上运行顺利。我只播放了一些\import
命令\subimport
,最重要的是,我在命令的路径定义开头添加了“../” \includegraphics
。我希望这些定义可以帮助其他人。
有关配置的详细信息(主存储库):
doc-operation-handbook.tex 包含(嵌套配置中的第一个 latex 文件):
\input{sub_system_main.tex}
sub_system_main.tex 包含(嵌套配置中的第二个 latex 文件):
\subimport*{SYSTEM/}{system_main.tex}
\subimport*{OBCS/}{obcs_main.tex}
\subimport*{AOCS/}{aocs_main.tex}
\subimport*{TCR/}{tcr_main.tex}
\subimport*{PCS/}{pcs_main.tex}
\subimport*{TCS/}{tcs_main.tex}
xxxx_main.tex 包含(xxxx 可以是任何子系统名称,嵌套配置中的第三个 latex 文件):
\subimport*{./}{xxxx_section_1.tex}
有关配置的详细信息(子模块存储库):
doc-operation-handbook.tex 包含(嵌套配置中的第一个 latex 文件):
\input{sub_system_main.tex}
sub_system_main.tex 包含(嵌套配置中的第二个 latex 文件,将进入 GitLab 中定义的子模块):
\import*{SP1_BL1/SYSTEM/}{system_main.tex}
\import*{SP1_BL1/TCR/}{tcr_main.tex}
\subimport*{OBCS/}{obcs_main.tex}
\import*{SP1_BL1/AOCS/}{aocs_main.tex}
\import*{SP1_BL1/PCS/}{pcs_main.tex}
\import*{SP1_BL1/TCS/}{tcs_main.tex}
obcs_main.tex 包含(嵌套配置中的第三个 latex 文件):
\subimport*{./}{obcs_section_1.tex}
图像文件应该像这样添加(可以忽略 tcolorbox):
\begin{tcolorbox}
\begin{figure}[H]
\begin{centering}
\includegraphics*[scale=0.5]{../TCR/tcr_images/FOP_Transmitter_switch_over.pdf}\caption{Transmitter Switch Over FOP}
\par\end{centering}
\end{figure}
\end{tcolorbox}