2011-05-13 10 views
25

Quiero compartir un documento de látex a través de git con muchas otras personas. Por lo tanto, decidimos colocar todos los archivos especiales de estilos, que no están presentes en la instalación de latex de everyones, en un directorio de recursos. Sería genial, si este dir fuera un superdir. del directorio de trabajo real ¿Cómo exactamente puedo importar esos archivos de estilo?Incluye el archivo * .sty de un super/subdirectorio del archivo * .tex principal

Es importante que incluso las dependencias de esos estilos remotos se resuelvan con otros estilos remotos.

Respuesta

15

Puede importar un archivo de estilo (mystyle.sty) en su documento de dos maneras:

  1. Si lo tienes en tu camino o en la misma carpeta que el archivo .tex, basta con incluir esta línea en su preámbulo : \usepackage{mystyle}
  2. Si lo tienes en una carpeta diferente, puede acceder utilizando su ruta completa como \usepackage{/path/to/folder/mystyle}

dicho esto, si no está seguro si el archivo de estilo se encuentra en INSTALACIÓN de todos en, simplemente inclúyalo en el mismo directorio y asegúrese de hacer git add mystyle.sty y rastrearlo junto con el resto de sus archivos (aunque lo más probable es que no haya ningún cambio). No hay necesidad de un directorio principal. Pero si insiste en un directorio diferente, consulte la opción 2 anterior.

Sería mejor si estuviera en un subdirectorio que en un directorio principal, ya que aún puede llamar al archivo como \usepackage{subdir/mystyle} y asegúrese de estar invocando su archivo de estilo. Sin embargo, si escapa al directorio padre, nunca se sabe si los otros usuarios tienen una carpeta con un nombre similar que no es parte de su paquete, lo que puede generar errores.

+0

¿Se supone que esto también funciona con '\ documentclass'? Parece que no puedo cargar un archivo de clase ubicado en una subcarpeta de mi archivo .tex principal. –

+0

Como [señalado por David Carlisle] (http://tex.stackexchange.com/a/124013/6903), el hecho de que '\ usepackage {/ path/to/folder/mystyle}' funciona se debe a la falta de comprobación de errores. El argumento para '\ usepackage {}' debe ser un nombre, no una ruta, por lo que 2. no es realmente una buena opción. – mforbes

7

Probablemente ya no sea relevante para usted, pero esta es otra forma de hacer lo que desea. Configurar el repositorio git como esto:

mystyle.sty 
project/ 
    makefile 
    project.tex 

y poner \usepackage{mystyle} en el preámbulo de project.tex. Compilar project.tex manualmente no funcionará, por supuesto, porque mystyle.sty no está en el mismo directorio que project.tex.

Sin embargo, si makefile contiene algo en la línea de:

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

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

luego corriendo make desde dentro del directorio project hará que mystyle.sty que se copiarán en el lugar correcto antes de project.tex es (esta vez con éxito) compilado.

De esta manera puede parecer un poco exagerado, pero combina las mejores características de otros métodos.

  1. Si varios proyectos en el mismo repositorio requieren mystyle.sty luego tener un común mystyle.sty sentado encima de todos ellos tiene más sentido que tener una copia en cada directorio del proyecto; todas estas copias tendrían que mantenerse.
  2. La compilación es portátil, en el sentido de que si me entregó sus copias de mystyle.sty y project.tex, entonces (en teoría al menos) podría compilar manualmente sin necesidad de modificar los archivos que me dio. Por ejemplo, no tendría que reemplazar \usepackage{/your/path/mystyle} con \usepackage{/my/path/mystyle}.
+0

Usaría un enlace simbólico en lugar de copiar el archivo directamente. –

3

Puede utilizar Makefiles como se sugirió anteriormente. Otra opción es CMake. No probé los directorios principales.

Si tiene la siguiente estructura de archivos:

├── CMakeLists.txt 
    ├── cmake 
    │   └── UseLATEX.cmake 
    ├── img 
    │   └── logo.jpg 
    ├── lib 
    │   └── framed.sty 
    └── main.tex 
  • usted debe tener instalado CMake, instrucciones sobre CMake resources

  • UseLATEX.cmake se puede descargar desde here

  • entonces dentro de 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) 
    
  • Algunos contenidos de ejemplo para main.tex (tenga en cuenta la imagen)

    ╚═$ cat main.tex 
    \documentclass{report} 
    
    \begin{document} 
    
    \begin{center} 
        \includegraphics[width=300px]{img/logo.jpg} 
    \end{center} 
    
    \end{document} 
    
  • El directorio lib tiene los archivos * .sty

  • Ahora puede compilar:

    cd /directory/that/has/CMakeLists.txt/ 
    mkdir build 
    cd build 
    cmake .. 
    make 
    
  • a continuación, puede ver main.pdf que se encuentra en el directorio de compilación.

Cuestiones relacionadas