Перейти к публикации

Рекомендованные сообщения

Набросал скрипт в Scilab для формирования номеров страниц для подшивки книги/документа и прочего. 4 страницы на лист, вставляю строку в диалог печати, распечатываю пол-блока, переворачиваю, допечатываю, достаю, сгибаю, можно шить. Всё зараз не пробовал. Не знаю как в MS Office и прочее, сижу в Linux'овом софте c его сюрпризами.

  Скрипт  

clc; clear; clear all;

pages=191; //число страниц в книге
lists=5;  //число листов в блоке

t=1//pages/lists/4-1;
p0=floor(pages/4); //полностью заполненных двусторонних листов на выходе
p1=floor(pages/(lists*4)); //целых блоков по lists*4 страниц
p2=p1*lists*4; //страниц во всех целых блоках
p3=pages-p2; //остаток страниц
p4=ceil(p3/4); //потребуется листов на остаток
p5=p4*4-p3; //страниц в остатке

a=zeros(p4*4+p2,1);
//сначала сформируем подшивку из целых блоков
for i=t:p1
    i1=(i-1)*lists*4+1;
    i2=i*lists*4;
    i3=0;
    for j=1:lists
        //i10=(i1-(t-1)*lists*4)+(j-1)*4;
        i10=(i1)+(j-1)*4;
        a(i10)=i2-i3;
        a(i10+1)=i1+i3; i3=i3+1;
        a(i10+2)=i1+i3;
        a(i10+3)=i2-i3; i3=i3+1;
    end
end
//дополняем подшивку неполными страницами - конечный блок
    i1=i2+1;
    i2=i2+p4*4;
    i3=0;
    for j=1:p4
        //i10=(i1-(t-1)*lists*4)+(j-1)*4;
        i10=(i1)+(j-1)*4;
        a(i10)=i2-i3;
        a(i10+1)=i1+i3; i3=i3+1;
        a(i10+2)=i1+i3;
        a(i10+3)=i2-i3; i3=i3+1;
    end
//лишние страницы заполняем финальной
for i=1:max(size(a))
    if a(i)>pages then a(i)=pages;
    end
end
//при односторенней печати делим все страницы на два потока
for i=1:max(size(a))/4
    b1((i-1)*2+1)=a((i-1)*4+1);
    b1((i-1)*2+2)=a((i-1)*4+2);
    b2((i-1)*2+2)=a((i-1)*4+3);
    b2((i-1)*2+1)=a((i-1)*4+4);  
end
disp('Все страницы:');
disp(strcat(string(b1(1:1:max(size(b1)))),','));
disp(strcat(string(b2(max(size(b2)):-1:1)),','));

//бъём по блокам и выводим
for i=1:floor(pages/(lists*4))
    b3=b1((i-1)*lists*4/2+1:i*lists*4/2);
    b4=b2(i*lists*4/2:-1:(i-1)*lists*4/2+1);
    disp('Блок '+string(i)+' страницы '...
        +string((i-1)*lists*4+1)+' - '+string(i*lists*4));
    disp(strcat(string(b3(1:1:max(size(b3)))),','));
    disp(strcat(string(b4(1:1:max(size(b4)))),','));
end
//выводим финальный блок
i1=floor(pages/(lists*4));
i2=ceil(pages/(lists*4));
if i2>i1 then
    b3=b1(i1*lists*4/2+1:max(size(b1)));
    b4=b2(max(size(b1)):-1:i1*lists*4/2+1);
    disp('Блок '+string(i+1)+' страницы '...
        +string(i*lists*4+1)+' - '+string(pages));
    disp(strcat(string(b3(1:1:max(size(b3)))),','));
    disp(strcat(string(b4(1:1:max(size(b4)))),','));
end;

 

Hide  

 

В итоге получается нечто вроде:

 

Цитата

Все страницы:  


20,1,18,3,16,5,14,7,12,9,40,21,38,23,36,25,34,27,32,29,60,41,58,43,56,45,54,47,52,49,80,61,78,63,76,65,74,67,72,69,100,81,98,83,96,85,94,87,92,89,120,101,118,103,116,105,114,107,112,109,140,121,138,123,136,125,134,127,132,129,160,141,158,143,156,145,154,147,152,149,180,161,178,163 ,176,165,174,167,172,169,191,181,190,183,188,185                                                                                           
 
186,187,184,189,182,191,170,171,168,173,166,175,164,177,162,179,150,151,148,153,146,155,144,157,142,159,130,131,128,133,126,135,124,137,122,139,110,111,108,113,106,115,104,117,102,119,90,91,88,93,86,95,84,97,82,99,70,71,68,73,66,75,64,77,62,79,50,51,48,53,46,55,44,57,42,59,30,31,28,33,26,35,24,37,22,39,10,11,8,13,6,15,4,17,2,19                                                                                           
 
  Блок 1 страницы 1 - 20   
 20,1,18,3,16,5,14,7,12,9   
 10,11,8,13,6,15,4,17,2,19   
  Блок 2 страницы 21 - 40   
 40,21,38,23,36,25,34,27,32,29   
 30,31,28,33,26,35,24,37,22,39   
  Блок 3 страницы 41 - 60   
 ...
  Блок 10 страницы 181 - 191   
 191,181,190,183,188,185   
 186,187,184,189,182,191  

 

Ссылка на сообщение
Поделиться на других сайтах


В 30.01.2017 в 18:37, ILL сказал:

И?????

Э, непонял.

На ЛОРе народ жаловался о сверхсложности распечатать и подшить книжку. С помощью скрипта распечатал один талмуд на А5, собрал, сшил, удобнее чем листать А4, и всё на этом.

Ссылка на сообщение
Поделиться на других сайтах

Может, пригодится кому.

Для получения брошюры давно пользуюсь PDF-XChange Viewer с его опцией распечатки в виде книги или брошюры.

scr.png

Без скриптов и долгих медитаций.

Да и заранее перегнать в pdf практически любой формат уже давно не проблема.

Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, AlexKaz сказал:

На ЛОРе народ жаловался о сверхсложности распечатать и подшить книжку.

 

А тут вроде пока никто не жаловался..

 

В 29 января 2017 г. в 18:19, AlexKaz сказал:

Набросал скрипт в Scilab


Сколько человек на форме вообще знает, что это за зверь??

Ссылка на сообщение
Поделиться на других сайтах

А, понял. Звиняйте за флуд, сносите тему если ни к чему.

Ссылка на сообщение
Поделиться на других сайтах

Это... в Линуксе ЕМНИП есть штатная утилита для такой вот печати брошюр. Название уже не упомню (psutils наверное), но вариантов компоновки там - вдоволь. Но это не для того, что бы тему пристрелить, а так.. для расширения кругозора

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...