![Reftex 交叉引用不同目录中的文件](https://linux22.com/image/341151/Reftex%20%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6.png)
我的乳胶文件存储在这样的目录结构中
- main.tex
- .dir-locals.el
-- sections/
--- sec1.tex, sec2.tex, ...
-- tables/
--- table1.tex, table2.tex, ...
在主文本,sec1.tex是“进口”作为\input{sections/sec1}
;在sec1.tex,table1.tex 是“进口”\input{tables/table1.tex}
我已经TeX-master
指定为"main.tex"
我.dir-locals.el像这样:
((latex-mode
(TeX-master . "main.tex")))
全部.tex根目录下的文件知道正确的主文件。但我的问题是 reftex 无法检测表1.tex当我在编辑的时候sec1.tex(当我编辑时它可以正常工作主文本)的原因似乎是当我在sec1.tex代码\input{tables/table1.tex}
会让 reftex 认为有一个“表格”目录内的“部分”目录。
我的具体问题不同于如何在多个文件中使用 reftex 和 RefTex 多文件问题 ,因为嵌套的模块输入结构仅与主文件有关,但从从属文件的角度来看并非如此。
有人能帮我解决这个问题吗?我怎样才能让 reftex 引用来自表1.tex当我编辑时sec1.tex?
更新:这是一个例子。
.dir-locals.el:
((latex-mode
(TeX-master ."main.tex")))
主文本:
\documentclass{article}
\begin{document}
This is main.tex. \\
\input{sections/sec1}
This is main.tex referencing Section~\ref{sec:foo}.
This is main.tex referencing Table~\ref{tab:foobar}.\\
main.tex ends here.
\end{document}
部分/sec1.tex:
\section{foo} \label{sec:foo}
This is from sec1.tex. \\
\input{tables/table1}
This is sec1.tex referencing Table~\ref{tab:foobar}. \\
sec1.tex ends here.
表格/table1.tex:
\begin{table}[h]
\begin{tabular}{ll}
A & B \\
1 & 2
\end{tabular}
\caption{foobar}
\label{tab:foobar}
\end{table}
在 reftex 中,当我编辑时,命令reftex-reference
(按C-c )
)会提供标签主文本tab:foobar
,正如预期的那样。但问题是,当我编辑时它不会检测标签sec1.tex。
答案1
找到解决方案。问题原因TeX-master
未正确指定。
TeX-master
应该设置为像这样的普通绝对路径"path/to/main.tex"
,或者在 git 存储库的情况下,应该以编程方式设置为正确的绝对路径。
当编辑任何 .tex 文件时,reftex
现在都可以检索其他地方指定的标签,只要它们与正确的目录树一起“导入”到主文件即可。