cite key format to handle 2 authors with and and 3 authors with et al.

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

cite key format to handle 2 authors with and and 3 authors with et al.

Jason Tilley
I recently switched from JabRef to BibDesk since JabRef is dependent on Java and Apple is dependent on making Java a major pain. I would like to automatically create cite keys that are in the same style as my existing bibliography. Currently my cite keys are like the following examples:

1) McCracken_2004 for a single author
2) McCracken_and_Maxwell_2004 for two authors
3) McCracken_et_al_2004 for 3 or more authors

The closest I can get to this with a custom cite key format is using the string:

%a[][_et_al]1_%Y

This works for works with one or three or more authors well, but this can’t handle instances with 2 authors. Does anyone know how to do this? Is there maybe a way to embed an if statement in my format string? Any help with this would be greatly appreciated. Thanks.





------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
Bibdesk-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bibdesk-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: cite key format to handle 2 authors with and and 3 authors with et al.

Christiaan Hofman

On Nov 13, 2014, at 22:55, Jason Tilley wrote:

I recently switched from JabRef to BibDesk since JabRef is dependent on Java and Apple is dependent on making Java a major pain. I would like to automatically create cite keys that are in the same style as my existing bibliography. Currently my cite keys are like the following examples:

1) McCracken_2004 for a single author
2) McCracken_and_Maxwell_2004 for two authors
3) McCracken_et_al_2004 for 3 or more authors

The closest I can get to this with a custom cite key format is using the string:

%a[][_et_al]1_%Y

This works for works with one or three or more authors well, but this can’t handle instances with 2 authors. Does anyone know how to do this? Is there maybe a way to embed an if statement in my format string? Any help with this would be greatly appreciated. Thanks.

No, this level of complexity is not supported.

Christiaan


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Bibdesk-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bibdesk-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: cite key format to handle 2 authors with and and 3 authors with et al.

Jan Jakob Bornheim

On 17 Nov, 2014, at 01:26, Christiaan Hofman <[hidden email]> wrote:


On Nov 13, 2014, at 22:55, Jason Tilley wrote:

I recently switched from JabRef to BibDesk since JabRef is dependent on Java and Apple is dependent on making Java a major pain. I would like to automatically create cite keys that are in the same style as my existing bibliography. Currently my cite keys are like the following examples:

1) McCracken_2004 for a single author
2) McCracken_and_Maxwell_2004 for two authors
3) McCracken_et_al_2004 for 3 or more authors

The closest I can get to this with a custom cite key format is using the string:

%a[][_et_al]1_%Y

This works for works with one or three or more authors well, but this can’t handle instances with 2 authors. Does anyone know how to do this? Is there maybe a way to embed an if statement in my format string? Any help with this would be greatly appreciated. Thanks.

No, this level of complexity is not supported.

Christiaan

My usual answer: You could use AppleScript. It’s not very elegant, nor fast, but it gets the job done.

Cheers,
Jan Jakob

Something like this should get you started:

tell document 1 of application "BibDesk"


set thePubs to selection
set theLetters to "abcdefghijklmnopqrstuvwxyz" # these are the unique identifiers added to ambigous cite keys
set theUsedCiteKeys to {} # we have to keep track of the cite keys already assigned in this AppleScript run to avoid assigning  the same cite key twice


repeat with thePub in thePubs
set shouldRepeat to true
set i to 1


set theAuthors to authors of thePub
set theYear to publication year of thePub
set theAuthorsCount to (get count of theAuthors)


# Determine the cite key format


if theAuthorsCount is 1 then
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_" & theYear
else if theAuthorsCount is 2 then
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_and_" & last name of item 2 of theAuthors & "_" & theYear
else
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_et_al_" & theYear
end if


# Now let's test whether there is already any publication that has the same cite key or if we have already used the same cite key in this session


set the theProvisionalCiteKey to theGeneratedCiteKey


repeat while shouldRepeat is true
set theOtherPub to get (publications whose cite key is theProvisionalCiteKey)
if theOtherPub is {} and theProvisionalCiteKey is not in theUsedCiteKeys then
set shouldRepeat to false
else
set theProvisionalCiteKey to theGeneratedCiteKey & "_" & item i of theLetters
set i to i + 1
end if
end repeat


set theFinalCiteKey to theProvisionalCiteKey


# Now we assign the new unique (at least within the thePubs group) cite key


set cite key of thePub to theFinalCiteKey
set theUsedCiteKeys to theUsedCiteKeys & theFinalCiteKey


end repeat


end tell

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Bibdesk-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bibdesk-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: cite key format to handle 2 authors with and and 3 authors with et al.

Jason Tilley
Thanks! I will give that a try.

On Nov 17, 2014, at 5:21 AM, Jan Jakob Bornheim <[hidden email]> wrote:


On 17 Nov, 2014, at 01:26, Christiaan Hofman <[hidden email]> wrote:


On Nov 13, 2014, at 22:55, Jason Tilley wrote:

I recently switched from JabRef to BibDesk since JabRef is dependent on Java and Apple is dependent on making Java a major pain. I would like to automatically create cite keys that are in the same style as my existing bibliography. Currently my cite keys are like the following examples:

1) McCracken_2004 for a single author
2) McCracken_and_Maxwell_2004 for two authors
3) McCracken_et_al_2004 for 3 or more authors

The closest I can get to this with a custom cite key format is using the string:

%a[][_et_al]1_%Y

This works for works with one or three or more authors well, but this can’t handle instances with 2 authors. Does anyone know how to do this? Is there maybe a way to embed an if statement in my format string? Any help with this would be greatly appreciated. Thanks.

No, this level of complexity is not supported.

Christiaan

My usual answer: You could use AppleScript. It’s not very elegant, nor fast, but it gets the job done.

Cheers,
Jan Jakob

Something like this should get you started:

tell document 1 of application "BibDesk"

set thePubs to selection
set theLetters to "abcdefghijklmnopqrstuvwxyz" # these are the unique identifiers added to ambigous cite keys
set theUsedCiteKeys to {} # we have to keep track of the cite keys already assigned in this AppleScript run to avoid assigning  the same cite key twice

repeat with thePub in thePubs
set shouldRepeat to true
set i to 1

set theAuthors to authors of thePub
set theYear to publication year of thePub
set theAuthorsCount to (get count of theAuthors)

# Determine the cite key format

if theAuthorsCount is 1 then
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_" & theYear
else if theAuthorsCount is 2 then
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_and_" & last name of item 2 of theAuthors & "_" & theYear
else
set theGeneratedCiteKey to last name of item 1 of theAuthors & "_et_al_" & theYear
end if

# Now let's test whether there is already any publication that has the same cite key or if we have already used the same cite key in this session

set the theProvisionalCiteKey to theGeneratedCiteKey

repeat while shouldRepeat is true
set theOtherPub to get (publications whose cite key is theProvisionalCiteKey)
if theOtherPub is {} and theProvisionalCiteKey is not in theUsedCiteKeys then
set shouldRepeat to false
else
set theProvisionalCiteKey to theGeneratedCiteKey & "_" & item i of theLetters
set i to i + 1
end if
end repeat

set theFinalCiteKey to theProvisionalCiteKey

# Now we assign the new unique (at least within the thePubs group) cite key

set cite key of thePub to theFinalCiteKey
set theUsedCiteKeys to theUsedCiteKeys & theFinalCiteKey

end repeat

end tell
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk_______________________________________________
Bibdesk-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bibdesk-users


------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Bibdesk-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/bibdesk-users
Loading...