您可以通过两种方式将样式文件(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
并且在 project.tex
的导言区中加入 \usepackage{mystyle}
。
当然,手动编译 project.tex
是行不通的,因为 mystyle.sty
不在与 project.tex
相同的目录中。
但是,如果 makefile
包含以下内容:
project.pdf: mystyle.sty project.tex
pdflatex project
mystyle.sty: ../mystyle.sty
cp ../$@ $@
然后在project
目录中运行make
命令将会导致在编译project.tex
文件之前将mystyle.sty
复制到正确的位置(这一次将会成功)。
这种方式可能看起来有点过度,但它结合了其他方法的最佳特点。
mystyle.sty
,那么在所有项目目录中都放一个通用的mystyle.sty
比在每个项目目录中都复制一份更加合理;所有这些副本都必须维护。mystyle.sty
和project.tex
的拷贝给我,那么我(至少在理论上)能够手动编译而不需要修改你给我的文件。例如,我不必用\usepackage{/my/path/mystyle}
替换\usepackage{/your/path/mystyle}
。 ├── CMakeLists.txt
├── cmake
│ └── UseLATEX.cmake
├── img
│ └── logo.jpg
├── lib
│ └── framed.sty
└── main.tex
you should have CMake installed, instructions on CMake resources
UseLATEX.cmake can be downloaded from here
then inside the CMakeLists.txt
╚═$ 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)
Some example content for main.tex (note the image)
╚═$ cat main.tex
\documentclass{report}
\begin{document}
\begin{center}
\includegraphics[width=300px]{img/logo.jpg}
\end{center}
\end{document}
The lib directory has the *.sty files
You can now compile:
cd /directory/that/has/CMakeLists.txt/
mkdir build
cd build
cmake ..
make
you can then view main.pdf which is in the build directory.
${CMAKE_CURRENT_SOURCE_DIR}
更改为 ${CMAKE_CURRENT_SOURCE_DIR}/lib
。 - cgmbTEXINPUTS
环境变量指定TeX查找文件的位置。变量需要按以下方式使用。
TEXINPUTS
中的路径由:
分隔。空路径将包括默认搜索路径,即只有冒号。两个连续的斜杠表示搜索目录及其所有子目录。resources
目录的所有子目录和默认目录的文件document.pdf
,可以使用以下Makefile。document.pdf: document.tex
TEXINPUTS=.:./resources//: pdflatex document.tex
mktexlsr
命令构建一个 ls-R
数据库。在latexmk的Utility subroutines
文档中,有一个特性记录在第48页上(链接),它可以在运行期间更新TEXINPUTS
。如果您考虑使用.latexmkrc文件来配置您的链和选项,您可以将ensure_path()
添加到该文件中:
以下是一个示例:
# .latexmkrc
ensure_path('TEXINPUTS', './path/to/something//', '/full/path/to/something/else//')
# [...] Other options goes here.
$pdf_update_method = 3;
$xelatex = 'xelatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
$pdf_previewer = 'start "%ProgramFiles%/SumatraPDF/SumatraPDF.exe" %O %S';
$out_dir = 'build/';
请注意,在路径末尾加上 //
,这将帮助LaTeX在指定目录及其所有子目录中搜索文件。
请注意,虽然这是一个非常棒的功能,但您需要好好考虑命名方案。如果您在多个位置使用相同的文件名,并且使用
\include{somefile}
导入它们时可能会遇到麻烦。
\documentclass
吗?我似乎无法加载位于我的主.tex
文件的子文件夹中的类文件。 - Waldir Leoncio\usepackage{/path/to/folder/mystyle}
能够工作是由于缺乏错误检查。\usepackage{}
的参数应该是名称而不是路径,因此第二种方式并不是一个好选择。 - mforbes