Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I copy code from Kindle PC and preserve formatting

Tags:

kindle

Has anyone figured out a good way to copy code from Kindle PC?

I've just downloaded a programming book to Kindle PC for the first time. The code in the book is formatted very nicely, and I'd like to copy the code directly from the Kindle PC book to Visual Studio without having to use auto-indent. For some reason when I copy text from the book, none of the whitespace, tabs, or newlines are preserved. I literally end up with this:

using System; using System.Collections.Generic; using System.Linq; namespace NumericQuery { class Program { static void Main(string[] args) { List list = new List() { 1, 2, 3 }; var query = from number in list where number < 3 select number; foreach (var number in query) { Console.WriteLine(number); } } } }

I'm frustrated because I can't download the code from the author's website since I don't have an ISBN (because I didn't buy a hardcopy).

like image 989
Lou Morda Avatar asked Sep 27 '11 08:09

Lou Morda


1 Answers

I have just resolved this issue of copying code snippets from a Kindle book to a text/source code editor of your choice. This same topic was discussed in a posting on stackoverflow.com entitled "Why is Chrome rendering this HTML as a completely blank page? From Node.js, following The Node Beginner Book [closed]". That particular posting describes the exact same problem I was experiencing (same Kindle book, same code snippet, same code symptom!). Unfortunately, that posting was prematurely closed before any of the respondents could provide the exact answer, otherwise I would've responded to that posting.

However, I dug into this issue more deeply and discovered the root cause of the problem when copying code snippets from Kindle books: when you copy text from the Kindle app, it uses hex code 0xA0 for space characters, not 0x20. Hex code 0xA0 is extended ASCII for non-breaking whitespace. Well, this doesn't work when you are expecting to copy-and-paste HTML literal strings, as was the case in the aforementioned posting.

And so this explains the behavior in the aforementioned posting: the original poster indicated that he could get around the problem by hand-retyping all of the text. It's because the hand re-typing was using proper 0x20.

This had other symptoms which I didn't understand at first but are now explained: my text editor (Notepad++) was not correctly identifying the reserved keywords in my source code. Again, this is because the keywords were separated by 0xA0, not 0x20. The keyword parser in Notepad++ must be tokenizing off of 0x20.

Solution: after pasting text from Kindle, perform a search and replace using regular expression searching capabilities in your source code editor. Search for regular expression \xA0 and replace it with \x20 (or, depending on your editor just type in a single space bar character in the Replace field [that is how Notepad++ works]).

like image 105
user2415216 Avatar answered Oct 20 '22 16:10

user2415216