包含主* .tex文件的上级/子目录中的* .sty文件

问题描述 投票:28回答:4

我想通过git与许多其他人共享乳胶文档。因此,我们决定将所有人的乳胶安装中没有的所有特殊sty文件放入资源目录。如果这个目录是一个超级目录,那将很酷。实际工作目录我究竟该如何导入这些样式文件?

重要的是,即使是那些远程样式的依赖关系也可以用其他远程样式来解决。

latex
4个回答
18
投票

您可以通过两种方式将样式文件(mystyle.sty)导入文档:

  1. 如果在路径中或与.tex文件位于同一文件夹中,只需在前言中包含以下行:\usepackage{mystyle}
  2. 如果您在另一个文件夹中,则可以使用其完整路径作为\usepackage{/path/to/folder/mystyle}进行访问

也就是说,如果您不确定样式文件是否在每个人的安装目录中,只需将其包含在同一目录中,并确保执行git add mystyle.sty并将其与其余文件一起跟踪(尽管很可能在该目录中不会对其进行任何更改)。不需要父目录。但是,如果您坚持使用其他目录,请参见上面的选项2。

如果将它放在子目录中而不是在父目录中会更好,因为您仍然可以将文件称为\usepackage{subdir/mystyle},并确保要调用样式文件。但是,如果您转至上级目录,则永远不会知道其他用户是否具有不属于您的软件包的名称相似的文件夹,这可能会导致错误。


7
投票

这可能与您不再相关,但这是另一种您想要做的方式。像这样设置您的git仓库:

mystyle.sty
project/
    makefile
    project.tex

并将\usepackage{mystyle}放在project.tex的序言中。当然,手动编译project.tex将不起作用,因为mystyle.styproject.tex不在同一目录中。

但是,如果makefile包含以下内容:

project.pdf: mystyle.sty project.tex
    pdflatex project

mystyle.sty: ../mystyle.sty
    cp ../$@ $@

然后从make目录中运行project将导致mystyle.sty在(这次成功)编译之前被复制到正确的位置。

这种方法可能看起来有点过头,但是它确实结合了其他方法的最佳功能。

  1. [如果同一存储库中的多个项目需要project.tex,则在它们上方都放置一个公共的mystyle.sty比在每个项目目录中都有一个副本更具意义;所有这些副本都必须维护。
  2. 该编译是可移植的,从某种意义上讲,如果您给了我mystyle.stymystyle.sty的副本,那么我(至少在理论上来说)将能够手动编译,而无需修改您给我的文件。例如,我不必用project.tex替换\usepackage{/your/path/mystyle}

3
投票

您可以按照上面的建议使用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。


  • 0
    投票

    当使用使用cd /directory/that/has/CMakeLists.txt/ mkdir build cd build cmake .. make 的TeX发行版时,可以使用kpathsea环境变量来指定TeX在哪里寻找文件。该变量需要按以下方式使用。

    © www.soinside.com 2019 - 2024. All rights reserved.