Reduzindo a confusão de LATEX_HEADER na parte superior dos meus arquivos organizacionais

12

Costumo escrever notas no modo organizacional e exportá-las para o látex. No entanto, como alguns documentos são complexos, preciso incluir muitos pacotes de látex na parte superior, da seguinte forma:

#+LATEX_HEADER: \usepackage[margin=1.15in]{geometry}
#+LATEX_HEADER: \usepackage{parskip}
#+LATEX_HEADER_EXTRA: \usepackage{graphicx}
#+LATEX_HEADER_EXTRA: \usepackage{mdframed}
#+LATEX_HEADER_EXTRA: \usepackage{needspace}
#+LATEX_HEADER_EXTRA: \usepackage{hyperref}         
#+LATEX_HEADER_EXTRA: \usepackage{titling}
#+LATEX_HEADER_EXTRA: \usepackage{enumitem}
#+LATEX_HEADER_EXTRA: \usepackage{etoolbox}                             
#+LATEX_HEADER_EXTRA: \usepackage{color}                             
#+LATEX_HEADER_EXTRA: \usepackage{underscore}...

É possível armazenar todos os comandos de cabeçalho de látex (\ usepackage, definições de macros etc.) em um arquivo tex separado, para que eu possa incluir apenas uma única linha na parte superior do arquivo organizacional? Isso reduzirá muita confusão e facilitará a adição de pacotes.

smilingbuddha
fonte

Respostas:

13

Você pode fazer uso de um #+SETUPFILE:

Coloque todas essas configurações em um arquivo, por exemplo ./setup/setupfile.org, e depois as inclua no documento com

#+SETUPFILE: ./setup/setupfile.org

Neste arquivo, você também pode incluir #+OPTIONS:, #+AUTHORe semelhante em tampão configurações. O que é ainda mais útil é que, se você carregar o #+SETUPFILE:primeiro, poderá substituir algumas dessas configurações pelas configurações locais.

Consulte também o manual da organização sobre exportação.

Outra solução é usar #+INCLUDE: "./setup/more-settings.org" src org(observe o ") que simplesmente inclui o conteúdo do arquivo como fonte organizacional. Isso é um pouco mais versátil, pois pode haver mais de um #+INCLUDEonde (afaik) pode haver apenas um #+SETUPFILE.

Finalmente, para ocultar a confusão visualmente, você também pode colocar todas essas configurações locais em uma gaveta (ou seja, entre uma linha com :DRAWER:e uma linha com :END:) e simplesmente ocultá-las tab.

EFLS
fonte
3
Na minha experiência prática, a solução de gavetas é a maneira mais conveniente e rápida de trabalhar com cabeçalhos.
Dieter.Wilhelm
4

Uma solução alternativa é verificar / personalizar a variável org-latex-packages-alist- adicione lá todas as suas necessárias \usepackage{...}.

Essa variável é declarada e usada pelo ox-latex, portanto, sua configuração organizacional deve ter uma declaração (require 'os-latex). Dessa forma, não há linhas a serem adicionadas aos documentos organizacionais, exceto o título.

Quanto às macros, um local comum para armazenar é o pacote yasnippet, se você o usar.

Ian
fonte
3

Uma solução alternativa é usar um título não exportado para quebrar a configuração:

* Configuration :ignoreheading:
#+AUTHOR:   
#+STARTUP: showall
...

A vantagem desta solução versus gavetas é que você pode incluir facilmente configurações sofisticadas, como blocos LaTeX

#+BEGIN_EXPORT LATEX
...
#+END_EXPORT

que não são lidas (por padrão) quando estão nas gavetas.

A vantagem dessa solução versus os arquivos de configuração (arquivo de configuração ou inclusão) é que você pode alterar facilmente a configuração, pois ela está incluída no arquivo atual.

Por fim, se você deseja que este título permaneça fechado por padrão ao abrir seu arquivo organizacional, você pode usar a seguinte sintaxe:

* Configuration :ignoreheading:
  :PROPERTIES:
  :VISIBILITY: folded
  :END:
Lgen
fonte
Eu tenho apenas um voto positivo para dar - mas esse se tornou meu novo padrão! Todas essas respostas devem entrar no manual organizacional, como uma prática recomendada para exportação de látex, como uma instalação focada em documentos versus colocar a maior parte da instalação na configuração do emacs.
glallen
1

Em vez de usar de #+SETUPFILE:acordo com a resposta aceita, se você está apenas interessado na saída do LaTeX, adicione o seguinte:

#+LATEX_HEADER: \input{header.tex}

Em header.tex(ou o que você quiser chamar), você pode colocar todo o seu preâmbulo do LaTeX sem a necessidade de um monte de #+LATEX_HEADER:argumentos. Para ser super meta, você também pode ter essa #+LATEX_HEADERopção no seu #+SETUPFILE.

jdtonkin
fonte
Editou minha resposta em resposta a esta pergunta.
Jdtonkin 03/07