如何简化基本图表

如何简化基本图表

我是 Latex 的初学者,正在尝试将其用于工业文档。我尝试使用以下代码添加一个简单的电气图。但是,我很难调整页面中图表的位置。此外,可能还有更好的方法或工具。有人能建议一个更优雅的解决方案吗?

截屏

\documentclass{article}
\usepackage[top=2cm, bottom=3cm, left=2cm, right=2 cm]{geometry} %Layout of page


\begin{document}

\begin{picture}(50,50)(-30,0)
\linethickness{1pt}

\put(0,50){\line (1,0){80}}
\put(50,50){\line (0,1){20}}
\put(60,50){\line (0,1){20}}
\put(70,50){\line (0,1){20}}
\put(80,50){\line (0,1){20}}

\put(48,75){1}
\put(58,75){3}
\put(68,75){5}
\put(78,75){7}

\put(0,40){\line (1,0){80,0}}
\put(50,40){\line (0,-1){20}}
\put(60,40){\line (0,-1){20}}
\put(70,40){\line (0,-1){20}}
\put(80,40){\line (0,-1){20}}

\put(48,5){2}
\put(58,5){4}
\put(68,5){6}
\put(78,5){8}

\end{picture}


\end{document}

我添加了一小段代码,添加了一条接地线。我打算在原始原理图的右侧添加相同的原理图,但有 20 根电线,并在两者之间略下方添加短接地符号。这个位置并不重要,我想了解所有 3 个图是否应该是单个代码块,或者我可以单独定位的 3 个图...

\documentclass{article}
\begin{document}
\begin{picture}(50,20)(-270,-20) % Begin ground symbol
\linethickness{1pt}
\put(-70,10){\line (0,1){20}}
\put(-80,10){\line (1,0){20}}
\put(-75, 5){\line (1,0){10}}
\put(-72,0){\line (1,0){5}}
\end{picture} end % End ground symbol
\end{document}

答案1

我认为这里有两个不同的问题,我不确定你问的是哪一个:一个是如何有效地绘制图表,我猜,

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \x in {1,2,3,4} {
        \draw (0.3*\x ,2mm) -- (0.3*\x,9mm) 
        node[above] {\pgfmathparse{2*\x-1}\pgfmathprintnumber{\pgfmathresult}}     
        (0.3*\x,-2mm) -- (0.3*\x,-9mm) 
        node[below] {\pgfmathparse{2*\x}\pgfmathprintnumber{\pgfmathresult}};
}
\draw (1.2cm,-2mm) -- ++(-3cm,0) (1.2cm,2mm) -- ++(-3cm,0);
\end{tikzpicture}
\end{document}

这使

在此处输入图片描述

另一个是如何将其放置在页面中(这个问题不太清楚)。如果您可以提供更多有关(它是一个演示文稿还是一篇普通的文章?您想在它周围环绕一些文字吗?它只是一个图形吗?等等)如果您正在设计,我们可以进一步提供帮助。

编辑我希望我是对的,但事实是这样的:

\begin{tikzpicture}
\begin{scope}%--- I just put the first picture in a scope 
\foreach \x in {1,2,3,4} {
        \draw (0.35*\x ,2mm) -- (0.35*\x,9mm) 
        node[above] {\pgfmathparse{2*\x-1}\pgfmathprintnumber{\pgfmathresult}}     
        (0.35*\x,-2mm) -- (0.35*\x,-9mm) 
        node[below] {\pgfmathparse{2*\x}\pgfmathprintnumber{\pgfmathresult}};
}
\draw (1.4cm,-2mm) -- ++(-3cm,0) (1.4cm,2mm) -- ++(-3cm,0);
\end{scope}

\begin{scope}[xshift=5cm]%--- This moves the contents of this scope to the right
\foreach \x in {1,2,...,10} {
        \draw (0.35*\x ,2mm) -- (0.35*\x,9mm) 
        node[above] {\pgfmathparse{2*\x-1}\pgfmathprintnumber{\pgfmathresult}}     
        (0.35*\x,-2mm) -- (0.35*\x,-9mm) 
        node[below] {\pgfmathparse{2*\x}\pgfmathprintnumber{\pgfmathresult}};
}
\draw (3.5cm,-2mm) -- ++(-5cm,0) (3.5cm,2mm) -- ++(-5cm,0);
\end{scope}

% ground symbol does not require a scope anyway but convenient to place it 
% since I am not sure if I got the idea correctly
\begin{scope}[xshift=2.5cm,yshift=-2cm]
\draw (0,0) -- (0,1) (-0.7,0)--(0.7,0);
\draw (-4.5mm,-3mm) -- (4.5mm,-3mm);
\draw (-2mm,-6mm) -- (2mm,-6mm);
\end{scope}
\end{tikzpicture}

在此处输入图片描述

我希望我的情况接近您在编辑中描述的情况。

答案2

不可否认,这有点粗糙,但希望它能为您指明正确的方向。基本上,这会设置 TikZ 的路径样式,让您可以在 TikZ 图片中的任何位置绘制图表。使用center、、环境flushleftflushright您应该能够将图片放在正确的位置figure(假设您使用figure环境来呈现图片)。

\documentclass{article}
\usepackage{tikz}
\begin{document}

\tikzset{my diagram/.style={to path={
         (\tikztostart) coordinate (a) -- (\tikztotarget) coordinate (b)
         ($(a)!0.4cm!+90:(b)$) coordinate (a')
         ($(b)!0.4cm!-90:(a)$) coordinate (b')
         \foreach \distance/\label in {0.0cm/1,0.2cm/3,0.4cm/5,0.6cm/7} {
             ($(b)!\distance!(a)$) coordinate (tmp) -- ($(tmp)!0.4cm!-90:(a)$)
             node[allow upside down,anchor=south,pos=1,sloped,rotate=-90] {\label}
         }
         ($(a)!0.2cm!-90:(b)$) coordinate (c)
         ($(b)!0.2cm!+90:(a)$) coordinate (d)
         (c) -- (d)
         ($(c)!0.4cm!-90:(d)$) coordinate (c')
         ($(d)!0.4cm!+90:(c)$) coordinate (d')
         \foreach \distance/\label in {0.0cm/2,0.2cm/4,0.4cm/6,0.6cm/8} {
             ($(d)!\distance!(c)$) coordinate (tmp) -- ($(tmp)!0.4cm!+90:(c)$)
             node[allow upside down,anchor=north,pos=1,sloped,rotate=+90] {\label}
         }}}}
\begin{tikzpicture}
   \draw (0,0) to[my diagram] (1.5,0);
   \draw (2,2) to[my diagram] (3.0,0);
\end{tikzpicture}
\end{document}

两条路径
(来源:ucc.ie

答案3

xelatex用或运行latex->dvips->ps2pdf

\documentclass{article}
\usepackage{pst-node}
\def\Node#1{\rnode{#1}{#1}}

\begin{document} 

\pnode(0,-8mm){A}\hspace*{3cm}\Node{1}~\Node{3}~\Node{5}~\Node{7}
\psforeach{\iA}{1,3,5,7}{\ncangle[angleB=-90,nodesepB=2pt]{A}{\iA}}

\vspace{1.7cm}
\pnode(0,10mm){A}\hspace*{3cm}\Node{2}~\Node{4}~\Node{6}~\Node{8}
\psforeach{\iA}{2,4,6,8}{\ncangle[angleB=90,nodesepB=2pt]{A}{\iA}}
\end{document}

在此处输入图片描述

相关内容