Finish how without knowing what Params.Requirements contains, what the HTML should look like, if and what error messages you’re seeing or if you’re not seeing them, what the HTML really looks like etc.
That is exactly what the title function (!) is doing, and you’re calling that function on the current element of your slice. Variables, parameters etc. in Hugo do not start with a letter (afaict, there may be exceptions). So, if you want to get the title from (e.g.) the front matter, you’ll have to use .title (if dot refers to a page, which it doesn’t here). So, as @frjo wrote, you have to get the page first, and then get its title.
{{ with .Params.Requirements }}
<div class=".book-toc" style="font-weight: bolder;color:silver">
<u>Reading requirements:</u>
<ol style="margin-top:auto;margin-left:-1.5rem">
{{ range . }}
<li> {{ with .Site.GetPage . }}{{ .Title }}{{ end }}
{{ end }}
</ol>
</div>
{{ end }}
causes the errors:
Error: Error building site: failed to render pages: render of “page” failed: “/home/drm/WEBSITE/themes/hugo-book/layouts/_default/baseof.html:82:5”: execute of template failed: template: _default/single.html:82:5: executing “toc” at <partial “docs/toc” .>: error calling partial: “/home/drm/WEBSITE/themes/hugo-book/layouts/partials/docs/toc.html:1:3”: execute of template failed: template: partials/docs/toc.html:1:3: executing “partials/docs/toc.html” at <partial “docs/inject/toc-before” .>: error calling partial: “/home/drm/WEBSITE/themes/hugo-book/layouts/partials/docs/inject/toc-before.html:6:18”: execute of template failed: template: partials/docs/inject/toc-before.html:6:18: executing “partials/docs/inject/toc-before.html” at <.Site.GetPage>: can’t evaluate field Site in type string