How to create a group based on readstatus (To be read)

Hello folks,
I want to create the grouping by readstatus shown on the JabRef hompage and docs.

spaces_-Lr3JU9j9iSUW8RYz1hD-2910905616_uploads_git-blob-53220300da89462f09c386d4985e70c379c05190_groups-interfacewhole-jabref5.2

I already created a static group By Status and the two groups Skimmed and Read using “Collect by searching for a keyword” which are working

What troubles me is how to set up a group that selects entries with an empty readstatus field.
I tried to use a regular expression ^$ which should select empty strings but that doesn’t work.

Any ideas?
Thanks!

I haven’t found a solution yet. Has someone else tried to achieve this ?

Hi Carlos!
I just started learning JabRef and was struggling with the exact same problem.

Quick answer:
image

I just found this solution by inspecting the library file and reading JabRefs documentation about using a free-form search expression.

By selecting a read status, a parameter is added to your entry in the .bib file which will look like this:

@InProceedings{keyword,
  author     = {...},
  title      = {...},
  year       = {...},
  readstatus = {skimmed},
}

The status will be either “skimmed” or “read”. If nothing is selected, the parameter doesn’t exist.
So to create a free-form search, where every unread entry is included, you have to filter entries that do NOT have the status “skimmed” AND do NOT have the status “read”:

not readstatus=read and not readstatus=skimmed

I hope this is useful to you :blush:

2 Likes

Thank you so much! I was not sure how to do it and your solution is perfect and works (i tried it).

For anybody wondering how to easily attach the read-status “read” or “skimmed” to entries, apart from manually typing it into the library file:

  • Either left click within the entry table into this column:
    image

  • or right-click an entry and select it in the ensuing menu:

A future feature request would be to have other triggers that automatically assign the read status, e.g. after having the entry added to a specific group.

This here is a perfect example for how “labels” (with readstatus=read being something similar to a label attached to an entry) can enhance the group functionality.

Thank you, i got inspired! :slight_smile:

2 Likes

I changed to title of the thread so that other people can find the solution more easily when searching for it in the forum.

1 Like

I found out another 2 ways.

  1. If you are using searching for a keyword or free search expression:
  • free search expression (regular expression) (* ref):
    • readstatus != .+
  1. If you are using specified keywords, this is a bit complicated, and I think how I got it to work is a bug:

  2. First create a new subgroup using the first method (sub-group name doesn’t matter, can be to_be_read)

  1. Then edit the By status (big group) to be
  • Union
  • Specified keywords readstatus

Now all of the entries with no readstatus will be in the large group By status and all of the entries with status are in their own subgroups.

1 Like