Перейти к содержанию
    

Перечень элементов в LATEX по ГОСТу

Vadim, а подскажите, что можно сделать, если фамилия не влезает в отведённое поле? Не то чтобы она длинная, но сокращать не хочется.

Помнится, КОМПАС в таком случае шрифт как-то сжимал по горизонтали, но за пределы поля не позволял выходить.

И в \NameSet мне хочется текста побольше задать, но не получается по той же причине.

Поделиться сообщением


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

Vadim, а подскажите, что можно сделать, если фамилия не влезает в отведённое поле? Не то чтобы она длинная, но сокращать не хочется.

Помнится, КОМПАС в таком случае шрифт как-то сжимал по горизонтали, но за пределы поля не позволял выходить.

Насколько мне известно, LaTeX, в отличие от других систем вёрстки, не сжимает/разжимает по горизонтали конкретные слова, а только промежутки между ними. Следовательно, нужно уменьшить размер шрифта в конкретном поле. При разработке pcbdoc не предпринимались меры по автоматизации этого процесса, поэтому нужно делать это вручную. Например, уменьшить размер шрифта можно так:

\AuthorSet{\smallit{}Пупкин}

Вообще, в pcbdoc есть несколько команд изменения размера шрифта. Наклонный шрифт, от меньшего к большему:

\smallit
\normalfontit
\llargeit
\largeit
\LLargeit
\Largeit

Прямой шрифт, от меньшего к большему:

\small
\normalfont
\llarge
\large
\LLarge
\Large

Кроме того, Вы можете указать тип шрифта и его размер "в лоб" средствами XeLaTeX. Например:

\AuthorSet{\fontspec[Scale=0.68]{GOST type A}\itshape{}Пупкин}

И, само собой разумеется, если Вы планируете часто использовать конкретный размер шрифта, имеет смысл создать для этого новую команду.

И в \NameSet мне хочется текста побольше задать, но не получается по той же причине.

В дополнение к сказанному выше, поле \NameSet может состоять из двух строк. Например:

\NameSet{Модуль\\расширителя сознания}

Поделиться сообщением


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

\smallit похоже уже отсутствует. Его даже grep не находит в исходниках.

С помощью fontspec пофиксил шрифт всех надписей. Теперь всё хорошо.

 

И ещё есть кое-что. Я ваш стиль использую для создания перечня элементов.

Если прописать 2 и больше строк \Element подряд, то в выходном файле будут пустые строки.

Не знаю, зачем вы это сделали? Может пустые строки нужны при разбивке перечня на страницы и без этого никак?

Мне как-то привычнее без них. Нашёл реализацию этой команды:

 

\newcommand{\Element}[4][]{% Добавить элемент
  % #1 - примечание (необязательно),
  % #2 - наименование,
  % #3 - позиционное обозначение,
  % #4 - количество
  \Line{\largeit #3}{#2}{#4}{#1}%
  \tabularnewline%
  }%

 

Чисто интуитивно мне понятно, что делает \tabularnewline. Убрал и теперь перечень стал что надо, не хуже чем в КОМПАСе. :disco:

Можно забить на глючащий под вайном КОМПАС и запихнуть этот перечень в меркуриал. Похоже, что буду пользоваться.

Поделиться сообщением


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

\smallit похоже уже отсутствует. Его даже grep не находит в исходниках.

Да, действительно, виноват, ошибся, извините. Вчера, когда давал совет, глянул в свои(более свежие) исходники. Там \smallit и \small присутствуют.

Если прописать 2 и больше строк \Element подряд, то в выходном файле будут пустые строки.

Не знаю, зачем вы это сделали?

На самом деле всё просто. Об этом даже написано в туториале:

При разработке pcbdoc ставилась задача получения таких выходных документов, которые позволили бы беспрепятственно пройти нормоконтроль на конкретном предприятии.

Т.е, как нетрудно догадаться, виной всему является мой начальник отдела, который на момент написания pcbdoc требовал наличия пустой строки после записи элемента в перечне или спецификации :)

Ну, раз такая функциональность устраивает не всех, имеет смысл ввести настроечный параметр(опцию) в класс, который будет задавать наличие или отсутствие пустой строки после записи элемента. Принял к исполнению :)

 

ЗЫ К сожалению, сейчас у меня катастрофически не хватает времени, поэтому, скорее всего, реализую задуманное не скоро. Заодно приношу извинения ув. tomikaji, реализация хотелки которого по вышеуказанной причине откладывается на неопределённое время.

Поделиться сообщением


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

требовал наличия пустой строки после записи элемента в перечне или спецификации

В этом что-то есть.

Я тоже это люблю

Ну не после каждой, а посл сгрупированных С1...С10, или отсутствующих. Так как есть вероятность появления отсутствующих, или выпадения C10 из группы.

а дописывать желательно между ними ручками при необходимости

Поделиться сообщением


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

виной всему является мой начальник отдела, который на момент написания pcbdoc требовал наличия пустой строки после записи элемента в перечне или спецификации

 

Может ему поля для комментария не хватает? Всегда оставляет себе место, что бы в последствии пометить что-нибудь карандашиком.

 

Ещё заметил, что текст в примечание не вставляется. То есть у команды Element 4 параметра.

И если вот такое

\Element{Розетка SMA-BJ}{\refbox{XS1,XS2}}{2}

заменить на примерно такое

\Element{Розетка SMA-BJ}{\refbox{XS1,XS2}}{ttt}

 

То ttt попадает в 1-ый столбец новой строки, а не последний текущей.

Поделиться сообщением


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

Примечание нужно указывать в необязательном параметре функции \Element. Необязательный параметр в LaTeX указывается самым первым аргументом функции в квадратных скобках. Например:

\Element[это примечание]{Розетка SMA-BJ}{\refbox{XS1,XS2}}{2}

Ну а по поводу перескакивания на другую строчку - Вы ошиблись с примером

Вместо

\Element{Розетка SMA-BJ}{\refbox{XS1,XS2}}{ttt}

Вы, скорее всего, хотели сказать

\Element{Розетка SMA-BJ}{\refbox{XS1,XS2}}{2}{ttt}

{ttt} в данном случае не является аргументом функции, и, естественно, LaTeX верстает это, начиная с новой строки.

 

В этом что-то есть.

Я тоже это люблю

А мне по-барабану. Как скажет руководство, так и будет. Любой каприз за ваши деньги, тсз. Могу даже зелёную полоску поперёк... И красный бантик в правом нижнем углу.

Поделиться сообщением


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

Да, действительно, мой косяк. LaTeX в совершенстве увы не знаю. Работаю с ним хоть и давно, но эпизодически.

Большое спасибо вам за проделанную работу!

Поделиться сообщением


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

Гость nill
Ну, раз такая функциональность устраивает не всех, имеет смысл ввести настроечный параметр(опцию) в класс, который будет задавать наличие или отсутствие пустой строки после записи элемента. Принял к исполнению :)

 

Очень жду, поскольку мне нужно группировать по 3-5 строк. Может быть Вам уже создать какой-нибудь открытый репозиторий? Глядишь, народ подтянется.

Поделиться сообщением


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

Очень жду, поскольку мне нужно группировать по 3-5 строк.

Работы, наверное, минут на 15 :) Но, чтобы разобраться, что и где исправлять, нужно, наверное, несколько часов (давно не занимался pcbdoc). Сейчас прогнозирую окончание "запарки" на работе, которая длится ещё с конца прошлого года. Через пару недель, скорее всего, сделаю.

Может быть Вам уже создать какой-нибудь открытый репозиторий? Глядишь, народ подтянется.

Давно хочу, тем более, что есть мысль (и наработки) упростить использование функции \Element. И это будет явно новая версия. Стыжусь, но, кроме как делать комиты (есть репозиторий с частичным переводом стандарта языка scheme r6rs), работать с git(hub) не умею. Как вести разработку сразу двух и более версий, не знаю. А старые версии нужны, пользователей кидать нехорошо. Разберусь - сделаю.

Поделиться сообщением


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

Здравствуйте!

В свое время была подобная задача (генерировать перечни элементов). Использовал eskdx из репозитория, в котором имеется поддержка перечней. В меру своей криворукости написал скрипт на Python, генерирующий TEX-файл, а также PDF на выходе. Буду рад, если пригодится. Допиливание скрипта приветствуется.

Исходники и пример работы в приложенном архиве.

BOMCreator.7z

Поделиться сообщением


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

Завёл репозиторий на github. Скачать версию 0.4 можно здесь: https://github.com/RudnevVadim/pcbdoc/releases

В README написано, как извлечь установочный архив с деревом исходников. Для ленивых и пользователей windows выкладываю уже извлечённый архив прямо здесь. Добавлена опция compactmode для подавления пустой строки после каждой записи в перечне элементов.

pcbdoc_v0.4.zip

Поделиться сообщением


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

Vadim, очень здорово выручила ваша библиотека! Подскажите пожалуйста как сгенерировать лист регистрации изменений в перечнене элементов? Смотрел исходники, получается он только в спецификации создается...

Планируется ли сделать рамку для ведомости покупных изделий?

Поделиться сообщением


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

Подскажите пожалуйста как сгенерировать лист регистрации изменений в перечнене элементов?

На момент написания pcbdoc я пребывал в полной уверенности, что лист регистрации изменений нужен только в спецификации. Поэтому пока никак. Обязательно исправлю.

Планируется ли сделать рамку для ведомости покупных изделий?

Нет, к сожалению. Такого рода документы от меня не требуют, к счастью :) Будет вдохновение - попробую сделать.

Поделиться сообщением


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

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