我写了一个个人日记模板。主 tex 文件\input
是一个名为 entry.tex 的文件,它将记录\input
所有日记条目,这些条目位于子目录中,并记录条目的标题和日期(两者都是从路径和文件名中获取的)
entry.tex 是由一个名为 entry.py 的 python 脚本生成的,该脚本的输出如下所示:
\textbf{This is the title} \hspace*{\fill} \textbf{2018-11-16}\\
\input{entries/2018/11/16 - This is the title} \bigskip
\textbf{This is another entry} \hspace*{\fill} \textbf{2018-11-18}\\
\input{entries/2018/11/18 - This is another entry} \bigskip
main.tex 文件如下所示:
\documentclass{article}
\usepackage[margin=4cm,left=2cm,right=2cm]{geometry}
\title{\huge{}Personal Diary}
\author{\LARGE{}Author name}
\date{Last written \today}
\begin{document}
\maketitle
\newpage
\input{entries}
\end{document}
目录树如下所示:
Diary
├── entries
│ └── 2018
│ ├── 01
│ ├── 02
│ ├── 03
│ ├── 04
│ ├── 05
│ ├── 06
│ ├── 07
│ ├── 08
│ ├── 09
│ ├── 10
│ ├── 11
│ │ ├── 16 - This is the title.tex
│ │ └── 18 - This is another entry.tex
│ └── 12
├── entries.py
├── entries.tex
├── main.tex
└── makefile
但是,当我尝试编译 main.tex 时,它似乎找到了 entry.tex,但没有找到 entry.tex 包含的文件。它的输出如下所示:
python3 entries.py
pdflatex main.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./main.tex
LaTeX2e <2018-04-01> patch level 5
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty)
(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty))
No file main.aux.
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./entries.tex
! LaTeX Error: File `entries/2018/11/16 - This is the title.tex' not found.
Type X to quit or <RETURN> to proceed,
or enter new name. (Default extension: tex)
Enter file name:
我确信它entries/2018/11/16 - This is the title.tex
存在。有人知道为什么 LaTeX 找不到它吗?
我已经创建了一个 github repo,其中包含所有代码,供任何想要尝试的人使用:https://github.com/ventlion/latexdiary
答案1
从 LaTeX 2019-10-01 版本开始,"
不再需要显式引用,因此
\input{entries/2018/11/18 - This is another entry}
可以,但最好还是避免在文件名中使用空格,
问题是文件名中的空格要么使用引号,如
\input{"entries/2018/11/18 - This is another entry"}
或者(通常更好)避免在文件名中使用空格。
文件名的语法是 TeX 中少数几个依赖于系统的部分之一,但所有基于 web2c 的发行版都支持此引用约定(特别是 texlive 和 miktex)。