# Scale TikZ nodes and shapes for a given canvas size

I have the following code to produce an hexagon coverage area:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathreplacing} % for expanding waves
\usetikzlibrary{decorations.markings}

\tikzset{%
terminal/.style = {draw, shape = circle , thick, radius = 2cm},
area/.style = {draw, shape = regular polygon, regular polygon sides = 6, thick, minimum width = 10cm},
basestation/.style = {draw, shape = dart, shape border rotate = 90, thick, minimum width = 1cm, minimum height = 1cm},
transmission/.style = {decorate, decoration = {expanding waves, angle = 7, segment length = 4}, thick},
label/.style = {font=\footnotesize}
}

\usepackage{tikzscale}

\usepackage{filecontents}
\usepackage{silence}
\WarningFilter{latex}{Overwriting file}
\WarningFilter{latex}{Tab has been converted to Blank Space}

\newcommand*{\FILE}{test}

\begin{filecontents*}{\FILE.tikz}
\begin{tikzpicture}
\draw [help lines, step = 0.5cm] (-5,-5) grid (5,5);
\node [area] at (0,0) {};
\node [basestation] (ENB) at (0,-0.5) {eNB}; % not exactly at center

\node [terminal] (UE2) at (-0.5,2) {UE};
\node [terminal] (UE3) at (2.5,-1) {UE};

\draw [blue, transmission] (ENB.north) -- (UE3) node [midway] (celllink1) {};
\draw [blue, transmission] (ENB.north) -- (UE2) node [midway] (celllink2) {};

\end{tikzpicture}
\end{filecontents*}

\newlength\WFIG
\setlength{\WFIG}{252.0pt} % column width

\begin{document}
%\includegraphics[width=0.5\WFIG]{\FILE.tikz}
%\resizebox{0.5\WFIG}{!}{\input{\FILE.tikz}}
\input{\FILE.tikz}
\input{\FILE.tikz}
\end{document}


I have drawn that picture to a one-column document. Now I want to use that picture for a two-column document. Therefore I am trying to properly scale it. I have tried the \adjustbox, \scalebox, and tikzscale (this does not work for this case). There are some approaches explained in How to scale a tikzpicture to \textwidth and Scale TikZ figure to linewidth when relative positioning used and TikZ: Expand width of each picture to given size. However I am not sure what is the best approach, if there is a best approach.

I also would like for the font to remain as much as possible the same (a possible solution for this would be to draw all text in a foreground layer that is unscalable, but I don't know if it even possible).

Any thoughts on this?!

-
I don’t think the standalone class is the best to show a twocolumn problem. Better would be \documentclass[twocolumn]{article}. Now you can access the column width with \linewidth or \columnwidth. –  Qrrbrbirlbel Mar 31 at 23:07
Since I want a standalone picture, I set the picture width with \newlength\WFIG \setlength{\WFIG}{252.0pt} as you can see in my MWE. –  cacamailg Mar 31 at 23:15
Use \columnwidth (or a fraction of it) to adjust the width: \begin{adjustbox}{width=\columnwidth} \input{\FILE.tikz} \end{adjustbox} –  Gonzalo Medina Mar 31 at 23:18
@GonzaloMedina I know that, to set the width, I emulate the \columnwidth with \WFIG that I put in my MWE. The main question is to proper scale the current picture, or have an alternative method to define the nodes coordinates, so that I could use an TikZ command, that would properly fit the picture to the canvas size. I thought something like tikzscale package, but it doesn't work here. –  cacamailg Mar 31 at 23:40