我想通过git与许多其他人共享乳胶文档。因此,我们决定将所有人的乳胶安装中没有的所有特殊sty文件放入资源目录。如果这个目录是一个超级目录,那将很酷。实际工作目录我究竟该如何导入这些样式文件?
重要的是,即使是那些远程样式的依赖关系也可以用其他远程样式来解决。
您可以通过两种方式将样式文件(mystyle.sty
)导入文档:
.tex
文件位于同一文件夹中,只需在前言中包含以下行:\usepackage{mystyle}
\usepackage{/path/to/folder/mystyle}
进行访问也就是说,如果您不确定样式文件是否在每个人的安装目录中,只需将其包含在同一目录中,并确保执行git add mystyle.sty
并将其与其余文件一起跟踪(尽管很可能在该目录中不会对其进行任何更改)。不需要父目录。但是,如果您坚持使用其他目录,请参见上面的选项2。
如果将它放在子目录中而不是在父目录中会更好,因为您仍然可以将文件称为\usepackage{subdir/mystyle}
,并确保要调用样式文件。但是,如果您转至上级目录,则永远不会知道其他用户是否具有不属于您的软件包的名称相似的文件夹,这可能会导致错误。
这可能与您不再相关,但这是另一种您想要做的方式。像这样设置您的git仓库:
mystyle.sty
project/
makefile
project.tex
并将\usepackage{mystyle}
放在project.tex
的序言中。当然,手动编译project.tex
将不起作用,因为mystyle.sty
与project.tex
不在同一目录中。
但是,如果makefile
包含以下内容:
project.pdf: mystyle.sty project.tex
pdflatex project
mystyle.sty: ../mystyle.sty
cp ../$@ $@
然后从make
目录中运行project
将导致mystyle.sty
在(这次成功)编译之前被复制到正确的位置。
这种方法可能看起来有点过头,但是它确实结合了其他方法的最佳功能。
project.tex
,则在它们上方都放置一个公共的mystyle.sty
比在每个项目目录中都有一个副本更具意义;所有这些副本都必须维护。mystyle.sty
和mystyle.sty
的副本,那么我(至少在理论上来说)将能够手动编译,而无需修改您给我的文件。例如,我不必用project.tex
替换\usepackage{/your/path/mystyle}
。您可以按照上面的建议使用Makefile。另一个选择是CMake。我没有测试父目录。
如果您具有以下文件结构:
\usepackage{/my/path/mystyle}
您应该已安装CMake,有关 ├── CMakeLists.txt
├── cmake
│ └── UseLATEX.cmake
├── img
│ └── logo.jpg
├── lib
│ └── framed.sty
└── main.tex
的说明
UseLATEX.cmake可以从CMake resources
]中下载>然后在CMakeLists.txt中
here
main.tex的某些示例内容(请注意图像)
╚═$ cat CMakeLists.txt
cmake_minimum_required (VERSION 2.6)
set(PROJECT_NAME_STR myProject)
project(${PROJECT_NAME_STR})
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(UseLATEX)
ADD_LATEX_DOCUMENT(main.tex
IMAGE_DIRS img
DEFAULT_PDF
MANGLE_TARGET_NAMES)
lib目录具有* .sty文件
您现在可以编译:
╚═$ cat main.tex
\documentclass{report}
\begin{document}
\begin{center}
\includegraphics[width=300px]{img/logo.jpg}
\end{center}
\end{document}
然后您可以查看构建目录中的main.pdf。
当使用使用cd /directory/that/has/CMakeLists.txt/
mkdir build
cd build
cmake ..
make
的TeX发行版时,可以使用kpathsea环境变量来指定TeX在哪里寻找文件。该变量需要按以下方式使用。