Print a booklet
JavaScript (ES6), 49 45 bytes
Saved 4 bytes with help from @RickHitchcock
f=(n,k=1)=>n<k?[]:[n,k,k+1,n-1,...f(n-2,k+2)]
Demo
f=(n,k=1)=>n<k?[]:[n,k,k+1,n-1,...f(n-2,k+2)]
console.log(JSON.stringify(f(4)))
console.log(JSON.stringify(f(8)))
console.log(JSON.stringify(f(12)))
console.log(JSON.stringify(f(16)))
console.log(JSON.stringify(f(20)))
Non-recursive, 51 bytes
n=>[...Array(n)].map((_,i)=>[2*n-i,,++i][i&2]+1>>1)
Demo
let f =
n=>[...Array(n)].map((_,i)=>[2*n-i,,++i][i&2]+1>>1)
console.log(JSON.stringify(f(4)))
console.log(JSON.stringify(f(8)))
console.log(JSON.stringify(f(12)))
console.log(JSON.stringify(f(16)))
console.log(JSON.stringify(f(20)))
05AB1E, 9 8 7 bytes
L`[Žˆrˆ
Try it online!
Explanation
L # push range [1 ... input]
` # split as separate to stack
[Ž # loop until stack is empty
ˆ # add top of stack to global list
r # reverse stack
ˆ # add top of stack to global list
# implicitly display global list
Python 2, 99 93 88 58 56 55 bytes
f=input()
for i in range(1,f/2,2):print-~f-i,i,i+1,f-i,
Try it online!
-6 bytes by removing unneeded indentation, thanks Oliver Ni
-5 bytes by changing the conditional, thanks Luis Mendo
-30 bytes by optimizing the print statements, thanks Arnold Palmer
-2 bytes by putting the loop on one line, thanks nedla2004
-1 byte by doing some wizardry, thanks Mr. Xcoder