下面是我的 MWE。我唯一的问题是,我需要的tikzpicture
是pagewidth
( textwidth
) 并且不溢出到右侧。我尝试了adjustbox
、fbox
和resizebox
。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
bibliography=totoc, % Literaturverzeichnis mit Nummer im
Inhaltsverzeichnis (``TO Table Of Contents'')
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning,chains}
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols}
\usepackage{capt-of}
\tikzstyle{rounddiagram} = [
%\tikzset{
>=stealth',
punktchain/.style={
rectangle,
rounded corners,
% fill=black!10,
draw=black, very thick,
text width=10em,
minimum height=3em,
text centered,
on chain},
line/.style={draw, thick, <-},
element/.style={
tape,
top color=white,
bottom color=blue!50!black!60!,
minimum width=8em,
draw=blue!40!black!90, very thick,
text width=10em,
minimum height=3.5em,
text centered,
on chain},
every join/.style={->, thick,shorten >=1pt},
decoration={brace},
tuborg/.style={decorate},
tubnode/.style={midway, right=2pt},
]%}
\begin{document}
\begin{figure}
\begin{tikzpicture}
[style=rounddiagram, node distance=.8cm, start chain=going right]
\node[punktchain, join]{FairRun};
\node[punktchain, join]{Set I/O};
\node[punktchain, join]{CbmStsFindClusters};
\node[punktchain, join]{CbmStsFindHits};
\end{tikzpicture}
\end{figure}
\end{document}
任何帮助都将受到赞赏。
答案1
您可以随时计算节点应具有的最大宽度,以精确填充整个页面。我们需要4*(space taken by a node)+3*(node distance)=\textwidth
,其中space taken by a node=(text width) + 2*(inner sep)+2*(outer sep)
。请注意,\tikzstyle
已弃用。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
bibliography=totoc, % Literaturverzeichnis mit Nummer im
Inhaltsverzeichnis (``TO Table Of Contents'')
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning,chains}
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols}
\usepackage{capt-of}
\tikzset{rounddiagram/.style={>=stealth'},
punktchain/.style={
rectangle,
rounded corners,
% fill=black!10,
draw=black, very thick,
text width=10em,
minimum height=3em,
text centered,
on chain},
% line/.style={draw, thick, <-},
% element/.style={
% tape,
% top color=white,
% bottom color=blue!50!black!60!,
% minimum width=8em,
% draw=blue!40!black!90, very thick,
% text width=10em,
% minimum height=3.5em,
% text centered,
% on chain},
every join/.style={->, thick,shorten >=1pt},
% decoration={brace},
% tuborg/.style={decorate},
% tubnode/.style={midway, right=2pt},
}
\begin{document}
\begin{figure}
\begin{tikzpicture}[rounddiagram, node distance=.8cm, start chain=going right]
\pgfmathsetmacro{\mynodewidth}{(\textwidth-3*0.8cm)/4-4pt}
\begin{scope}[punktchain/.append style={text width=\mynodewidth pt,inner sep=1pt,outer
sep=1pt}]
\node[punktchain, join]{FairRun};
\node[punktchain, join]{Set I/O};
\node[punktchain, join]{CbmStsFindClusters};
\node[punktchain, join]{CbmStsFindHits};
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
输出表明您可能希望将第三个节点的文本写成两行,为不同的节点设置不同的宽度,或者通过scale=(something <1)
在节点中使用使它们更小。
假设您只想缩放文本。使图片精确适合的比例因子可以按如下方式计算。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
bibliography=totoc, % Literaturverzeichnis mit Nummer im
Inhaltsverzeichnis (``TO Table Of Contents'')
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{positioning,chains,arrows}
\tikzset{rounddiagram/.style={>=stealth'},
punktchain/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=10em,
minimum height=3em,
text centered,
on chain},
every join/.style={->, thick,shorten >=1pt}}
\begin{document}
\begin{figure}
\begin{tikzpicture}[rounddiagram, node distance=.8cm, start chain=going right]
\def\myLst{FairRun,Set I/O,CbmStsFindClusters,CbmStsFindHits}
\def\mywidth{0}
\foreach \X [count=\Y] in \myLst
{
\pgfmathsetmacro{\mywidth}{max(width("\X"),\mywidth)}
\xdef\mywidth{\mywidth}
}
\pgfmathsetmacro{\mynodewidth}{(\textwidth-3*0.8cm)/4-4pt}
\pgfmathsetmacro{\myscale}{(\mynodewidth-4)/\mywidth}
\foreach \X in \myLst
\node[punktchain,join,text width=\mynodewidth pt,inner sep=1pt,outer
sep=1pt]{\scalebox{\myscale}{\X}};
\end{tikzpicture}
\end{figure}
\end{document}
正如您所看到的,您需要做的就是向代码提供包含\myLst
文本的列表,其他一切都是自动的。
答案2
有两种方法:
正如@Zarko 提到的,您可以更改字体并减小 的大小text width
。第二种方法是保留所有内容并添加transform canvas={xshift = 0.8cm}
到选项中tikzpicture
。
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
bibliography=totoc, % Literaturverzeichnis mit Nummer im
Inhaltsverzeichnis (``TO Table Of Contents'')
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{matrix, positioning,chains}
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols}
\usepackage{capt-of}
\tikzstyle{rounddiagram} = [
%\tikzset{
>=stealth',
punktchain/.style={
rectangle,
rounded corners,
% fill=black!10,
draw=black, very thick,
text width=7.5em,
minimum height=3em,
text centered,
font = \footnotesize,
on chain},
line/.style={draw, thick, <-},
element/.style={
tape,
top color=white,
bottom color=blue!50!black!60!,
minimum width=8em,
draw=blue!40!black!90, very thick,
text width=10em,
minimum height=3.5em,
text centered,
on chain},
every join/.style={->, thick,shorten >=1pt},
decoration={brace},
tuborg/.style={decorate},
tubnode/.style={midway, right=2pt},
]%}
\begin{document}
\begin{figure}
\begin{tikzpicture}
[style=rounddiagram, node distance=.8cm, start chain=going right]
\node[punktchain, join]{FairRun};
\node[punktchain, join]{Set I/O};
\node[punktchain, join]{CbmStsFindClusters};
\node[punktchain, join]{CbmStsFindHits};
\end{tikzpicture}
\end{figure}
\begin{figure}
\begin{tikzpicture}
[style=rounddiagram, node distance=.8cm, start chain=going right, transform canvas={xshift = 0.8cm}]
\node[punktchain, join, text width=10em, font =\normalsize]{FairRun};
\node[punktchain, join, text width=10em, font =\normalsize]{Set I/O};
\node[punktchain, join, text width=10em, font =\normalsize]{CbmStsFindClusters};
\node[punktchain, join, text width=10em, font =\normalsize]{CbmStsFindHits};
\end{tikzpicture}
\end{figure}
\end{document}
答案3
我会将其更改text width
为minimum width
更小的尺寸,例如7em
。此外,我还会将所有 TikZ 库翻倍并使用tikzset
而不是\tikzstyle
:
(红线表示文本边框)
\documentclass[
a4paper, % Papierformat A4
12pt, % Schrift 12-Punkt
headsepline, % mit Linie unter der Kopfzeile
numbers=noenddot, % Nummern ohne Punkt am Ende
bibliography=totoc, % Literaturverzeichnis mit Nummer im
Inhaltsverzeichnis (``TO Table Of Contents'')
index=totoc, % Index mit Nummer im Inhaltsverzeichnis
fleqn, % Formeln werden linksbündig statt zentriert
angeordnet
headings=normal % Etwas kleinere Überschriften
]{scrbook}
\usepackage{tikz}
\usetikzlibrary{arrows,
calc, chains,
decorations.pathreplacing, decorations.pathmorphing,
matrix,
positioning,
shapes.geometric, shapes.symbols,
trees
}
\usepackage{capt-of}
\tikzset{rounddiagram/.style = {
>=stealth',
punktchain/.style = {rectangle, rounded corners, draw, very thick,
minimum width=7em, % <--- changed from "text width"
minimum height=5ex,
align=center, on chain},
line/.style = {draw, thick, <-},
element/.style = {tape, draw=blue!40!black!90, very thick,
top color=white, bottom color=blue!50!black!60!,
text width=10em, minimum height=7ex,
align=center, on chain},
every join/.style = {->, thick,shorten >=1pt},
decoration = {brace},
tuborg/.style = {decorate},
tubnode/.style = {midway, right=2pt},
}}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[style=rounddiagram,
node distance=5mm,
start chain=going right,
punktchain/.append style = {join}
]
\node[punktchain] {FairRun};
\node[punktchain] {Set I/O};
\node[punktchain] {CbmStsFindClusters};
\node[punktchain] {CbmStsFindHits};
\end{tikzpicture}
\end{figure}
\end{document}
答案4
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[>=latex, node distance=2.5cm, auto]
% Nodes
\node (stress) {Stress Levels};
\node (decision) [below left=of stress] {Decision-Making Skills};
\node (thinking) [below right=of stress] {Critical-Thinking Skills};
\node (environment) [below=of stress] {School Environment};
\node (experiences) [below=of decision] {Personal Experiences};
\node (interactions) [below=of thinking] {Peer Interactions};
\node (outcome) [below=of environment, align=center] {Academic\\Performance/Well-being};
% Arrows
\draw[->] (stress) -- (decision);
\draw[->] (stress) -- (thinking);
\draw[->] (decision) -- (outcome);
\draw[->] (thinking) -- (outcome);
\draw[->] (environment) -- (outcome);
\draw[->] (experiences) -- (outcome);
\draw[->] (interactions) -- (outcome);
\end{tikzpicture}
\caption{Conceptual Paradigm: Stress Levels, Decision-Making, and Critical-Thinking Skills}
\end{figure}
\end{document}