\nombre del trabajo en Gummi

\nombre del trabajo en Gummi

El comando \jobnamegeneralmente imprime el nombre del archivo sin la ruta ni la extensión, por lo que dentro de un archivo llamado foo.texse imprimirá solo foo. Con pdflatex foo.testo 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 \jobnamecomportamiento 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.texarchivo de prueba, parece que Gummi realmente compila .foo.tex.swp, que está oculto en Unix debido al encabezado .y que .swpno 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.texobtengo 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 \jobnamefunciona como de costumbre. Lo anterior sólo es útil para ejecutar un archivo con extensión gummi.

información relacionada