嵌套时 LaTeX 导入命令出错

嵌套时 LaTeX 导入命令出错

我在尝试使用 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
    • AOCS 目录

      • aocs_main.tex(包含\import{AOCS/}{aocs_section_1.tex}
      • aocs_section_1.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但这次我使用了\importLaTeX 命令,如下所示:

\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}

这种重定向正是\inputimport.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}

相关内容