
Итак, я создаю руководство по эксплуатации СЭМ на основе блок-схемы в лаборатории, где я работаю, и у меня возникли проблемы с выравниванием узла относительно двух других.
Я уже видел несколько страниц[1][2][3][4]здесь, которые столкнулись с той же проблемой и попробовали ее решения, но безуспешно, так что если кто-то может мне помочь, я буду очень признателен.
Это мой MWE:
%%% DOCUMENT SETTINGS %%%
\documentclass[12pt, a3paper]{article} %page type
\usepackage[margin=2cm]{geometry} %margins
\usepackage{setspace}
\usepackage{indentfirst} %indenting package
\setstretch{1.5} %between lines spacement
\setlength{\parindent}{1.5cm} %first line indentation
%page settings
\usepackage{fancyhdr}
\pagestyle{fancy} % seting to use the customizable head and footers
\fancyhf{} % cleaning standard head and footers to use the new one
\rfoot{Autores: Eduardo de Almeida Isoppo;\\Luiz Felipe Pompermaier.} % page number on the footer's right side
\renewcommand{\headrulewidth}{0pt} %remove the line on the headers
\usepackage{float} % tables and figures in multicols.
%font and language configs
\usepackage[brazil]{babel} %letter type
\usepackage[utf8]{inputenc} %normal acentuation
%\usepackage{arial}
% using pseudoarial font Helvetica.
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
%Reference configs
\usepackage{hyperref}
\hypersetup{
colorlinks=true,
linkcolor=red,
citecolor=black,
filecolor=magenta,
urlcolor=blue,
breaklinks=false,
pdfauthor={Luiz Felipe Pompermaier}
}
%image config
\usepackage{graphicx} % Image using package
%\graphicspath{{Imagens/}} % Image path
\usepackage{caption} % Image, tables, and others captions.
\usepackage{subcaption} % SubImage package. More then one per line.
%math config
\usepackage{amssymb}
\usepackage{amsmath}
% text packages
\usepackage{blindtext} % lorem ipsum
%\usepackage{lipsum}
%\usepackage{titling} % used to make title higger in page
\usepackage{sectsty} % section title
\sectionfont{\fontsize{12}{15}\selectfont} %changing section fontsize
\usepackage{multicol} % multiple columns
\usepackage{xcolor} % coloring text
\usepackage[none]{hyphenat} % no hyphenation
\usepackage{microtype} % better justification
\usepackage{tcolorbox} % text in coloured boxes
% tikz package for flowchart drawings
\usepackage{tikz}
\usepackage{tikz-layers}
\usetikzlibrary{shapes.geometric, arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{fit}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
% Flowchart configs
\tikzstyle{startstop} = [ellipse, minimum width=3cm, minimum height=2cm,text centered, text width=3cm, draw=black, fill=red!30]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, text width=3cm, draw=black, fill=orange!30]
\tikzstyle{decision} = [diamond, aspect=2, minimum width=3cm, minimum height=1cm, text centered, text width=3cm, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth, line width=2pt]
\newlength{\AL}
\setlength{\AL}{2cm}
\begin{document}
\begin{center}
\Huge \textbf{Fluxograma de Operação do MEV}
\end{center}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}
% Nodes and texts
\node (SftWrk) [decision, below=\AL of ScrnON] {Software está funcionando?};
\node (SftErr) [process, left=\AL of SftWrk] {Chame um Técnico};
\node (VentCb) [process, below=\AL of SftWrk] {Ventilar câmara segurando \textbf{VENT}.};
\node (SmplHd) [process, left=\AL of VentCb, dashed] {Montar Porta-amostras desejado.};
\begin{scope}[on behind layer]
\node (Sample) [io][fit=(SmplHd)]{};
\end{scope}
% Arrows
\begin{scope}[on background layer]
\draw[arrow] (SftWrk) -- node[anchor=south] {\textbf{NÃO}} (SftErr);
\draw[arrow] (SftWrk) -- node[anchor=east] {\textbf{SIM}} (VentCb);
\draw[arrow] (Sample) |- ($(EvacCb)!.5!(VentCb)$);
\draw[arrow] (VentCb) -- +(0,-\AL);
\end{tikzpicture}
\end{figure}
\end{document}
Вот какой результат он дает (сосредоточившись на интересующей нас области):
И я хочу выровнять (SmplHd)
поле снизу (SftErr)
и слева от (VentCb)
, если это имеет смысл для всех, кто это читает.
И если говорить более конкретно, то нет, at (SftErr|-VentCb)
команда не работает.
Для полной подборки, пожалуйста, проверьтеhttps://www.overleaf.com/read/nfyvphkggdny
решение1
Редактировать: Расширение фрагмента изображения еще двумя узлами и слегка измененные узлы формируют стили.
Так?
Этот фрагмент изображения получен с помощью следующего MWE (минимальный рабочий пример)
\documentclass[12pt, margin=3mm]{standalone} % page type
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[brazil]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
backgrounds,
calc, chains,
fit,
intersections,
positioning,
quotes,
shapes.geometric,
babel
}
% Flowchart config
\makeatletter
\tikzset{
base/.style = {draw=black, semithick, font=\small,
minimum height=9mm, text width=33mm, align=flush center,
outer sep=0pt},
startstop/.style = {base,
ellipse, fill=red!30},
io/.style = {base,
trapezium, trapezium left angle=70, trapezium right angle=110,
fill=blue!30},
process/.style = {base, fill=orange!30},
decision/.style = {base, inner sep=1pt,
diamond, aspect=2, fill=green!30},
arr/.style = {-Stealth, thick},
every edge quotes/.append style = {auto, pos=0.4, font=\footnotesize\bfseries},
suspend join/.code = {\def\tikz@after@path{}} % for use in not showed image part
}
\makeatother
\newlength{\AL}
\setlength{\AL}{12mm}
\begin{document}
\begin{tikzpicture}[
node distance = \AL and \AL,
start chain = going below
]
% first branch (unfinished)
\begin{scope}[nodes = {on chain, join=by arr}]
\node (ScrnON) [process] {Ligar Monitores};
\node (SftWrk) [decision] {Software está funcionando?};
\node (VentCb) [process] {Ventilar câmara segurando \textbf{VENT}.};
\node (EvacCb) [process] {Evacuar câmara segurando \textbf{EVAC}.};
\end{scope}
% left from first branch
\node (SftErr) [process,
left=of SftWrk] {Chame um Technico};
\node (SmplHd) [process, dashed,
at={(SftErr |- VentCb)}] {Montar Porta-amostras desejado.};
\scoped[on background layer]
\node (Sample) [io, fit=(SmplHd)] {};
% second branch (unfinished)
\begin{scope}[nodes = {on chain, join=by arr}]
\node (HeatON) [process, suspend join,
right=2*\AL of ScrnON] {Subir corrente \textbf{devagar} até ponto de saturação.};
\node (SmpLct) [process] {Localizar Amostra a ser analisada.};
\end{scope}
% third branch
% Arrows
\path
(SftWrk) edge ["\textbf{NÃO}" '] (SftErr)
(SftWrk) edge ["\textbf{SIM}"] (VentCb);
\draw[arr]
(SftWrk) -- (SftErr);
\draw[arr]
(Sample) |- ($(VentCb.south)!0.5!(EvacCb.north)$);
\end{tikzpicture}
\end{document}
- В МВЭ опущено все, что не имеет значения при рисовании изображения.
- Используется современный синтаксис для определения стилей форм узлов (вместо
\tikzset
устаревшегоtikzstyle
) - Положение узла с пунктирной границей находится на пересечении вертикальных линий, проходящих через верхний узел, и горизонтальной линии, проходящей через правый узел, т. е. по
at={(SftErr |- VentCb)}
. - Планируется, что положение узлов в других ветвях будет определяться
chains
(указаны только два верхних узла во второй цепочке) - Код MWE значительно упрощен. С помощью
join=by ...
макроса рисуются все линии связи между узлами внутри ветви, поэтому их нужно рисовать только для узлов вне ветвей и между ветвями.