Using **Raku** (formerly known as Perl_6)
```
~$ raku -e 'my @a; for slurp() { @a = .comb( /^^Chapter .*? <?before \nChapter | $ > /) }; @a.grep(/vitamins/).put;' file
```
Certain someone will post a Perl answer, but here's an answer written in Raku (a.k.a. Perl6). Briefly, the file is `slurp`ed in, and `comb`ed through to locate matching records (Chapters). Then in the second statement `grep` is used to only return matching records (Chapters). Sample Input is same as provided by OP.
Sample Output:
```
Chapter: 1 One: Birds and Trees
Birds are beautiful and trees are amazing and
they are dependent on each other. Birds most of the time
choose to make their nests on trees since trees provide more
stability. One day the bird sat on a tree and said;
Bird: Oh my I'm so tired from all the flying, I should take a rest
Tree: Mr Bird, you seem tired, perhaps you should take some rest, and
here are some fruits to quench your thirst.
Bird: Oh thank you very much!
Reference: Chapter 1: birds and trees
```
https://raku.org