\jobname in Gummi

\jobname in Gummi

Der Befehl \jobnamegibt normalerweise den Dateinamen ohne Pfad und Erweiterung aus, sodass in einer Datei mit dem Namen foo.texnur ausgegeben wird foo. Mit pdflatex foo.testoder beim Kompilieren aus LaTeXila habe ich dieses Ergebnis sicherlich erhalten. Aber ausGummiwas ich erhalte ist.foo.tex

Weiß jemand, warum Gummi anders kompiliert wird und wie ich das übliche \jobnameVerhalten in Gummi erreichen kann?

Bearbeiten: Aufgrund der hilfreichen Antworten von @JosephWright und @Herbert frage ich mich, ob es möglich ist, die \jobname-Korrektur in Gummi nur durchzuführen, wenn die Quelle die Erweiterung .swp hat oder .tex in \jobname bestehen bleibt.

Das heißt, ich hätte gerne eine Lösung wie:

\makeatletter
\let\JobName\jobname
\ifthenelse{\equal{\detokenize{foo}}{\jobname}}
{}
{
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
}
\makeatother

Mit dieser Bedingung kann überprüft werden, ob der Jobname foo ist oder nicht. Ich möchte jedoch eine allgemeine Lösung, die unabhängig vom Dateinamen ist (und nicht auf die Zeichenfolge foo beschränkt ist).

Antwort1

Wenn ich mir das „Build Log“ ansehe, das ich mit einer foo.texTestdatei erhalte, scheint es, dass Gummi tatsächlich kompiliert .foo.tex.swp, was unter Unix aufgrund des führenden verborgen ist .und die Erweiterung .swpnicht hat .tex. TeX zeigt Ihnen also die richtigen Informationen an. Zum Beispiel mit der Demodatei

\documentclass{article}
\begin{document}
Hello world
\end{document}

gespeichert, wenn foo.texich ein Protokoll bekomme

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.

Ich fürchte, ich habe keine Lösung (außer „einen anderen Editor verwenden“), da es anscheinend keine Gummi-Einstellung gibt, um dieses Verhalten zu ändern.


Die bearbeitete Frage verlangt einen „flexiblen“ Ansatz basierend auf Herberts Code. Mit der Einschränkung, dass dies einen einfachen Fall voraussetzt (der Dateiname enthält nur ein einzelnes Zeichen, .um die Erweiterung zu trennen, außer wenn er dort beginnt, .wo Gummi verwendet wird):

\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

Antwort2

Verwendung in der Präambel:

\makeatletter
\let\JobName\jobname
\def\@JobName.#1.#2\@nil{#1}
\def\jobname{\expandafter\@JobName\JobName\@nil}
\makeatother

funktioniert dann \jobnamewie gewohnt. Das Obige ist nur zum Ausführen einer Datei mit nützlich gummi.

verwandte Informationen