কোনও ল্যাটেক্স ম্যাক্রো এর পাঠ্য সামগ্রী সংরক্ষণ করার সময় কীভাবে মুছবেন?


11

টেক্স স্টুডিওতে এই জাতীয় একটি লেটেক্স ম্যাক্রোতে ALT+ টিপে হ'ল যখন কার্সারটি প্রথমের ঠিক আগে দাঁড়িয়ে থাকে তখন তার সমস্ত কিছুই বাদ দেয় (নীচে দেখানো হয়েছে)। DEL\macroname{content}{content

এখানে চিত্র বর্ণনা লিখুন
প্রথম কার্ল ব্র্যাকেটের ঠিক আগে কার্সার (পয়েন্ট) রাখুন:

এখানে চিত্র বর্ণনা লিখুন

হিট ALT+ DELএবং আপনি পান:

এখানে চিত্র বর্ণনা লিখুন

এটি ইম্যাক্সে কীভাবে অর্জন করবেন?

আপডেট
টি.ভেরনের স্পষ্টতা অনুসারে ল্যাকেক্সে C-c C-f C-dকিছু ম্যাক্রোর মধ্যে মৃত্যুদণ্ড কার্যকর করার সময় ভারসাম্যহীন প্রথম বন্ধনী ত্রুটির অভিযোগ করার সাথে সমস্যা রয়েছে । নীচের উদাহরণ বিবেচনা করুন:
এখানে চিত্র বর্ণনা লিখুন

এই ত্রুটি ছোঁড়া: up-list: Scan error: "Unbalanced parentheses", 8074, 1। \ টেক্সটেনলিশ {poly বহুগ্লোসিয়া প্যাকেজের অন্তর্গত।

কীভাবে এই সাবধানতা থেকে মুক্তি পাবেন?


হেম, বর্তমান উত্তরের সাথে সতর্কবাণীটি অ্যাকটেক্স ম্যাক্রোকে ফন্টিফাই করে কিনা তা নয়, ম্যাক্রো একটি ল্যাটেক্স ফন্টের স্পেসিফিকেশন (সম্ভবত সংজ্ঞায়িত হিসাবে TeX-font-list) কিনা তা সম্পর্কে নয়। উদাহরণস্বরূপ, চেষ্টা করুন \sectionবা \footnote, অ্যাকটেক্স এই ম্যাক্রোগুলি সম্পর্কে জানে এবং সেগুলি ফন্টিফাই করে তবে C-c C-f C-dভারসাম্যহীন বন্ধনী সম্পর্কে অভিযোগ করবে।
টি ভেরন

এমনকি আমি TeX-font-listআমার নতুন প্রবর্তিত ম্যাক্রোগুলি অন্তর্ভুক্ত করার জন্য এটি আপডেট করতে পারলেও এটি একটি সাবঅপটিমাল ওয়ার্কারআউন্ডে রয়ে গেছে। অন্যথায়, আমি জানি না যে এটির সাথে কাজ করার জন্য কোনও এলিএসপি ফাংশন রয়েছে কী কী!
ডক্টরেট করুন

উত্তর:


11

এই ফাংশনটি ব্যবহার করে দেখুন:

(defun mg-TeX-delete-current-macro (&optional arg)
  "Remove the current macro.
With an optional argument ARG, delete just the ARG-th macro
starting from the innermost."
  (interactive "*p")
  (let (macro end)
    (when 
    (dotimes (i arg macro)
      (goto-char (TeX-find-macro-start))
      (setq macro (TeX-current-macro)
        end (TeX-find-macro-end))
      ;; If we need to look for an outer macro we have to "exit" from the
      ;; current one.
      (backward-char))
      ;; Return to the beginning of the macro to be deleted.
      (forward-char)
      (re-search-forward
       (concat (regexp-quote TeX-esc) macro "\\(?:\\[[^]]*\\]\\)?"
           TeX-grop "\\(\\(.\\|\n\\)*\\)")
       end t)
      (replace-match "\\1")
      ;; Delete the closing brace.
      (delete-backward-char 1))))

সীমাবদ্ধতা: ভারব্যাটিম-জাতীয় ম্যাক্রোগুলির সাথে কাজ করে না। এই Wrong type argument: integer-or-marker-p, nilসার্বজনীন যুক্তি ম্যাক্রো এনকোলেজিং পয়েন্টের সংখ্যার চেয়ে বড় হলে এই ত্রুটিটি একটি ত্রুটি ফেলবে ( )।

আপনার পছন্দের শর্টকাটে বাঁধুন। উদাহরণ স্বরূপ

(eval-after-load "tex"
  '(local-set-key (kbd "M-DEL") 'mg-TeX-delete-current-macro))

এটি আবদ্ধ করতে M-DEL

যদি আপনার বাফারটি হয় ( !বিন্দু হয়)

\onemacro{\anothermacro{!argument}}

তাহলে C-2 M-DELআপনাকে দেবে

\anothermacro{argument}

অন্তরতম গ্রুপ ভিতরে বিন্দু যদি (gr1(gr2(gr3(gr4))))আপনি একটি উপসর্গ দ্বারা বোঝাতে চেয়েছেন C-uতারপর 2 এটা আমাকে দিতে হবে: (gr1(gr2))? যদি এটি হয় তবে তা অবশ্যই উজ্জ্বল হবে। আমি আশা করি আপনার এটি করার সময় ছিল।
ডক্টরেট

আমি M-DELটেক্সটস্টুডিওতে এটি পছন্দ করতে বাধ্য । ধন্যবাদ।
ডক্টরেট

@ ডক্টরেট ওয়েল, না, আমার ধারণাটি gr3আপনার ক্ষেত্রে ঠিক দ্বিতীয় ম্যাক্রো মুছে ফেলা হবে । আপডেট উত্তর দেখুন। উত্তরের মূল সংস্করণটি dotimesপ্রায় মোড়ানো দ্বারা আপনি যা পরামর্শ করেছিলেন তা বাস্তবায়ন করতে পারেন when
জিওর্ডানো

দুর্দান্ত ফাংশন! এখন এটি একটি স্মার্ট ম্যাক্রো-প্যাকম্যানের মতো আচরণ করে ! একটি সতর্কতা যদিও; যখন যুক্তি বড় এবং এটি একটি ত্রুটির ছোঁড়ার বিন্দু জাম্প কোথাও অনগ্রসর। আপনি কি এটির বর্তমান স্থানে দাঁড়িয়ে অভিযোগ করতে পারেন?
ডক্টরেট

@ জিওর্ডানো কোনও সুযোগ এটি অউটেক্সে পরিণত করবে? এটি খুব দরকারী!
টাইলার

9

যে ডকুমেন্টেশনটি আমি মিস করেছি তা এটি খুব সহজ টুকরো ছিল। ধন্যবাদ।
ডক্টরেট

তবে এটি কেবল হরফ স্পেসিফিকেশনের জন্য কাজ করে (এবং যাচাইকরণটি অর্থবহ করে, উদাহরণস্বরূপ \emph{\randommacro{test}}এটি মুছে ফেলবে \emph)।
টি। ভেরন

@ টি.ভেরন: ভাল ব্যাখ্যা। আমি স্বেচ্ছাসেবী লটেক্স ম্যাক্রোগুলির জন্য এটি করার একটি অন্তর্নির্মিত উপায় সম্পর্কে অবগত নই।
ড্যান

4

বিন্দুতে থাকা ম্যাক্রোটি অপসারণ করার জন্য এখানে একটি সাধারণ ফাংশন:

(defun TeX-remove-macro ()
  "Remove current macro and return `t'.  If no macro at point,
return `nil'."
  (interactive)
  (when (TeX-current-macro)
    (let ((bounds (TeX-find-macro-boundaries))
          (brace  (save-excursion
                    (goto-char (1- (TeX-find-macro-end)))
                    (TeX-find-opening-brace))))
      (delete-region (1- (cdr bounds)) (cdr bounds))
      (delete-region (car bounds) (1+ brace)))
    t))

সুতরাং, *পয়েন্ট হিসাবে:

\footnote{Here's a * footnote} 
  => Here's a footnote

উপরের ফাংশনটি দেওয়া, এটি বিন্দুতে সমস্ত ম্যাক্রোগুলি সরিয়ে ফেলার জন্য এক-লাইনার:

(defun TeX-remove-all-macros ()
  "Remove all containing macros for text at point."
  (interactive)
  (while (TeX-remove-macro)))

সুতরাং, আবার *হিসাবে পয়েন্ট হিসাবে:

\footnote{Here's a \textbf{footnote with \emph{emphasized * text}}} 
  => Here's a footnote with emphasized text
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.