It's not being in a loop that's significant here. bash
doesn't really know or care about indentation -- to recognize the end of the heredoc the terminating string must be at the beginning of the line, which makes your loop look like:
for i in 01 02 03 04 05
do
name="test.txt"
yap -q << % > $name
[experiment_yap],
exp1_min(brother,2).
%
done