2011-05-13 165 views
25

我想通過git與許多其他人共享乳膠文檔。 因此,我們決定將所有特殊的sty文件放入資源目錄中,這些文件並不存在於每個人的latex-installation中。如果這個目錄是超級目錄,這將是很酷的。的實際工作目錄 如何導入這些樣式文件?從主* .tex文件的超/子目錄中包含* .sty文件

即使這些遠程樣式的依賴關係也可以用其他遠程樣式解決,這一點很重要。

回答

15

您可以導入樣式文件(mystyle.sty)插入到文檔中有兩種方式:

  1. 如果您有它在你的路徑,或在同一文件夾中.tex文件,只需在你序言這條線:\usepackage{mystyle}
  2. 如果您在不同的文件夾擁有它,你可以訪問使用它的完整路徑爲\usepackage{/path/to/folder/mystyle}

這就是說,如果你不知道,如果樣式文件是在每個人的installati只需將其包含在同一個目錄中,並確保您執行了git add mystyle.sty並跟蹤其中的其他文件(儘管很可能不會有任何更改)。不需要父目錄。但是如果你堅持不同的目錄,請參閱上面的選項2。

如果它位於子目錄中而不是父目錄中,則仍然可以更好,因爲您仍然可以將該文件調用爲\usepackage{subdir/mystyle},並確定您正在調用您的樣式文件。但是,如果您逃離到父目錄,則永遠不知道其他用戶是否具有不屬於您包的一部分的類似命名的文件夾,這可能會導致錯誤。

+0

這是否應該與'\ documentclass'一起使用?我似乎無法加載位於我的主要.tex文件的子文件夾中的類文件。 – 2016-06-12 19:37:30

+0

由[由David Carlisle指出](http://tex.stackexchange.com/a/124013/6903),'\ usepackage {/ path/to/folder/mystyle}'工作的事實是由於缺乏錯誤檢查。 '\ usepackage {}'的參數應該是一個名稱而不是一個路徑,所以2.並不是一個好的選擇。 – mforbes 2016-07-26 20:43:21

7

這可能與您無關,但這裏有另一種方法可以做您想做的事。 設置您的Git倉庫這樣的:

mystyle.sty 
project/ 
    makefile 
    project.tex 

並在project.tex序言把\usepackage{mystyle}。 手動編譯project.tex當然不起作用,因爲mystyle.styproject.tex不在同一個目錄中。

但是,如果makefile包含沿着線的東西:

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

mystyle.sty: ../mystyle.sty 
    cp ../[email protected] [email protected] 

然後從project目錄中運行make會導致mystyle.sty被複制到正確的位置project.tex之前(這一次成功)編譯。

這種方式可能看起來有點超過頂端,但它確實結合了其他方法的最佳功能。

  1. 如果在同一倉庫的幾個項目需要mystyle.sty然後有一個共同的mystyle.sty坐在上面所有這些使得不必在每個項目目錄拷貝更有意義;所有這些副本都必須保留。
  2. 編譯是可移植的,從這個意義上說,如果你給我你的mystyle.styproject.tex的副本,那麼我將(至少在理論上)能夠手動編譯而不需要修改你給我的文件。例如,我不需要用\usepackage{/my/path/mystyle}代替\usepackage{/your/path/mystyle}
+0

我會使用符號鏈接而不是直接複製文件。 – 2017-03-06 02:02:29

3

您可以按照上面的建議使用Makefiles。另一種選擇是CMake。我沒有測試父目錄。

如果您有以下文件結構:

├── CMakeLists.txt 
    ├── cmake 
    │   └── UseLATEX.cmake 
    ├── img 
    │   └── logo.jpg 
    ├── lib 
    │   └── framed.sty 
    └── main.tex 
  • 你應該安裝CMake的,說明書上CMake resources

  • UseLATEX.cmake可以從here

  • 然後下載在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) 
    
  • 一些示例內容main.tex(注意圖)

    ╚═$ cat main.tex 
    \documentclass{report} 
    
    \begin{document} 
    
    \begin{center} 
        \includegraphics[width=300px]{img/logo.jpg} 
    \end{center} 
    
    \end{document} 
    
  • lib目錄有* .sty文件

  • 您現在可以編譯:

    cd /directory/that/has/CMakeLists.txt/ 
    mkdir build 
    cd build 
    cmake .. 
    make 
    
  • 然後,您可以查看build.pub文件中的main.pdf文件。

相關問題