Suppose that I have a tikzpicture begun like this:
\begin{tikzpicture}[x = 20mm, y = 10mm]
Now let us suppose that I want to put a subpart of the picture inside a "scope" environment and I want all of that part of the picture to be shifted to the right by 40mm, that is, by twice the current x-vector. But should I later change the x-vector in the "tikzpicture" options, I will want the shift amount to respect the new x-vector. For example, if I changed the x-vector from 20mm to 15mm, I would want the subpicture to then automatically be shifted by 30mm instead of 40mm, without me having to modify the "scope" options.
If I do this:
\begin{scope}[xshift = 2]
then TikZ interprets this to mean that I want to shift right by a distance of 2pt, that is, the "2" is not interpreted as a multiple of the current x-vector. Conceptually, I want something like
\begin{scope}[xshift = 2 * \x]
but I don't know what the correct way is to express this to TikZ. How can I do this?
Addendum
I accepted the answer supplied by Jake, but here is how to use his technique to define a key that makes a one-dimensional shift very straightforward. Put this in the document preamble:
\tikzset{myxshift/.style = {shift = {(#1, 0)}}}
\tikzset{myyshift/.style = {shift = {(0, #1)}}}
Now you can do something like this:
\begin{scope}[myxshift = 2]



xshiftexpects a length. I see that is true, but where is the default length documented? Why is the default length not determined by the picture (like coordinates are)? – Alan Jul 05 '16 at 14:58