This answer provides three solutions:
The first solution uses your exact syntax (i.e. node name without a specified anchor or the indicating .).
Unfortunately, this needs a fix of an existing macro that is used to parse the implicit version of the node cs.
This macro checks for an . in the specified coordinate: If one is found it is used to split up node name and referenced anchor. If no .<anchor> is given it automatically adds .center which it only does in case the tikz@shapeborder if is ignored. This part is the cause why nodes connect so intelligently when you do not specify an anchor.
If we intercept this, we can make your syntax possible.
Solution two simply allows to define a generic anchor locally.
The macro \pgfdeclaregenericanchor{<name>}{<code>} creates a macro \pgf@anchor@generic@<name> that excepts one argument which we can refer to in <code> as ##1. This is used to simply refer to another anchor.
If you leave out the name of that generic anchor, you can use (A.) to refer to short-cut.
Seeing the other solutions to avoid the anchor problem I’d define a few styles that build a path via the insert path style and the .list handler to connect coordinates/nodes:
open polygon={<first coordinate>, <list of other coordinates>} and
closed polygon with the same syntax that includes an additional -- cycle.
The use of insert path instead of a rather fixed macro makes it possible to use that path as part of another path (the possibilites aren’t that great for a closed polygon but still).
Solution 1
The patching builds a \tikz@parse@node macro defined as (comments from the original source):
\def\tikz@parse@node#1(#2){%
\pgfutil@in@.{#2}% Ok, flag this
\ifpgfutil@in@
\tikz@calc@anchor#2\tikz@stop%
\else%
\pgfkeysgetvalue{/tikz/use anchor}\tikz@temp
\ifx\tikz@temp\pgfutil@empty
\tikz@calc@anchor#2.center\tikz@stop% to be on the save side, in
% case iftikz@shapeborder is ignored...
\expandafter\ifx\csname pgf@sh@ns@#2\endcsname\tikz@coordinate@text%
\else
\tikz@shapebordertrue%
\def\tikz@shapeborder@name{#2}%
\fi%
\else
\expandafter\tikz@calc@anchor#2\tikz@temp\tikz@stop
\fi
\fi%
\edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
\tikz@marshal}
The \pgfkeysgetvalue and the \ifx as well as its \else part is new.
What happens here? First of all, our code is only used if none . is in #2 that means, if an anchor is specified it is used. But if no . is inside #2 it will check whether the value of /tikz/use anchor is empty, if it is, the usual behavior is applied: The .center anchor is used and the boolean tikz@shapeborder is switched on. This Boolean along with the name \tikz@shapeborder@name is later used in many path operators to actually find the start of a line. If you usually say
\draw (<node1>) -- (<some other coordinate>);
The line actually starts at the angular anchor in <some other coordinate>’s direction. Those path operators check \iftikz@shapeborder if a node has been specified without an explicit anchor and an additional move-to is included.
In our case we disable this intelligence (as long as /tikz/use anchor is not empty) and simply add the anchor anyway without setting tikz@shapeborder.
Code 1
\documentclass[tikz]{standalone}
\tikzset{use anchor/.initial=}
\usepackage{etoolbox}
\makeatletter
\patchcmd\tikz@parse@node{\else\tikz@calc@anchor}{%
\else\pgfkeysgetvalue{/tikz/use anchor}\tikz@temp
\ifx\tikz@temp\pgfutil@empty\tikz@calc@anchor}{}{}
\patchcmd\tikz@parse@node{\fi\fi}{\fi\else\tikz@calc@anchor#2.\tikz@temp\tikz@stop\fi}{}{}
\makeatother
\begin{document}
\begin{tikzpicture}[x=2in,y=2in, nodes={draw, help lines}]
\node (A) at (1,0) {A}; \node (B) at (0,1) {B};
\node (C) at (-1,0) {C}; \node (D) at (1,1) {D};
\draw[use anchor=center] (A) -- (B) -- (D) -- (C) -- cycle;
\draw[use anchor=south west, blue] (A) -- (B) -- (D) -- (C) -- cycle;
\end{tikzpicture}
\end{document}
Solution 2
Not much is to be added to the initial notes of this solution.
This may be the most flexible solution as you actually can (globally) define a few short-cuts like
\tikzset{
anchor shortcut/.list={
{nw}{north west},
{n}{north},
{ne}{north east}}}
Code 2
\documentclass[tikz]{standalone}
\makeatletter
\tikzset{
use anchor/.style={anchor shortcut={}{#1}},
anchor shortcut/.code 2 args=\pgfdeclaregenericanchor{#1}{\pgf@sh@reanchor{##1}{#2}}}
\makeatother
\begin{document}
\begin{tikzpicture}[x=2in, y=2in, nodes={draw, help lines}]
\node (A) at (1,0) {A}; \node (B) at (0,1) {B};
\node (C) at (-1,0) {C}; \node (D) at (1,1) {D};
\draw[use anchor=center] (A.) -- (B.) -- (D.) -- (C.) -- cycle;
\draw[anchor shortcut={sw}{south west},blue](A.sw) -- (B.sw) -- (D.sw) -- (C.sw) -- cycle;
\end{tikzpicture}
\end{document}
Solution 3
I also can’t say much additional to this solution.
It may be noted that due to the fact how the argument to open polygon (and thus closed polygon) is parsed one cannot write
open polygon={A , …}
but only
open polygon={A, …}
Otherwise, spaces do no harm as all other coordinates are parsed by the \foreach parser.
Please note that the . has to be given in the argument of open polygon anchor. (This can be changed with another text and an \edef without a problem though.)
If you only draw tetragons, you could actually just define
\tikzset{
tetragon/.style args={#1:#2,#3,#4,#5}{
insert path={(#2.#1) -- (#3.#1) -- (#4.#1) -- (#5.#1) -- cycle}}
}
which you can use as
\draw[red, thick, tetragon={east:A,B,C,D}];
and be done with it.
Code 3
\documentclass[tikz]{standalone}
\makeatletter
\tikzset{
open polygon anchor/.initial=,
open polygon/.code args={#1,#2}{%
\edef\tikz@temp{\pgfkeysvalueof{/tikz/open polygon anchor}}%
\tikzset{@open polygon/.expanded={\tikz@temp}{#1}{#2}}},
@open polygon/.style n args={3}{%
insert path={(#2#1)},
@@open polygon/.style={insert path={-- (##1#1)}},
@@open polygon/.list={#3}},
closed polygon/.style={open polygon={#1},insert path={-- cycle}}}
\makeatother
\begin{document}
\begin{tikzpicture}[x=2in,y=2in, nodes={draw, help lines}]
\node (A) at (1,0) {A}; \node (B) at (0,1) {B};
\node (C) at (-1,0) {C}; \node (D) at (1,1) {D};
\draw[open polygon anchor=.center, closed polygon={A,B,D,C}] ;
\draw[open polygon anchor=.south west, closed polygon={A,B,D,C}, blue];
\end{tikzpicture}
\end{document}
Outputs

anchor=centerplaces nodes with theircenteranchor at the specified point (at), nothing else. 2. Did you want to usecoordinates here? – Qrrbrbirlbel Sep 08 '13 at 00:46\node, you could use\coordianteinstead. – Gonzalo Medina Sep 08 '13 at 00:46coordinates. – A.Ellett Sep 08 '13 at 00:48(A.) -- (B.) -- (D.) -- (C.)instead (or simply a shorter (local declared) alias forcenter)? – Qrrbrbirlbel Sep 08 '13 at 00:52\draw (A.center) \foreach \x in {B,D,C}{-- (\x.center)}-- cycle;– percusse Sep 08 '13 at 01:05\draw \foreach \x in {A,B,C,D} { (\x.center)--} cycle;but it failed. Why does your approach work and mine didn't? – A.Ellett Sep 08 '13 at 01:11(\x.center)--is not a complete path command, they should be hypothetically complete path construction syntaxes. It's a feature. I would have a look attkz-euclidefor some help if I need this for a lot of paths. It's great. – percusse Sep 08 '13 at 01:16