我的 LaTeX 文档由许多文件组成,.tex
这些文件分布在分层目录结构中。如下所示:
> myBook.tex
> myBook_structure.tex
> part1_Introduction
|
|--- Introduction_to_FreeRTOS
| |-- someFile.tex
| '-- someFile.tex
|
'--- How_to_use_FreeRTOS
|-- someFile.tex
'-- someFile.tex
> part2_FreeRTOS_examples
|
|--- First_example
| |-- someFile.tex
| '-- someFile.tex
|
'--- Second_Example
|-- someFile.tex
'-- someFile.tex
...
该myBook_structure.tex
文件跟踪整个项目结构。我通过定义目录路径来实现这一点:
%% myBook_structure.tex
%% --------------------
\def\part1ch1{./part1_Introduction/Introduction_to_FreeRTOS}
\def\part1ch2{./part1_Introduction/How_to_use_FreeRTOS}
\def\part2ch1{./part2_FreeRTOS_examples/First_example}
\def\part2ch2{./part2_FreeRTOS_examples/Second_example}
...
现在我可以使用这些目录路径来包含特定.tex
文件:
%% myBook.tex
%% -----------
\input{./myBook_structure}
..
\begin{document}
..
%% Include a file from chapter 1 within part 1:
\include{\part1ch1/someFile}
%% Include a file from chapter 2 within part 1:
\include{\part1ch2/someFile}
..
\end{document}
这非常方便。假设我将目录名称更改Introduction_to_FreeRTOS
为FreeRTOS_intro
。我所需要做的就是更改文件中的一行myBook_structure.tex
:
%% myBook_structure.tex
%% --------------------
\def\part1ch1{./part1_Introduction/FreeRTOS_intro} %% <- this line changed
\def\part1ch2{./part1_Introduction/How_to_use_FreeRTOS}
... all other lines remain the same
它运行完美。项目编译时没有错误,并按预期提供 pdf 文档。即使在 TeXstudio 中也是如此。我只需单击“编译”按钮,它就会输出预期的 pdf 文档。
但有一个问题。TeXstudio 在显示左侧的项目树时有点困惑。TeXstudio 不会展开宏\part1ch1
,也不知道在哪里查找文件。TeXstudio 左侧边缘的项目树现在完全没用了 - 我无法再从一个文件跳转到另一个文件。
我该如何解决这个问题,以便可以继续使用我最喜欢的 LaTeX IDE?
编辑:
显然,LaTeX 不接受包含数字的定义关键字。因此,以下代码不被接受:
\def\part1ch1{...}
但这是可以接受的:
\def\myFirstChapter{...} %% <- no digits in name 'myFirstChapter'
这个不幸的事实使我建立整洁文档结构的计划更加困难。任何有关此问题的帮助都将不胜感激。
答案1
如果你
\def\part1ch1{./part1_Introduction/Introduction_to_FreeRTOS}
\def\part1ch2{./part1_Introduction/How_to_use_FreeRTOS}
那么第二个\def
会覆盖第一个,如果你尝试
\part1ch1
你收到错误消息
! Use of \part doesn't match its definition.
因为您实际上正在(重新)定义\part
,这显然不是您想要的。
\def
如果您不完全清楚自己在做什么,请避免。
其实比这简单多了。你的myBook_structure.tex
文件可以
\makeatletter
\newcommand{\namedir}[2]{\@namedef{kmuller@#1}{#2}}
\newcommand{\usedir}[1]{\@nameuse{kmuller@#1}}
\makeatother
\namedir{part1ch1}{./part1_Introduction/Introduction_to_FreeRTOS}
\namedir{part1ch2}{./part1_Introduction/How_to_use_FreeRTOS}
\namedir{part2ch1}{./part2_FreeRTOS_examples/First_example}
\namedir{part2ch2}{./part2_FreeRTOS_examples/Second_example}
在文档中你可以说
\input{./myBook_structure}
\begin{document}
%% Include a file from chapter 1 within part 1:
\input{\usedir{part1ch1}/someFile}
%% Include a file from chapter 2 within part 1:
\input{\usedir{part1ch2}/someFile}
\end{document}
(请注意,\include
由于多种原因,这不是正确的工具。)