Comprendre *.sty fichier à partir d'un super/sous-répertoire principal *.fichier tex

Je veux partager un document latex via git avec beaucoup d'autres personnes. Par conséquent, nous avons décidé de mettre tous les fichiers sty spéciaux, qui ne sont pas présents dans everyones latex-installation, dans un répertoire de ressources. Ce serait cool, si ce dir serait un superdir. du répertoire de travail réel Comment puis-je importer ces fichiers de style?

Il est important que même les dépendances de ces styles distants soient résolues avec d'autres styles distants.

26
demandé sur serv-inc 2011-05-13 19:10:07

3 réponses

, Vous pouvez importer un fichier de style (mystyle.sty) dans votre document de deux façons:

  1. Si vous l'avez dans votre chemin ou dans le même dossier que le fichier .tex, incluez simplement cette ligne dans votre préambule: \usepackage{mystyle}
  2. Si vous l'avez dans un dossier différent, vous pouvez y accéder en utilisant son chemin complet comme \usepackage{/path/to/folder/mystyle}

Cela dit, si vous n'êtes pas sûr que le fichier de style se trouve dans l'installation de tout le monde, incluez-le simplement dans le même répertoire et assurez-vous de le faire git add mystyle.sty et de le suivre avec le reste de vos fichiers (bien que probablement il n'y aura pas de modifications). Il n'y a pas besoin d'un répertoire parent. Mais si vous insistez sur un répertoire différent, voir l'option 2 ci-dessus.

, Il serait mieux si elle était dans un sous-répertoire que dans un répertoire parent, que vous pouvez toujours appeler le fichier \usepackage{subdir/mystyle} et être certain que vous appelez votre fichier de style. Cependant, si vous vous échappez vers le répertoire parent, vous ne savez jamais si les autres utilisateurs ont un dossier de même nom qui ne fait pas partie de votre paquet, ce qui peut entraîner des erreurs.

15
répondu abcd 2011-05-13 15:31:21

Ce n'est probablement plus pertinent pour vous, mais voici une autre façon de faire ce que vous voulez. Configurez votre dépôt git comme ceci:

mystyle.sty
project/
    makefile
    project.tex

Et mettre \usepackage{mystyle} dans le préambule de project.tex. Compiler project.tex manuellement ne fonctionnera pas, bien sûr, car mystyle.sty n'est pas dans le même répertoire que project.tex.

Cependant, si makefile contient quelque chose du type:

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

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

Ensuite, l'exécution de make à partir du répertoire project entraînera la copie de mystyle.sty au bon endroit avant project.tex est (cette fois avec succès) compilé.

Cette façon peut sembler un peu exagérée, mais elle combine les meilleures caractéristiques des autres méthodes.

  1. Si plusieurs projets dans le même référentiel nécessitent {[5] } alors avoir un mystyle.sty commun au - dessus d'eux tous a plus de sens que d'avoir une copie dans chaque répertoire de projet; toutes ces copies devraient être conservées.
  2. la compilation est portable, en ce sens que si vous m'avez donné vos copies de mystyle.sty et project.tex Ensuite, je serais (en théorie au moins) capable de compiler manuellement sans avoir besoin de modifier les fichiers que vous m'avez donnés. Par exemple, je n'aurais pas à remplacer \usepackage{/your/path/mystyle} avec \usepackage{/my/path/mystyle}.
7
répondu Dave Wilding 2012-09-25 19:53:35

Vous pouvez utiliser Makefiles comme suggéré ci-dessus. Une autre option est CMake. Je n'ai pas testé les répertoires parents.

Si vous avez la structure de fichier suivante:

    ├── CMakeLists.txt
    ├── cmake
    │   └── UseLATEX.cmake
    ├── img
    │   └── logo.jpg
    ├── lib
    │   └── framed.sty
    └── main.tex
  • Vous devriez avoir CMake installé, instructions sur les ressources CMake

  • UseLATEX.cmake peut être téléchargé à partir de ici

  • Puis à L'intérieur des 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)
    
  • Un exemple de contenu pour main.tex (note de l' image)

    ╚═$ cat main.tex
    \documentclass{report}
    
    \begin{document}
    
    \begin{center}
      \includegraphics[width=300px]{img/logo.jpg}
    \end{center}
    
    \end{document}
    
  • Le répertoire lib a l' *.fichiers sty

  • Vous pouvez maintenant compiler:

    cd /directory/that/has/CMakeLists.txt/
    mkdir build
    cd build
    cmake ..
    make
    
  • Vous pouvez ensuite visualiser principal.pdf qui est dans le répertoire de construction.

3
répondu lunamystry 2013-12-12 11:00:31