Команда \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
.