从 Inkscape 导出后调整图表标签

从 Inkscape 导出后调整图表标签

东南,

我对 TikZ 一点经验都没有,所以我决定使用 Inkscape。使用 Inkscape,我重新创建了此图表(第 13 页截屏。 在 Inkscape 中,它看起来非常好,标签(即洗脱液和探针)很好地从零件中移开。

但是,如果我将其保存为 PDF,请按照以下步骤操作工作流程,我得到以下信息(添加黄色框来显示问题):截图二

在某些情况下(例如 Trennsäule),文本与图像并不冲突。然而,在概述的情况下,文本与图像是冲突的。

如果您有.pdf_tex,有没有办法手动调整标签?

.pdf_tex:

%%Removed all the text above to reduce the code.
\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}{300.47244094bp}%
    \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.50943396)%
    \lineheight{1}%
    \setlength\tabcolsep{0pt}%
    \put(0,0){\includegraphics[width=\unitlength,page=1]{drawing.pdf}}%
    \put(0.01946427,0.0958815){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Eluent\end{tabular}}}}%
    \put(0.14899702,0.09653322){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}HPLC-Pumpe\end{tabular}}}}%
    \put(0.36244725,0.30626527){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Injektionsventil\end{tabular}}}}%
    \put(0.45561144,0.10247889){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Probe\end{tabular}}}}%
    \put(0.64807278,0.01856142){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Detektor\end{tabular}}}}%
    \put(0.40054089,0.41600586){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Trennsäule\end{tabular}}}}%
    \put(0.72131691,0.47639177){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Nachreaktor /\\Derivatisierung\end{tabular}}}}%
    \put(0.78010564,0.11191285){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Leitfähigkeit\\UV-VIS\\Amperometrie\\Atomspektrometrie\end{tabular}}}}%
    \put(0.09818964,0.34282572){\color[rgb]{0,0,0}\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}Probeschleife\end{tabular}}}}%
    \put(0,0){\includegraphics[width=\unitlength,page=2]{drawing.pdf}}%
  \end{picture}%
\endgroup%

图纸.pdf

.tex 文件:

\documentclass[11pt,a4paper]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{transparent}
\begin{document}
\begin{figure}
\def\svgwidth{\textwidth}
\input{drawing.pdf_tex}
\caption{A caption.}
\end{figure}
\end{document}

答案1

根据我的经验,对 SVG 文件进行一些调整,然后重新导出为 PDF+TeX 会更容易。尝试调整 pdf_tex 几乎与从头开始在 TikZ 中进行完整绘图一样复杂。

我从你的 pdf_tex 中看到很多,\makebox(0,0)[lt]这意味着你为所有文本元素选择了左对齐。当 Inkscape 中的字体大小与 LaTeX 中的字体大小不匹配时,这会给你带来麻烦。所以有两种方法:

  • 通过在(可能在组中, )之前添加\smallfootnotesize等之一来调整字体大小,使得文本占用与 Inkscape 中大致相同的空间并且覆盖消失。input{\small\input{drawing.pdf_tex}}

  • 导出为 PDF+TeX 时会遵循 Inkscape 中选择的水平对齐方式。例如,在 Inkscape 中将“Probeschleife”更改为右对齐(那里的文本仍将位于相同位置)将导致出现\makebox(0,0)[rt],因此即使文本比 Inkscape 中的文本大,文本也不会与右侧的图形重叠。

因此,我的建议是:在 Inkscape 中,对图纸右侧的标签使用左对齐,对图纸左侧的标签使用右对齐,对图纸下方/上方的标签使用居中对齐;然后在语句前面尝试使用不同的字体大小\input

相关内容