El comando \jobname
generalmente imprime el nombre del archivo sin la ruta ni la extensión, por lo que dentro de un archivo llamado foo.tex
se imprimirá solo foo
. Con pdflatex foo.test
o compilando desde LaTeXila ciertamente obtuve este resultado. Pero de dondeGummilo que obtengo es.foo.tex
¿Alguien sabe por qué Gummi compila de manera diferente y cómo puedo obtener el \jobname
comportamiento habitual en Gummi?
Editar: Basado en respuestas útiles de @JosephWright y @Herbert, me pregunto si es posible hacer la corrección \jobname en Gummi solo si la fuente tiene la extensión .swp o .tex persiste en \jobname.
Es decir, me gustaría una solución como:
\makeatletter
\let\JobName\jobname
\ifthenelse{\equal{\detokenize{foo}}{\jobname}}
{}
{
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
}
\makeatother
Este condicional funciona para verificar si el nombre del trabajo es foo o no, pero quiero una solución general, independiente del nombre del archivo (no limitada a la cadena foo).
Respuesta1
Echando un vistazo al 'Registro de compilación' que obtengo con un foo.tex
archivo de prueba, parece que Gummi realmente compila .foo.tex.swp
, que está oculto en Unix debido al encabezado .
y que .swp
no tiene extensión .tex
. Entonces TeX te muestra la información correcta. Por ejemplo, con el archivo de demostración
\documentclass{article}
\begin{document}
Hello world
\end{document}
guardado cuando foo.tex
obtengo el registro
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.
Me temo que no tengo una solución (aparte de "usar un editor diferente"), ya que no parece haber una configuración de Gummi para alterar este comportamiento.
La pregunta editada solicita un enfoque "flexible" basado en el código de Herbert. Con la restricción de que esto supone un caso simple (el nombre del archivo contiene solo una .
extensión para separar, excepto si comienza .
donde se usa Gummi):
\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
Respuesta2
utilizar en el preámbulo:
\makeatletter
\let\JobName\jobname
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
\makeatother
luego \jobname
funciona como de costumbre. Lo anterior sólo es útil para ejecutar un archivo con extensión gummi
.