* Proper English Title Capitalization
@ 2015-05-24 11:10 Karl Voit
2015-05-24 21:00 ` Emanuel Berg
2015-06-17 13:48 ` Karl Voit
0 siblings, 2 replies; 12+ messages in thread
From: Karl Voit @ 2015-05-24 11:10 UTC (permalink / raw
To: emacs-devel
Hi!
I was looking for a method to capitalize headings/titles according
to [1]. I found ~s-titleise-s~ which simply capitalizes every word.
However, I was looking for a method which turns stopwords into lower
case and non-stopwords into capitalized words.
Is there something out there?
No, I don't know enough Elisp to code it by myself and I have no
idea if there is a set of English stopwords stored in Emacs.
[1] http://dougscripts.com/itunes/scripts/ss.php?sp=titlecaps
I'm sure there are better resources as well.
[2] https://github.com/magnars/s.el#s-titleize-s
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-24 11:10 Proper English Title Capitalization Karl Voit
@ 2015-05-24 21:00 ` Emanuel Berg
2015-05-25 10:13 ` Karl Voit
2015-06-17 13:48 ` Karl Voit
1 sibling, 1 reply; 12+ messages in thread
From: Emanuel Berg @ 2015-05-24 21:00 UTC (permalink / raw
To: emacs-devel
Karl Voit <devnull@Karl-Voit.at> writes:
> I was looking for a method to capitalize
> headings/titles according to [1]. I found
> ~s-titleise-s~ which simply capitalizes every word.
> However, I was looking for a method which turns
> stopwords into lower case and non-stopwords into
> capitalized words.
>
> Is there something out there?
>
> No, I don't know enough Elisp to code it by myself
> and I have no idea if there is a set of English
> stopwords stored in Emacs.
Good idea, I can never memorize those goofy rules.
It could be a cool thing to have for example
in BibLaTeX.
You don't have to know a lot of Elisp to do that.
Here is a start. Only you'll have to insert the
"stopwords" yourself.
(setq do-not-capitalize '("ah" "oh" "eh"))
(defun make-a-title (beg end)
(interactive "r")
(save-excursion
(goto-char beg)
(forward-word)
(backward-word)
(while (< (point) end)
(if (member (thing-at-point 'word t) do-not-capitalize)
(forward-word)
(capitalize-word 1) )
(forward-word)
(backward-word) )))
--
underground experts united
http://user.it.uu.se/~embe8573
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-24 21:00 ` Emanuel Berg
@ 2015-05-25 10:13 ` Karl Voit
2015-05-25 10:36 ` Rasmus
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Karl Voit @ 2015-05-25 10:13 UTC (permalink / raw
To: emacs-devel
Hi Emanuel,
* Emanuel Berg <embe8573@student.uu.se> wrote:
> Karl Voit <devnull@Karl-Voit.at> writes:
>
>> I was looking for a method to capitalize
>> headings/titles according to [1].
>> [1] http://dougscripts.com/itunes/scripts/ss.php?sp=titlecaps
> Good idea, I can never memorize those goofy rules.
"Those goofy rules" are much more complicated than I thought.
I did some research: What is proper English title capitalization?
+ http://english.stackexchange.com/questions/14/which-words-in-a-title-should-be-capitalized
- http://english.stackexchange.com/a/34
1. Always capitalize the first and the last word.
2. Capitalize all nouns, pronouns, adjectives, verbs, adverbs,
and subordinate conjunctions ("as", "because", "although",
"if", etc.).
3. Lowercase all articles, coordinate conjunctions ("and", "or",
"nor"), and prepositions regardless of length, when they are
other than the first or last word. (Note: NIVA prefers to
capitalize prepositions of five characters or more ("after",
"among", "between").)
4. Lowercase the "to" in an infinitive.
+ https://en.wikipedia.org/wiki/Capitalization#Titles
- summarizes different approaches
+ https://en.wikipedia.org/wiki/Letter_case#Case_styles
- compares different approaches
+ http://www.grammarbook.com/punctuation/capital.asp
- Rule 16a. Composition titles: which words should be capitalized
in titles of books, plays, films, songs, poems, essays,
chapters, etc.? This is a vexing matter, and policies vary. The
usual advice is to capitalize only the "important" words. But
this isn't really very helpful. Aren't all words in a title
important?
- The following rules for capitalizing composition titles are universal.
- Capitalize the title's first and last word.
- Capitalize verbs, including all forms of the verb to be (is, are, was, etc.).
- Capitalize all pronouns, including it, he, who, that, etc.
- Capitalize not.
- Do not capitalize a, an, or the unless it is first or last in
the title.
- Do not capitalize the word and, or, or nor unless it is first
or last in the title.
- Do not capitalize the word to, with or without an infinitive,
unless it is first or last in the title.
- Otherwise, styles, methods, and opinions vary. Small words such
as or, as, if, and but are capped by some, but lowercased by
others.
- The major bone of contention is prepositions. The Associated
Press Stylebook recommends capitalizing all prepositions of more
than three letters (e.g., With, About, Across). Others advise
lowercase until a preposition reaches five or more letters.
Still others say not to capitalize any preposition, even big
words like regarding or underneath.
- Hyphenated words in a title also present problems. There are no
set rules. Some writers, editors, and publishers choose not to
capitalize words following hyphens unless they are proper nouns
or proper adjectives (Ex-Marine but Ex-husband). Others
capitalize any word that would otherwise be capped in titles
(Prize-Winning, Up-to-Date).
+ http://grammar.yourdictionary.com/capitalization/rules-for-capitalization-in-titles.html
- As you have probably noticed "short" words, those with less than
five letters, are generally lowercase in titles, unless they are
the first or last words in a title.
- Generally, we do not capitalize:
- Articles: a, an, the
- Coordinating Conjunctions: and, but, or, for, nor, etc.
- Prepositions (fewer than five letters): on, at, to, from, by, etc.
- When in doubt and you do not have a reference guide in front of
you, here is one general rule to remember recommended by The
U.S. Government Printing Office Style Manual:
- "Capitalize all words in titles of publications and documents,
except a, an, the, at, by, for, in, of, on, to, up, and, as,
but, it, or, and nor."
+ http://www.chompchomp.com/terms/coordinatingconjunction.htm
- "And, but, for, nor, or, so, and yet—these are the seven
coordinating conjunctions."
+ https://www.ego4u.com/en/cram-up/grammar/prepositions
- on in at since for ago before to past to till until by next
beside under below over above across through into towards onto
from off "out of" about
- less than five letters:
- on in at for ago to past to till by next over into onto from off
Once again, "it depends" is the correct answer to the title
capitalization question as well.
> You don't have to know a lot of Elisp to do that.
> Here is a start. Only you'll have to insert the
> "stopwords" yourself.
>
> (setq do-not-capitalize '("ah" "oh" "eh"))
>
> (defun make-a-title (beg end)
> (interactive "r")
> (save-excursion
> (goto-char beg)
> (forward-word)
> (backward-word)
> (while (< (point) end)
> (if (member (thing-at-point 'word t) do-not-capitalize)
> (forward-word)
> (capitalize-word 1) )
> (forward-word)
> (backward-word) )))
I was wrong by using the term "stop words". However, I came up with
a list of words not to capitalize based on the resources above.
What's still missing in your make-a-title:
- Always capitalize first word
- Always capitalize last word
- List of do-not-capitalize words
My Elisp knowledge is sufficient to modify your code so that it
should get the job done:
,----
| (defun my-title-capitalization (beg end)
| (interactive "r")
| (save-excursion
| (let (
| (do-not-capitalize '("a" "ago" "an" "and" "as" "at" "but" "by" "for"
| "from" "in" "into" "it" "next" "nor" "of" "off"
| "on" "onto" "or" "over" "past" "so" "the" "till"
| "to" "up" "yet" ))
| )
| ;; go to begin of first word:
| (goto-char beg)
| (forward-word)
| (backward-word)
| ;; capitalize first word in any case:
| (capitalize-word 1)
| (while (< (point) end)
| ;; capitalize each word in between except it is list member:
| (if (member (thing-at-point 'word t) do-not-capitalize)
| (forward-word)
| (capitalize-word 1) )
| (forward-word)
| (backward-word) )
| ;; capitalize last word in any case:
| (backward-word)
| (capitalize-word 1)
| )
| ))
`----
I was surprised that this quite handy function is not part of Emacs
yet.
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:13 ` Karl Voit
@ 2015-05-25 10:36 ` Rasmus
2015-05-25 10:47 ` Karl Voit
2015-05-25 16:59 ` Emanuel Berg
2 siblings, 0 replies; 12+ messages in thread
From: Rasmus @ 2015-05-25 10:36 UTC (permalink / raw
To: emacs-devel
Karl Voit <devnull@Karl-Voit.at> writes:
> "Those goofy rules" are much more complicated than I thought.
All the more reason to make a `capitalize-word' equivalent for titles!
I'd certainly appreciate it.
Or do as some Speigel journals and adopt "Euro-English" and capitalize in
a sane manner, namely like any other sentences....
—Rasmus
--
. . . The proofs are technical in nature and provides no real understanding
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:13 ` Karl Voit
2015-05-25 10:36 ` Rasmus
@ 2015-05-25 10:47 ` Karl Voit
2015-05-25 12:22 ` Karl Voit
` (2 more replies)
2015-05-25 16:59 ` Emanuel Berg
2 siblings, 3 replies; 12+ messages in thread
From: Karl Voit @ 2015-05-25 10:47 UTC (permalink / raw
To: emacs-devel
* Karl Voit <devnull@Karl-Voit.at> wrote:
>
> My Elisp knowledge is sufficient to modify your code so that it
> should get the job done:
I have to post a corrected version of the code which also handles
the edge case "a a a a a" (a do-not-capitalize word as second word)
properly:
,----
| (defun my-title-capitalization (beg end)
| (interactive "r")
| (save-excursion
| (let (
| (do-not-capitalize '("a" "ago" "an" "and" "as" "at" "but" "by" "for"
| "from" "in" "into" "it" "next" "nor" "of" "off"
| "on" "onto" "or" "over" "past" "so" "the" "till"
| "to" "up" "yet" ))
| )
| ;; go to begin of first word:
| (goto-char beg)
| (forward-word)
| (backward-word)
| ;; capitalize first word in any case:
| (capitalize-word 1)
| (forward-word)
| (backward-word)
| (while (< (point) end)
| ;; capitalize each word in between except it is list member:
| (if (member (thing-at-point 'word t) do-not-capitalize)
| (forward-word)
| (capitalize-word 1) )
| (forward-word)
| (backward-word) )
| ;; capitalize last word in any case:
| (backward-word)
| (capitalize-word 1)
| )
| ))
`----
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:47 ` Karl Voit
@ 2015-05-25 12:22 ` Karl Voit
2015-05-25 16:18 ` Rasmus
2015-05-26 15:38 ` Barry Fishman
2015-06-03 15:05 ` Karl Voit
2 siblings, 1 reply; 12+ messages in thread
From: Karl Voit @ 2015-05-25 12:22 UTC (permalink / raw
To: emacs-devel
I also blogged about this thread and its solution:
http://karl-voit.at/2015/05/25/elisp-title-capitalization/
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 12:22 ` Karl Voit
@ 2015-05-25 16:18 ` Rasmus
0 siblings, 0 replies; 12+ messages in thread
From: Rasmus @ 2015-05-25 16:18 UTC (permalink / raw
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 430 bytes --]
Karl Voit <devnull@Karl-Voit.at> writes:
> I also blogged about this thread and its solution:
> http://karl-voit.at/2015/05/25/elisp-title-capitalization/
Ah that's funny. I like M-c though. The attached file does something
similar to your script, but plugs into capitalize-word at supported title
lines (== org and message) if hooked in.
–Rasmus
--
Evidence suggests Snowden used a powerful tool called monospaced fonts
[-- Attachment #2: smartcap.el --]
[-- Type: application/emacs-lisp, Size: 6262 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:13 ` Karl Voit
2015-05-25 10:36 ` Rasmus
2015-05-25 10:47 ` Karl Voit
@ 2015-05-25 16:59 ` Emanuel Berg
2 siblings, 0 replies; 12+ messages in thread
From: Emanuel Berg @ 2015-05-25 16:59 UTC (permalink / raw
To: emacs-devel
Karl Voit <devnull@Karl-Voit.at> writes:
>> Good idea, I can never memorize those goofy rules.
>
> "Those goofy rules" are much more complicated than
> I thought.
>
> I did some research: What is proper English
> title capitalization? [...]
The authoritative source is probably a grammar book
from the sturdy and meticulous islanders themselves,
which is Oxford in my experience.
Perhaps it is in this book?
@book{new-oxford-dictionary-for-scientific,
title = {The New Oxford Dictionary for Scientific Writers and Editors},
author = {Elizabeth Martin},
edition = {Second edition},
publisher = {Oxford University Press},
year = 2009,
ISBN-13 = 9780199545155
}
But I don't think those web sources that you mention
are necessarily bad. They should get all or most of it
right. Only when they contradict each other a book has
the advantage to be a permanent source to point to as
the basis of the implementation.
> I was surprised that this quite handy function is
> not part of Emacs yet.
More or less. I think most often, the people who care
don't need it as they know the rules, and the people
who don't care don't look for it.
But I agree it is useful, so when you have perfected
the Elisp, send it to the ELPA or some of the other
repositories. You can then re-use parts of the
homepage text as documentation.
And, I appreciate the compliment [1] tho I suspect you
have already spent much more time on the issue than I.
But I'm glad I could help you get started.
[1] http://karl-voit.at/2015/05/25/elisp-title-capitalization/
--
underground experts united
http://user.it.uu.se/~embe8573
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:47 ` Karl Voit
2015-05-25 12:22 ` Karl Voit
@ 2015-05-26 15:38 ` Barry Fishman
2015-06-11 20:10 ` Karl Voit
2015-06-03 15:05 ` Karl Voit
2 siblings, 1 reply; 12+ messages in thread
From: Barry Fishman @ 2015-05-26 15:38 UTC (permalink / raw
To: emacs-devel
On 2015-05-25 12:47:51 +0200, Karl Voit wrote:
> * Karl Voit <devnull@Karl-Voit.at> wrote:
>>
>> My Elisp knowledge is sufficient to modify your code so that it
>> should get the job done:
>
> I have to post a corrected version of the code which also handles
> the edge case "a a a a a" (a do-not-capitalize word as second word)
> properly:
>
> ,----
> | (defun my-title-capitalization (beg end)
> | (interactive "r")
> | (save-excursion
> | (let (
> | (do-not-capitalize '("a" "ago" "an" "and" "as" "at" "but" "by" "for"
> | "from" "in" "into" "it" "next" "nor" "of" "off"
> | "on" "onto" "or" "over" "past" "so" "the" "till"
> | "to" "up" "yet" ))
> | )
> | ;; go to begin of first word:
> | (goto-char beg)
> | (forward-word)
> | (backward-word)
> | ;; capitalize first word in any case:
> | (capitalize-word 1)
> | (forward-word)
> | (backward-word)
> | (while (< (point) end)
> | ;; capitalize each word in between except it is list member:
> | (if (member (thing-at-point 'word t) do-not-capitalize)
> | (forward-word)
> | (capitalize-word 1) )
> | (forward-word)
> | (backward-word) )
> | ;; capitalize last word in any case:
> | (backward-word)
> | (capitalize-word 1)
> | )
> | ))
> `----
If you are looking for more alternative coding:
--8<---------------cut here---------------start------------->8---
;; This is probably subject for debate and tuning.
(defvar own-stop-words '("a" "an" "the" "at" "by" "for" "in"
"of" "on" "to" "up" "and" "as" "but"
"it" "or" "nor" "n" "t" "es" "s")
"Words that are not capitalized in titles.")
(defun own-title-region (beg end)
"Capitalize region as a title,"
(interactive "r")
(save-excursion
(goto-char beg)
(capitalize-word 1)
(while (< (point) end)
(skip-syntax-forward "^w" end)
(let ((word (thing-at-point 'word t)))
(if (stringp word)
(if (member (downcase word) own-stop-words)
(downcase-word 1)
(capitalize-word 1)))))
(backward-word 1)
(if (and (>= (point) beg)
(not (member (or (thing-at-point 'word t) "s")
'("n" "t" "es" "s"))))
(capitalize-word 1))))
--8<---------------cut here---------------end--------------->8---
--
Barry Fishman
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-25 10:47 ` Karl Voit
2015-05-25 12:22 ` Karl Voit
2015-05-26 15:38 ` Barry Fishman
@ 2015-06-03 15:05 ` Karl Voit
2 siblings, 0 replies; 12+ messages in thread
From: Karl Voit @ 2015-06-03 15:05 UTC (permalink / raw
To: emacs-devel
* Karl Voit <devnull@Karl-Voit.at> wrote:
>
> ,----
>| (defun my-title-capitalization (beg end)
>| (interactive "r")
>| (save-excursion
>| (let (
>| (do-not-capitalize '("a" "ago" "an" "and" "as" "at" "but" "by" "for"
>| "from" "in" "into" "it" "next" "nor" "of" "off"
>| "on" "onto" "or" "over" "past" "so" "the" "till"
>| "to" "up" "yet" ))
>| )
>| ;; go to begin of first word:
>| (goto-char beg)
>| (forward-word)
>| (backward-word)
>| ;; capitalize first word in any case:
>| (capitalize-word 1)
>| (forward-word)
>| (backward-word)
>| (while (< (point) end)
>| ;; capitalize each word in between except it is list member:
>| (if (member (thing-at-point 'word t) do-not-capitalize)
>| (forward-word)
>| (capitalize-word 1) )
>| (forward-word)
>| (backward-word) )
>| ;; capitalize last word in any case:
>| (backward-word)
>| (capitalize-word 1)
>| )
>| ))
> `----
>
With the version above and the version of others as well, I get
errors on my Windows computer running GNU Emacs 24.3.1
(i386-mingw-nt6.1.7601):
| let: Wrong number of arguments: #[(thing) "<some special characters
| which I can't post here since they are obviously binary or
| something>" [thing bounds thing-at-point bounds-of-thing-at-point] 3
| ("c:/Program Files/emacs-24.3/lisp/thingatpt.elc" . 2271)], 2
The weird text does not occur in the region at all.
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-26 15:38 ` Barry Fishman
@ 2015-06-11 20:10 ` Karl Voit
0 siblings, 0 replies; 12+ messages in thread
From: Karl Voit @ 2015-06-11 20:10 UTC (permalink / raw
To: emacs-devel
* Barry Fishman <barry_fishman@acm.org> wrote:
>
>
> If you are looking for more alternative coding:
>
> --8<---------------cut here---------------start------------->8---
> ;; This is probably subject for debate and tuning.
> (defvar own-stop-words '("a" "an" "the" "at" "by" "for" "in"
> "of" "on" "to" "up" "and" "as" "but"
> "it" "or" "nor" "n" "t" "es" "s")
> "Words that are not capitalized in titles.")
>
> (defun own-title-region (beg end)
> "Capitalize region as a title,"
> (interactive "r")
> (save-excursion
> (goto-char beg)
> (capitalize-word 1)
> (while (< (point) end)
> (skip-syntax-forward "^w" end)
> (let ((word (thing-at-point 'word t)))
> (if (stringp word)
> (if (member (downcase word) own-stop-words)
> (downcase-word 1)
> (capitalize-word 1)))))
> (backward-word 1)
> (if (and (>= (point) beg)
> (not (member (or (thing-at-point 'word t) "s")
> '("n" "t" "es" "s"))))
> (capitalize-word 1))))
> --8<---------------cut here---------------end--------------->8---
Thanks for your version. I tested it and it worked great. I added
your input to my solution and to my blog entry.
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Proper English Title Capitalization
2015-05-24 11:10 Proper English Title Capitalization Karl Voit
2015-05-24 21:00 ` Emanuel Berg
@ 2015-06-17 13:48 ` Karl Voit
1 sibling, 0 replies; 12+ messages in thread
From: Karl Voit @ 2015-06-17 13:48 UTC (permalink / raw
To: emacs-devel
* Karl Voit <devnull@Karl-Voit.at> wrote:
>
> I was looking for a method to capitalize headings/titles according
> to [1].
> [1] http://dougscripts.com/itunes/scripts/ss.php?sp=titlecaps
I put my solution on GitHub[2] and updated my blog article [3].
Additionally, I am going to try to publish it as a marmalade
package. My first package ;-)
[2] https://github.com/novoid/title-capitalization.el
[3] http://karl-voit.at/2015/05/25/elisp-title-capitalization/
--
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
http://Karl-Voit.at
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-06-17 13:48 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-24 11:10 Proper English Title Capitalization Karl Voit
2015-05-24 21:00 ` Emanuel Berg
2015-05-25 10:13 ` Karl Voit
2015-05-25 10:36 ` Rasmus
2015-05-25 10:47 ` Karl Voit
2015-05-25 12:22 ` Karl Voit
2015-05-25 16:18 ` Rasmus
2015-05-26 15:38 ` Barry Fishman
2015-06-11 20:10 ` Karl Voit
2015-06-03 15:05 ` Karl Voit
2015-05-25 16:59 ` Emanuel Berg
2015-06-17 13:48 ` Karl Voit
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.