stackoverflow like resume based on res.cls

You need to add a \strut so that each node is the same height:

enter image description here

As per Qrrbrbirlbel's suggestion, using \vphantom{y} produces slightly tighter output:

\newcommand{\tagf}[2][]{%
\begin{tikzpicture}[baseline={(TAG.base)}]
\node[draw,#1] (TAG) {#2};
\node[font=\tiny,draw,#1] (TAG) {#2\vphantom{y}};
\end{tikzpicture}
}

enter image description here

Code:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}

\newcommand{\mytag}[1]{%
\begin{tikzpicture}[baseline={(TAG.base)}]
  \node[draw, minimum height=1ex] (TAG) {#1};
\end{tikzpicture}}

\newcommand{\tagf}[2][]{%
  \begin{tikzpicture}[baseline={(TAG.base)}]
    \node[draw,#1] (TAG) {#2};
    \node[font=\tiny,draw,#1] (TAG) {#2\strut};
  \end{tikzpicture}
}


\begin{document}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{SAMBA}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{Red Hat}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{Windows}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{NFS}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{Python}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{Shell}\hspace{-0.25cm}
\tagf[blue!80, fill=blue!20,  rounded corners, font=\fontsize{0.1}{.1}]{MySQL}\hspace{-0.25cm}
\end{document}  

You can also greatly simply your code if you use \tikzset to define styles, and use a \foreach loop for repetitive tasks:

\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}

\newcommand{\tagf}[2][]{%
\begin{tikzpicture}[baseline={(TAG.base)}]
\node[draw,#1] (TAG) {#2};
\node[font=\tiny,draw,#1] (TAG) {#2\vphantom{y}};
\end{tikzpicture}
}

\tikzset{My Tag Style/.style={blue!80, fill=blue!20,  rounded corners, , font=\fontsize{0.1}{.1}}}

\begin{document}
\foreach \x in {SAMBA, Red Hat, Windows, NFS, Python, Shell, MySQL} {%
    \tagf[My Tag Style]{\x}\hspace{-0.25cm}
}
\end{document} 

As requested …

But first, let me summarize some things:

  • \vphantom{y} doesn't add vertical space like capital letters, in your all minuscule example you could add \vphantom{Ay} for example.

    The \strut is something similar by the way. It adds a zero-width vertical rule with a height (above the baseline) of .7\baselineskip and a depth (below the baseline) of .3\baselineskip.
    (You get the same effect with \rule[-.3\baselineskip]{0pt}{\baselineskip}.)

    Judging of the original example this was too much depth in my opinion, and as all other nodes had majuscule letter there was no need for more adjusting.

  • The class option a4papper gives me—to no surprise—a warning as this option is none.
  • Even though res is based on the article class it does not forward an option like a4paper so that I even get a warning than.
  • … which is the reason for using [a4paper]{article} in my examples (but you can, of course, use any class you want)
  • Your \hspace{-.25cm} is unneeded if you add a % at the end of the lines containing your tag. (→ What is the use of percent signs (%) at the end of lines?)
    (In my comment I was wrong: The additional horizontal space doesn't come from outer sep but from the space that is inserted.)
  • \fontsize{0.1}{.1} doesn't work, it even gives a warning:

    LaTeX Font Warning: Font shape `OT1/cmr/m/n' in size <0.1> not available 
                                                      size <5> substituted on input line 48.
    
  • font=\tiny doesn't get used, as it gets overwritten, too.

  • All the while you're using \scalefont{0.8} anyway. Let's just use that.
  • Don't use \it. (→ Does it matter if I use \textit or \it, \bfseries or \bf, etc)

Now, before we play with all the \vphantoms, \rules and \struts they are, we just make use of TikZ' own styles, namely:

  • text height and
  • text depth.

We get the most appealing output (in my eyes) when we don't use a depth (ignoring all descenders in letters like y and g) and set the height to the one of a majuscule letter. When the above mentioned TikZ styles are used the actual heights and depths of the node text are ignored.

We could mimic this output using \vphantom{A}\smash{#2} as the node text (#2 being the actual text), or, with the help of amsmath's extension of \smash, \smash[b]{#2} (b stands for bottom, i.e. only the bottom part is smashed).

TikZ' default settings of inner xsep and inner ysep of .3333em make sure that the lines have a little padding to the text. (These settings can be changed, too, of course, to get yet another output.)

To cut a long story short

Code

\newcommand{\tagf}[2][]{{%
    \scalefont{0.8}%
    \sbox0{A}%
    \tikz[baseline={(TAG.base)}]{
    \node[draw=blue!80, fill=blue!20,  rounded corners, text height=\ht0, text depth=0pt, #1] (TAG) {#2};
    }%
}}

Output

enter image description here

Depths? Heights? What the …?

(\strut has problems inside a TikZ-node inside tabular so I removed it from the last column.)

Table

enter image description here

Closer

enter image description here

Full code

\documentclass[a4paper]{article}
\usepackage{parskip}% to mimic res' output
\usepackage{tikz}   % loads xcolor by default
\usepackage{scalefnt}
\usepackage{amsmath}% only for the extended version of \smash
\usepackage{calc}
\usetikzlibrary{shapes.geometric}
\newcommand{\tagf}[2][]{{%
    \scalefont{0.8}%
    \sbox0{A}%
    \tikz[baseline={(TAG.base)}]{
    \node[draw=blue!80, fill=blue!20,  rounded corners, text height=\ht0, text depth=0pt, #1] (TAG) {#2};
    }%
}}
\begin{document}
Responsibilities include installation and configuration of Linux clusters and workstations
\tagf{SAMBA}%
\tagf{Red Hat}%
\tagf{Windows}%
\tagf{NFS}%
\tagf{Python}%
\tagf{Shell}%
\tagf{MySQL} %
Responsibilities include installation and configuration of Linux clusters and workstations
\par
Responsibilities include installation and configuration of Linux clusters and workstations
\tagf{Fortran95}%
\tagf{Make}%
\tagf{gcc}%
\tagf{GCC}%
\tagf{Python}
Responsibilities include installation and configuration of Linux clusters and workstations
\par

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The following code should not be used inside your resumee! %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\boxme}[2][black]{{%
    \fboxrule=.4pt%
    \fboxsep=0pt%
    {\color{#1}\fbox{\color{black}#2}}%
}}
\newcommand{\showmeheightanddepth}[2][]{%
    \global\sbox0{#2}%
    \rlap{\kern-.4em\rule[-.1pt]{\wd0+.8em}{.2pt}}% baseline
    \boxme{#2}#1 
    & \the\ht0
    & \the\dp0
    & \the\dimexpr\ht0+\dp0\relax
    & \ifx#2\strut\else\let\boxme\dontboxmeinsideTikZ%
        \tagf[text height=, text depth=]{#2}\fi
}
\newcommand{\dontboxmeinsideTikZ}[2][black]{%
    #2%
}
\edef\baselineskipinnormaltext{\the\baselineskip}
\begin{tabular}{lrrrc}
 boxed & height & depth & totalheight & Ti\emph{k}Z \\\hline
\showmeheightanddepth{ace}\\
\showmeheightanddepth{ABC}\\
\showmeheightanddepth{gy}\\
\showmeheightanddepth{Age}\\
\showmeheightanddepth{\vphantom{A}\smash{\boxme[green]{Age}}}\\
\showmeheightanddepth{\smash[b]{\boxme[green]{Age}}}\\ % needs \usepackage{amsmath}
\showmeheightanddepth[ (\texttt{strut})]{\strut}
\end{tabular}
\end{document}

Tags:

Resume

Cv