gEDA/gschem symbols have pre-assigned pin numbers, which only work with one particular package pinout. You can work around this in several ways. One possible way is to create a symbol for each individual model of the component. Works fairly well, since you typically only use a few different models of the same type of component in your designs. I bet you don’t have more than half a dozen different low-power transistors that you pick from. Once you get a stock of one model, you keep using them until either they go EOL or your needs change.
Still, it can get onerous if you work on many different designs with different requirements, or you frequently change components based on cost. Wouldn’t it be easier to use the same symbol and just change pins and device model as needed?
Unfortunately, gEDA does not yet have a way to reassign pins within the design without creating new components. Nor it is possible to share a component drawing across different layouts/packages. Embedding symbols into the schematic does not help either – if you try to edit an embedded symbol and then go back to the schematic, you will be prompted to save the original symbol. Which is actually a bit counterintuitive, in my opinion.
However, there is a way to re-assign pins without creating new components or modifying existing ones. gEDA has a way to define element arrays, such as logic gates or transistors, by specifying that the element is one of many in the same package, with the pins of each individual component in the array assigned to different leads in the package. You specify how many components are in the array via numslots attribute, which particular component is represented by this component via slot attribute, and define the package leads this component is attached to via slotdef attribute.
This allows us to to reassign pins in a discrete component without creating a new one, using an edge case that an individual component in a package can be thought of an array with one slot by setting numslots=1, slot=1, and slotdef=1:n,n,n . Here n,n,n are package lead numbers in the order of pinseq attributes assigned to pins. For example, slotdef=1:5,8,11 will assign pinseq=1 to pinnumber=5, pinseq=2 to pinnumber=8, and pinseq=3 to pinnumber=11, pinnumber representing a package lead with the specific number. You can check which pinseq numbers are assigned to pins by selecting “Down symbol” from the right-click menu. Netlist will use pin assignments from the slotdef attribute instead of the original pinnames.