Forgot password
 Register account
View 6514|Reply 2

include时,能不能传递进去一个参数?

[Copy link]

414

Threads

1641

Posts

15

Reputation

Show all posts

abababa posted 2020-6-30 10:34 |Read mode
如题,主要是想解决编号问题。我的想法是这样的:
首先在一个目录文件myindex.tex里如下写:
\renewcommand{\dir}{射影几何问题}
\include{\dir/四边形中的调和}
\renewcommand{\dir}{初等代数}
\include{\dir/复数模问题}

就表示文件夹“射影几何问题”里有一堆单独的文件,每个文件都属于某一类问题。
然后“射影几何问题\四边形中的调和.tex”这个文件里就都是关于四边形调和的,这里想用一些公式,但又怕编号编重复了。不过因为引用时,主要还是在同一个文件夹里去引用,比如“四边形中的调和”文件里的编号,一般就只在射影几何问题里去引用,不会在初等代数的问题里引用。

所以我想在include时,传递进去一个参数,比如叫 mypre1和mypre2,这个参数可以自动根据include的内容来定。比如\include{\dir/四边形中的调和},就让“mypre1=射影几何问题, mypre2=四边形中的调和”这样。如果能把中文转成拼音就更好了。然后在“四边形中的调和.tex”里需要编号时就这样写:
\label{\mypre1_\mypre2_001}
这样就把不同文件夹里的编号区分开了,编号时也不用写一堆前缀,只要统一加一个mypre就行,引用时也觉得好引用一点,因为主要还是在同一个文件夹里互相引用,mypre1都是统一的,然后mypre2的位置就直接找到那个文件名来引用就行。

请问这个能做到吗?

3200

Threads

7827

Posts

52

Reputation

Show all posts

hbghlyj posted 2025-5-18 21:26
借助 xr 包,在主文档里为每个子文档指定一个前缀
主文档:
\documentclass{article}
\usepackage{xr}
\usepackage{hyperref}

% 为“射影几何问题/四边形中的调和.tex”指定前缀 proj-quad-
\externaldocument[proj-quad-]{射影几何问题/四边形中的调和}

% 为“初等代数/复数模问题.tex”指定前缀 alg-cplx-
\externaldocument[alg-cplx-]{初等代数/复数模问题}

\begin{document}

\ref{proj-quad-thm:harmonic},\ref{alg-cplx-lem:modulus}

\end{document}
子文档:
% 射影几何问题/四边形中的调和.tex
\section{调和四边形}
\label{thm:harmonic}
% ……

% 初等代数/复数模问题.tex
\section{复数的模}
\label{lem:modulus}
% ……
编译主文档时 xr 会自动把外部 .aux 里的\label{thm:harmonic}重命名为\label{proj-quad-thm:harmonic},从而保证不同子文档的标签不会冲突。

414

Threads

1641

Posts

15

Reputation

Show all posts

original poster abababa posted 2025-5-19 08:57
hbghlyj 发表于 2025-5-18 21:26
借助 xr 包,在主文档里为每个子文档指定一个前缀
主文档:
[precode]\documentclass{article}
这些东西加label时都容易,引用时如果在当前文档内部引用也容易,在其它文档里引用就麻烦了,得知道前缀,还要明确地打出来才行,不然去找被引用的文档,会发现文档里的label根本没有那个前缀,还要去找前缀。如果忘了有这个加前缀的操作,引用就变成问号了,明明看着是和label一样,又不知道错在哪。

Quick Reply

Advanced Mode
B Color Image Link Quote Code Smilies
You have to log in before you can reply Login | Register account

$\LaTeX$ formula tutorial

Mobile version

2025-7-15 14:51 GMT+8

Powered by Discuz!

Processed in 0.014796 seconds, 25 queries