# Changing the writing language

I write in greek (having before load all the necessary packages and own commands - babel etc). In order to change the language and write a word in english I type \gre and the letters appear with english characters (that is correct!). The problem is that whenever I want to come back and write greek again I use the command \eng and typeset the desired word ...but the first letter of it is in english! My own commands are:

\newcommand{\eng}[1]{\latintext#1\greektext} % Change language
\newcommand{\gre}[1]{\greektext\latintext#1} % Change language

• Welcome to TeX.SX. A tip: If you indent lines by 4 spaces, then they're marked as a code sample. You can also highlight the code and click the "code" button ({}) or hit Ctrl+K. – Claudio Fiandrino Jan 28 '14 at 11:08
• Which of the options described here are you using? Your commands look as if they’re intended to be used like this: ελληνικά \eng{English} ελληνικά (single English word amidst Greek text) or English \gre{ελληνικά} English (vice versa). In this case the definition of the latter is wrong and should read \newcommand{\gre}[1]{\greektext#1\latintext}. – Crissov Jan 28 '14 at 11:18
• The predefined commands \greektext and \latintext work as switches like font size commands (e.g. \large), but due to [1] in \newcommand your commands expect a single parameter which is used where #1 appears. When used without curly braces, i.e. \eng English instead of \eng{English}, they will consume the first non-whitespace character (here: ’E‘). – Crissov Jan 28 '14 at 11:28

Your definitions are wrong. Besides, having \latintext doesn't guarantee correct hyphenation of English words. Here's a better way (the Greek sentence has been obtained from Google translation, I don't know if it's good Greek).

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english,greek]{babel}

\begin{document}

Αυτό το κείμενο είναι στα Ελληνικά \foreignlanguage{english}{not English}

\begin{otherlanguage*}{english}
This is a longer text in English, so
we use an environment for it.
\end{otherlanguage*}

Αυτό το κείμενο είναι στα Ελληνικά

\end{document}


Of course you might prefer defining a personal command, such as

\newcommand{\eng}[1]{\foreignlanguage{english}{#1}}


so you can simply type \eng{English word} in your document instead of the complicated \foreignlanguage{english}{English word}.