# How do I convert straight quotes to typographic quotes?

ubersoft
46 1 1 5
manj_k
5713 4 33 48

I'm in the middle of assembling chapters of a novel together that will eventually be sent out in both eBook and paperback format. When it's sent out for printing, I need the " symbols to be typographic--in other words, I need to use smart quotes (also known as "curly quotes"). This isn't an issue for chapters that I create in LibreOffice, but it is an issue on chapters that I create on other devices--notably my tablet, which currently has no software on it that supports smart quotes at all. When I import text from my tablet, I get the straight inch marks instead of the curled quotation marks.

In Microsoft Word, one trick you can do is simply do a search for (") and replace it with (") -- I know, it's exactly the same symbol, but it will actually go through and replace the straight quotes with the typographic quotes (though not always with 100% accuracy, I'm afraid). I vaguely remember there being a process for LibreOffice, but it was pretty complicated and involved using a lot of regular expressions in a non-intuitive way.

Do you know of any shortcuts, plugins, scripts or add-ons that can simplify replacing straight quotes with typographic quotes? Extra points for ones that handle both the single (') and double (") quotes.

delete close retag edit

Sort by » oldest newest most voted

ubersoft
46 1 1 5

OK, I'm going to answer my own question. It's a feature I'd never noticed until now.

FIRST, make sure that the replacement of smart quotes is active in your autocorrect settings: Format > Autocorrect > Autocorrect Options...

SECOND, highlight the text that you want to apply your autocorrect options to (including and up to CTRL+A for the entire document.

FINALLY, use Format > Autocorrect > Apply to cause autocorrect to go through and apply it's autocorrect settings to the selected text.

This is a great feature!

1

This solution will NOT work if the paragraphs have a "style" other than "Default" applied to them. In my experimenting, this ONLY works if para is set to "Default". Any idea how to get this solution also to work with "styled" (Text Body, Quotations, Heading 1, etc.) paragraphs? Would be great!

( 2012-10-20 14:17:29 +0200 )edit

David
348 2 14 17

Answering my own comment ;) (well, partially)...

Where there are "styles" applied to paragraphs, the "Autocorrect > Apply" solution will not work. However, it is possible to use regex search-replace to speed up this process enormously. The instructions below are based on a very helpful discussion on the OpenOffice forum (do read through to the end, if it's of interest).

Double quotes

Hit CTRL-H to bring up the search/replace dialog; use the "More Options" drop-down, and select [x] Regular expressions. Paste in the following values:

First, Search for:

"(\<|[$$$])  Replace with: “1  Click "Replace All". Then, Search for: (\>|[,.;!?$$$])"


Replace with:

\$1”


Click "Replace All". Now do a simple search for " (straight double-quote) to see if any have been missed. There shouldn't be many!

Single quotes

Much simpler: Search for [space]' and replace with [space]‘ for opener, then simply change all the rest of the ' marks to closer ’ and that should do it. There might be cases of (' or [' which need to be catered for (my doc didn't have any), but the technique used for the double quotes will take care of those.

There must be a way of putting this all into a macro, but I haven't thought about that yet. So -- if preserving paragraph styles is important (it was to me in a 44-page imported and heavily styled document!), then this regex approach will get the job done very, very quickly.

David
348 2 14 17

My earlier reply stepping through the regex/search-replace steps certainly works. But the original question included this:

I vaguely remember there being a process for LibreOffice, but it was pretty complicated and involved using a lot of regular expressions in a non-intuitive way.

My sense about assigning this to a macro proved to be correct. Here is how you can (1) set up the macro, and (2) assign it to the menu bar for 1-click simplicity.

## 1. Set up macro

1. Click on Tools > Macros > Organise macros > LibreOffice Basic... (a new window opens).
2. In the left-hand box, you should see "[+] My Macros". Open that up by clicking on the "plus" sign to get "[+] Standard", open it and see "Module 1", now click on it. You should now see "Main" listed in the right-hand box, "Existing macros in: Module 1".
3. Click on "Main" in the right-hand box, and now the "Edit" button to the right of it. A new window opens, and in the main text area, you should see "Sub Main" followed a blank line later by "End Sub". Good.
4. Now we need to get the LO Basic code to paste in below that "End Sub" line. I have saved this as a "gist" on Gitub, but go to the raw version, hit CTRL-A to select all, then CTRL-C to copy to clipboard.
5. Return to the LibreOffice Macro editor, position your cursor under the "End Sub" line, then hit CTRL-V to paste it in. Press CTRL-S to save it.
6. Close the Macro editor.

Now when you go to Tools > Macros > Organise macros > LibreOffice Basic... (and My Macros > Standard > Module 1) again, you will see StraightQuotes2CurlyQuotes listed below Main. Good. It worked!

You could just run the macro from Tools > Macros > Organise macros > LibreOffice Basic..., click on StraightQuotes2CurlyQuotes, then click "Run" (the top button on the right). If you're doing this infrequently, that's probably good enough. If you think you might be using this more often, then it can be assigned to the menus by following these steps:

1. Go to the StraightQuotes2CurlyQuotes macro as described immediately above, click on it in the "Existing macros" list, and click the "Assign..." button.
2. A new window opens; click the "Add..." button on the right.
3. The "Add Commands" window opens. Drag it out of the way, so you can see both it, and the "Customise" (menus) window at the same time.
4. In the "Customise" window, use the "Menu" drop-down to find the menu you want to list it under (I chose "Tools"), then in the "Menu Content" area, find the place you want your macro to be listed.
5. Back to the "Add Commands" window: go to the bottom of the "Category" listing, to find "LibreOffice Macros". Click (to open) on My Macros > Standard > Module 1. You should now see StraightQuotes2CurlyQuotes listed in the right-hand "Commands" box.
6. Click once on the macro to select it, then click-and-drag it over to the "Menu Content" window, dropping it where you decided you want it to appear.
7. Click "OK", then "Close" the Macro organizer.

Now your "..." to “...”, and '...' to ‘...’ conversions are only a click away. Take ten minutes (or less!) to set this up, and your next conversions will be done almost instantly.

Works fine, only "…" (quotation mark·ellipsis·quotation mark) has to be replaced manually.

( 2012-12-01 14:10:56 +0200 )edit

shiyuan
31 1 4

The commenting tool is not available to me and I can't upvote posts, very strange.

@David solutions work brilliantly when I was under ubuntu, particularly this expression:

 "(\<|[\[\(])


However on Mac the above expression is stop working. Not sure why, maybe it has different way of running regex? There is a post related to this.

I posted this and filed a bug, how there is a solution soon.

( 2013-02-18 22:19:42 +0200 )edit

@shiyuan - glad it helped! Hope you can sort your Mac issue (not a platform I use).

( 2013-02-28 12:44:54 +0200 )edit

## Donate

LibreOffice is made available by volunteers around the globe, backed by a charitable Foundation. Please support our efforts: Your donation helps us to deliver a better product!