tikz add tag
Diaa
For the following standalone approach, I need to use TikZ `external` library to:

1. make the externally built image have the same font size of main/calling document
2. rebuild the image in case of change in: (a) its source code, and (b) the font size of the parent document
3. know the best practice of saving the externally built `tikzpicture` code in an external file to be inputted in the main document. Is there a better approach than just using `\input`?

P.S. I don't understand why the following code stopped working as expected.


```
\begin{filecontents*}{pic\jobname.tex}
	\documentclass[tikz]{standalone}
	\usepackage{datetime2}
	\usetikzlibrary{shapes}
	\begin{document}
		\color{blue}
		\begin{tikzpicture}[x=1em, y=1em]
			\draw (0,0) rectangle node{\DTMcurrenttime} (4,4);
		\end{tikzpicture}
	\end{document}
\end{filecontents*}

\documentclass{article}
\usepackage{xcolor}
\usepackage{datetime2}
\usepackage[fontsize=14pt]{scrextend}
\usepackage[mode=buildnew, subpreambles=false]{standalone}
\begin{document}
	\DTMcurrenttime	\includestandalone{pic\jobname}
\end{document}
```
Top Answer
marmot
This is an attempt to answer parts 1 and 2 of the question. This answer uses the `external` library of Ti*k*Z. After adding the stuff between `\makeatletter` and `\makeatother` to the preamble all you need to do is to add 
```
\tikzset{external/watch/font size}
```
*after* `\begin{document}`. Some comments are in order:
1. The code is a bit excessive, i.e. if one wanted to solve just this issue less lines of code are needed. The rationale is to make it easier to watch other parameters. (One may also use a variation thereof to determine the relevant bounding boxes for animations.)
2. As mentioned, you have to add `\tikzset{external/watch/font size}` after `\begin{document}`. In principle one could waive this requirement. However, IMHO these days it is impossible to use hooks like `\AtBeginDocument` and friends unless you are a L3 team member. 
3. `external` is great. But it has deficits when used together with e.g. the `tikzmark` library. Conceivably similar tricks may ultimately allow those libraries to be used simultaneously.
4. If you have some additions or changes in mind, please let me know, this is really just a first proof-of-principle version.
5. This stuff does not work if you change the font size locally, but one could conceivably come up with something that covers such cases, too, yet it would be more complicated.

```
\documentclass{article}
\usepackage{tikz}
\usepackage{datetime2}
\usepackage[fontsize=12pt]{scrextend}
\makeatletter
\def\tikz@external@watch@store@aux#1#2{%
\immediate\write\@mainaux{\string\expandafter\xdef\noexpand\csname pgfk@/tikz/external/watch/stored/#1\string\endcsname{#2}}}%
\def\tikz@external@watch@get@from@aux#1#2{%
\ifcsname pgfk@/tikz/external/watch/stored/#1\endcsname
\edef#2{\csname pgfk@/tikz/external/watch/stored/#1\endcsname}%
\else
\edef#2{0}%
\fi}
\tikzset{external/watch/.cd,store/.code 2 args={%
\tikz@external@watch@store@aux{#1}{#2}},
get/.code 2 args={\tikz@external@watch@get@from@aux{#1}{#2}},
font size/.code={\tikzset{external/watch/get={font size}{\pgfutil@tempa},
external/watch/store={font size}{\f@size}}%
\unless\ifnum\pgfutil@tempa=\f@size
\tikzset{/tikz/external/force remake}%
\fi
}}
\makeatother
\usetikzlibrary{external,shapes}

\tikzexternalize
\begin{document}
\tikzset{external/watch/font size}

\DTMcurrenttime
\begin{tikzpicture}[x=1em, y=1em,blue]
\draw (0,0) rectangle node{\DTMcurrenttime} (4,4);
\end{tikzpicture}
\end{document} 
```

![Screen Shot 2020-12-18 at 5.46.15 PM.png](/image?hash=4c98c730d9a663b83ce7802a18a9743c40fbca76095a49585d99886bcf7f4580)

Enter question or answer id or url (and optionally further answer ids/urls from the same question) from

Separate each id/url with a space. No need to list your own answers; they will be imported automatically.