我有一个问题现在我自己解决了。花了几天时间,所以我想假装其他人也犯了同样的错误。
我想将 Inkscape 中的 .pdf 和 .pdf_tex 文件输入到 Latex 中,并使用 pdflatex 进行编译。因此我使用 \input 命令。但出现以下错误消息:
“!缺少 \endcsname 插入。\unhbox l.15 \input{Belastungsart2.pdf_tex}?”
代码如下:
\documentclass[
final % Status des Dokuments (draft-> nur Rahmen der Bilder)
]{scrreprt}
\usepackage[T1]{fontenc} % T1 Schriftcodierung
\usepackage[ngerman]{babel} % deutsche Silbentrennung einbinden
\usepackage[utf8]{inputenc} % deutsche Umlaute erkennen und darstellen
\usepackage{color}
\usepackage{underscore} %Unterstrich im Text als Unterstrich machen
\begin{document}
\input{Belastungsart2.pdf_tex}
\end{document}
“Belastungsart2.pdf_tex”的内容如下:
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{260.95278915bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.23962115)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0.49704523,0.1373812){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$\sigma$\end{tabular}}}}%
\put(0.59934306,0.14224841){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$\gamma$\end{tabular}}}}%
\put(0.60374442,0.09517703){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$\tau$\end{tabular}}}}%
\end{picture}%
\endgroup%
抱歉,我无法最小化 .pdf_tex 文件的内容。当我注释掉 \usepackage{underscore} 命令时,一切都运行正常。没有任何错误消息。当我将 Belastungsart.pdf_tex 的内容粘贴到主代码中时,一切都运行正常。当我将 .pdf_tex 文件重命名为 .tex 文件时,一切都运行正常。
有没有办法同时使用包下划线并将 \input{.pdf_tex} 放置在 Latex 中?
感谢尼尔森的帮助
答案1
此问题在下划线包手册。
您的代码包含命令\input{Belastungsart2.pdf_tex}
。此命令包含下划线字符,这会导致输入失败,因为underscore
包会更改此字符的解释。如手册中所述,如果您使用命令明确声明此下划线是文字下划线,则它会起作用\string
。
梅威瑟:
\documentclass[
final % Status des Dokuments (draft-> nur Rahmen der Bilder)
]{scrreprt}
\usepackage[T1]{fontenc} % T1 Schriftcodierung
\usepackage[ngerman]{babel} % deutsche Silbentrennung einbinden
\usepackage[utf8]{inputenc} % deutsche Umlaute erkennen und darstellen
\usepackage{color}
\usepackage{underscore} %Unterstrich im Text als Unterstrich machen
\begin{document}
\input{Belastungsart2.pdf\string_tex}
\end{document}
手册中还提到了另一种可能的解决方案,即使用\usepackage[strings]{underscore}
。使用该选项,您可以在文件名中正常使用下划线,因此\input{Belastungsart2.pdf_tex}
可以正常工作。但是,这更危险,因为该选项将修改大量内部代码,这可能会导致其他问题。因此,如果您的文件名等只有几个下划线,最好使用该\string
解决方案。