
Например
У меня есть два проекта TeX с похожей структурой имен файлов:
Master.tex имеет следующую структуру:
\input{preamble.tex} % <- \bibliography{Projekt_A_Literature} in preamble
% ...
\begin{document}
% ...
\include{chapter/Projekt_A_cp1.tex}
\include{chapter/Projket_A_cp2.tex}
\include{chapter/Projekt_A_cp3.tex}
% ...
\end{document}
цель такова: я могу легко и быстро изменить группу файлов глав для ввода.
\include{chpater/Project_A_cp1.tex} \include{chpater/Project_B_cp1.tex}
\include{chpater/Project_A_cp2.tex} ==> \include{chpater/Project_B_cp2.tex}
\include{chapter/Project_A_cp3.tex} \include{chpater/Project_B_cp3.tex}
простой, но не элегантный подход:
\newcommand{\prjindex}{A} $ or \def\prjindex{A}
%...
\begin{document}
\include{chpater/Project_\prjindex_cp1.tex}
\include{chpater/Project_\prjindex_cp2.tex}
\include{chpater/Project_\prjindex_cp3.tex}
\end{document}
вопрос этого решения в том, что если я компилирую не в главном TeX-файле, то выдает ошибки типа
Неопределенная последовательность управления ....{Project_\prjindex_Literature.tex}.
Поэтому я пришел сюда за более элегантным решением.
решение1
Похоже, вам нужен «механизм» для автоматического определения \prjindex
в ситуациях, когда определение \prjindex
не дано «вручную».
Предварительные замечания:
Обычнорасширение примитива \jobname
формирует имя того файла (без расширения), который был использован для инициирования компиляции.
Например, если вы компилируете проект, основной файл которого находится testfile.tex
через командную строку
latex testfile.tex
, примитив \jobname
будет расширен до фразы testfile
.
Символьные токены во фразах, доставленных с помощью , \jobname
всегда будут иметь код категории 12 (другое), а пробелы всегда будут иметь код категории 10 (пробел).
Фраза testfile
, которая происходит от расширения, \jobname
будет использоваться для
- создание .log-файла: .log-файл будет иметь имя
testfile.log
. - создание основного .aux-файла: Он будет называться
testfile.aux
. - создание .toc-файла, содержащего данные для оглавления: Он будет называться
testfile.toc
. - создание .lof-файла, содержащего данные для списка фигур: Он будет называться
testfile.lof
. - создание .lot-файла, содержащего данные для списка таблиц: Он будет называться
testfile.lot
. - и т. д.
Но в большинстве современных дистрибутивов TeX вы можете использовать (La)TeXотклоняться от обычного способа решения проблем:
В большинстве современных дистрибутивов TeX вы можете указать в командной строке параметр командной строки (-option ), который позволяет вам изменить выводимую ‑‑jobname
фразу .\jobname
Например, если вы компилируете проект, основной файл которого находится testfile.tex
через командную строку
latex --jobname=foobar testfile.tex
, примитив \jobname
будет расширен до фразы foobar
.
В этом случае фраза foobar
, которая происходит от расширения, \jobname
будет использоваться для
- создание .log-файла: .log-файл будет иметь имя
foobar.log
. - создание основного .aux-файла: Он будет называться
foobar.aux
. - создание .toc-файла, содержащего данные для оглавления: Он будет называться
foobar.toc
. - создание .lof-файла, содержащего данные для списка фигур: Он будет называться
foobar.lof
. - создание .lot-файла, содержащего данные для списка таблиц: Он будет называться
foobar.lot
. - и т. д.
С моим предложением ниже, LaTeX должен обрабатывать вещивобычный способ, т.е. вещи должны быть скомпилированыбезпредоставляя некоторые‑‑jobname
-вариант.
Поэтому мое предложение ниже не подойдет тем, кто использует такие (онлайн-)платформы LaTeX/редакторы TeX/пользовательские интерфейсы, где под капотом все настроено на использование опции ‑‑jobname
.
В случае
- имена всех тех файлов, во время компиляции которых определение
\prjindex
должно быть «определено автоматически» (так как оно не будет определено «вручную»), имеют шаблон — оба обозначают проект, не являются пустыми и не содержат подчеркиваний ( ) —Projekt_⟨#1⟩_⟨#2⟩.tex
⟨#1⟩
_
- вызов latex для «автономной компиляции» файлов, во время компиляции которых всегда происходит определение
\prjindex
«автоопределения»безвызов‑‑jobname
опции -option (подразумевающей, что расширение опции\jobname
-primitive формирует имя того файла (без расширения), который использовался для начала компиляции)
\GetPrjindexFromJobnameIfUndefined
, который действует следующим образом:
Если макрос \prjindex
уже определен, он ничего не делает.
В случае, если макрос \prjindex
не определен, он проверяет, имеет ли расширение -primitive \jobname
шаблон . Если это не тот шаблон, будет выдано сообщение об ошибке. Если это тот шаблон, будет проверено, будет ли он пустым. Если это так, будет выдано сообщение об ошибке. Если это не так, макрос будет определен для расширения в .Projekt_⟨#1⟩_⟨#2⟩
⟨#1⟩
\prjindex
⟨#1⟩
Я не могу решить, полезна ли вам эта процедура, поскольку вы не раскрыли слишком подробно, как организована та часть файловой структуры вашего проекта, которая позволяет компилировать отдельные файлы как «автономно», так и при вызове из главного tex-файла через или .Projekt_⟨#1⟩_⟨#2⟩.tex
\input
\include
В случае, если все файлы проектов каким-то образом имеют одинаковую преамбулу, вы, вероятно, можете сделать эту процедуру доступной для всех файлов проектов через эту преамбулу.
Вероятно, вы можете включить эту процедуру (и вызов к ней) в свой preamble.tex.
Эта процедура ничего не делает в случае, если \prjindex
уже определена.
Поэтому
- внутри
master.tex
вы можете определить\prjindex
довводpreamble.tex
. - сценарий автономной компиляции одного из ваших -файлов приводит к вводу while is not yet defined, что в свою очередь приводит к процедуре «автоматического обнаружения» и определения для вас путем проверки результата расширения .
Projekt_⟨#1⟩_⟨#2⟩.tex
\preamble.tex
\prjindex
\GetPrjindexFromJobnameIfUndefined
\prjindex
\jobname
\documentclass{article}
%%========Code for \GetPrjindexFromJobnameIfUndefined=========
\begingroup
\makeatletter
\def\prjprephrase{Projekt_}%
\def\prjpostphrase{_}%
% \jobname delivers everything but the space (which will be of catcode 10)
% with catcode 12(other). Therefore "sanitizing" is needed for turning
% everything but the space into catcode 12(other):
\@onelevel@sanitize\prjprephrase
\@onelevel@sanitize\prjpostphrase
\newcommand\GetPrjindexFromJobnameIfUndefined[2]{%
\endgroup
\newcommand\GetPrjindexFromJobnameIfUndefined{%
\@ifundefined{prjindex}{%
\expandafter\GetPrjindexCheckPattern\jobname$#1#2$&%
}{}%
}%
\@ifdefinable\GetPrjindexCheckPattern{%
\def\GetPrjindexCheckPattern##1#1##2#2##3$##4&{%
\GetPrjindexPatternfork
&##4&{\expandafter\GetPrjindexExtractfrompattern\jobname$}%
#2$&{%
\GenericError{(\string\prjindex)\space}{%
Error on input line \the \inputlineno:\MessageBreak
\string\GetPrjindexFromJobnameIfUndefined\space cannot extract the\MessageBreak
\string\prjindex\space from \string\jobname's expansion.\MessageBreak
(\string\GetPrjindexFromJobnameIfUndefined\space is defined\MessageBreak
\space somewhere in this document.)\@gobble
}{Have a look at the comments in this document.}%
{%
\string\GetPrjindexFromJobnameIfUndefined\space can extract the \string\prjindex\MessageBreak
from \string\jobname's expansion only in case \string\jobname's expansion is\MessageBreak
of pattern\MessageBreak
\@spaces #1\string####1#2\string####2\MessageBreak
while \string####1 is not empty.\MessageBreak
If this is the case, the expansion of \string\prjindex\space will be \string####1.\MessageBreak
\string####1 will not contain underscores (\string_).\MessageBreak
\string####2 can contain underscores.\MessageBreak
}%
}%
&&&&%
}%
}%
\@ifdefinable\GetPrjindexPatternfork{%
\def\GetPrjindexPatternfork##1#2$&##2##3&&&&{##2}%
}%
\@ifdefinable\GetPrjindexExtractfrompattern{%
\def\GetPrjindexExtractfrompattern#1##1#2##2${%
\ifx\relax##1\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{%
\GenericError{(\string\prjindex)\space}{%
Error on input line \the \inputlineno:\MessageBreak
\string\prjindex\space is empty.\MessageBreak
(\string\GetPrjindexFromJobnameIfUndefined\space is defined\MessageBreak
\space somewhere in this document.)\@gobble
}{Have a look at the comments in this document.}%
{%
\string\GetPrjindexFromJobnameIfUndefined\space can extract the \string\prjindex\MessageBreak
from \string\jobname's expansion only in case \string\jobname's expansion is\MessageBreak
of pattern\MessageBreak
\@spaces #1\string####1#2\string####2\MessageBreak
while \string####1 is not empty.\MessageBreak
If this is the case, the expansion of \string\prjindex\space will be \string####1.\MessageBreak
\string####1 will not contain underscores (\string_).\MessageBreak
\string####2 can contain underscores.\MessageBreak
}%
}%
{\newcommand*\prjindex{##1}}%
}%
}%
}%
\expandafter\expandafter\expandafter\GetPrjindexFromJobnameIfUndefined
\expandafter\expandafter\expandafter{\expandafter\prjprephrase\expandafter}%
\expandafter{\prjpostphrase}%
%%=====End of code for \GetPrjindexFromJobnameIfUndefined=====
\GetPrjindexFromJobnameIfUndefined
\show\prjindex
\begin{document}
Some document
\end{document}
Кстати: для тестирования процедуры я сохранил пример выше test.tex
и скомпилировал его, вызвав ‑‑jobname
опцию - с разными значениями.
Компиляция с помощью команды latex test.tex
дала ожидаемый результат:
! Error on input line 80:
(\prjindex) \GetPrjindexFromJobnameIfUndefined cannot extract the
(\prjindex) \prjindex from \jobname's expansion.
(\prjindex) (\GetPrjindexFromJobnameIfUndefined is defined
(\prjindex) somewhere in this document.)
Have a look at the comments in this document.
Type H <return> for immediate help.
...
l.80 \GetPrjindexFromJobnameIfUndefined
?
> \prjindex=undefined.
l.82 \show\prjindex
Это было ожидаемо, поскольку в данном случае \jobname
расширение test
не соответствует шаблону .
Projekt_⟨#1⟩_⟨#2⟩
Компиляция с помощью команды latex ‑‑jobname=Projekt_A_4 test.tex
дала ожидаемый результат:
\prjindex=macro:
->A.
l.82 \show\prjindex
(Вы получите то же самое, если сохраните пример как Projekt_A_4.tex
и скомпилируйте его с помощью команды latex Projekt_A_4.tex
.)
Компиляция с помощью команды latex ‑‑jobname=Projekt_B_4 test.tex
дала ожидаемый результат:
\prjindex=macro:
->B.
l.82 \show\prjindex
(Вы получите то же самое, если сохраните пример как Projekt_B_4.tex
и скомпилируйте его с помощью команды latex Projekt_B_4.tex
.)
Компиляция с помощью команды latex ‑‑jobname=Projekt_JohannGambolputty_12345 test.tex
дала ожидаемый результат:
\prjindex=macro:
->JohannGambolputty.
l.82 \show\prjindex
(Вы получите то же самое, если сохраните пример как Projekt_JohannGambolputty_12345.tex
и скомпилируйте его с помощью команды latex Projekt_JohannGambolputty_12345.tex
.)
Кстати:
Иногда я организую файлы своих проектов следующим образом:
Преамбула.tex
% Check whether the \documentclass-command was already invoked.
% If so, increment \inputlevel and stop inputting.
% If not so, don't stop imputting and thus do all the
% preamble-stuff, inclusive defining \inputlevel:
\expandafter\ifx\csname @twoclasseserror\endcsname\documentclass
\xdef\inputlevel{\number\numexpr\inputlevel+1\relax}%
\expandafter\endinput
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}%
%
\newcommand*\inputlevel{1}%
\global\let\inputlevel=\inputlevel
%
% Whatsoever preamble-commands, etc.
%
% Here you can also place the code for defining \GetPrjindexFromJobnameIfUndefined
% and then invoke it for defining \prjindex:
%
%%========Code for \GetPrjindexFromJobnameIfUndefined=========
\begingroup
\makeatletter
\def\prjprephrase{Projekt_}%
\def\prjpostphrase{_}%
% \jobname delivers everything but the space (which will be of catcode 10)
% with catcode 12(other). Therefore "sanitizing" is needed for turning
% everything but the space into catcode 12(other):
\@onelevel@sanitize\prjprephrase
\@onelevel@sanitize\prjpostphrase
\newcommand\GetPrjindexFromJobnameIfUndefined[2]{%
\endgroup
\newcommand\GetPrjindexFromJobnameIfUndefined{%
\@ifundefined{prjindex}{%
\expandafter\GetPrjindexCheckPattern\jobname$#1#2$&%
}{}%
}%
\@ifdefinable\GetPrjindexCheckPattern{%
\def\GetPrjindexCheckPattern##1#1##2#2##3$##4&{%
\GetPrjindexPatternfork
&##4&{\expandafter\GetPrjindexExtractfrompattern\jobname$}%
#2$&{%
\GenericError{(\string\prjindex)\space}{%
Error on input line \the \inputlineno:\MessageBreak
\string\GetPrjindexFromJobnameIfUndefined\space cannot extract the\MessageBreak
\string\prjindex\space from \string\jobname's expansion.\MessageBreak
(\string\GetPrjindexFromJobnameIfUndefined\space is defined\MessageBreak
\space somewhere in this document.)\@gobble
}{Have a look at the comments in this document.}%
{%
\string\GetPrjindexFromJobnameIfUndefined\space can extract the \string\prjindex\MessageBreak
from \string\jobname's expansion only in case \string\jobname's expansion is\MessageBreak
of pattern\MessageBreak
\@spaces #1\string####1#2\string####2\MessageBreak
while \string####1 is not empty.\MessageBreak
If this is the case, the expansion of \string\prjindex\space will be \string####1.\MessageBreak
\string####1 will not contain underscores (\string_).\MessageBreak
\string####2 can contain underscores.\MessageBreak
}%
}%
&&&&%
}%
}%
\@ifdefinable\GetPrjindexPatternfork{%
\def\GetPrjindexPatternfork##1#2$&##2##3&&&&{##2}%
}%
\@ifdefinable\GetPrjindexExtractfrompattern{%
\def\GetPrjindexExtractfrompattern#1##1#2##2${%
\ifx\relax##1\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{%
\GenericError{(\string\prjindex)\space}{%
Error on input line \the \inputlineno:\MessageBreak
\string\prjindex\space is empty.\MessageBreak
(\string\GetPrjindexFromJobnameIfUndefined\space is defined\MessageBreak
\space somewhere in this document.)\@gobble
}{Have a look at the comments in this document.}%
{%
\string\GetPrjindexFromJobnameIfUndefined\space can extract the \string\prjindex\MessageBreak
from \string\jobname's expansion only in case \string\jobname's expansion is\MessageBreak
of pattern\MessageBreak
\@spaces #1\string####1#2\string####2\MessageBreak
while \string####1 is not empty.\MessageBreak
If this is the case, the expansion of \string\prjindex\space will be \string####1.\MessageBreak
\string####1 will not contain underscores (\string_).\MessageBreak
\string####2 can contain underscores.\MessageBreak
}%
}%
{\newcommand*\prjindex{##1}}%
}%
}%
}%
\expandafter\expandafter\expandafter\GetPrjindexFromJobnameIfUndefined
\expandafter\expandafter\expandafter{\expandafter\prjprephrase\expandafter}%
\expandafter{\prjpostphrase}%
%%=====End of code for \GetPrjindexFromJobnameIfUndefined=====
%
% This will define \prjindex depending on the expansion of \jobname
% while \jobname usually represents the name of the file used for
% initiating compilation:
%
% !!! I don't know whether, e.g., online-latex-plattforms like overleaf
% !!! invoke latex using the -jobname-option, which would lead to
% !!! the expansion of \jobname deviating from the name of the file
% !!! used for initiating compilation.
%
\GetPrjindexFromJobnameIfUndefined
%
% With subsequent preamble-commands you can, if you wish, fork depending on
% the expansion of \prjindex. But be aware that like \jobname \prjindex also
% holds only characters of catcode 12(other) and spaces of catcode 10(space).
% Therefore when storing a string in a temporary macro (this should, like
% \prjindex not be defined in terms of \long, which is the case with
% \def or \newcommand*) and \ifx-comparing that temporary macro to \prjindex,
% make sure that the definition of that temporary macro is "sanitized" by
% means of \@onelevel@sanitize before doing the \ifx-comparison.
%
% \usepackage...
% \usepackage...
%
\begin{document}%
\endinput
|
| Place whatsoever comments remarks and explanations and manuals you wish to place
| here. They won't be processed because LaTeX ceases reading and processing this
| file when encountering \endinput.
Постамбула.tex
\csname @\ifnum\inputlevel>1 second\else first\fi oftwo\endcsname
{%
\end{document}%
}{%
\xdef\inputlevel{\number\numexpr\inputlevel-1\relax}%
}%
Проект_A_cp1.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_A\string_cp1.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp1.tex}.\par
The file \texttt{Projekt\string_\prjindex\string_cp1.tex} invokes the file \texttt{Projekt\string_\prjindex\string_cp2.tex}:\par
\input{Projekt_\prjindex_cp2.tex}%
%----------------------
\input{Postamble.tex}%
%----------------------
Проект_A_cp2.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_A\string_cp2.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp2.tex}.\par
The file \texttt{Projekt\string_\prjindex\string_cp2.tex} invokes the file \texttt{Projekt\string_\prjindex\string_cp3.tex}:\par
\input{Projekt_\prjindex_cp3.tex}%
%----------------------
\input{Postamble.tex}%
%----------------------
Проект_A_cp3.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_A\string_cp3.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp3.tex}.\par
%----------------------
\input{Postamble.tex}%
%----------------------
Проект_B_cp1.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_B\string_cp1.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp1.tex}.\par
The file \texttt{Projekt\string_\prjindex\string_cp1.tex} invokes the file \texttt{Projekt\string_\prjindex\string_cp2.tex}:\par
\input{Projekt_\prjindex_cp2.tex}%
%----------------------
\input{Postamble.tex}%
%----------------------
Проект_B_cp2.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_B\string_cp2.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp2.tex}.\par
The file \texttt{Projekt\string_\prjindex\string_cp2.tex} invokes the file \texttt{Projekt\string_\prjindex\string_cp3.tex}:\par
\input{Projekt_\prjindex_cp3.tex}%
%----------------------
\input{Postamble.tex}%
%----------------------
Проект_B_cp3.tex
%----------------------
\input{Preamble.tex}%
%----------------------
This is file \texttt{Projekt\string_B\string_cp3.tex}\par
This is the text in file \texttt{Projekt\string_\prjindex\string_cp3.tex}.\par
%----------------------
\input{Postamble.tex}%
%----------------------
Таким образом, каждый из файлов Projekt_A_cp1.tex
, Projekt_A_cp2.tex
, Projekt_A_cp3.tex
соответственно, каждый из файлов Projekt_B_cp1.tex
, Projekt_B_cp2.tex
, Projekt_B_cp3.tex
может использоваться как для компиляции «отдельно», так и для вызова через \input
или посредством \include
другого файла того же проекта.
Preamble.tex
может содержать код, в котором происходит разветвление в зависимости от значения \prjindex
, поэтому для разных проектов в одном и том же файле преамбулы все может обрабатываться по-разному.
решение2
Я не уверен, в чем проблема, но вам наверняка нужно внести изменения в свой код: аргумент \include
долженнетимеют .tex
расширение .
\documentclass{book}
% why shouldn't this be elegant
\newcommand{\projectindex}{B}
\begin{document}
\include{chapter/Project_\projectindex_cp1}
\include{chapter/Project_\projectindex_cp2}
\include{chapter/Project_\projectindex_cp3}
\end{document}
Вот вывод терминала при компиляции этого кода
pdflatex sun
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./sun.tex
LaTeX2e <2019-10-01> patch level 3
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/book.cls
Document Class: book 2019/10/25 v1.4k Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/bk10.clo)) (./sun.aux
(./chapter/Project_B_cp1.aux) (./chapter/Project_B_cp2.aux)
(./chapter/Project_B_cp3.aux)) (./chapter/Project_B_cp1.tex
Chapter 1.
) [1{/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./chapter/Project_B_cp2.tex [2]
Chapter 2.
) [3] (./chapter/Project_B_cp3.tex [4]
Chapter 3.
) [5] (./sun.aux (./chapter/Project_B_cp1.aux) (./chapter/Project_B_cp2.aux)
(./chapter/Project_B_cp3.aux)) )</usr/local/texlive/2019/texmf-dist/fonts/type1
/public/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2019/texmf-dist/fonts/type1/
public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2019/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmsl10.pfb>
Output written on sun.pdf (5 pages, 30009 bytes).
Если я изменю на \newcommand{\projectindex}{A}
, то после двух запусков LaTeX я получу
pdflatex sun
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./sun.tex
LaTeX2e <2019-10-01> patch level 3
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/book.cls
Document Class: book 2019/10/25 v1.4k Standard LaTeX document class
(/usr/local/texlive/2019/texmf-dist/tex/latex/base/bk10.clo)) (./sun.aux
(./chapter/Project_A_cp1.aux) (./chapter/Project_A_cp2.aux)
(./chapter/Project_A_cp3.aux)) (./chapter/Project_A_cp1.tex
Chapter 1.
) [1{/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./chapter/Project_A_cp2.tex [2]
Chapter 2.
) [3] (./chapter/Project_A_cp3.tex [4]
Chapter 3.
) [5] (./sun.aux (./chapter/Project_A_cp1.aux) (./chapter/Project_A_cp2.aux)
(./chapter/Project_A_cp3.aux)) )</usr/local/texlive/2019/texmf-dist/fonts/type1
/public/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2019/texmf-dist/fonts/type1/
public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2019/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmsl10.pfb>
Output written on sun.pdf (5 pages, 29893 bytes).
Transcript written on sun.log.
Как видите, ожидаемые файлы включены.