LaTex \在路径中包含空格

LaTex \在路径中包含空格

这不是图表。这是一个我想包含的 .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}

参考:24.2 \include 和 \includeonly

答案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"都可以。

相关内容