我在路径管理方面遇到问题。让我向您解释一下:
我使用的子文件排列如下:
报告
--Main.tex
--lab1
----Matlab
------CodeLab1.m
----报告
------Report_P1_1.tex
--lab2
----Matlab
------CodeLab2.m
----报告
------Report_P2_1.tex
我希望能够将代码“CodeLab1.m”包含在“Report_P1_1.tex”文件中,将“CodeLab2.m”包含在“Report_P2_1.tex”文件中,并能够单独或从主文件中编译它们(因为我使用子文件,所以这是可能的)。我使用的技巧如下:
主文本:
\documentclass[]{article}
\usepackage{xcolor, listings, subfiles}
\definecolor{grey}{rgb}{0.96,0.96,0.96}
\lstset{backgroundcolor=\color{grey}}
\newcommand{\myPathLstONE}[0]{
\ifx\mainCmp\undefined \renewcommand{\myPathLstONE}{../Matlab}
\else \renewcommand{\myPathLstONE}{lab1/Matlab}
\fi}
\newcommand{\myPathLstTWO}[0]{
\ifx\mainCmp\undefined \renewcommand{\myPathLstTWO}{../Matlab}
\else \renewcommand{\myPathLstTWO}{lab2/Matlab}
\fi}
\begin{document}
\def\mainCmp{}
\part{Labo 1}
\subfile{lab1/Report/Report_P1_1.tex}
\part{Labo 2}
\subfile{lab2/Report/Report_P2_1.tex}
\end{document}
报告_P1_1.tex:
\documentclass[../../Main.tex]{subfiles}
\begin{document}
\section{Part 1}
There's a listing:
\lstinputlisting[]{\myPathLstONE/CodeLab1.m}
\end{document}
报告_P2_1.tex:
\documentclass[../../Main.tex]{subfiles}
\begin{document}
\section{Part 2}
There's a listing:
\lstinputlisting[]{\myPathLstTWO/CodeLab2.m}
\end{document}
它运行得很好,唯一的问题是(除了每次执行这些命令时都定义不太实际)在我得到的输出中,总是有代码文件的名称,如您所见。我没有找到避免这种情况的方法。
由于可以为图形定义多条路径,因此包含列表是我在使用此架构时遇到的唯一问题。
有人可以帮忙或者建议其他方法来做到这一点吗?
多谢!