\Gummi 中的工作名稱

\Gummi 中的工作名稱

此命令\jobname通常會列印不含路徑和副檔名的檔案名,因此在名為的檔案內foo.tex將只列印foo.和pdflatex foo.testLaTeXila 或從 LaTeXila 編譯我當然得到了這個結果。但從軟糖我得到的是.foo.tex

有誰知道為什麼 Gummi 的編譯方式不同以及我如何才能\jobname在 Gummi 中獲得通常的行為?

編輯: 基於 @JosephWright 和 @Herbert 的有用答案,我想知道是否可以在 Gummi 中進行 \jobname 更正,前提是源文件具有 .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

看看我用foo.tex測試檔案得到的“建置日誌”,似乎 Gummi 確實編譯了.foo.tex.swp,由於前導,它在 Unix 上被隱藏.,並且擴展名為.swpnot .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.

相關內容