东南,
我对 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%
.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 中的字体大小不匹配时,这会给你带来麻烦。所以有两种方法:
通过在(可能在组中, )之前添加
\small
、footnotesize
等之一来调整字体大小,使得文本占用与 Inkscape 中大致相同的空间并且覆盖消失。input
{\small\input{drawing.pdf_tex}}
导出为 PDF+TeX 时会遵循 Inkscape 中选择的水平对齐方式。例如,在 Inkscape 中将“Probeschleife”更改为右对齐(那里的文本仍将位于相同位置)将导致出现
\makebox(0,0)[rt]
,因此即使文本比 Inkscape 中的文本大,文本也不会与右侧的图形重叠。
因此,我的建议是:在 Inkscape 中,对图纸右侧的标签使用左对齐,对图纸左侧的标签使用右对齐,对图纸下方/上方的标签使用居中对齐;然后在语句前面尝试使用不同的字体大小\input
。