O comando \jobname
geralmente imprime o nome do arquivo sem o caminho e a extensão, portanto, dentro de um arquivo chamado foo.tex
será impresso apenas foo
. Com pdflatex foo.test
ou compilando do LaTeXila certamente obtive esse resultado. Mas deGomao que eu obtenho é.foo.tex
Alguém sabe por que o Gummi compila de maneira diferente e como consegui o \jobname
comportamento usual no Gummi?
Editar: Com base nas respostas úteis de @JosephWright e @Herbert, pergunto-me se é possível fazer a correção \jobname no Gummi apenas se a fonte tiver a extensão .swp ou .tex persistir em \jobname.
Ou seja, eu gostaria de uma solução como:
\makeatletter
\let\JobName\jobname
\ifthenelse{\equal{\detokenize{foo}}{\jobname}}
{}
{
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
}
\makeatother
Esta condicional funciona para verificar se o nome do trabalho é foo ou não, mas quero uma solução geral, independente do nome do arquivo (não limitado à string foo).
Responder1
Dando uma olhada no 'Build Log' que recebo com um foo.tex
arquivo de teste, parece que Gummi realmente compila .foo.tex.swp
, que está oculto no Unix devido ao início .
e que tem extensão .swp
not .tex
. Portanto, o TeX está mostrando as informações corretas. Por exemplo, com arquivo de demonstração
\documentclass{article}
\begin{document}
Hello world
\end{document}
salvo quando foo.tex
recebo log
This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012)
\write18 enabled.
entering extended mode
(/home/joseph/Desktop/.foo.tex.swp
LaTeX2e <2011/06/27>
Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman-x-2012-05-30, ngerman-x-2012-05-30, afrikaans, ancientgreek, ibycus, arabi
c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis
h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis
h, french, friulan, galician, german, ngerman, swissgerman, monogreek, greek, h
ungarian, icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, ma
rathi, oriya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian,
kurmanji, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk,
polish, portuguese, romanian, romansh, russian, sanskrit, serbian, serbianc, s
lovak, slovenian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian,
welsh, loaded.
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2012/texmf-dist/tex/latex/base/size10.clo))
(/tmp/.foo.tex.aux) [1{/usr/local/texlive/2012/texmf-var/fonts/map/pdftex/updma
p/pdftex.map}] (/tmp/.foo.tex.aux) )</usr/local/texlive/2012/texmf-dist/fonts/t
ype1/public/amsfonts/cm/cmr10.pfb>
Output written on /tmp/.foo.tex.pdf (1 page, 11541 bytes).
SyncTeX written on /tmp/.foo.tex.synctex.gz.
Transcript written on /tmp/.foo.tex.log.
Receio não ter uma solução (além de 'usar um editor diferente'), pois não parece haver uma configuração do Gummi para alterar esse comportamento.
A pergunta editada pede uma abordagem 'flexível' baseada no código de Herbert. Com a restrição de que isso assume um caso simples (o nome do arquivo contém apenas um .
para separar a extensão, exceto se começar .
onde Gummi está em uso):
\makeatletter
\begingroup
\def\@jobname#1.#2\q@nil{%
\ifx\relax#1\relax
\expandafter\expandafter\expandafter\@@jobname
\else
\expandafter\@@@jobname
\fi
\jobname\q@nil
}
\def\@@jobname.#1.#2\q@nil{#1}
\def\@@@jobname#1\q@nil{#1}
\xdef\jobname{\expandafter\@jobname\jobname.\q@nil}
\endgroup
\makeatother
Responder2
usar no preâmbulo:
\makeatletter
\let\JobName\jobname
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
\makeatother
então \jobname
funciona normalmente. O acima é útil apenas para executar um arquivo com extensão gummi
.