# Общее

## Я нашёл ошибку! Что мне делать?

1. Проверьте, можете ли вы повторно воспроизвести эту ошибку.
2. Спросите в списке рассылки geda-user, есть ли способ её обойти или не победили ли её уже в последней версии gEDA/gaf. Учтите, что прежде чем писать в этот список рассылки, на него нужно подписаться.
3. Проверьте, не отмечена ли уже эта проблема в системе отслеживания ошибок gEDA/gaf. Если нет, заполните отчёт об ошибке. Обязательно представьте всю информацию, необходимую для воспроизведения ошибки, и укажите версию пакета gEDA/gaf, её содержащую.
4. Наконец, как и для всех проектов с открытым исходным кодом, вы можете напрячь свои программистские мускулы и попробовать исправить ошибку самостоятельно. Пожалуйста, представьте заплату с нужными вам изменениями в систему отслеживания ошибок gEDA/gaf. Заплата будет охотно принята для улучшения следующей версии gEDA/gaf.

# Использование gschem

## В диалоговом окне выбора символов нет символов!

Диалоговое окно выбора символов представляет список названий разделов библиотеки. Щёлкните слева от названия по направленному вправо треугольнику. Список развернётся. Прокрутите его вниз до символа, который нужно добавить в схему.

## Как переместить компонент?

В версиях, начиная с 20060824 и более поздних, сделайте следующее:

1. Выделите компонент, щёлкнув по нему левой кнопкой мыши. Компонент будет подсвечен.
2. Переместите компонент (нажав левую кнопку мыши) в нужное вам место.

Возможно это для вас уже привычно.

Те, кто пользуется более старыми версиями gschem, могут воспользоваться одним из следующих трёх способов:

Первый:

1. Возьмите компонент средней кнопкой мыши. Компонент будет следовать за курсором при перемещении.
2. Чтобы поместить компонент, отпустите кнопку мыши. Компонент останется на указанном месте.

Второй:

1. Выделите компонент, щёлкнув по нему левой кнопкой мыши. Компонент будет подсвечен.
2. Нажмите клавишу [m] на клавиатуре. Теперь при перемещении курсора компонент будет следовать за ним.
3. Чтобы поместить компонент, щёлкните левой кнопкой мыши. Компонент останется на указанном месте.

Третий:

1. Выделите компонент, щёлкнув по нему левой кнопкой мыши. Компонент будет подсвечен.
2. Щёлкните правой кнопкой мыши. Появится контекстное меню.
3. Левой кнопкой мыши щёлкните по пункту меню Переместить [Move].
4. Щёлкните левой кнопкой мыши по компоненту. Теперь при перемещении курсора компонент будет следовать за ним.
5. Чтобы поместить компонент, щёлкните левой кнопкой мыши. Компонент останется на указанном месте.

## Как перемещать компоненты, не таская концов подключенных соединений?

Для переключения такого поведения нажмите [o][r]. То есть сначала клавишу [o], затем [r]. Выполнение команды переключения отразится в окне состояния. Эта команда доступна также из меню Настройки [Options].

## Как изменить размер текста в символе?

1. Выделите символ.
2. Щёлкните правой кнопкой → Войти в символ [Down symbol] (или из меню Иерархия → Войти в символ [Hierarchy → Down symbol]). Это приведёт вас в редактор символов.
3. Выделите номер вывода, который нужно изменить.
4. Выберите пункт меню Правка → Правка текста… [Edit → Edit text…] (или наберите с клавиатуры [e][x]).
5. Измените во всплывающем окне размер шрифта.
6. Повторите это для всех текстовых элементов, которые нужно изменить.
7. Файл → Сохранить [File → Save].
8. Щёлкните правой кнопкой → Наверх [Up] (или Иерархия → Наверх [Hierarchy → Up]). Теперь вы снова в редакторе схем.
9. Пока символ ещё выделен, щёлкните Правка → Обновить компонент [Edit → Update component] (или воспользуйтесь горячими клавишами [e][p]). Если это не работает, просто удалите символ и снова вставьте его.

Эту же процедуру можно использовать и более широко и редактировать в символе что-угодно. (При этом, конечно, вместо Правка текста… [Edit text…] нужно выбрать другую желаемую функцию.)

## Можно ли в gschem задать черту над текстом?

Да, линию над текстом задать можно. Обратная косая черта и знак подчёркивания отмечают начало текста, над которым должна быть линия. Вторая комбинация этих символов вновь включит обычный текст. Пример: дважды щёлкните по атрибуту и наберите “\_это\_”.

Учтите, при трансляции в pcb линии над текстом в топологии не будет. Обратная косая черта игнорируется, поэтому по краям текста, над которым должна была бы быть линия, останутся знаки подчёркивания.

## Как разблокировать заблокированный компонент?

Когда компонент заблокирован, средней кнопкой мыши выделить его нельзя, но можно выделить рамкой. Для выделения компонента рамкой нужно, нажав и удерживая левую кнопку мыши, переместить мышь, определив таким образом прямоугольную область, содержащую нужный компонент. Затем, чтобы разблокировать компонент, выполнить команду Правка → Разблокировка [Edit → Unlock].

## Как сделать так, чтобы позиционные обозначения при вычерчивании схемы нумеровались автоматически?

Измените файл `system-gschemrc` или добавьте следующее в файл `gschemrc` (либо в `~/.gEDA/gschemrc`, либо в `gschemrc` в локальном каталоге, из которого вы запускаете gschem):

    (load (string-append gedadata "/scheme/auto-uref.scm")) ; загрузить скрипт автонумерации
    (add-hook! add-component-hook auto-uref)       ; автонумерация при добавлении компонента
    (add-hook! copy-component-hook auto-uref)      ; автонумерация при копировании компонента

Обратите внимание: начиная с версии gschem 1.2, имя переменной, задающей путь доступа к скрипту, изменилось:

    (load (string-append geda-data-path "/scheme/auto-uref.scm")) ; загрузить скрипт автонумерации
    (add-hook! add-component-hook auto-uref)       ; автонумерация при добавлении компонента
    (add-hook! copy-component-hook auto-uref)      ; автонумерация при копировании компонента

## Что такое шина и как её использовать?

“Шина” — это всего лишь декорация. Генератор списка соединений её игнорирует. Фактическая работа по соединению точек между собой возложена на атрибут `netname=` — это то, что gnetlist читает и преобразует в список соединений. Невозможно присоединить дискретную линию или “бит” к шине, потому что, ещё раз, это просто графический элемент.

Некоторым пользователям кажется удобной такая организация соединений, когда в их имена входит название шины. Например, к каждому символу ответвления от шины (“busripper”) можно добавить атрибут вида `net=busA:1`, что облегчит сортировку соединений.

## Как изменить привязки клавиш в gschem?

Горячие клавиши определяются при запуске программы во время чтения файлов настроек. Стандартные настройки привязки клавиш заданы в файле `system-gschemrc`. Если хочется их изменить, рекомендуется скопировать соответствующий раздел раскладки в локальный файл настроек (`$HOME/.gEDA/gschemrc или $PWD/gschemrc`) и уже там его модифицировать. Установки `system-gschemrc` будут заменены настройками изменённого раздела локального файла настроек.

## Каково назначение кнопок мыши в gschem?

Стандартные настройки таковы:

- Левая кнопка мыши используется для выбора и черчения.
- Средняя кнопка мыши — или для перемещения объекта (щёлкните по объекту и, удерживая кнопку, перемещайте мышь), или для его копирования (нажав и удерживая клавишу [Alt], щёлкните по объекту и, удерживая кнопку, перемещайте мышь).
- Правая кнопка мыши — для контекстного меню.

Привязку средней кнопки можно изменить, добавив в файл `gschemrc` одну из следующих строк:

    (middle-button "action")   ;привязка по умолчанию, перемещение или копирование объекта

или:

    (middle-button "stroke")   ;использование жестов (для этого нужно, чтобы была установлена библиотека libstroke)

или:

    (middle-button "repeat")   ;повтор последней выполненной команды

Привязку правой кнопки можно изменить, добавив в файл `gschemrc` одну из следующих строк:

    (third-button "popup")     ;привязка по умолчанию -- вызов контекстного меню

или:

    (third-button "mousepan")  ;панорамирование в окне схемы

Более подробную информацию об этих настройках смотрите в файле `${install_prefix}/share/gEDA/system-gschemrc`.

## Можно ли в gschem делать иерархические проекты с листами подсхем?

Да. Листы подсхем в основной схеме представляются специальными символами. В разделе документации gschem можно найти пример иерархического проекта (`geda-doc/examples/gTAG/gTAG.sch`). В настоящее время нет способа создать символ подсхемы из существующей схемы автоматически. Его придётся чертить вручную. Мы были бы очень признательны за любые заплаты или сторонние скрипты, с помощью которых можно было бы это сделать.

Атрибут `source=`, прикреплённый к символу подсхемы, задаст путь доступа к файлу этой подсхемы. Выводы символа соответствуют портам — переходам из основной схемы в подсхему. Эти переходы должны соответствовать позиционным обозначениям символов портов в подсхеме. Символами портов в текущей библиотеке gEDA являются `in-1.sym` и `out-1.sym`. Для навигации в иерархии листов подсхем используйте меню иерархии. Также для этого можно использовать менеджер страниц.

Для преобразования иерархии в список соединений просто запустите gsch2pcb для основной схемы. По умолчанию имена соединений и позиционные обозначения компонентов являются строго локальными для подсхемы. При добавлении в список соединений они получают префикс в виде позиционного обозначения символа подсхемы. Можно использовать даже несколько экземпляров символа подсхемы, не опасаясь коротких замыканий. Будут ли изменяться имена соединений или позиционные обозначения, и оставаться таким образом локальными для подсхемы, или не будут, можно настроить в файле конфигурации `gnetlistrc`. Скопируйте соответствующие строки из `system-gnetlistrc` в `gnetlistrc` в текущем рабочем каталоге или в `$HOME/.gEDA/gnetlistrc`. Удобной настройкой может быть такая, когда соединения, представляемые символами питания, становятся глобальными, в то время как обычные соединения остаются локальными для подсхемы. Этого можно добиться разрешением `hierarchy-netattrib-mangle`.

## Можно ли в gschem сделать иерархию, в которой символ в основной схеме изображает многостраничную схему?

Да. Просто прикрепите к символу атрибут `source=` несколько раз с разными значениями. Войдите через этот символ в схему, затем страницы данного уровня можно листать клавишами [Page Up] / [Page Down].

## Можно ли настроить иерархию в нескольких каталогах?

Да. Для этого нужно, чтобы в декларациях `(source-library "...")` и `(component-library "...")` в `gafrc` были перечислены все нужные каталоги.

## Как объявить соединение глобальным?

В отношении текущего листа все имена соединений глобальны. Являются ли имена соединений глобальными в иерархическом стеке схем или нет, зависит от настроек в `gnetlistrc`. Этот файл может находиться в `$HOME/.gEDA` или в локальном каталоге вместе со схемами. Умолчания установлены в `system-gschemrc`. Если хочется другого поведения, скопируйте соответствующие строки в локальный `gnetlistrc`.

Способа сделать определённые имена соединений глобальными нет. Однако имена для соединений можно разделить на те, что задаются с помощью атрибута `netname`, и те, что определяются атрибутом `net`. Второй атрибут предназначен для настройки соединений символов питания. При его использовании соединения питания к символам подсхем подводить не нужно.

## Можно ли определить особые настройки и библиотеки для подсхем?

Когда схема открывается, libgeda меняет каталог. Так что при обработке схемы она должна загрузить любой `gafrc`, и в подкаталогах тоже.

## Есть ли ограничения для иерархических проектов?

Хотя поддержка подсхем охватывает многие аспекты иерархических проектов, несколько ограничений существует:

- Шины к подсхемам присоединять нельзя.
- В графическом интерфейсе нет способа создать начальную подсхему. Отдельные символы для каждой подсхемы придётся создавать вручную.

Не стесняйтесь исправить эти вопросы. Помощь приветствуется.

## Меня достало окно журналирования в gschem

Окно журналирования в gschem можно отвадить вот такой строкой в `gschemrc`:

    (log-window "later")

Можно добавить эту строку или в `$HOME/.gEDA/gschemrc`, или в каталог проекта, или изменить файл `$INSTALLDIR/share/gEDA/system-gschemrc`, чтобы сделать это по умолчанию для всей системы.

# Символы gschem

## Где найти символы кроме тех, что есть в стандартной библиотеке?

Есть веб-сайт gedasymbols.org, предназначенный для ресурсов, которыми пользователи содействуют проекту gEDA. Есть поиск по сайту, предпросмотр символов и их можно загрузить по отдельности. Если соответствующим образом сконфигурировать свой файл `gafrc`, то эти символы можно разместить прямо рядом с файлами схем своего проекта. Может быть вам следует создать локальную библиотеку символов, чтобы все проекты имели доступ к новым символам. Смотрите подробности ниже.

Можно загрузить даже всё содержимое, добавленное пользователями gedasymbols. Смотрите инструкции о том, как получить доступ к gedasymbols с помощью CVS.

## Что за вопрос насчёт тяжёлых символов против лёгких?

Эта терминология выросла из дискуссии, которая часто возникает в списках рассылки geda-user и geda-dev. Лёгкий символ — это символ, содержащий очень мало встроенных атрибутов. При этом почти все атрибуты пользователю придётся добавлять на этапе редактирования схемы (например, в gschem или в gattrib). Тяжёлый символ — это такой, многие атрибуты которого (такие как посадочные места компонентов, названия SPICE-моделей и пр.) уже встроены в файл символа. Поэтому на этапе редактирования схемы атрибуты к тяжёлому символу прикреплять практически не требуется — просто вставляете его и всё готово.

Дебаты между сторонниками тяжёлых и лёгких символов очень детальны и запутаны. В целом, сторонники тяжёлых символов думают, что они позволяют достичь большей интеграции между gschem и pcb, так как важные атрибуты топологии (такие как название посадочного места) уже встроены в символ. Считается, что это хорошо для новых пользователей (нубов), которые просто хотят спроектировать простую плату, и их не волнует миллион вариантов, существующих даже для обычного резистора (например, различные корпуса, ТКС, точность, состав материала и т. д.). Сторонники лёгких символов предпочитают работать с атрибутами при редактировании схемы, потому что думают, что это более гибко. Они сразу указывают, что если пытаться обозначить все различия между разными вариациями компонентов, библиотека тяжёлых символов быстро разрастётся в тысячи компонентов с абсурдно длинными названиями. Они также отмечают, что предпочтительным инструментом для обработки атрибутов при редактировании схем (то есть для файлов `.sch`) является утилита gattrib.

В gEDA/gaf по умолчанию используются лёгкие символы, хотя такую конфигурацию можно изменить и использовать тяжёлые. Более подробно об этом можно узнать из следующих дискуссий в списке рассылки geda-user:

http://archives.seul.org/geda/user/Jun-2005/msg00001.html

http://archives.seul.org/geda/dev/Oct-2005/msg00043.html

http://archives.seul.org/geda/user/Dec-2007/msg00146.html

## Я загрузил символ из библиотеки. Почему он не выравнивается по сетке?

Подавляющее большинство символов в библиотеке создано с выравниванием по сетке в 100 единиц. Убедитесь, что сетка настроена на 100 единиц. Чтобы проверить или изменить это значение, выберите Шаг сетки привязки… [Snap Grid Spacing…] в меню настроек.

Символы добавлены в библиотеку такими же пользователями, как и вы. Некоторые люди используют другие настройки сетки, нежели остальные (например, 50 единиц вместо 100). Если вы обнаружили символ, который, кажется, не выравнивается по сетке, попробуйте уменьшить размер сетки и переместить символ так, чтобы концы его выводов “сидели” на сетке. Потом вернитесь к настройкам сетки, подходящим для вас. Кроме того, вы можете послать исправленный символ в список рассылки geda-user.

Символы, находящиеся на сайте gedasymbols.org, ещё более подогнаны под конкретные требования их авторов. Да, документация gEDA строго рекомендует использовать размер сетки 100 единиц. Но каждый любит делать всё по-своему и абсолютного диктатора, который мог бы навязать правила для вносимых в проект символов, нет. Поэтому вам просто надо знать об этой возможности.

## Есть ли явный символ "no connect", который я мог/должен бы вставить в схему, чтобы программа gnetlist не думала, что я забыл добавить какое-то соединение?

Ответ: `misc` → `nc-left, nc-right, nc-top, nc-bottom`.

Будьте осторожны: подчас при этом может быть создано соединение с названием no_connect (или NC??), что может заставить gnetlist соединить эти неподключенные выводы между собой, чего вы, скорее всего, не хотели бы.

Если вы хотите, чтобы символ был чисто графическим (не имел электрических соединений), добавьте атрибут `graphical=1`. Такие символы полностью игнорируются генератором списка соединений.

## Как вынести в схему невидимый атрибут символа?

Невидимые атрибуты, за некоторыми исключениями, из символов в схему не выносятся. Чтобы они выносились, нужно сделать следующее. Поищите следующие ключевые слова в файле `system-gafrc`:

    (attribute-promotion "enabled");
    (promote-invisible "disabled") ; <= Вот это
    (keep-invisible "enabled")

Добавьте в свой `gafrc`:

    (promote-invisible "enabled")

и все атрибуты будут выноситься. Ключевое слово `keep-invisible` служит для того, чтобы те атрибуты, что были скрытыми в файле символа, оставались скрытыми и в схеме.

## Как мне быть с выводами питания для своих символов: делать ли их видимыми (явными) или невидимыми (неявными)?

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

Для старых логических схем, имеющих повсюду пятивольтовую ТТЛ-логику, наличие скрытых выводов может быть и нормально. Если у вас на плате есть только +5 В, то скрытие выводов питания может несколько упростить схему. Однако сегодня немногие проектировщики делают такие схемы; пятивольтовые ТТЛ (и пятивольтовые КМОП) быстро становятся технологией древности.

Скрывать выводы питания аналоговых микросхем было неприемлемо всегда. Во-первых, аналоговые микросхемы часто имеют несколько соединений питания (VCC, VEE), которые требуется указывать явно. Во-вторых, хорошая практика проектирования подразумевает установку развязывающих конденсаторов на всех выводах питания без исключения. К тому же иногда последовательно с питанием устанавливают катушку индуктивности. Так как всё это должно быть начерчено в схеме, то лучше всего для их подключения использовать явный вывод питания. Поэтому никогда не следует использовать скрытые выводы питания для символов аналоговых компонентов.

В новых схемах логики для разных частей микросхемы часто используется несколько источников питания (OVDD, DVDD и т. д.). Обычным также является наличие нескольких типов логики на одной плате (5 В, 3.3 В и т. д.). Поэтому лучше всего размещать и подключать выводы питания таких символов явным образом. Скрытые выводы питания в этом случае будут причиной многих бед, так как, например, питание 3,3 В можно весьма просто ошибочно подключить к пятивольтовому прибору.

Перефразируя Ненси Рейган: просто скажи “нет” скрытым выводам питания.

К вышесказанному добавим, что тем не менее весьма удобным может быть отделение выводов питания от функциональных частей символа. Чтобы добиться этого, надо будет определить отдельный символ питания и задать ему то же самое позиционное обозначение, что и для функциональной части. При запуске gsch2pcb эти двойняшки будут надлежащим образом рассматриваться как один компонент. Так как ни gschem, ни gsch2pcb не могут точно знать, вполне ли укомплектован компонент в схеме обоими созданными для него символами, то это следует проверять самостоятельно. При таком подходе все цепи питания могут вычерчиваться в одном углу схемы отдельно от сигнальных цепей. Для аналоговых схем это в ряде случаев очень удобно.

## Можно ли использовать выводы нулевой длины?

Для обоих концов вывода можно задать одинаковые значения координат. При этом будет выводиться только красный маркер вывода без продолжения. В настоящее время в gschem графически такой вывод начертить нельзя. Но файл символа можно открыть в текстовом редакторе и добавить вот такую строку:

    P 100 100 100 100 1 0 0

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

## Есть ли спецификация или руководство по созданию символов gschem? Если есть, то где?

Есть. Это Руководство по созданию символов.

## Есть ли помощник по созданию символов в gschem?

Помощника, встроенного в графический интерфейс gschem, нет. Но есть скрипты для автоматического создания символов по заданным в файле конфигурации параметрам. Один из этих скриптов — tragesym. Он входит в стандартный набор программ gEDA. Научиться им пользоваться вам поможет краткое руководство.

Один из основных разработчиков проекта написал свой собственный скрипт для создания символов: djboxsym.

Кроме того, существует утилита (ibs2symdef.py), позволяющая создавать файлы описаний символов (symdef) для работы с djboxsym из IBIS-моделей. Она распространяется в рамках проекта PyBIS: PyBIS wiki.

## Где можно найти информацию о формате файлов gschem?

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

## Почему символы такие большие?

В gschem нет ничего, что определяло бы абсолютный размер объектов. Единственной связью с реальными единицами измерения являются названия разных рамок основных надписей. По какой-то давно забытой причине в рамках основных надписей с названиями `title-A4.sym` или `title-B.sym` помещаются только относительно простые схемы из символов стандартной библиотеки. Если для более сложных схем вам нужно больше места, просто выберите символ рамки подходящего размера.

gschem масштабирует вывод печати таким образом, что всё содержимое растягивается на выбранный формат листа. Этот формат абсолютно независим от используемого в схеме символа рамки основной надписи. Поэтому нет нужды масштабировать сами символы, чтобы они поместились на конкретном формате. Многие при печати на A4 предпочитают использовать `title-A2.sym` или `title-A3.sym`. Кто-то использует символы основной надписи вообще без рамок и затем чертит прямоугольник подходящего размера (см., например, title-block.sym от Kai-Martin Knaak).

Но в некоторых случаях всё же хочется на самом деле изменить размер символов. Для этого есть несколько способов:

- DJ Delorie написал для проекта скрипт на Perl под названием scale-schematic, находящийся на его странице на сайте gedasymbols.org.
- Можно сделать и свою собственную библиотеку символов. Это не так уж и страшно, так как многие приходят к использованию в любом случае исключительно собственных символов.
- Wojciech Kazubski поддерживает пакет символов gEDA небольшого размера на странице http://www.sp5pbe.waw.pl.

# Конфигурирование/настройка gschem

Вариантов настройки gschem гораздо больше, чем может быть здесь рассмотрено. Поэтому, чтобы узнать, что можно изменить ещё, взгляните на `system-gschemrc`.

## Как сконфигурировать локальный файл gafrc, чтобы можно было найти каталог своих символов?

1. Создайте каталог проекта, например `${HOME}/myproj`.
2. Поместите нужные вам символы в `${HOME}/myproj/symbols`.
3. В `${HOME}/myproj` создайте файл `gafrc`.
4. Добавьте в `gafrc` строку:

        (component-library "./symbols")

5. Запустите gschem из каталога проекта. То есть для запуска gschem наберите следующее:

       cd ${HOME}/myproj
       gschem myschematic.sch

Главное, что следует помнить:

- Код Guile, обрабатывающий rc-файлы не понимает или не интерпретирует метасимволы и шаблоны оболочки, такие как «~» или «${HOME}». Он не считает, что «.» — это текущий каталог, и не понимает абсолютных путей доступа к файлам. Если вы хотите сделать что-то мудрёное, то для получения информации о каталогах можно попробовать использовать функции Scheme.
- Убедитесь, что `gafrc` находится в главном каталоге проекта.
- Запускайте все программы gEDA из главного каталога своего проекта.
- Запускайте программы из командной строки в оболочке терминала — не используйте никаких красивых, блестящих иконок для запуска gschem (если они у вас есть), так как вы не узнаете, в каком каталоге gschem запускается, а gschem может не найти `gafrc`.
- Самое главное здесь: запускать gschem из того же каталога, где лежит и `gafrc`.

## Можно ли в gafrc задать корневой каталог своей библиотеки с помощью переменной?

В настоящее время (v1.3.1) gschem не спускается в подкаталоги библиотеки символов. Абсолютно каждый из каталогов своих локальных библиотек нужно отдельно прописывать в файле `gafrc`. Но общую часть полного пути вовсе не обязательно повторять снова и снова. С помощью функции `build-path` путь можно формировать “на лету”:

    (define gedasymbols "/путь/к/локальной/библиотеке")
    (component-library (build-path gedasymbols "analog"))
    (component-library (build-path gedasymbols "block"))
    (component-library (build-path gedasymbols "connector"))

## Можно ли в задании пути доступа к библиотеке использовать переменные окружения?

К переменной окружения ENV внутри предложений Scheme в `gafrc` можно обратиться с помощью `getenv "ENV"`:

    ; Определение пути доступа к локальному репозиторию символов:
    (define symbolspath (build-path (getenv "HOME") "geda" "symbols"))
    ; Подключение с его помощью конкретной библиотеки:
    (component-library (build-path symbolspath "analog"))

Альтернативный синтаксис — `${ENV}`:

    (component-library "${HOME}/geda/symbols/analog")

## Как сделать так, чтобы название библиотеки отличалось от имени её каталога?

Добавьте третий аргумент в предложение `component-library` в `gafrc`, то есть:

    (component-library "/home/comp/sch_symbols/AutoGen/Panasonic/0603/1P" "Panasonic 0603 1P")

## Можно ли в библиотеке хранить часто необходимые части схем?

Да, благодаря тому, что символы могут содержать вложенные символы и соединения.

1. Скопируйте часть схемы на новый лист (так как рамка основной надписи вам не понадобится, разблокируйте её и удалите).
2. Позиционные обозначения должны заканчиваться на «?», чтобы потом их можно было пронумеровать автоматически.
3. Переместите эту часть схемы в нижний левый угол доступного для чертежа пространства (можно с помощью Правка → Смещение символа… [Edit → Symbol Translate…]).
4. Сохраните полученную схему как символ (с расширением `.sym`) в свою локальную библиотеку.
5. В рабочей схеме откройте окно выбора компонентов и перед вставкой этого составного символа снизу в выпадающем списке выберите Вставить как отдельные объекты [Include component as individual objects]. Содержимое символа будет полностью вставлено на лист. Не забудьте потом снова установить режим по умолчанию для вставки обычных символов.

## Библиотека завалена символами стандартной библиотеки. Можно ли ограничиться только своими локальными библиотеками?

Добавьте в `gafrc` следующие строки, заменив каталоги на свои:

    ; очистить переменную, содержащую пути к библиотекам,
    ; и добавить в неё локальные каталоги:
    (reset-component-library)
    (component-library "/foo/localgedalib1")
    (component-library "/bar/foo/localgedalib2")

Придётся добавить каталоги для всех локальных библиотек без исключения, так как программы gschem и gsch2pcb не распознают подкаталоги автоматически. Весьма неплохо поместить этот `gafrc` в каталог своего проекта. Таким образом при запуске gschem из какого-то другого каталога символы стандартной библиотеки всё равно будут появляться. Также это даёт возможность настройки библиотек специальных символов для особых проектов.

## Что надо сделать, чтобы по умолчанию устанавливался другой размер текста?

Добавьте в свой `gschemrc`

    (text-size 10)

Вместо “10” подставьте нужный размер.

## Скажите, пожалуйста, можно ли настроить светлый цвет фона?

В файл `gschemrc`, находящийся в том месте, где gschem при запуске ищет свои настройки, добавьте такую строку:

    (load (build-path geda-rc-path "gschem-colormap-lightbg"))

Учтите, что этот синтаксис подходит только для новых версий gschem (>=2009). Для более старых версий нужна строка:

    (load (build-path geda-rc-path "gschem-lightbg"))

Ещё более старым версиям (до 1.2) нужна такая строка:

    (load (string-append gedadatarc "/gschem-lightbg"))

## Как подстроить цвета в gschem?

В настоящее время графического интерфейса для интерактивной корректировки цветов в gschem нет. Но их можно поправить в rc-файле.

1. Скопируйте файл `gschem-colormap-lightbg` или `gschem-colormap-darkbg` в `$HOME/.gEDA/mycolors`.
2. Отредактируйте по вкусу цвета в `.gEDA/mycolors`.
3. Добавьте в `gschemrc` строку:

    (load (build-path (getenv "HOME") ".gEDA" "mycolors"))

## Каждый раз при запуске gschem появляется окно журнала. Можно ли его отключить?

В файле `system-gschemrc` вы найдёте следующий раздел:

    ; log-window string
    ;
    ; Controls if the log message window is mapped when gschem is started up
    ; Possible options:
    ;       startup - opened up when gschem starts
    ;       later   - NOT opened up when gschem starts
    ;                 (can be opened by Options/Show Log Window)
    ;
    (log-window "startup")
    ;(log-window "later")

Закомментируйте строку `startup` (с помощью символа «;») и раскомментируйте строку `later`, или добавьте в свой `gschemrc` следующую строку:

    (log-window "later")

Если вы хотите, чтобы вместо окна журнала сообщения выводились на стандартный вывод (stdout), добавьте в свой `gschemrc` такую строку:

    (logging-destination "tty")

## Есть ли способ запретить журналирование в $HOME/.gEDA/logs/?

Добавьте в свой `gschemrc` строку:

    (logging "disabled")

## Можно ли сделать так, чтобы для новых схем устанавливалась моя собственная рамка основной надписи?

Добавьте следующую строку в свой `gschemrc`:

    (define default-titleblock "title-A3.sym")

Замените `title-A3.sym` именем файла символа предпочитаемой рамки.

# Печать/вывод

## Как напечатать схемы из командной строки?

Для печати схемы в файл в формате Postscript надо из командной строки вызвать скрипт `print.scm` и задать имена входного и выходного файлов.

Postscript-файл из файла схемы создаётся следующей командой (замените в ней MY_SCH именем файла своей схемы, а GEDA_SCHEME_DIR именем каталога, в котором установлены файлы скриптов на Scheme для gEDA):

    gschem -p -oMY_SCH.ps -sGEDA_SCHEME_DIR/print.scm MY_SCH.sch

Приведённый ниже `bash`-скрипт, который я назвал gschem-print, создаст для каждого из заданных в командной строке файлов схем Postscript-файл, а затем распечатает его на используемом по умолчанию принтере:

    #!/bin/bash

    # gschem options
    # -oPS_FILENAME output to Postscript file PS_FILENAME
    # -sSCRIPT_FILENAME run script SCRIPT_FILENAME
    # -p autoplace windows

    for name in $*
    do
        base="${name%.*}"
        gschem -p -o$base.ps -sGEDA_SCHEME_DIR/print.scm $base.sch
        lpr -P$PRINTER $base.ps
    done

При печати из командной строки используется размер листа, заданный по умолчанию. Чтобы по умолчанию задать размер A4, в свой `gschemrc` в `$(HOME)/.gEDA` (или в `gschemrc` в локальном каталоге) добавьте строку:

    (paper-size 11.69 8.27) ; A4

Полный перечень настроек `paper-size` можно найти в `system-gschemrc`.

## Как получить черно-белый/цветной вывод в Postscript/PNG?

Отредактируйте файл `system-gschemrc` или добавьте в `gschemrc` одну из следующих строк (то есть в `~/.gEDA/gschemrc` или в `gschemrc` в том каталоге, из которого вы запускаете gschem).

Для вывода чёрно-белого Postscript:

    (output-color "disabled")     ; монохромный Postscript (включено по умолчанию)

Для вывода цветного Postscript:

    (output-color "enabled")      ; цветной Postscript

Для вывода чёрно-белых PNG:

    (image-color "disabled")      ; монохромные PNG

Для вывода цветных PNG:

    (image-color "enabled")       ; цветные PNG (включено по умолчанию)

## Как изменить цвет фона / другие цвета при выводе в Postscript/PNG?

Как разрешить цветной вывод в Postscript/PNG описано выше.

Указанные ниже файлы цветовых схем находятся в каталоге `${prefix}/share/gEDA/`, где `${prefix}` — каталог установки gEDA.

##### Настройка для новых версий, начиная с 1.5.2

Начиная с версии 1.5.2, для печати и отображения на экране в gschem используются разные цветовые схемы. Для отображения на экране используются `gschem-colormap-darkbg`, `gschem-colormap-lightbg` и `gschem-colormap-bw`, для печати — `print-colormap-darkbg` и `print-colormap-lightbg`.

Чтобы при выводе в Postscript получить светлый фон, в `gschemrc` нужно добавить следующее:

    (load (build-path geda-rc-path "print-colormap-lightbg"))

Для получения тёмного фона измените `lightbg` на `darkbg`.

Если вас не устраивают предустановленные цветовые схемы, можно настроить свою. Для этого:

1. Скопируйте файл `print-colormap-lightbg` в `$HOME/.gEDA/print-colormap-mycolors`.
2. Отредактируйте по вкусу цвета в `.gEDA/print-colormap-mycolors`.
3. Добавьте в `gschemrc` строку:

    (load (build-path (getenv "HOME") ".gEDA" "print-colormap-mycolors"))

Цвет фона, например, задаётся переменной `output-background`.

Настройка цветов PNG производится аналогично, только вместо `print-colormap-…` необходимо использовать `gschem-colormap-…`.

Обратите внимание, что цвета для экспорта в PNG следует менять в декларации `display-color-map`.

Учтите, что для экспорта в PNG и отображения на экране используются одни и те же цветовые схемы.

##### Настройка для более старых версий, до 1.5.2

В версиях до 1.5.2 для печати и отображения на экране использовались одни и те же файлы цветовых схем: для тёмного фона — `gschem-darkbg`, для светлого — `gschem-ligthbg`.

Для настройки фона Postscript-файлов измените следующую строку или в файле `gschem-darkbg` (чёрный фон, стандартная настройка), или в `gschem-lightbg` (альтернативный светлый фон):

    (output-color-background 16 "black" "null" "0 0 0" 0 0 0)

“0 0 0” — это RGB-компоненты (в пределах 0 … 1) для цвета фона PS-вывода.

Для настройки фона при экспорте в PNG измените следующую строку или в `gschem-darkbg` (чёрный фон, стандартная настройка), или в `gschem-lightbg` (альтернативный светлый фон):

    (background-color 0 "grey94" "null" "1 1 1" 255 255 255)

255 255 255 — это RGB-компоненты цвета фона изображения.

## Как сделать PDF?

Получить PDF можно разными способами:

1. Напечатать схемы в файл в формате Postscript, а затем сконвертировать их в PDF сторонней программой. Можно использовать утилиту ps2pdf с ключом `-sPAPERSIZE=a4`.
2. Использовать установленный в системе PDF-принтер.

Второй вариант более удобен, но требует чуть больше администрирования.

В окружении Gnome для этого понадобится пакет cups-pdf. PDF-принтер, под названием “CUPS-PDF-Printer”, нужно настроить как “Локальный принтер” (“Local Printer”) с помощью обычного интерфейса настройки CUPS. Выберите производителя “Generic”, модель “CUPS-PDF-Printer”. Затем, чтобы команда печати lp вызывалась для gschem по умолчанию, добавьте в локальный `gschemrc` следующую строку:

    (print-command "lp -d CUPS-PDF-Printer")

По умолчанию результирующие PDF-файлы будут записываться в каталог `$HOME/PDF`.

В окружении KDE можно использовать программу печати kprinter, задав в ней вывод в PDF. Тогда в локальный `gschemrc` надо добавить такую строку:

    (print-command "kprinter")

## Как вставить схемы в LaTeX-документ?

1. Распечатайте схему в файл. Это будет обычный Postscript (`*.ps`).
2. Сконвертируйте Postscript-файл в EPSI программой ps2epsi. Это скрипт из пакета ghostscript.
3. Вставьте в преамбулу своего LaTeX-документа `usepackage{graphicx}`. Вставка схемы в документ осуществляется командой `includegraphics`.

Простой пример:

    \documentclass{article}
    \usepackage{graphicx}
    \begin{document}
      \begin{figure}
      \includegraphics[width=100mm]{ModulPID.epsi}
      \end{figure}
    \end{document}

## Как разбить лист схемы в формате Postscript на несколько страниц?

Сама программа gschem такой функциональности не предоставляет, но есть программа poster, которая как раз это и делает. Её можно загрузить отсюда (GNU) или отсюда (KDE Print).

# Проблемы установки/работы gschem

## gschem из дистрибутива FC5 (и других дистрибутивов Linux) выдаёт ошибки сегментации при удалении компонентов! Что делать?

Эта ошибка возникла в середине 2006 г. у пользователей Fedora Core 5 (и других дистрибутивов Linux, в которых используется glib 2.10.x). Разработчики уже исправили эту ошибку и в последних версиях gEDA/gaf (то есть начиная с октября 2006 г.) такой проблемы быть не должно.

Если оказалось, что у вас более старая версия gEDA/gaf, эту ошибку можно обойти, установив переменную окружения `G_SLICE` в always-malloc. В частности, до запуска gschem следует сделать следующее:

bash:

    export G_SLICE=always-malloc

csh:

    setenv G_SLICE always-malloc

## После установки gschem не работает!? Что может быть не так?

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

    ERROR: Unbound variable: current-keymap

или появляется ошибка такого вида:

    Gtk-CRITICAL : file gtkpixmap.c: line 97 (gtk_pixmap_new): assertion `val != NULL' failed.
    Gtk-CRITICAL : file gtkpixmap.c: line 97 (gtk_pixmap_new): assertion `val != NULL' failed.
    Tried to get an invalid color: 0
    Tried to get an invalid color: 7
    Tried to get an invalid color: 0
    Tried to get an invalid color: 7

то gschem не находит какого-то rc-файла. Есть два необходимых rc-файла. Первый — это `system-gschemrc`, второй — `system-commonrc`.

- rc-файл `system-gschemrc` должен устанавливаться при установке gschem и обычно находится в `${prefix}/share/gEDA/system-gschemrc`. `${prefix}` — это каталог установки gEDA (обычно `/usr`, `/usr/local` или `$HOME/geda`). Этот файл может быть также установлен в `/etc/gEDA` (так делается в пакетах `.deb`).
- rc-файл `system-commonrc` должен устанавливаться при установке библиотеки символов gEDA/gaf. Он находится в `${prefix}/share/gEDA/system-commonrc`. Этот файл может устанавливаться также в `/etc/gEDA` (так делается в пакетах `.deb`). Собственно программа gschem этот файл не загружает. Он загружается строкой `(load …)` из rc-файла `system-gschemrc`.

Удостоверьтесь, что эти файлы установлены. Файл `gschem.log` (создаваемый при каждом запуске gschem) содержит полезную отладочную информацию, которая должна помочь вам определить, что идёт не так. Проверьте этот файл на предмет того, где gschem ищет свои rc-файлы.

Кроме того, в некоторых более старых версиях gEDA/gaf было несколько ошибок, возникавших при установке rc-файлов в другие места (другие, нежели `${prefix}/share/gEDA`), так что произведите обновление до более свежей версии.

## "Добавить Компонент" не предлагает символов! Что с этим делать?

Убедитесь, что по крайней мере в одном из файлов конфигурации у вас указан действительный путь доступа к библиотеке символов. При запуске gschem проверяет следующие файлы конфигурации (в системе Debian):

1. системный файл `gafrc` дистрибутива: `/etc/gEDA/system-gafrc` (будет перезаписан при обновлении)
2. локальный системный файл `gafrc`: `/usr/share/gEDA/gafrc.d/gafrc` (для версий gEDA после лета 2009 г.)
3. пользовательский файл `gafrc`: `~/.gEDA/gafrc`
4. локальный файл `gafrc`: `$PWD/gafrc`
5. системный файл `gschemrc`: `/etc/gEDA/system-gschemrc`
6. пользовательский файл `gschemrc`: `~/.gEDA/gschemrc`
7. локальный файл `gschemrc`: `$PWD/gschemrc`

Все эти файлы конфигурации могут добавлять или не добавлять пути к списку поиска библиотек. Если конфигурационный файл содержит команду:

    (reset-component-library)

пути поиска библиотек будут очищены. Порядок, само собой, важен, так как эта команда удалит все пути, заданные до её вызова.

## Я использую gschem/gaf через SSH-соединение и получаю ошибку:'Xlib: extension "RENDER" missing on display "localhost:10.0".'

Если вы зайдёте на удалённую машину, сделав:

    $ ssh -X имя_пользователя@удалённая_машина

и после этого получите указанное сообщение от Xlib RENDER, то попробуйте использовать:

    $ ssh -Y имя_пользователя@удалённая_машина

Последняя команда разрешает надёжный X11-форвардинг.