使用 usepackage{underscore} 输入时 pdf_tex 输入错误

使用 usepackage{underscore} 输入时 pdf_tex 输入错误

我有一个问题现在我自己解决了。花了几天时间,所以我想假装其他人也犯了同样的错误。

我想将 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解决方案。

相关内容