![LaTex \在路径中包含空格](https://linux22.com/image/322330/LaTex%20%5C%E5%9C%A8%E8%B7%AF%E5%BE%84%E4%B8%AD%E5%8C%85%E5%90%AB%E7%A9%BA%E6%A0%BC.png)
这不是图表。这是一个我想包含的 .tex 文件。我使用了 \input,效果很好。但随着我不断写作,文件变得越来越大,我决定使用 chapterbib 来使引用更清晰。我使用了 natbib,我发现要使 chapterbib 工作,我必须使用 \include 而不是 \input。
当我改为 \include 时,它就不再编译了。
I can't write on file `"Literature review/M.aux"'.
\@include ...\immediate \openout \@partaux #1.aux
\immediate \write \@partau...
l.67 \include{"Literature\space review/M"}
(Press Enter to retry, or Control-D to exit; default file extension is `.tex')
Please type another output file name
! Emergency stop.
\@include ...\immediate \openout \@partaux #1.aux
\immediate \write \@partau...
l.67 \include{"Literature\space review/M"}
我找到了这个但它不起作用。 如何使 \include 处理包含空格的带引号的字符串路径?
我尝试了一些组合。
这有效:( \include{review\M}
假设我在“review”文件夹中有一个名为“M.tex”的文件,并且“review”文件夹与我的基本 tex 文件位于同一文件夹中)
这有效:( \include{"M\space 1"}
假设我的基础 tex 文件的同一文件夹中有一个名为“M 1.tex”的文件)
但这不起作用:(\include{"Literature\space review/M"}
假设我在“文献综述”文件夹中有一个名为“M.tex”的文件,并且“文献综述”文件夹与我的基本 tex 文件位于同一文件夹中)
有人问这是否有效:\include{"Literature review/M"}
。不。它没有错误,但输出只会是review/M
。
我发现有人说要更改 bash 中的 TEXINPUTS。我完全不明白。我用的是 windows。我不知道如何更改路径。
我发现这也不起作用。如何包含路径中带有空格的图形?
我该如何让它工作?谢谢!
更新:
我把所有空格都替换为下划线,但还是不行。是不是因为我的文件太深了?是的\include{{"Folder_A/B/C/D/M"}}
。LaTeX 仍然报告说无法写入“Folder_A/B/C/D/M.aux”文件。所以也许问题一开始就不是由空格引起的。
有什么想法吗?
答案1
对于名称 'amo amas amat',其在 GNU/Linux 上的 TeX Live 下有效:
\documentclass{book}
\includeonly{
"amo\space amas\space amat"
}
\begin{document}
\include{"amo\space amas\space amat"}
\end{document}
这在 Windows 上的 MiKTeX 下有效:
\documentclass{book}
\includeonly{
{"amo amas amat"}
}
\begin{document}
\include{{"amo amas amat"}}
\end{document}
答案2
没有办法转义空格和引号。如果必须,请更改 \include 的定义。
\def\include#1{%
\relax
\ifnum\@auxout=\@partaux
\@latex@error{\string\include\space cannot be nested}\@eha
\else
\begingroup
\escapechar\m@ne
\xdef\@curr@file{%
\expandafter\string\csname #1\endcsname
}
\endgroup
\expandafter\@include\expandafter{\@curr@file} % trailing space
\fi
}
一般来说,永远不要使用引号和多余的括号,除非您知道自己在做什么。在 \includeonly 中,欢迎使用 \space 进行空格转义。
\includeonly{a\space b}
对于 \input,只需用括号覆盖路径即可。\input{a b}
,\input "a b"
都可以。