TeX - LaTeX Asked on March 17, 2021
It seems that the scale
option scales only the length of lines, but not the size of texts. For instance, 1
and true
and not scaled in the following code.
begin{tikzpicture}[thick, scale=0.6]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}
Could anyone tell me how to scale everything together within a tikzpicture? Thank you very much!
PS: It is a picture in a presentation with Beamer.
There are a few things that scaling doesn't affect; the most noticeable are node sizes and line widths. In a simple picture, it isn't hard to adjust the line width accordingly but the nodes can be difficult. It is possible to force a node to be scaled: put the scale option directly in the node's attributes. Thus node[above,scale=0.6] at (8,11) {true};
would scale the node. This is a bit annoying to put on every node, so there's an every node
style that can be used to do this. Thus:
begin{tikzpicture}[thick,scale=0.6, every node/.style={scale=0.6}]
Even so, you'd still have to remember to change two things each time here if you wanted to change the scale factor. Fortunately, there's a key transform shape
which means that the current transformation is applied to the node. The danger with using this is that this will also apply any rotations that happen to be in effect to the node (normally only translations are applied). If you don't have any rotations, then:
begin{tikzpicture}[thick,scale=0.6, every node/.style={transform shape}]
will do just fine.
If you do have or worry about those rotations (or for anyone else interested) it would be simple to set a global scale
key to fix this:
tikzset{global scale/.style={
scale=#1,
every node/.style={scale=#1}
}
}
Back to the "normal" solutions. Here's the various solutions:
documentclass{standalone}
usepackage{tikz}
begin{document}
framebox{begin{tikzpicture}[thick]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}}
framebox{begin{tikzpicture}[thick, scale=0.6]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}}
framebox{begin{tikzpicture}[thick, transform canvas={scale=0.6}]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}}
framebox{begin{tikzpicture}[thick,scale=0.6, every node/.style={scale=0.6}]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}}
framebox{begin{tikzpicture}[thick,scale=0.6, every node/.style={transform shape}]
draw [dashed] (1,12) -- (11,12);
node[above] at (4,11) {1}; node[above] at (8,11) {true};
end{tikzpicture}}
end{document}
I put the framebox
s in because if you count carefully, you'll see that the third example isn't there! In fact, it ended up somewhere at the top of the page, outside what the standalone
package thought the page was. So it got clipped out.
Correct answer by Andrew Stacey on March 17, 2021
The transform canvas
option scales everything, including text. Be aware that this may lead to the bounding boxes being wrong...
Answered by Seamus on March 17, 2021
For a matrix of nodes transform canvas
works enough fine
begin{figure}
%shorthandoff{<>}
begin{tikzpicture}[thick, scale = 0.6, transform canvas={scale=0.6}]
matrix (m) [matrix of math nodes,left delimiter=(,right delimiter=)]
{
0 &1 &0 &0 &0 &0
1 &0 &0 &0 &0 &0
0 &0 &2 &0 &0 &0
0 &0 &0 &1 &0 &2
0 &0 &0 &0 &1 &0
0 &0 &0 &1 &0 &1
};
draw[color=purple,thick] (m-1-1.north west) rectangle (m-2-2.south east);
draw[color=purple,thick] (m-3-3.south east) rectangle (m-3-3.north west);
draw[color=purple,thick] (m-4-4.north west) rectangle (m-6-6.south east);
end{tikzpicture}
%shorthandon{<>}
end{figure}
Answered by Horse time on March 17, 2021
If you want to scale everything in your tikz picture, you could also place it within scalebox
or resizebox
Examples:
scalebox{0.6}{
[Your tikz goes here]
}
resizebox{.75textwidth}{!}{
[Your tikz goes here]
}
This will also work for nodes, text, etc and contrarily to transform canvas
it will not beam your picture to places no one would have ever thought of, which happened to me once.
Answered by Manuel Popp on March 17, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP