原  文:Cross referencing with the xr package in Overleaf
译  者:Xovee
翻译时间:2020年7月24日

在 Overleaf 上使用 xr 包来交叉引用

xr 是一个用来在多个独立的文档之间进行交叉引用的包。例如,如果你在一个项目中有两个不同的文件,File1.texFile2.tex,然后你想在 File1.tex 中引用某个位于 File2.tex 中的被标记的对象,而你又不想在 File1.tex 中引入 file2.tex,那么 xr 包可以帮你办到这件事情。

为了在 Overleaf 上做到这一点,下面介绍了一些需要做到的点。

在 Overleaf 中打开这个例子

文章目录

  • 在 Overleaf 上使用 xr 包来交叉引用
  • 加载 xr 包
  • 在 File1.tex 的序言中添加一些额外的代码
    • 设定外部文档
  • 创建 latexmkrc 文件
  • 最终的文档

加载 xr 包

首先在主文件(例如 File1.tex)中加载 xr 包:

\usepackage{xr}

如果你已经使用了 hyperref 包,那么你需要在 File1.tex 文件中,在 hyperref 之后加载 xr-hyper 包,而不是 xr 包。你也需要在 File2.tex 文件中加载 hyperref 包。

在 File1.tex 的序言中添加一些额外的代码

我们需要在 File1.tex 文件的序言中添加一些有用的代码:

% In your preamble\makeatletter
\newcommand*{\addFileDependency}[1]{% argument=file name and extension\typeout{(#1)}\@addtofilelist{#1}\IfFileExists{#1}{}{\typeout{No file #1.}}
}
\makeatother\newcommand*{\myexternaldocument}[1]{%\externaldocument{#1}%\addFileDependency{#1.tex}%\addFileDependency{#1.aux}%
}

这个代码创建了一个新的命令 \myexternaldocument{…},这个命令允许你设定你想引用的标记它所在的文件。

设定外部文档

下一个步骤是设定标记所在的外部文档。这行代码是唯一一个需要你手动指定文件名的代码:

% In your preamble\myexternaldocument{File2}

这里,File2 可以被替换为其他文件(其中包含了你所想引用的标记)。

创建 latexmkrc 文件

下一步是创建 latexmkrc 文件:

  • 在项目的编辑器界面,点击侧边栏顶部的 Add file 按钮
  • 选择 Blank file,文件名设置为 latexmkrc
  • 在创建的文件中添加下面的代码
add_cus_dep( 'tex', 'aux', 0, 'makeexternaldocument' );sub makeexternaldocument {if (!($root_filename eq $_[0])){system( "latexmk -cd -pdf \"$_[0]\"" );}
}

这些代码将会使用 PDFLaTeX 引擎来编译外部文档 File2,以及其他的生成的依赖文件(保存在缓存之中,用来生成 File1 所需要的引用)。如果你的外部文件需要其他的引擎来编译,使用下面的代码(注释掉你不需要的引擎,例子中使用的引擎是 PDFLaTeX):

add_cus_dep( 'tex', 'aux', 0, 'makeexternaldocument' );sub makeexternaldocument {if (!($root_filename eq $_[0])){# FOR PDFLATEXsystem( "latexmk -cd -pdf \"$_[0]\"" );# FOR LATEX+DVIPDF# system( "latexmk -cd \"$_[0]\"" );# FOR XELATEX# system( "latexmk -cd -xelatex \"$_[0]\"" );# FOR LUALATEX# system( "latexmk -cd -lualatex \"$_[0]\"" );}
}

最终的文档

在执行完上面所描述的所有过程之后,你可以在不同的文档中进行交叉引用了。引用的方式与正常引用没有差别。如果你在 File2.tex 中标记了 \label{file2:introduction},那么你可以在 File1.tex 中引用这个标记:\ref{file2:introduction}

在 Overleaf 中打开这个例子

% In File1.texWe can reference the image \ref{picture} of File2.tex.% In File2.tex\begin{figure}\centering\includegraphics{image.PNG}\caption{Caption}\label{picture}
\end{figure}

源代码:TeX.SX: latexmk with external references.

[翻译] 在 Overleaf 上使用 xr 包来交叉引用相关推荐

  1. [翻译] 在 Overleaf 中离线工作

    原  文:Working Offline in Overleaf 译  者:Xovee 翻译时间:2020年5月21日 在 Overleaf 中离线工作 Overleaf 提供了许多功能,可以让你首先 ...

  2. [翻译] 使用 Overleaf 项目菜单

    原  文:Using the Overleaf project menu 译  者:Xovee 翻译时间:2020年5月15日 使用 Overleaf 项目菜单 在使用 Overleaf 的时候,你知 ...

  3. 发布/上传Jar包到Maven中央仓库 - 史上最详细

    发布 Jar 包到 Maven 中央仓库 在项目开发过程中,我们常常会使用 Maven / Gradle 从仓库拉取开源的第三方 jar 包,可能是私有仓库,可能是 Maven 中央仓库,也可能是第三 ...

  4. qt 增加的翻译没有作用上_Qt语言翻译工具的使用 及 QT-Linguist国际化的简单实现...

    通过使用Qt Linguist工具时,可以有两种方式进行下一步操作(Windows操作系统).首先说明第一种,在一个软件系统中存在*.pro的工程文件,因而我们可以借此通过采用命令行的形式生成最终所需 ...

  5. linux部署jar项目报错_如何在Linux服务器上部署jar包

    启动程序方法 1.上传jar包到linux服务器下 2.启动jar包 ​前台模式 java –jar XXXX.jar(注意这个命令启动时,断开服务连接后,服务就关闭了) ​后台模式 nohup ja ...

  6. gradle 上传jar包_gradle 打包jar上传到nexus 同时上传源码jar

    以我们实际项目为例,项目中后台和前台单独开发,之间通过dubbo接口调用,后台提供服务接口,具体实现对前台隐藏,前台使用某个服务时,下载相应依赖然后调用,因此需要将服务接口打成jar包,上传到仓库中, ...

  7. 如何在私服上传jar包

    1.上传jar包到私服,需要先登录帐号 用户名:admin 密码:admin123 2.选择第三方库 3 输入完成后点击Add Artifact 然后点击下方Upload Artifact,如下图所示 ...

  8. 用Fiddler在Android上抓HTTPS包

    iddler是一个HTTP协议调试代理工具,在开发网络应用的时候经常会用到,其最基本的作用是能抓HTTP的数据包,当然它还有更高级的用法,如添加断点.修改请求与相应的数据等等... 简单说下使用方法: ...

  9. npm包的上传npm包的步骤,与更新和下载步骤

    官网: ======================================================= 没有账号可以先注册一个,右上角点击"Sign Up",有账号 ...

最新文章

  1. 图片上传成功但是图片显示不出来_小程序上传图片到腾讯云
  2. reactor官方文档译文(2)Reactor-core模块
  3. 豪华奢侈的中国作家代表大会
  4. spring中注解的通俗解释
  5. python语法知识_Python 语法小知识
  6. ViewState的原理,应用场合,注意事项
  7. 学用MVC4做网站五:5.2我的文章
  8. windows安装syslog日志转发客户端nxlog
  9. 零基础理财入门书籍分享
  10. 转载:技术大停滞——范式春梦中的地球工业文明8 反思与总结
  11. 利用OpenGL模拟太阳系
  12. 营救公主的100种方法
  13. iOS cocoapods的版本升级更新
  14. 北京飞漫软件魏永明:浏览器技术与三网融合
  15. 彼泽清陂nbsp;菡萏悠悠
  16. Camera2 APP Flash 打闪流程及原理分析
  17. 实验一:贝叶斯神经网络及其如何用随机梯度马尔可夫链蒙特卡洛有效训练
  18. sourceTree使用教程
  19. 用户账号管理和组管理
  20. HTML---- 渐变颜色, P强制不换行、自动换行、强制换行

热门文章

  1. 中北大学计算机学院校长,韩燮
  2. 在everedit编辑器中安装python环境
  3. Excel 中使用线性回归进行预测公司销售季节性与增长
  4. html页面转盘如何实现,原生(纯)js+html+css实现移动端抽奖转盘系统
  5. Linux中tar命令详解
  6. 十进制与十六进制互相转换
  7. matlab量化策略代码,【策略分享】Matlab量化交易策略源码分享
  8. matlab scope 设置,Simulink中示波器[scope]设置.pdf
  9. oracle dcd设置,oracle DCD
  10. [UITabBar appearance]不生效