2

I am trying to layout some text to follow the BDD-style scenario format:

Given some condition
    When an action occurs
        And some other action occurs
    Then some result happens

In a previous question it was suggested that I use the tabbing environment to accomplish this format, but when I use the tabbing environment, some of the words overlap.

MWE:

\documentclass[11pt,letter]{article}
\usepackage{enumitem}
\usepackage[hyphens]{url}
\usepackage{hyperref}
\usepackage[T1]{fontenc}     %step 1
\usepackage{tabbing}
\setlist[description]{style=nextline,font=\normalfont}
\begin{document}
\section{Scenario: Valid Login:}
\begin{tabbing}
    \=    \=    \= \kill
Given \> the browser is open to the login page \\
\> When \> a valid username is entered \\
\> \> And \> the valid corresponding password is entered \\
\> \> And \> the sign-in button is clicked \\
\> Then \> the welcome page is displayed. \\
\end{tabbing}
\end{document}

Sample output

BTW: I am using MiKTeX 2.9 on windows 7.

Andrew Swann
  • 95,762
dnraikes
  • 455

2 Answers2

1

The command \= sets the tab stop. Your first line has effectively no spaces between the tabs, as LaTeX collapses multiple spaces to one and the space immediately after \= is ignored. You could add explicit spaces between these \= with \hspace{...} but then you would have to guess the size of the spaces.

Instead just write \= instead of \> the first time you need any given tabstop:

Given \= the browser is open to the login page \\
\> When \= a valid username is entered \\
\> \> And \= the valid corresponding password is entered \\
\> \> And \> the sign-in button is clicked \\
\> Then \> the welcome page is displayed. \\

Sample output

\documentclass[11pt,letter]{article}
\usepackage{enumitem}
\usepackage[hyphens]{url}
\usepackage{hyperref}
\usepackage[T1]{fontenc}     %step 1
\usepackage{tabbing} %for texlive change to Tabbing
\setlist[description]{style=nextline,font=\normalfont}
\begin{document}
\section{Scenario: Valid Login:}
\begin{tabbing}
Given \= the browser is open to the login page \\
\> When \= a valid username is entered \\
\> \> And \= the valid corresponding password is entered \\
\> \> And \> the sign-in button is clicked \\
\> Then \> the welcome page is displayed. \\
\end{tabbing}
\end{document}

Alternatively, if you want uniform indents, then specify the spacing on the first line and then just tabstop to the position you want in subsequent lines:

\begin{tabbing}
\qquad \= \qquad \= \qquad \= \qquad \= \kill
Given the browser is open to the login page \\
\> When a valid username is entered \\
\> \> And the valid corresponding password is entered \\
\> \> And the sign-in button is clicked \\
\> Then the welcome page is displayed. \\
\end{tabbing}

Here \qquad is \hspace{2em}.

Another version

Andrew Swann
  • 95,762
0

Using verbatim might be an easier way...

Code:

\documentclass{article}

\begin{document}

\begin{verbatim}
Given some condition
    When an action occurs
        And some other action occurs
    Then some result happens
\end{verbatim}

\end{document}

Yields:

enter image description here

Dan
  • 3,699
  • sounds great, but can I include text formatting like \textbf{given} inside a verbatim environment? – dnraikes Nov 11 '17 at 04:06
  • @dnraikes see https://tex.stackexchange.com/questions/63845/boldface-and-subscripts-in-verbatim-mode – Dan Nov 11 '17 at 16:45