ল্যাটেক্সে উত্স কোড হাইলাইট করা


196

ল্যাটেক্সে আমার উত্স কোডটি হাইলাইট করতে হবে। প্যাকেজটি listingsবেশিরভাগ ব্যবহারের ক্ষেত্রে সবচেয়ে ভাল পছন্দ বলে মনে হচ্ছে এবং এখন পর্যন্ত আমার পক্ষে এটি ছিল।

যাইহোক, এখন আমার আরও নমনীয়তা প্রয়োজন। সাধারণত, আমি যা খুঁজছি তা হ'ল আসল লেসার। বিশেষত, আমার নিজের নিজস্ব শৈলীর সংজ্ঞা (এবং হাইলাইট করুন!) করতে হবে (একটি নিজস্ব ভাষার সংজ্ঞার জন্য)। listingsকোডটিতে নম্বর হাইলাইট করার অনুমতি দেয় না। তবে, আমাকে এরকম কিছু তৈরি করতে হবে:

প্রয়োজনীয় ফলাফল

listingsএছাড়াও স্ট্রিংয়ের জন্য স্বেচ্ছাচারী সীমানা মোকাবেলা করতে পারে না। নিম্নলিখিত বৈধ রুবি কোড বিবেচনা করুন:

s = %q!this is a string.!

এখানে, !প্রায় দ্বারা প্রতিস্থাপিত হতে পারে কোনো বিভেদক।

(এটি listingsইউনিকোড পরিচালনা করতে পারে না তা যথেষ্ট উদ্বেগজনক তবে এটি অন্য একটি সমস্যা।)

আদর্শভাবে, আমি এর একটি এক্সটেনশান খুঁজছি listingsযা আমাকে আরও জটিল লেক্সিং বিধি সরবরাহ করতে দেয়। তবে তা বাদ দিয়ে আমি কার্যকর বিকল্পও সন্ধান করছি।

অন্যান্য থ্রেডগুলি পাইগমেন্টগুলি ব্যবহার করার পরামর্শ দিয়েছে যা ল্যাটেক্স আউটপুট উত্পাদন করতে পারে। এমনকি একটি প্যাকেজ আছে - texments- স্থানান্তর সহজ করতে।

যাইহোক, এই ঘায়ে বৈশিষ্ট্য অভাব। বিশেষত, আমি listingsস্টাইল লাইন নম্বর, উত্স কোড লাইন রেফারেন্স এবং উত্স কোডে ল্যাটেক্স এম্বেড করার সম্ভাবনা (বিকল্পগুলি texclএবং mathescapeইন listings) -এ আমি আগ্রহী।

উদাহরণস্বরূপ, এখানে একটি উত্স কোড টাইপসেট রয়েছে listingsযা দিয়ে প্রতিস্থাপনে সরবরাহ করা উচিত এমন কিছু জিনিস দেখায়:

ল্যাটেক্স তালিকাগুলির উদাহরণ: সাইডওয়েজ অ্যাড ["পাশের দিকের সংযোজন" বিট টুইডলিং হ্যাকস থেকে সংশোধিত]


আপনি যদি পাইগমেন্টের মতো বাহ্যিক সরঞ্জাম আনতে অনিচ্ছুক হন না, তবে কেন কেবল আপনার নথির জন্য একটি মেকফিল লিখবেন না?
মিকা

6
এটি কি টেক্সট.স্ট্যাকেক্সঞ্জেন.কম এ স্থানান্তরিত করা উচিত নয় ? ^^
ম্যাথিয়াস

1
পছন্দ করেছেন আমি যখন এটি পোস্ট করেছি তখন কোনও টেক্সট.ইস ছিল না তবে এখন এটি এখানে বেশ কার্যকর বলে মনে হচ্ছে - প্রশ্নটির একটি দুর্দান্ত প্রতিধ্বনি ছিল, যখন টেক্সএএস.এস. তে কেউ এ পর্যন্ত একই ধরণের প্রশ্ন পোস্ট করেনি। তদ্ব্যতীত, এটি আসলে প্রোগ্রামিং এবং প্রোগ্রামিং সরঞ্জামগুলির সাথে বিশেষভাবে সম্পর্কিত, তাই আমি অনুমান করি যে প্রোগ্রামাররা এর দ্বারা উপকৃত হওয়া লোক।
কনরাড রুডলফ

1
যারা বর্তমানে ডকুমেন্টটির জন্য লটেক্সকে ভুলে যেতে পারেন তাদের জন্য: নোট করুন যে অফিস ওয়ার্ডের সাথে বা লিব্রেফিস লেখক, আপনি কেবল নিজের কোডটি অনুলিপিকরণ করে যেমন Eclipse থেকে সেখানে প্রবেশ করুন এবং আপনার রঙগুলি সংরক্ষণ করুন!
মোহাম্মদজেজ

3
@MemoryLeaks আমি নিশ্চিত এই উপদেশ ভয়ঙ্কর দরকারী পারেন আছি: অফিস সফ্টওয়্যার (লেটেক্ এর একটি বৈধ বিকল্প যা নয় না একটি অফিসে সফ্টওয়্যার, এটি একটি ডেস্কটপ পাবলিশিং সিস্টেম, যা, সংক্ষেপে, তার মানে এটা অনেক উচ্চতর লেখনী প্রদান করে , অফিস সফ্টওয়্যার এর অন্যান্য সমস্ত সুবিধা বাদে)।
কনরাড রুডল্ফ

উত্তর:


352

নরমানের পরামর্শকে হৃদয়গ্রাহ্য করে, আমি একসাথে একটি সমাধান হ্যাক করেছি যা হাইলাইট করার জন্য পাইগমেন্টগুলি ব্যবহার করে ( প্যাচযুক্ত ) পাইগমেন্টগুলি সম্ভব না হওয়া এবং যতটা সম্ভব বৈশিষ্ট্যগুলিতে পুশ করে ;-)

আমার পাইগমেন্টস প্যাচটি একবার সংস্করণ ১.২ এ প্রকাশিত হওয়ার পরে আমি একটি লেটেক্স প্যাকেজও তৈরি করেছি ...

উপস্থাপনা নূতন

নূতন একটি প্যাকেজ যে ব্যবহারসমূহ Pygments উপরের খাঁজ সিনট্যাক্স ক্ষীর হাইলাইট প্রদান করা হয়। উদাহরণস্বরূপ, এটি নিম্নলিখিত আউটপুটটিকে অনুমতি দেয়।

অভিনব ল্যাকেক্স উদাহরণ

উপরের কোডটি পুনরুত্পাদন করার জন্য এখানে একটি ন্যূনতম ফাইল রয়েছে (লক্ষ্য করুন যে ইউনিকোডের অক্ষরগুলি সহ XeTeX প্রয়োজন হতে পারে)!

\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{minted}

\setsansfont{Calibri}
\setmonofont{Consolas}

\begin{document}
\renewcommand{\theFancyVerbLine}{
  \sffamily\textcolor[rgb]{0.5,0.5,0.5}{\scriptsize\arabic{FancyVerbLine}}}

\begin{minted}[mathescape,
               linenos,
               numbersep=5pt,
               gobble=2,
               frame=lines,
               framesep=2mm]{csharp}
  string title = "This is a Unicode π in the sky"
  /*
  Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
  of an $n$-sided regular polygon circumscribing a
  circle of diameter $d$.
  */
  const double pi = 3.1415926535
\end{minted}
\end{document}

নিম্নলিখিত কমান্ডটি ব্যবহার করে এটি টাইপসেট হতে পারে:

xelatex -shell-escape test.tex

(তবে মিন্টেড এর সাথেও কাজ করে latexএবং pdflatex...)

minted.styএর মতো কাজ করে texments.styতবে অতিরিক্ত বৈশিষ্ট্যগুলির অনুমতি দেয়।

এটি কিভাবে পাবেন

আবারও, আমাকে এই প্যাকেজটি উত্পাদন করতে উদ্বুদ্ধ করার জন্য নরম্যানকে ধন্যবাদ thanks


19
লেটেক্সের সাথে পাইগমেন্টগুলি কীভাবে ব্যবহার করতে হবে এবং আরও কয়েক ঘন্টা আমার নিজস্ব সমাধান একসাথে হ্যাক করার চেষ্টা করার পরে কয়েক ঘন্টা অনুসন্ধান করার পরে, এটি আমি খুঁজে পেয়েছি সেরা। আরও ভাল, এটি আসলে কাজ করে। এর জন্য ধন্যবাদ.
সিকোড়া

2
আপনি কেবল একটি হয়ে ওঠার মতো কাজটি করেছেন!)!
ফিলিপ দুপানোভিć

4
@ পল: এটি সত্য যে উইন্ডোজে পুরো বিষয়টি বেশ অগোছালো। :-( আশা করি, পাইগমেন্টের পরবর্তী সংস্করণ এটি কিছুটা উপশম করবে, তবে যারা পাইথনের সাথে প্রায়শই কাজ করেন না তাদের (এবং তাই easy_install) প্রক্রিয়াটি কখনই খুব মসৃণ হবে না Kon
কনরাড রুডলফ


1
@ পাওলো ধন্যবাদ আমি প্যাকেজের সমস্ত উল্লেখ পড়ার চেষ্টা করি (আমার একটি গুগল সতর্কতা পেয়েছে) তবে আমি সবসময় সফল হই না। আপনি যে প্রশ্নটির উল্লেখ করেছেন আমি আসলে পড়েছি (স্পষ্টত: আমি এটি উন্নত করেছিলাম তবে আমি মনে করতে পারি না) তবে এটি মোটেই সোজা নয়। "আব" এর জন্য টিকজেড ব্যবহার করা খারাপ হ্যাকের মতো মনে হচ্ছে…
কনরাড রুডল্ফ

6

টেক্সটি (বিখ্যাতভাবে) টিউরিং-সম্পূর্ণ, তবে আমি নিশ্চিত যে আপনি নিজে এই এক্সটেনশনটি লিখতে চলেছেন। ডকুমেন্টেশনটি এটিকে পরিষ্কার করে দিয়েছে যে এটি listingsএতিম হওয়ার মূল লেখক ২০০৪ সালে, এবং এটি ২০০ 2006 সাল থেকে আপডেট করা হয়নি The প্যাকেজটি সংখ্যাসূচক অক্ষরের বিন্যাসকে ওভাররাইড করার জন্য তৈরি করা হয়নি, তবে আপনি এটি পরিবর্তন করে এটি সংশোধন করতে সক্ষম হতে পারেন সংজ্ঞা \lst@ProcessDigit। যদি এটি কাজ না করে, আপনাকে "আইডেন্টিফায়ার স্টাইল" বিকল্পগুলি কীভাবে কাজ করে তা আপনাকে বিশদভাবে বুঝতে হবে এবং আপনার সংখ্যার অক্ষরে অক্ষরের জন্য আপনাকে সেই যন্ত্রটি নকল করতে হবে।

আমি কেন আপনার সরঞ্জামচেইনে একটি বাহ্যিক সরঞ্জাম প্রবর্তন করতে এতটা অনিচ্ছুক তা আমি যথেষ্ট বুঝতে পারি না তবে আপনি যেহেতু, আপনাকে অতিরিক্ত কাজ করতে হবে। উত্স কোডটি একবার দেখার পরে, আমি প্রত্যাশা করি যে সংশোধন listingsকরা সম্ভব হবে, তবে আমি ব্যক্তিগতভাবে তার পরিবর্তে আমার লটেক্স প্রিপ্রসেস করতে পছন্দ করব।


আমি বাহ্যিক সরঞ্জামগুলি প্রবর্তন করতে মোটেও দ্বিধা বোধ করি না - আসলে, আমি মনে করি যে পাইগমেন্টগুলি ব্যবহার করা সম্ভবত সেরা সমাধান। প্রশ্নটি কীভাবে এটি একটি স্মার্ট উপায়ে করা যায় যাতে \labelকোডের অভ্যন্তরে আমি এখনও লটেক্স এবং এসে পালাতে পারি ।
কনরাড রুডল্ফ

পরিবর্তনের ক্ষেত্রে listings, আমি এর উত্সটি ইতিমধ্যে দেখেছি - এবং দুর্ভাগ্যক্রমে, আমি এটি মোটেও বুঝতে পারি না। আমার টেক্স দক্ষতা সেই স্তরের কাছাকাছি নেই। এখন অবধি, আমি যাইহোক যাইহোক কেবল টেক্সের ল্যাটেক্স উপসেটটি ব্যবহার করেছি।
কনরাড রুডলফ

1
আমি বলব যে কোনও বাহ্যিক সরঞ্জাম প্রবর্তনের সাথে সবচেয়ে বড় সমস্যাটি হ'ল আপনি প্রকাশ করছেন। প্রচুর জার্নাল প্রকাশকদের (কাশি-কাশি স্প্রিংগার এবং অন্যান্য) কাঁচা ল্যাটেক্সে জমা দেওয়ার প্রয়োজন হয় যা তাদের সার্ভারে সংকলিত হয়। বলা বাহুল্য, যদি আপনার তৃতীয় পক্ষের সরঞ্জামটি তাদের সার্ভারে না থাকে তবে আপনি প্রাক প্রক্রিয়া না করে SOL হন (যা টেক্সট ড্রাইভকে বেশিরভাগ উপযোগকে পরাস্ত করে)।
নাম

যদি ডকুমেন্টেশনটি সঠিক হয় তবে তালিকা প্যাকেজটি এখনও বজায় রাখা হয় - তবে রক্ষণাবেক্ষণকারী পরিবর্তন হয়ে যায় এবং এটি বাগফিক্স পেয়েছে: ctan.org/pkg/listings?lang=en
DetlevCM

1
@ নামে, কেবলমাত্র একটি ডেটা-পয়েন্ট: স্প্রিংজারের এলএনসিএস mintedপ্রকাশনা-প্রক্রিয়াটি ব্যবহার করে আমি স্রেফ সফলভাবে একটি কাগজ ছিনিয়ে নিতে পেরেছি ।
ভোলকার স্টলজ

3

এটি এমন একটি প্যাকেজ যা সিনট্যাক্স হাইলাইটের মাধ্যমে সোর্স কোডটিকে টেক্স এবং ল্যাটেক্সে রূপান্তর করে। কাস্টম প্রোগ্রামিং ভাষার সংজ্ঞাগুলি সহজেই যুক্ত করা সম্ভব।

হাইলাইট 100 টি প্রোগ্রামিং ভাষা সমর্থন করে এবং 50 টি রঙিন থিম অন্তর্ভুক্ত করে। এটিতে কোড পুনরায় ফর্ম্যাটিং এবং ইনডেন্টিংয়ের বৈশিষ্ট্য রয়েছে।

আমি এটি কীভাবে কাজ করে তা জানার জন্য এটি ব্যবহার করি নি, তবে আমার পরিচিত অন্য কেউ বলেছেন যে এটি বেশ ভালভাবে কাজ করেছে। আমি যদি সুযোগ পাই তবে আমি নিজে চেষ্টা করে দেখব।


1
highlightযদিও পাইগমেন্টগুলির সমস্ত সমস্যা ভাগ করে দেয়। বিশেষত, এর বিবরণ যা বলছে তা সত্ত্বেও এটি কোনও ল্যাটেক্স প্যাকেজ নয় । এটি কেবল স্ট্যান্ড-অলোন প্রোগ্রাম। পাইগমেন্টগুলির মতো সমস্যাটি হ'ল কীভাবে এটি ল্যাটেক্সের মধ্যে থেকে অর্থবহভাবে ব্যবহার করা যায় এবং যা listingsরয়েছে তা সমস্ত সুন্দর জিনিস সরবরাহ করে ।
কনরাড রুডল্ফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.