I created a custom field type of String, named BOOK TYPE with Cart Attribute set to No, Cart Input set to Yes, and Is a list? set to No.
Now, I go to the product config page and add multiple custom fields of type "BOOK TYPE" with different values, each with a different price EBook, Printed, Both. All these values show up in the product page in a drop down named BOOK TYPE and prices are shown as +5, +5, +10 for each option. This is good. This is exactly what I want.
But it has two issues:
1. I have to create these options in every product, which is too tedious and a management hassle (in case, an option needs some change).
2. These options are not shown for the products on Category list page (where all products are listed). Moreover, the Add to cart button on this page adds the product to the cart with the base price. Further, when I view the cart, it shows the product with all the options (instead of just one). This is totally messed up.