\jobname в Гамми

\jobname в Гамми

Команда \jobnameобычно печатает имя файла без пути и расширения, поэтому внутри файла с именем foo.texбудет печататься только foo. С pdflatex foo.testили компиляцией из LaTeXila я, конечно, получил этот результат. Но изГаммито, что я получаю, это.foo.tex

Кто-нибудь знает, почему Gummi компилируется по-другому и как мне добиться обычного \jobnameповедения в Gummi?

Редактировать: Основываясь на полезных ответах @JosephWright и @Herbert, я задаюсь вопросом, возможно ли выполнить исправление \jobname в Gummi, только если исходный файл имеет расширение .swp или .tex сохраняется в \jobname.

То есть, я хотел бы получить такое решение:

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

Это условие работает для проверки того, является ли имя задания foo или нет, но мне нужно общее решение, независимое от имени файла (не ограничивающееся строкой foo).

решение1

Взглянув на 'Build Log', который я получаю с foo.texтестовым файлом, кажется, что Gummi на самом деле компилирует .foo.tex.swp, который скрыт в Unix из-за начального ., и который имеет расширение .swpне .tex. Так что TeX показывает вам правильную информацию. Например, с демо-файлом

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

сохранено, как foo.texя получаю журнал

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.

Боюсь, у меня нет решения (кроме «использовать другой редактор»), поскольку, похоже, в Gummi нет настройки, позволяющей изменить это поведение.


Отредактированный вопрос требует «гибкого» подхода, основанного на коде Герберта. С тем ограничением, что это предполагает простой случай (имя файла содержит только один символ .для разделения расширения, за исключением случаев, когда оно начинается .там, где используется 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

решение2

использовать в преамбуле:

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

затем \jobnameработает как обычно. Вышеуказанное полезно только для запуска файла с расширением gummi.

Связанный контент