Σελίδα 1 από 1

Xelatex Εκτύπωση Ελληνικών σε snippet Κώδικα στο κείμενό μου

ΔημοσίευσηΔημοσιεύτηκε: 17 Μαρ 2018, 19:13
από pc_magas
Καλησπέρα Κοινότητα,

Κοιτώ λίγο την LaTex σαν εργαλείο συνεργατικής συγγραφής κειμένου (ειδικά σε ακαδημαϊκό περιβάλλον) καιο προσπαθώ να εκτυπώσω κώδικα μαζί με polyglossia και lisrtings σε TexMaker. Το πειραματικό κείμενο είναι το:

Κώδικας: Επιλογή όλων
\documentclass[a4paper,draft]{article}
\usepackage[Greek,Latin]{ucharclasses}
% Language declaration
\usepackage{xltxtra}
\usepackage{polyglossia}
\usepackage{listings}
\usepackage{color}

\setmainlanguage{greek}
\setotherlanguages{english}
\setTransitionsForGreek{\selectlanguage{greek}}{\selectlanguage{english}}

% Fonts
\usepackage{fontspec}
\setmainfont[Kerning=On,Mapping=tex-text]{Linux Libertine O}
\setmainfont{Times New Roman}
\setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}


\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle=\footnotesize\ttfamily,
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3,
  texcl=true,
}

\title{My first document}
\date{2018-03-17}
\author{Dimitrios Desyllas}

\begin{document}
\maketitle
\newpage

\section{Πρώτο κεφάλαιο}
   Καλημέρα Greece. This is an English paragraph
   \subsection{Υποκεφάλαιο 1}
   Στην Ελλάδα έχει ήλιο
   \subsubsection{Υποκεφάλαιο }
   Που καίει πολύ
   \subsubsection{Υπουπόκεφάλαιο 1.1}
   Πάρα πολύ
   \subsection{Υποκεφάλαιο 2}
   Στην Ελλάδα έχει θάλλασα
\section{Δεύτερο κεφάλαιο}
Όλα πάνε ρόδινα

\begin{lstlisting}
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }   
}
\end{lstlisting}

\end{document}


Και προσπαθώ να κάνω να εμφανιστεί (κατά το build) το κομμάτι κώδικα αλλά λαμβάνω σφάλμα:

Κώδικας: Επιλογή όλων
! Package polyglossia Error: The current roman font does not contain the Greek


Έχετε ιδέα πως θα το "διορθώσω";

Re: Xelatex Εκτύπωση Ελληνικών σε snippet Κώδικα στο κείμενό

ΔημοσίευσηΔημοσιεύτηκε: 18 Μαρ 2018, 12:33
από Tassos10
Ωραίος, μπράβο σας! Η LaTeX είναι ένα πάρα πολύ δυνατό εργαλείο!
Για να καταλάβω κάτι, εσείς με το πακέτο «polyglossia» επιδιώκεται να γράφετε και ελληνικά και αγγλικά με όσο το δυνατόν λιγότερη ευκολία ;
Πολύ μου άρεσε το εν λόγο πακέτο, δε το ήξερα και χρησιμοποιούσα άλλους τρόπους λίγο ποιο "μπελαλίδικους".

Όσο για το error που παίρνεται, έχει να κάνει μάλλον με την γραμματοσειρά. Είναι λίγο θεματάκι με τις γραμματοσειρές των Windows.
Για δοκιμάστε τον παρακάτω κώδικα και πείτε μας αν σας κάνει :

Κώδικας: Επιλογή όλων
%\documentclass{scrreprt}
\documentclass[a4paper]{article}

\usepackage{polyglossia}
\usepackage{xltxtra}
\usepackage{xunicode}
\usepackage{listings}
\usepackage{libertine}
\usepackage{color}
\usepackage{fontspec}

\setdefaultlanguage{greek}
\setotherlanguages{english}

% Fonts
\setmainfont{Liberation Serif} % \setmainfont{Times New Roman} \setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}
\setmainfont[Kerning=On,Mapping=tex-text]{Linux Libertine O}

% Define colors :
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle=\footnotesize\ttfamily,
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3,
  texcl=true,
}



\title{My first document}
\date{2018-03-17}
\author{Dimitrios Desyllas}



\begin{document}
   \maketitle
   \newpage

   \section{Πρώτο κεφάλαιο}
      Καλημέρα Greece. This is an English paragraph
      \subsection{Υποκεφάλαιο 1}
      Στην Ελλάδα έχει ήλιο
      \subsubsection{Υποκεφάλαιο }
      Που καίει πολύ
      \subsubsection{Υπουπόκεφάλαιο 1.1}
      Πάρα πολύ
      \subsection{Υποκεφάλαιο 2}
      Στην Ελλάδα έχει θάλλασα
   \section{Δεύτερο κεφάλαιο}
   Όλα πάνε ρόδινα

   \begin{lstlisting}
   import javax.swing.JApplet;
   import java.awt.Graphics;

   public class Hello extends JApplet {
      public void paintComponent(Graphics g) {
          g.drawString("Hello, world!", 65, 95);
      }   
   }
   \end{lstlisting}


\end{document}


Αν στην παρακάτω γραμμή βάλετε και το "draft", δε θα φαίνεται ο JAVA κώδικας :
Κώδικας: Επιλογή όλων
\documentclass[a4paper]{article}


Χωρίς την παρακάτω γραμμής θα έχετε πρόβλημα στο "begin{lstlisting}" :
Κώδικας: Επιλογή όλων
\usepackage{libertine}


Εγώ προσωπικά στο παρελθόν έχω χρησιμοποιήσει και το πακέτο minted για code highlighting.

Επίσης ένα ακόμη ωραίο και απλό εργαλείο συγγραφή κώδικα είναι το Gummi.
Εύχομαι να βοήθησα λιγάκι. :)

Re: Xelatex Εκτύπωση Ελληνικών σε snippet Κώδικα στο κείμενό

ΔημοσίευσηΔημοσιεύτηκε: 18 Μαρ 2018, 17:29
από pc_magas
Στην λύση που προτείνατε δεν κατανοώ την λειτουργεία του comment:

Κώδικας: Επιλογή όλων
% \setmainfont{Times New Roman} \setsansfont{Arial}


Όπως και του:
Κώδικας: Επιλογή όλων
%\documentclass{scrreprt}


Για ποιον λόγο ορίσατε αυτά τα comments;

Για να καταλάβω κάτι, εσείς με το πακέτο «polyglossia» επιδιώκεται να γράφετε και ελληνικά και αγγλικά με όσο το δυνατόν λιγότερη ευκολία ;

Αντιθέτως με περισσότερη ευκολία δλδ να στο ίδιο κείμενο να έχω Αγγλικά και Ελληνικά και να "αναγνωρίζονται" αυτόματα.

Ακόμη δοκίμασα στην λύση σας να βάλω λίγα Ελληνικά στον κώδικα java αλλά δεν γίνονταί rendered:

Κώδικας: Επιλογή όλων
%\documentclass{scrreprt}
\documentclass[a4paper]{article}

\usepackage{polyglossia}
\usepackage{xltxtra}
\usepackage{xunicode}
\usepackage{listings}
\usepackage{libertine}
\usepackage{color}
\usepackage{fontspec}

\setdefaultlanguage{greek}
\setotherlanguages{english}

% Fonts
\setmainfont{Liberation Serif} % \setmainfont{Times New Roman} \setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}
\setmainfont[Kerning=On,Mapping=tex-text]{Linux Libertine O}

% Define colors :
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{frame=tb,
  language=Java,
  aboveskip=3mm,
  belowskip=3mm,
  showstringspaces=false,
  columns=flexible,
  basicstyle=\footnotesize\ttfamily,
  numbers=none,
  numberstyle=\tiny\color{gray},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  breaklines=true,
  breakatwhitespace=true,
  tabsize=3,
  texcl=true,
}



\title{My first document}
\date{2018-03-17}
\author{Dimitrios Desyllas}



\begin{document}
   \maketitle
   \newpage

   \section{Πρώτο κεφάλαιο}
      Καλημέρα Greece. This is an English paragraph
      \subsection{Υποκεφάλαιο 1}
      Στην Ελλάδα έχει ήλιο
      \subsubsection{Υποκεφάλαιο }
      Που καίει πολύ
      \subsubsection{Υπουπόκεφάλαιο 1.1}
      Πάρα πολύ
      \subsection{Υποκεφάλαιο 2}
      Στην Ελλάδα έχει θάλλασα
   \section{Δεύτερο κεφάλαιο}
   Όλα πάνε ρόδινα

   \begin{lstlisting}
   import javax.swing.JApplet;
   import java.awt.Graphics;

   public class Hello extends JApplet {
      public void paintComponent(Graphics g) {
          g.drawString("Hello, world!", 65, 95);
          g.drawString("Καλημέρα", 65, 95);
      }   
   }
   \end{lstlisting}


\end{document}


Αλλά με το εργαλείο Texmaker μου το εμφανίζει σαν:



Δε δοκίμασα και το minted:

Κώδικας: Επιλογή όλων
%\documentclass{scrreprt}
\documentclass[a4paper]{article}
\usepackage{minted}
\usepackage[Greek,Latin]{ucharclasses}
% Language declaration
\usepackage{xltxtra}
\usepackage{polyglossia}

\setmainlanguage{greek}
\setotherlanguages{english}
\setTransitionsForGreek{\selectlanguage{greek}}{\selectlanguage{english}}

% Fonts
\usepackage{fontspec}
\setmainfont{Liberation Serif} % \setmainfont{Times New Roman} \setsansfont{Arial}
\newfontfamily\greekfont[Script=Greek]{Linux Libertine O}
\newfontfamily\greekfontsf[Script=Greek]{Linux Libertine O}
\let\greekfonttt\ttfamily
\setmainfont[Kerning=On,Mapping=tex-text]{Linux Libertine O}

\title{My first document}
\date{2018-03-17}
\author{Dimitrios Desyllas}

\begin{document}
\maketitle
\newpage

\section{Πρώτο κεφάλαιο}
   Καλημέρα Greece. This is an English paragraph
   \subsection{Υποκεφάλαιο 1}
   Στην Ελλάδα έχει ήλιο
   \subsubsection{Υποκεφάλαιο }
   Που καίει πολύ
   \subsubsection{Υπουπόκεφάλαιο 1.1}
   Πάρα πολύ
   \subsection{Υποκεφάλαιο 2}
   Στην Ελλάδα έχει θάλλασα
\section{Δεύτερο κεφάλαιο}
Όλα πάνε ρόδινα

\begin{minted}
{java}
import javax.swing.JApplet;
import java.awt.Graphics;

public class Hello extends JApplet {
    public void paintComponent(Graphics g) {
        g.drawString("Hello, world!", 65, 95);
    }   
}
\end{minted}

\begin{minted}
{c}
#include "stdio.h"

int main(){
   puts("Καλημέρα");
}
\end{minted}

\end{document}


Αλλά λαμβάνω τα κάτωθι σφάλματα όπως βλέπετε στην φωτό (εργαλείο TexMaker):


Τέλος θέλω να ρωτίσω εάν υπάρχουν "γλώσσες" παρόμοιες με την Tex προκειμένου μέσω markup σύνταξης να γράφω κείμενο χωρίς να με νοιάζει εάν στο copy-paste θα μπει λάθος γραμματοσειρά (κρίσιμο για ακαδημαϊκές εργασίες) η θα αλλαχτεί η γραμματοσειρά επειδή έχω άλλη γλώσσα στο πληκτρολόγιο;

Re: Xelatex Εκτύπωση Ελληνικών σε snippet Κώδικα στο κείμενό

ΔημοσίευσηΔημοσιεύτηκε: 19 Μαρ 2018, 01:44
από Tassos10
Βασικά δεν χρειάζονται. Ιδιαίτερα αυτή που θέτει ως γραμματοσειρές τις «Times New Roman» & «Arial» που δεν υπάρχουν καν στο GNU/Linux, δημιουργούν και προβλήματα.
Υποθέτω πως μπορείς να τις εγκαταστήσεις πάντως αν όντως θες αυτές. Το αντίστοιχο πάντα ισχύει και στα Windows, μάλλον η «Liberation Serif» δεν θα υπάρχει ( επίσης θα μπορείς να την κάνεις εγκατάσταση αν θέλεις ).