//Эта страница доступна также на следующих языках:// [[faq-gschem|English]],
[[faq-gschem.fr|Français]].

====== Общее ======


===== Я нашёл ошибку! Что мне делать? =====
  - Проверьте, можете ли вы повторно воспроизвести эту ошибку.
  - Спросите в [[http://wiki.geda-project.org/geda:mailinglists.ru|списке рассылки geda-user]], есть ли способ её обойти или не победили ли её уже в последней версии gEDA/gaf. Учтите, что прежде чем писать в этот список рассылки, на него нужно подписаться.
  - Проверьте, не отмечена ли уже эта проблема в [[https://bugs.launchpad.net/geda|системе отслеживания ошибок gEDA/gaf]]. Если нет, заполните отчёт об ошибке.  Обязательно представьте всю информацию, необходимую для воспроизведения ошибки, и укажите версию пакета gEDA/gaf, её содержащую.
  - Наконец, как и для всех проектов с открытым исходным кодом, вы можете напрячь свои программистские мускулы и попробовать исправить ошибку самостоятельно. Пожалуйста, представьте заплату с нужными вам изменениями в систему отслеживания ошибок gEDA/gaf. Заплата будет охотно принята для улучшения следующей версии gEDA/gaf.


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


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


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

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

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


===== Как изменить размер текста в символе? =====
  - Выделите символ.
  - Щёлкните правой кнопкой -> **//Войти в символ//** [**//Down symbol//**] (или из меню **//Иерархия//** -> **//Войти в символ//** [**//Hierarchy//** -> **//Down symbol//**]). Это приведёт вас в редактор символов.
  - Выделите номер вывода, который нужно изменить.
  - Выберите пункт меню **//Правка//** -> **//Правка текста...//** [**//Edit//** -> **//Edit text...//**] (или наберите с клавиатуры [**e**][**x**]).
  - Измените во всплывающем окне размер шрифта.
  - Повторите это для всех текстовых элементов, которые нужно изменить.
  - **//Файл//** -> **//Сохранить//** [**//File//** -> **//Save//**].
  - Щёлкните правой кнопкой -> **//Наверх//** [**//Up//**] (или **//Иерархия//** -> **//Наверх//** [**//Hierarchy//** -> **//Up//**]). Теперь вы снова в редакторе схем.
  - Пока символ ещё выделен, щёлкните **//Правка//** -> **//Обновить компонент//** [**//Edit//** -> **//Update component//**] (или воспользуйтесь горячими клавишами [**e**][**p**]). Если это не работает, просто удалите символ и снова вставьте его.

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


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

Учтите, при трансляции в **pcb** линии над текстом в
[[geda:glossary.ru#Топология|топологии]] не будет.  Обратная косая черта
игнорируется, поэтому по краям текста, над которым должна была бы быть
линия, останутся знаки подчёркивания.

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


===== Как сделать так, чтобы позиционные обозначения при вычерчивании схемы нумеровались автоматически? =====
Измените файл //''system-gschemrc''// или добавьте следующее в файл
//''gschemrc''// (либо в //''~/.gEDA/gschemrc''//, либо в //''gschemrc''// в
локальном каталоге, из которого вы запускаете **gschem**):

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

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

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

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


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

Привязку средней кнопки можно изменить, добавив в файл //''gschemrc''// одну
из следующих строк:
<code>(middle-button "action")   ;привязка по умолчанию, перемещение или копирование объекта</code>

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

или:
<code>(middle-button "repeat")   ;повтор последней выполненной команды</code>

Привязку правой кнопки можно изменить, добавив в файл //''gschemrc''// одну
из следующих строк:
<code>(third-button "popup")     ;привязка по умолчанию -- вызов контекстного меню</code>

или:
<code>(third-button "mousepan")  ;панорамирование в окне схемы</code>

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


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

Атрибут ''source='', прикреплённый к символу подсхемы, задаст путь доступа к
файлу этой подсхемы. Выводы символа соответствуют
[[geda:glossary.ru#Порт|портам]] --- переходам из основной схемы в
подсхему.  Эти переходы должны соответствовать позиционным обозначениям
символов портов в подсхеме. Символами портов в текущей библиотеке 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 ======



===== Где найти символы кроме тех, что есть в стандартной библиотеке? =====
Есть веб-сайт [[http://www.gedasymbols.org/|gedasymbols.org]],
предназначенный для ресурсов, которыми пользователи содействуют проекту
gEDA. Есть поиск по сайту, предпросмотр символов и их можно загрузить по
отдельности. Если соответствующим образом сконфигурировать свой файл
//''gafrc''//, то эти символы можно разместить прямо рядом с файлами схем
своего проекта. Может быть вам следует создать локальную библиотеку
символов, чтобы все проекты имели доступ к новым символам. Смотрите
подробности [[#Можно ли в gafrc задать корневой каталог своей библиотеки с
помощью переменной|ниже]].

Можно загрузить даже всё содержимое, добавленное пользователями
//gedasymbols//.  Смотрите инструкции о том,
[[http://www.gedasymbols.org/cvs.html|как получить доступ к gedasymbols с
помощью CVS]].

===== Что за вопрос насчёт тяжёлых символов против лёгких? =====
Эта терминология выросла из дискуссии, которая часто возникает в списках
рассылки //geda-user// и //geda-dev//. Лёгкий символ --- это символ,
содержащий очень мало встроенных атрибутов. При этом почти все атрибуты
пользователю придётся добавлять на этапе редактирования схемы (например, в
**gschem** или в **gattrib**).  Тяжёлый символ --- это такой, многие
атрибуты которого (такие как посадочные места компонентов, названия
[[geda:glossary.ru#Модель|SPICE-моделей]] и пр.) уже встроены в файл
символа. Поэтому на этапе редактирования схемы атрибуты к тяжёлому символу
прикреплять практически не требуется --- просто вставляете его и всё готово.

Дебаты между сторонниками тяжёлых и лёгких символов очень детальны и
запутаны.  В целом, сторонники тяжёлых символов думают, что они позволяют
достичь большей интеграции между **gschem** и **pcb**, так как важные
атрибуты топологии (такие как
[[geda:pcb_tips.ru#я_хочу_развести_плату_в_pcb._как_узнать_какое_значение_задать_атрибуту_footprint|название
посадочного места]]) уже встроены в символ. Считается, что это хорошо для
новых пользователей (нубов), которые просто хотят спроектировать простую
плату, и их не волнует миллион вариантов, существующих даже для обычного
резистора (например, различные корпуса, ТКС, точность, состав материала и
т. д.).  Сторонники лёгких символов предпочитают работать с атрибутами при
редактировании схемы, потому что думают, что это более гибко. Они сразу
указывают, что если пытаться обозначить все различия между разными
вариациями компонентов, библиотека тяжёлых символов быстро разрастётся в
тысячи компонентов с абсурдно длинными названиями. Они также отмечают, что
предпочтительным инструментом для обработки атрибутов при редактировании
схем (то есть для файлов //''.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). Если вы обнаружили символ, который, кажется, не
выравнивается по сетке, попробуйте уменьшить размер сетки и переместить
символ так, чтобы концы его выводов «сидели» на сетке. Потом вернитесь к
настройкам сетки, подходящим для вас. Кроме того, вы можете послать
исправленный символ в
[[http://www.seul.org/cgi-bin/mailman/listinfo/geda-user|список рассылки
geda-user]].

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

===== Есть ли явный символ «no connect», который я мог/должен бы вставить в схему, чтобы программа gnetlist не думала, что я забыл добавить какое-то соединение? =====
Ответ: //''misc''// -> //''nc-left, nc-right, nc-top, nc-bottom''//.

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

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


===== Как вынести в схему невидимый атрибут символа? =====
Невидимые атрибуты, за некоторыми исключениями, из символов в схему не
выносятся. Чтобы они выносились, нужно сделать следующее.  Поищите следующие
ключевые слова в файле //''system-gafrc''//:
<code>(attribute-promotion "enabled");
(promote-invisible "disabled") ; <= Вот это
(keep-invisible "enabled")</code>

Добавьте в свой //''gafrc''//:
<code>(promote-invisible "enabled")</code>

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

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

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

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

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

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

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

===== Можно ли использовать выводы нулевой длины? =====
Для обоих концов вывода можно задать одинаковые значения координат. При этом
будет выводиться только красный маркер вывода без продолжения. В настоящее
время в **gschem** графически такой вывод начертить нельзя.  Но файл символа
можно открыть в текстовом редакторе и добавить вот такую строку:
<code>P 100 100 100 100 1 0 0</code>
Получится вывод нулевой длины в нижнем левом углу рабочей области. Его можно перемещать, прикреплять к нему атрибуты, копировать его как и любой другой вывод. Если соединение к нему не подключено, он выглядит как маленький красный флаг, в противном случае --- пропадает. **gnetlist** без проблем обрабатывает его как и все прочие выводы.


===== Есть ли спецификация или руководство по созданию символов gschem? Если есть, то где? =====
Есть. Это [[gEDA:gschem_symbol_creation.ru|Руководство по созданию
символов]].


===== Есть ли помощник по созданию символов в gschem? =====
Помощника, встроенного в графический интерфейс **gschem**, нет. Но есть
скрипты для автоматического создания символов по заданным в файле
конфигурации параметрам. Один из этих скриптов ---
[[tragesym_readme.ru|tragesym]]. Он входит в стандартный набор программ
gEDA. Научиться им пользоваться вам поможет [[tragesym_tutorial.ru|краткое
руководство]].

Один из основных разработчиков проекта написал свой собственный скрипт для
создания символов:
[[http://www.gedasymbols.org/user/dj_delorie/tools/djboxsym.html|djboxsym]].

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

Посмотрите страницу [[geda>geda:gschem symbol generators]] на предмет других
доступных генераторов.

===== Где можно найти информацию о формате файлов gschem? =====
В отличие от многих [[geda:glossary.ru#САПР электроники]], разработчики
**gschem** строго придерживаются удобочитаемого текстового формата. Он
используется преднамеренно, для облегчения написания скриптов. К тому же он
позволяет быстро править файлы в текстовом редакторе. Описание формата
файлов **gschem** находится [[file_format_spec.ru|здесь]].

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

**gschem** масштабирует вывод печати таким образом, что всё содержимое
растягивается на выбранный формат листа. Этот формат абсолютно независим от
используемого в схеме символа рамки основной надписи. Поэтому нет нужды
масштабировать сами символы, чтобы они поместились на конкретном формате.
Многие при печати на A4 предпочитают использовать //''title-A2.sym''// или
//''title-A3.sym''//. Кто-то использует символы основной надписи вообще без
рамок и затем чертит прямоугольник подходящего размера (см., например,
[[http://www.gedasymbols.org/user/kai_martin_knaak/symbols/titleblock/title-block.sym|title-block.sym]]
от //Kai-Martin Knaak//).

Но в некоторых случаях всё же хочется на самом деле изменить размер символов.  Для этого есть несколько способов:
  * //DJ Delorie// написал для проекта скрипт на Perl под названием [[http://www.gedasymbols.org/user/dj_delorie/tools/scale-schematic|scale-schematic]], находящийся на его странице на сайте [[geda:glossary.ru#gedasymbols.org]].
  * Можно сделать и свою собственную библиотеку символов. Это не так уж и страшно, так как многие приходят к использованию в любом случае исключительно собственных символов.

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


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

  - Создайте каталог проекта, например //''${HOME}/myproj''//.
  - Поместите нужные вам символы в //''${HOME}/myproj/symbols''//.
  - В //''${HOME}/myproj''// создайте файл //''gafrc''//.
  - Добавьте в //''gafrc''// строку: <code> (component-library "./symbols")</code>
  - Запустите **gschem** из каталога проекта. То есть для запуска **gschem** наберите следующее:<code>cd ${HOME}/myproj
gschem myschematic.sch</code>

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

===== Как задать корневой каталог своей библиотеки? =====
Существует два подхода. Если вам нужно, чтобы каждая библиотека имела
уникальное имя, абсолютно каждый из каталогов своих локальных библиотек
нужно отдельно прописывать в файле //''gafrc''//. Но общую часть полного
пути вовсе не обязательно повторять снова и снова. С помощью функции
''build-path'' путь можно формировать «на лету»:
<code>(define gedasymbols "/путь/к/локальной/библиотеке")
(component-library (build-path gedasymbols "analog"))
(component-library (build-path gedasymbols "block"))
(component-library (build-path gedasymbols "connector"))</code>

Если вы не хотите перечислять отдельные подкаталоги, можно задать только имя
корневого каталога библиотеки:
<code>(component-library-search "/каталог/с/моими_библиотеками_символов/" "library:")</code>

===== Можно ли в задании пути доступа к библиотеке использовать переменные окружения? =====
К переменной окружения //ENV// внутри предложений Scheme в //''gafrc''//
можно обратиться с помощью ''%%getenv "ENV"%%'':
<code>; Определение пути доступа к локальному репозиторию символов:
(define symbolspath (build-path (getenv "HOME") "geda" "symbols"))
; Подключение с его помощью конкретной библиотеки:
(component-library (build-path symbolspath "analog"))
</code>

Альтернативный синтаксис --- ''${ENV}'':
<code>(component-library "${HOME}/geda/symbols/analog")</code>

===== Как сделать так, чтобы название библиотеки отличалось от имени её каталога? =====
Добавьте третий аргумент в предложение ''component-library'' в
//''gafrc''//, то есть:
<code>
(component-library "/home/comp/sch_symbols/AutoGen/Panasonic/0603/1P" "Panasonic 0603 1P")</code>

===== Можно ли в библиотеке хранить часто необходимые части схем? =====
Да, благодаря тому, что символы могут содержать вложенные символы и соединения.
  - Скопируйте часть схемы на новый лист (так как рамка основной надписи вам не понадобится, разблокируйте её и удалите).
  - Позиционные обозначения должны заканчиваться на <<?>>, чтобы потом их можно было пронумеровать автоматически.
  - Переместите эту часть схемы в нижний левый угол доступного для чертежа пространства (можно с помощью **//Правка//** -> **//Смещение символа...//** [**//Edit//** -> **//Symbol Translate...//**]).
  - Сохраните полученную схему как символ (с расширением //''.sym''//) в свою локальную библиотеку.
  - В рабочей схеме откройте окно выбора компонентов и перед вставкой этого составного символа снизу в выпадающем списке выберите **//Вставить как отдельные объекты//** [**//Include component as individual objects//**]. Содержимое символа будет полностью вставлено на лист. Не забудьте потом снова установить режим по умолчанию для вставки обычных символов.

===== Библиотека завалена символами стандартной библиотеки. Можно ли ограничиться только своими локальными библиотеками? =====
Добавьте в //''gafrc''// следующие строки, заменив каталоги на свои:
<code>
; очистить переменную, содержащую пути к библиотекам,
; и добавить в неё локальные каталоги:
(reset-component-library)
(component-library "/foo/localgedalib1")
(component-library "/bar/foo/localgedalib2")
</code>
Можно либо добавить каталоги для всех локальных библиотек отдельно, или добавить целое дерево пути с подкаталогами. См. выше о том, [[#Как задать корневой каталог своей библиотеки|как это сделать]]. Весьма неплохо поместить этот //''gafrc''// в каталог своего проекта. Таким образом при запуске **gschem** из какого-то другого каталога символы стандартной библиотеки всё равно будут появляться. Также это даёт возможность настройки библиотек специальных символов для особых проектов.


===== Что надо сделать, чтобы по умолчанию устанавливался другой размер текста? =====
Добавьте в свой //''gschemrc''//
<code>(text-size 10)</code>
Вместо "10" подставьте нужный размер.





===== Скажите, пожалуйста, можно ли настроить светлый цвет фона? =====
В файл //''gschemrc''//, находящийся в том месте, где **gschem** при запуске
ищет свои настройки, добавьте такую строку:
<code>
(load (build-path geda-rc-path "gschem-colormap-lightbg"))
</code>

===== Как подстроить цвета в gschem? =====
В настоящее время графического интерфейса для интерактивной корректировки цветов в **gschem** нет. Но их можно поправить в rc-файле.
  - Скопируйте файл //''gschem-colormap-lightbg''// или //''gschem-colormap-darkbg''// в //''$HOME/.gEDA/mycolors''//.
  - Отредактируйте по вкусу цвета в //''.gEDA/mycolors''//.
  - Добавьте в //''gschemrc''// строку:
<code>(load (build-path (getenv "HOME") ".gEDA" "mycolors"))</code>


===== Каждый раз при запуске gschem появляется окно журнала. Можно ли его отключить? =====
В файле //''system-gschemrc''// вы найдёте следующий раздел:
<code>
; 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")</code>

Закомментируйте строку ''startup'' (с помощью символа <<;>>) и
раскомментируйте строку ''later'', или добавьте в свой //''gschemrc''//
следующую строку:
<code>(log-window "later")</code>

Если вы хотите, чтобы вместо окна журнала сообщения выводились на
стандартный вывод (//stdout//), добавьте в свой //''gschemrc''// такую
строку:
<code>(logging-destination "tty")</code>

===== Есть ли способ запретить журналирование в $HOME/.gEDA/logs/? =====
Добавьте в свой //''gschemrc''// строку:
<code>(logging "disabled")</code>

===== Можно ли сделать так, чтобы для новых схем устанавливалась моя собственная рамка основной надписи? =====
Добавьте следующую строку в свой //''gschemrc''//:
<code>(define default-titleblock "title-A3.sym")</code>
Замените //''title-A3.sym''// именем файла символа предпочитаемой рамки.

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

===== Как напечатать схемы из командной строки? =====
Файл в формате PostScript или PDF для своей схемы можно получить с помощью
команды **gaf export**.

PDF-файл из файла схемы создаётся следующей командой (замените в ней MY_SCH
именем файла своей схемы):

<code>gaf export -o MY_SCH.pdf MY_SCH.sch</code>

Приведённый ниже ''bash''-скрипт, который я назвал **gschem-print**, создаст
для каждого из заданных в командной строке файлов схем Postscript-файл, а
затем распечатает его на используемом по умолчанию принтере:
<code>#!/bin/bash

# 'gaf export' options
# -oPS_FILENAME output to Postscript file PS_FILENAME

for name in $*
do
    base="${name%.*}"
    gaf export --output=$base.ps -- $base.sch
    lpr -P$PRINTER $base.ps
done</code>

Размер бумаги можно настроить с помощью ключа ''-p''. Для установки размера
бумаги в A4 используется команда вида:
<code>gaf export --paper=iso_a4 -o MY_SCH.pdf MY_SCH.sch</code>

Чтобы задать "US Letter" как предпочтительный размер бумаги для всех
открываемых схем, выполните:
<code>gaf config --user export paper na_letter</code>
===== Как вывести PDF/PNG в цвете? =====
Отредактируйте файл //''system-gschemrc''// или добавьте в //''gschemrc''//
одну из следующих строк (то есть в //''~/.gEDA/gschemrc''// или в
//''gschemrc''// в том каталоге, из которого вы запускаете **gschem**).
<code>
(print-color "enabled")      ; для вывода цветных PDF
(image-color "enabled")      ; для вывода цветных PNG (включено по умолчанию)
</code>

===== Как вывести чёрно-белые Postscript/PNG? =====
Для вывода чёрно-белого Postscript добавьте в //''gschemrc''// следующее:
<code>(output-color "disabled")     ; монохромный Postscript (включено по умолчанию)</code>

Для вывода чёрно-белых PNG добавьте в //''gschemrc''// следующее:
<code>(image-color "disabled")      ; монохромные PNG</code>

===== Как сделать PDF? =====
Выберите в меню **Файл→Сохранить изображение…** [**File→Write
image…**]. Откроется окно записи изображения. Там можно выбрать экспорт в
PDF.

Или просто запустите:

<code>gaf export --output=foo.pdf bar.sch</code>
===== Как вставить схемы в LaTeX-документ? =====

При обычном использовании команды **latex** вам понадобится файл в формате
EPS (Encapsulated PostScript).  Для **pdflatex** вам будет нужен файл в
формате PDF. Для создания соответствующего файла нужно выполнить:

<code>gaf export --size=auto --output=foo.eps foo.sch</code>

или:

<code>gaf export --size=auto --output=foo.pdf foo.sch</code>

В преамбулу своего LaTeX-документа нужно добавить
''\usepackage{graphicx}''. Вставка схемы в документ осуществляется командой
''\includegraphics''.

Простой пример:
<code latex>\documentclass{article}
\usepackage{graphicx}
\begin{document}
  \begin{figure}
  \includegraphics[width=100mm]{foo}
  \end{figure}
\end{document}</code>
===== Как разбить лист схемы в формате Postscript на несколько страниц? =====
Сама программа **gschem** такой функциональности не предоставляет, но есть
программа **poster**, которая как раз это и делает. Её можно загрузить
[[http://www.gnu.org/directory/poster.html|отсюда]] (GNU) или
[[http://printing.kde.org/downloads/|отсюда]] (KDE Print).

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


===== После установки gschem не работает!? Что может быть не так? =====
Если вы запускаете **gschem** и получаете окно без панели меню, без цветов,
и при нажатии клавиши программа завершается со следующим сообщением:
<code>ERROR: Unbound variable: current-keymap</code>

или появляется ошибка такого вида:
<code>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</code>

то **gschem** не находит какого-то rc-файла. Есть два необходимых rc-файла.  Первый --- это //''system-gschemrc''//, второй --- //''system-gafrc''//.
  * rc-файл //''system-gschemrc''// должен устанавливаться при установке **gschem** и обычно находится в //''${prefix}/share/gEDA/system-gschemrc''//. //''${prefix}''// --- это каталог установки gEDA (обычно //''/usr''//, //''/usr/local''// или //''$HOME/geda''//). Этот файл может быть также установлен в //''/etc/gEDA''// (так делается в пакетах //''.deb''//).
  * rc-файл //''system-gafrc''// должен устанавливаться при установке общей библиотеки gEDA/gaf **libgeda**. Он находится в //''${prefix}/share/gEDA/system-gafrc''//. Этот файл может устанавливаться также в //''/etc/gEDA''// (так делается в пакетах //''.deb''//). Непосредственно программой **gschem** этот файл не загружается.

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

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


===== «Добавить Компонент» не предлагает символов! Что с этим делать? =====
Убедитесь, что по крайней мере в одном из файлов конфигурации у вас указан действительный путь доступа к библиотеке символов. При запуске **gschem** проверяет следующие файлы конфигурации (в системе Debian):
  - системный файл //''gafrc''// дистрибутива: //''/etc/gEDA/system-gafrc''// (будет перезаписан при обновлении)
  - локальный системный файл //''gafrc''//: //''/usr/share/gEDA/gafrc.d/gafrc''// (для версий gEDA после лета 2009 г.)
  - пользовательский файл //''gafrc''//: //''~/.gEDA/gafrc''//
  - локальный файл //''gafrc''//: //''$PWD/gafrc''//
  - системный файл //''gschemrc''//: //''/etc/gEDA/system-gschemrc''//
  - пользовательский файл //''gschemrc''//: //''~/.gEDA/gschemrc''//
  - локальный файл //''gschemrc''//: //''$PWD/gschemrc''//
Все эти файлы конфигурации могут добавлять или не добавлять пути к списку поиска библиотек. Если конфигурационный файл содержит команду:
<code>(reset-component-library)</code>
пути поиска библиотек будут очищены. Порядок, само собой, важен, так как эта команда удалит все пути, заданные до её вызова.

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

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

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

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

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

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