이 명령은 \jobname
일반적으로 경로와 확장명 없이 파일 이름을 인쇄하므로foo.tex
일반적 으로foo
. LaTeXila를 사용하거나 pdflatex foo.test
LaTeXila에서 컴파일하여 확실히 이 결과를 얻었습니다. 하지만구미내가 얻는 것은.foo.tex
Gummi가 다르게 컴파일되는 이유와 평소와 같은 컴파일 방법을 아는 사람이 있습니까?\jobname
Gummi가 왜 다르게 컴파일되고 Gummi에서
편집하다: @JosephWright 및 @Herbert의 유용한 답변을 바탕으로 소스에 .swp 확장자가 있거나 \jobname에 .tex가 지속되는 경우에만 Gummi에서 \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에서 선행으로 인해 숨겨져 있고 .
확장자 .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 설정이 없는 것 같아서 '다른 편집기 사용' 외에는 해결책이 없습니다.
편집된 질문은 Herbert의 코드를 기반으로 하는 '유연한' 접근 방식을 요구합니다. 이는 간단한 경우를 가정한다는 제한 사항이 있습니다(파일 이름에는 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
.