Eu quero produzir uma lista de páginas a seguir (para trabalho de imposição); (o número de páginas é variável, mas faço uma amostra das minhas necessidades usando uma lista de 16 páginas, a lógica é a mesma para listas maiores)
1,16
8,9
15,2
10,7
3,14
6,11
13,4
12,5
Eu escrevi isso para o ciclo:
for ((x=16, y=1, z=8, w=9;x>=4, y<=4, z>=12, w<=12;x--, y++, z--, w++)); do echo "$x $y;$z $w"; done | tr ";" "\n" | tr " " ","
que, no entanto, produz:
16,1
8,9
15,2
7,10
14,3
6,11
13,4
5,12
e não a lista de páginas que eu quero. Então, eu preciso, com o awk ou outros comandos, trocar campos em algumas colunas seguindo esse padrão (repetindo a cada 4 pares de páginas)
campos de troca
sem campos de troca
sem campos de troca
campos de troca
16,1 (swap: becomes: 1,16
8,9 (no swap: remains 8,9
15,2 (no swap: remains 15,2
7,10 (swap: becomes: 10,7
14,3 (swap: becomes: 3,14
6,11 (no swap: remains 6,11
13,4 (no swap: remains 13,4
5,12 (swap: becomes: 12,5
generalizando a lógica desta imposição (eu preciso impor uma única cópia de um livro A6 através de um formato de página A4) Eu escrevi um script mais generalizado
#!/bin/sh
pages=$1
halfpages="'let DIVISION=$pages/2; echo $DIVISION'"
incr="$(echo "scale=0; $halfpages+1" |bc -l)"
dividedby4="$(echo "scale=0; $pages/4" |bc -l)"
lastupperpage="$(echo "scale=0; $pages-$dividedby4" |bc -l)"
u="u"
for ((x=$pages, y=1, z=$halfpages, w=$incr;x>=4, y<=4, z>=$lastupperpage, w<=$lastupperpage;x--, y++, z--, w++)); do echo "$x$u $y$u;$z $w"; done | tr ";" "\n" | tr " " "," | tr "\n" ","
exit 0
no entanto, só posso produzir:
16u, 1u, 8,9,15u, 2u, 7,10,14u, 3u, 6,11,13u, 4u, 5,12
em vez de direito:
1u, 16u, 8,9,15u, 2u, 10,7,3u, 14u, 6,11,13u, 4u, 12,5
que eu passo para o Multivalent.jar
Anexei uma imagem da imposição correta de um A6 em um A4 para mostrar a seqüência certa de imposição
OqueeutentoobteréumamaneiradeimporumlivroA6inteiroemumapáginaA4emUMAassinaturaqueconsisteemtodasassuaspáginas(nãoaImposiçãode8páginas),paracortarmeiapáginaA4,fecheasduasmetadesumasobreaoutra,invertaafolhaobtida,corte-aaomeioeapliquecolaàbordaesquerdaparaaplicaratampa
paraexecutaressatarefaeuprecisoourepensarmeuscriptdozeroouencontrarumamaneiradetrocarcamposemcolunasporumpadrãofixo(swap,semswap,semswap,swap)paracorrigiraordemincorretaproduzidapelomeuscript
EDITAR
resolvidoenviandosaídapadrãodoscriptparaoawkcomestasintaxe:
awk -F "," '{
print $2 "," $1;
getline; print;
getline; print;
getline; print $2 "," $1
}'