本田です。はじめましてです。

おもしろそうだったので考えてみました。
# さらっと書けないとところが、まだまだです。

'Title-' で始まる行を区切りとする場合。
-----------------------------------------------------------
a = ["Title-1","Title-B"]
pat = a.collect {|s| /^\s*#{s}/ }
pat0 = /^\s*Title-/

while gets
  break if pat.empty? and pat0 =~ $_
  puts $_ if pat.empty?
  pat.shift if pat[0] =~ $_
end
-----------------------------------------------------------

インデントの変化で区切りとする場合。
-----------------------------------------------------------
a = ["Title-1","Title-B"]
pat = a.collect {|s| /^\s*#{s}/ }

ind = 0
while gets
  break if pat.empty? and (~ /\S/) < ind
  if pat.empty? then puts $_; ind = (~ /\S/); next end
  pat.shift if pat[0] =~ $_
end
-----------------------------------------------------------

インデントのとらえ方をちょっと変えたもの。
-----------------------------------------------------------
a = ["Title-1","Title-B"]
pat = a.collect {|s| /^\s*#{s}/ }

ind = 0
while gets
  break if pat.empty? and (~ /\S/) <= ind
  puts $_ if pat.empty?
  if pat[0] =~ $_ then ind = (~ /\S/); pat.shift end
end
-----------------------------------------------------------

配列に指定する数が、見出しの階層数よりも少ない場合は出力
がいまいちです。

  a = ["Title-2"] 

$ ruby sample01.rb data.txt
    Title-A
        content4
        content5

$ ruby sample02.rb data.txt
    Title-A
        content4
        content5
    Title-B
        content6


--------------------------------------
Know more about Breast Cancer
http://pr.mail.yahoo.co.jp/pinkribbon/