Thanks Flavio. Success at last. For anyone else trying to re-order a collection programmatically in a Twig template, try this:
{% set collection = page.evaluate([{'@page.children':'/crimebooks'}]) %}
{% set orderedcoll = collection.order('header.pub','asc') %}
Where pub is a header variable containing an integer. This code creates a new collection collection from the children of the page /crimebooks and then creates another collection orderedcoll which has been put into ascending order of the value of the header variable pub (publication date in my case).
The code can probably be made more elegant but it works. Thanks again.