اذهب إلى المحتوى

البحث في الموقع

المحتوى عن 'style'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

  • الإدارة والقيادة
  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • السلوك التنظيمي في المؤسسات
  • عالم الأعمال
  • التجارة والتجارة الإلكترونية
  • نصائح وإرشادات
  • مقالات ريادة أعمال عامة

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 9 نتائج

  1. إن هذا الدليل مستوحى من دليل GitHub ودليل Bozhidar Batsov. ولدينا أيضًا دليل جافاسكربت لتنسيق الشيفرة البرمجية جدول المحتويات المسافات البيضاء المسافة البادئة في الشيفرة المسافات السطرية الأسطر الجديدة طول السطر التعليقات تعليقات على مستوى الملف/الصنف تعليقات الدالة التعليقات الكتلية والمضمّنة علامات الترقيم والإملاء والنحو تعليقات TODO شيفرات برمجية بدون تعليقات الدوال تعريف الدوال دوال الاستدعاء التعابير الشرطيّة الكلمات المفتاحية للجمل الشرطية المعامل الثلاثي الشروط المتشعّبة الصياغة قواعد التسمية الأصناف الاستثناءات التجميعات السلاسل النصية التعابير النمطية محارف النسبة المئوية ريلز نطاقات انسجم مع الشيفرة المسافات البيضاء المسافة البادئة في الشيفرة استخدم الزر (tabs) بمقدار مسافتين (وتسمى أيضًا Soft-Tab نظرًا لأن زر Tab الإفتراضي يكون ثمان مسافات). سيكون عمق الكلمة المفتاحية when بقدر عمق case. case when song.name == 'Misty' puts 'Not again!' when song.duration > 120 puts 'Too long!' when Time.now.hour > 21 puts "It's too late" else song.play end kind = case year when 1850..1889 then 'Blues' when 1890..1909 then 'Ragtime' when 1910..1929 then 'New Orleans Jazz' when 1930..1939 then 'Swing' when 1940..1950 then 'Bebop' else 'Jazz' end حاذِ وسطاء الّدالة فإما أن يكونوا على نفس السطر أو سطر لكلّ واحدٍ منهم. # bad def self.create_translation(phrase_id, phrase_key, target_locale, value, user_id, do_xss_check, allow_verification) ... end # good def self.create_translation(phrase_id, phrase_key, target_locale, value, user_id, do_xss_check, allow_verification) ... end # good def self.create_translation( phrase_id, phrase_key, target_locale, value, user_id, do_xss_check, allow_verification ) ... end حاذِ الأسطر المتتابعة بمقدار مسافتين في جملة التنفيذ للتعابير المنطقية متعددة الأسطر. # bad def is_eligible?(user) Trebuchet.current.launch?(ProgramEligibilityHelper::PROGRAM_TREBUCHET_FLAG) && is_in_program?(user) && program_not_expired end # good def is_eligible?(user) Trebuchet.current.launch?(ProgramEligibilityHelper::PROGRAM_TREBUCHET_FLAG) && is_in_program?(user) && program_not_expired end المسافات السطرية لا تترك مسافة زائدة. عند تضمين التعليقات في السطر، اترك مسافة واحدة بين نهاية الشيفرة البرمجية وبداية تعليقك. # bad result = func(a, b)# we might want to change b to c # good result = func(a, b) # we might want to change b to c استخدم المسافات حول المعاملات (operators)، وبعد الفواصل، وبعد النقطتين، وبعد الفاصلة المنقوطة، وبعد فتح قوس ما { وقبل إغلاقه أيضًا }. sum = 1 + 2 a, b = 1, 2 1 > 2 ? true : false; puts 'Hi' [1, 2, 3].each { |e| puts e } لا تضع أبدًا مسافة فارغة قبل الفاصلة. result = func(a, b) لا تضع مسافة داخل كتلة وسطاء الأنبوب (pipe)، بل ضع واحدًا بين الوسطاء في الكتلة، وواحدًا آخر خارج كتلة وسطاء الأنبوب. # bad {}.each { | x, y |puts x } # good {}.each { |x, y| puts x } لا تضع مسافات بين إشارة التعجب ! ومعاملاتها. !something لا تترك فارغات بعد الأقواس من نوع ( و[ أو قبلها ) و]. some(arg).other [1, 2, 3].length تجنب وضع المسافات عند إنشاء السلاسل النصية. # bad var = "This #{ foobar } is interpolated." # good var = "This #{foobar} is interpolated." لا تستخدم مسافة إضافية في النطاق الحرفي (range literals). # bad (0 ... coll).each do |item| # good (0...coll).each do |item| الأسطر الجديدة أضف سطرًا جديدًا بعد الجملة الشرطية if ذات الشروط المتعددة لتصبح في عدة أسطر، ولتساعد في التفريق بين الشروط وجسم الشرط. if @reservation_alteration.checkin == @reservation.start_date && @reservation_alteration.checkout == (@reservation.start_date + @reservation.nights) redirect_to_alteration @reservation_alteration end أضف سطرًا جديدًا بعد نهاية الجمل الشرطية، والكتل، والبيانات …إلخ. if robot.is_awesome? send_robot_present end robot.add_trait(:human_like_intelligence) لا تضف أسطرًا جديدةً فارغةً بين المناطق ذات مسافات بادئة مختلفة (مثلًا حول أجزاء الصنف أو أجسام الوحدة). # bad class Foo def bar # body omitted end end # good class Foo def bar # body omitted end end أضف سطرًا جديدًا فارغًا بين الدوالّ. def a end def b end أضف سطرًا فارغًا لفصل البيانات المترابطة في الدوالّ لتشكيلّ فقرات منطقية داخلها. def transformorize_car car = manufacture(options) t = transformer(robot, disguise) car.after_market_mod! t.transform(car) car.assign_cool_name! fleet.add(car) car end أضف سطرًا فارغًا في نهاية كل ملف، ولا تضف أبدًا عدة أسطر. طول السطر حافظ على كلّ سطر من الشيفرة البرمجية ليكون بطول مناسب للقراءة، وابقِ طول الأسطر أقل من 100 محرف (إليك السبب) إلا إن كان لديك سبب وجيه لجعله أطول من ذلك. التعليقات كُتِبَ هذا الشرح باستعانة كبيرة من دليل Google لتنسيق الشيفرة البرمجية للغة C++‎ ولغة Python. تعليقات على مستوى الملف/الصنف عند التعريف عن صنف ما يجب أن يوجد تعليق مصاحب له يصف ماهيّة الصنف وكيفية استخدامه. يجب أن يملك الملف الذي لا يحتوي على أصناف، أو يحتوي على أكثر من صنف على تعليق في أعلاه يصف محتوياته. # Automatic conversion of one locale to another where it is possible, like # American to British English. module Translation # Class for converting between text between similar locales. # Right now only conversion between American English -> British, Canadian, # Australian, New Zealand variations is provided. class PrimAndProper def initialize @converters = { :en => { :"en-AU" => AmericanToAustralian.new, :"en-CA" => AmericanToCanadian.new, :"en-GB" => AmericanToBritish.new, :"en-NZ" => AmericanToKiwi.new, } } end ... # Applies transforms to American English that are common to # variants of all other English colonies. class AmericanToColonial ... end # Converts American to British English. # In addition to general Colonial English variations, changes "apartment" # to "flat". class AmericanToBritish < AmericanToColonial ... end يجب أن تملك جميع الملفات من بينهم ملفات البيانات والإعداد، على تعليقات على مستوى الملف. # List of American-to-British spelling variants. # # This list is made with # lib/tasks/list_american_to_british_spelling_variants.rake. # # It contains words with general spelling variation patterns: # [trave]led/lled, [real]ize/ise, [flav]or/our, [cent]er/re, plus # and these extras: # learned/learnt, practices/practises, airplane/aeroplane, ... sectarianizes: sectarianises neutralization: neutralisation ... تعليقات الدالة يجب أن يكون هنالك تعليقات عند تعريف كلّ دالة وتكون قبلها مباشرة لتصف ما تؤديه هذه الدالة وكيفية استخدامها، ويجب أن تكون هذه الملفات وصفية ("يُفتح الملف") بدلًا من أمرية ("افتح الملف"). التعليقات التي تصف الدالّة، لا تشرح ما تقوم به الدالّة خطوة بخطوة. عمومًا، لا تصف هذه التعليقات كيفية تنفيذ هذه الدالّة عملها حرفيًا، وإنما، يجب ترك هذه التعليقات لتتخلل الشيفرة البرمجية للدالّة. يجب أن تذكر كلُّ دالّة ما هي مدخلاتها ومخرجاتها، إلا إن كانت لا تستوف جميع المعايير التالية: غير مرئية من الخارج. قصيرة جدًا. واضحة وبديهية. يمكنك استخدام أي تنسيق تريده، في لغة Ruby، يوجد مخططين لتوثيق وشرح عمل الدالّة وهما TomDoc وYARD كما يمكنك أيضًا كتابة تعليقات موجزة: # Returns the fallback locales for the_locale. # If opts[:exclude_default] is set, the default locale, which is otherwise # always the last one in the returned list, will be excluded. # # For example: # fallbacks_for(:"pt-BR") # => [:"pt-BR", :pt, :en] # fallbacks_for(:"pt-BR", :exclude_default => true) # => [:"pt-BR", :pt] def fallbacks_for(the_locale, opts = {}) ... end التعليقات الكتلية والمضمّنة المكان الأخير للتعليقات هو في الأجزاء الصعبة من الشيفرة البرمجية، فعّلق عليها الآن إذا توجب عليك شرحها عند مراجعة القادمة للشيفرة البرمجية. يجب أن تحصل العمليات المعقدة على بضعة أسطر من التعليقات قبل بدء العمليات، بالنسبة للأجزاء غير الواضحة فإنها التعليقات ستكون في نهاية السطر. def fallbacks_for(the_locale, opts = {}) # dup() to produce an array that we can mutate. ret = @fallbacks[the_locale].dup # We make two assumptions here: # 1) There is only one default locale (that is, it has no less-specific # children). # 2) The default locale is just a language. (Like :en, and not :"en-US".) if opts[:exclude_default] && ret.last == default_locale && ret.last != language_from_locale(the_locale) ret.pop end ret end من ناحية أخرى، لا تصف طريقة عمل التعليمات البرمجية، افترض أن الشخص الذي يقرأ شيفرتك البرمجية يعرف اللغة البرمجية (وإن لم يكن ما تحاول القيام به) أفضل منك. وفي سياق متصل: لا تستخدم التعليقات الكتلية، فلا يمكن أن تسبقها بمسافة وليس من السهل رؤيتها كالتعليقات العادية. # bad =begin comment line another comment line =end # good # comment line # another comment line علامات الترقيم والإملاء والنحو اهتم بعلامات الترقيم، والإملاء، والنحو. فمن السهل قراءة التعليقات المكتوبة بعناية على عكس نظيرتها غير المكتوبة بعناية. ينبغي أن تكون التعليقات قابلة للقراءة كنص سردي، مع وجود الحروف الكبيرة وعلامات الترقيم المناسبة. في حالات كثيرة، تكون الجمل الكاملة قابلة للقراءة أكثر من الجمل القصيرة. يمكن للتعليقات القصيرة، مثل الّتي توضع في نهاية آخر سطر في شيفرة برمجية أن تكون أقل رسمية، لكن على كلّ الأحوال يجب أن تكون متسقة مع تنسيقك للتعليقات ككلّ. على الرغم من أنه من المحبط أن يشير مُراجِع لشيفرتك البرمجية لاستخدامك فاصلة عادية في مكان الفاصلة المنقوطة، لذا من المهم أن تحافظ على شيفرتك البرمجية لتكون بمستوى عالٍ من الوضوح وقابلية القراءة، وستُساعدنا علامات الترقيم والكتابة الإملائية الصحيحة واستخدام الصحيح للقواعد النحوية في تحقيق هذا الهدف. تعليقات TODO استخدم تعليقات TODO للشيفرات البرمجية المؤقتة، أو للحلّ قصير الأجل، أو الحلّ الجيد بما يكفي ولكنه ليس مثاليًا. يجب أن تتضمن تعليقات TODO على كلمة TODO بالأحرف الكبيرة متبوعة بالاسم الكامل للشخص الذي يمكنه توفير أفضل حل للمشكلة في الشيفرة المشار إليها من قِبل تعليق TODO بين قوسين. يمكنك إضافة النقطتين ومن ثمّ ضع تعليق يشرح ما يجب القيام به، فالغرض الرئيسي هو تنسيق تعليق TODO ليصبح قابلًا للبحث ليجده الشخص الّذي يمكنه توفير مزيد من التفاصيل عند الطلب. إن تعليق TODO لا يُلزم الشخص المشار إليه لإصلاح المشكلة، ولذلك عند إنشائك تعليق TODO، فغالبًا -إن لم يكن دائمًا- ستكتب اسمك. # bad # TODO(RS): Use proper namespacing for this constant. # bad # TODO(drumm3rz4lyfe): Use proper namespacing for this constant. # good # TODO(Ringo Starr): Use proper namespacing for this constant. شيفرات برمجية بدون تعليقات لا تترك أبدًا شيفراتك البرمجية بدون تعليقات. الدوال تعريف الدوال استخدم الكلمة المفتاحية def مع الأقواس عند وجود وسطاء، واحذف الأقواس عندما لا تقبل الدوالّ أي وسطاء. def some_method # body omitted end def some_method_with_parameters(arg1, arg2) # body omitted end لا تستخدم الوسطاء الموضوعة افتراضيًا، بل استخدم معاملات الكلمات الرئيسية (keyword) – الموجودة في إصدار لغة روبي Ruby 2.0 أو الأحدث - أو يمكنك استخدام أسماء hash أيضًا. # bad def obliterate(things, gently = true, except = [], at = Time.now) ... end # good def obliterate(things, gently: true, except: [], at: Time.now) ... end # good def obliterate(things, options = {}) options = { :gently => true, # obliterate with soft-delete :except => [], # skip obliterating these things :at => Time.now, # don't obliterate them until later }.merge(options) ... end تجنب الدوالّ المتكونة من سطر واحد، على الرغم من انتشارها، إلا أنه توجد بعض الغرابة حول طريقة صياغتها مما يجعل استخدامها أمرًا غير مرغوب به. # bad def too_much; something; something_else; end # good def some_method # body end دوال الاستدعاء استخدم الأقواس لدالة الاستدعاء في الحالات التالية: إذا كانت الدالة ترجع قيمة. # bad @current_user = User.find_by_id 1964192 # good @current_user = User.find_by_id(1964192) إذا كان الوسيط الأول للدالّة يستخدم الأقواس. # bad put! (x + y) % len, value # good put!((x + y) % len, value) لا تضع أبدًا مسافة بين اسم الدالّة والقوس الأول. # bad f (3 + 2) + 1 # good f(3 + 2) + 1 تجنب الأقواس عند استدعاء الدالّة إذا لم تقبل الدالّة أي وسطاء. # bad nil?() # good nil? ستكون الأقواس اختيارية ما لم تكن الدالة تُعيدّ قيمة (أو لا نهتم بما تُعيده)، أما إذا كان الوسطاء في عدة أسطر، فيمكن للأقواس أن تزيد من قابلية القراءة. # okay render(:partial => 'foo') # okay render :partial => 'foo' في كِلا الحالتين: في حالة قبول الدالة hash كوسيط أخير اختياري، لا تستخدم الأقواس { أو } أثناء الاستدعاء. # bad get '/v1/reservations', { :id => 54875 } # good get '/v1/reservations', :id => 54875 التعابير الشرطيّة الكلمات المفتاحية للجمل الشرطية لا تستخدم الكلمة المفتاحية then للجملة الشرطية if/unless المتعددة الأسطر. # bad if some_condition then ... end # good if some_condition ... end لا تستخدم الكلمة المفتاحية do مع while أو until المتعددات الأسطر. # bad while x > 5 do ... end until x > 5 do ... end # good while x > 5 ... end until x > 5 ... end إن الكلمات المفتاحية and وor وnot محظورة، فهي لا تستحق العناء، استخدم دائمًا && و|| و! بدلًا منها. يمكنك استخدام المعدِل if/unless عندما يكون الجسم بسيط والشرط بسيط وكلّ شيء في سطر واحد، وخلافًا لذلك، تجنب استخدام if/unless. # bad - this doesn't fit on one line add_trebuchet_experiments_on_page(request_opts[:trebuchet_experiments_on_page]) if request_opts[:trebuchet_experiments_on_page] && !request_opts[:trebuchet_experiments_on_page].empty? # okay if request_opts[:trebuchet_experiments_on_page] && !request_opts[:trebuchet_experiments_on_page].empty? add_trebuchet_experiments_on_page(request_opts[:trebuchet_experiments_on_page]) end # bad - this is complex and deserves multiple lines and a comment parts[i] = part.to_i(INTEGER_BASE) if !part.nil? && [0, 2, 3].include?(i) # okay return if reconciled? لا تستخدم أبدًا الكلمة المفتاحية unless مع else، أعد كتابة الشرط لتصبح الحالة الصحيحة الأولى أولًا. # bad unless success? puts 'failure' else puts 'success' end # good if success? puts 'success' else puts 'failure' end تجنب unless مع الشروط المتعددة. # bad unless foo? && bar? ... end # okay if !(foo? && bar?) ... end تجنب استخدام unless مع معاملات الموازنة فإن استطعت استخدام الشرط if مع عكس الشرط الموجود في unless ففعل ذلك. # bad unless x == 10 ... end # good if x != 10 ... end # bad unless x < 10 ... end # good if x >= 10 ... end # ok unless x === 10 ... end لا تستخدم أقواسًا حول الشروط if/unless/while. # bad if (x > 10) ... end # good if x > 10 ... end المعامل الثلاثي تجنب استخدام العامل الثلاثي (:?) إلا في الحالات الّتي تكون فيها جميع التعابير بسيطة، إلا أنه يمكنك استخدامه بدلًا من if/then/else/end في الشروط المتكونة من سطر واحد. # bad result = if some_condition then something else something_else end # good result = some_condition ? something : something_else استخدم تعبير واحد لكلّ فرع في المعامل الثلاثي، كذلك يجب ألا يكون المعامل الثلاثي متشعبًا، إذ يُفضّل استخدام بنية if/else في هذه الحالات. # bad some_condition ? (nested_condition ? nested_something : nested_something_else) : something_else # good if some_condition nested_condition ? nested_something : nested_something_else else something_else end تجنب الشروط المتعدّدة في المعامل الثلاثي إذ يُفضّل استخدام الأخير مع الشروط الفردية. تجنب الأسطر المتعدّدة :? في المعامل الثلاثي، واستخدم if/then/else/end بدلا منه. # bad some_really_long_condition_that_might_make_you_want_to_split_lines ? something : something_else # good if some_really_long_condition_that_might_make_you_want_to_split_lines something else something_else end الشروط المتشعّبة تجنب استخدام الشروط المتشعّبة لزيادة التحكم بالشيفرة (يمكنك الاطلاع على هذا المقال لمزيد من المعلومات). يُفضّل استخدام تعبير الحراسة (guard clause) عندما تريد التحقق بيانات غير صالحة، فشرط الحراسة هو عبارة شرطية في أعلى الدالة التي تعيد النتيجة بأسرع ما يمكن. المبادئ العامة هي: أعدّ القيمة (النتيجة) مباشرة بمجرد معرفتك بأن الدالّة لا طائل منها، أو أنها لا تضف أي زيادة حقيقة للشيفرة. قلل التشعّب والمسافات البادئة في الشيفرة البرمجة من خلال إعادة النتيجة بأسرع وقت ممكن. وهذا يجعل الشيفرات البرمجية أسهل للقراءة، وتتطلّب جهدً عقليًا أقل أثناء قراءة الفرع الثاني من الشرط else. ينبغي أن تكون الشروط الجوهرية أو الأكثر أهمية ذات مسافات بادئة أقل. # bad def compute server = find_server if server client = server.client if client request = client.make_request if request process_request(request) end end end end # good def compute server = find_server return unless server client = server.client return unless client request = client.make_request return unless request process_request(request) end يُفضّل استخدام next في الحلقات بدلًا من الكتل الشرطيّة. # bad [0, 1, 2, 3].each do |item| if item > 1 puts item end end # good [0, 1, 2, 3].each do |item| next unless item > 1 puts item end الصياغة لا تستخدم for إلّا إذا كنت تعرّف تمامًا لماذا ستستخدمها، فغالبًا، يجب استخدام المكرّرات (iterator) بدلًا منها، فتعمل for بنفس شروط each (أي أنك ستضيف مستوى جديد من المراوغة للبرنامج) لكن مع عيب صغير، فلا تُعرّف for نطاق جديد (على عكس each) وستظهر المتغيرات المعرّفة في كتلتها خارجيًا. arr = [1, 2, 3] # bad for elem in arr do puts elem end # good arr.each { |elem| puts elem } يفضل استخدام {...} بدلًا من do...end للكتل المكوّنة من سطر واحد، وتجنّب استخدام {...} للكتل المكونة من عدة أسطر (فسَلّسَلةُ عدة أسطر هو شيء قبيح)، واستخدم do...end دائمًا للتحكم في التدفّق ولتعريف الدوالّ، وتجنب استخدام do...end عند السَلّسَلة. names = ["Bozhidar", "Steve", "Sarah"] # good names.each { |name| puts name } # bad names.each do |name| puts name end # good names.each do |name| puts name puts 'yay!' end # bad names.each { |name| puts name puts 'yay!' } # good names.select { |name| name.start_with?("S") }.map { |name| name.upcase } # bad names.select do |name| name.start_with?("S") end.map { |name| name.upcase } سيُجادلنا البعض ويقول أن سَلّسَلَة الأسطر المتعددة تبدو جيّدة عند استخدام {...}، لكن هل سألوا أنفسهم هل هذه الشيفرة البرمجية قابلة للقراءة حقًا. وهل يمكن استخلاص محتوى الكتلة لوضعها في دوالّ فعّالة. استخدم معاملات الإسناد المختصرة كلما كان ذلك ممكنًا. # bad x = x + y x = x * y x = x**y x = x / y x = x || y x = x && y # good x += y x *= y x **= y x /= y x ||= y x &&= y تجنب الفواصل المنقوطة باستثناء حالة تعريفك لصنف ذو سطر واحد، وعندما يكون من الملائم استخدام فاصلة منقوطة، ينبغي أن تكون متاخمة مباشرةً للعبارة التي ستنهيها. لا يجب ترك مسافة قبل الفاصلة المنقوطة. # bad puts 'foobar'; # superfluous semicolon puts 'foo'; puts 'bar' # two expressions on the same line # good puts 'foobar' puts 'foo' puts 'bar' puts 'foo', 'bar' # this applies to puts in particular استخدم :: للثوابت المرجعيّة فقط (ويشمل هذا الأصناف والوحدات) والبواني (مثل: Array()‎ أو Nokogiri::HTML()‎) ولا تستخدم :: لاستدعاء الدالّة العادية. # bad SomeClass::some_method some_object::some_method # good SomeClass.some_method some_object.some_method SomeModule::SomeClass::SOME_CONST SomeModule::SomeClass() تجنب استخدام return عندما تكون غير مطلوبة. # bad def some_method(some_arr) return some_arr.size end # good def some_method(some_arr) some_arr.size end لا تستخدم القيمة المُعادة من المساواة = في الجمل الشرطيّة. # bad - shows intended use of assignment if (v = array.grep(/foo/)) ... end # bad if v = array.grep(/foo/) ... end # good v = array.grep(/foo/) if v ... end استخدم ‎||=‎ كما تريد لتهيئة المتغيّرات. # set name to Bozhidar, only if it's nil or false name ||= 'Bozhidar' لا تستخدم ‎||=‎ لتهيئة المتغيرات المنطقيّة، (فكر في ما سيحدث إذا كانت القيمة الحالية تساوي false). # bad - would set enabled to true even if it was false enabled ||= true # good enabled = true if enabled.nil? استخدم ‎.call الصريحة عند استدعاء lambda. # bad lambda.(x, y) # good lambda.call(x, y) تجنب استخدام متغيرات الخاصة على نمط بيرل Perl (مثل: $ أو ‎$0-9 …إلخ)، فهي مبهمة فعلًا. واستخدامها سيُعيقنا بكلّ شيئ عدا في السكربتات ذات السطر الواحد. يُفضّل اصدارات ذات الشكل الطويل مثل: ‎$PROGRAM_NAME. استخدم الاختصار &: عندما تأخذ كتلة الدالّة وسيط واحد فقط، ويعمل الجسم على قراءة سِمة أو استدعاء دالّة بدون وسطاء . # bad bluths.map { |bluth| bluth.occupation } bluths.select { |bluth| bluth.blue_self? } # good bluths.map(&:occupation) bluths.select(&:blue_self?) يفضلُ استخدام some_method على self.some_method عند استدعاء الدالّة داخليًا. # bad def end_date self.start_date + self.nights end # good def end_date start_date + nights end يجب عليك استخدام self.‎ في الحالات الثلاثة التالية: عند تعريف دالّة صنف: def self.some_method. عندما تكون self هي نموذج سجل فعالّ ActiveRecord ويكون الجانب الأيسر هو استدعاء دالّة اِسناد بما في ذلك اِسناد سِمة: self.guest = user. الإشارة للصنف داخليًا: self.class. عند تعريف كائن من أي نوع قابل للتحويل وتريده أن يكون ثابتًا، تأكد من استدعاء freeze عليه، ومن الأمثلة الشائعة على ذلك هي السلاسل النصية، والمصفوفات، ومتغيرات من نوع hash (انظر لهذا المقال لمزيد من المعلومات). والسبب في ذلك أن الثوابت في لفة روبي (Ruby) هي أنواع قابلة للتحويل، وبعضها الآخر ليس كذلك. ستتأكد من عدم قابليتها للتحويل عند استدعاء freeze عليها لأنه سيصدر استثناء عند محاولة تعديلهم إن كانت غير قابلة للتعديل، وبالنسبة للسلاسل النصية، سيُسمح بالتعامل معهم لنسخ روبي ذات الاصدار الأقدم من 2.2. # bad class Color RED = 'red' BLUE = 'blue' GREEN = 'green' ALL_COLORS = [ RED, BLUE, GREEN, ] COLOR_TO_RGB = { RED => 0xFF0000, BLUE => 0x0000FF, GREEN => 0x00FF00, } end # good class Color RED = 'red'.freeze BLUE = 'blue'.freeze GREEN = 'green'.freeze ALL_COLORS = [ RED, BLUE, GREEN, ].freeze COLOR_TO_RGB = { RED => 0xFF0000, BLUE => 0x0000FF, GREEN => 0x00FF00, }.freeze end قواعد التسمية استخدم أسلوب التسمية snake_case (جميع حروف اسم المتغير صغيرة) للدوالّ والمتغيرات. استخدم أسلوب التسمية camelCase (تكبير أول حرف من كلّ كلمة في اسم المتغير عدا أول كلمة) للأصناف والوحدات. (احتفظ بالاختصارات مثل" HTTP وRFC وXML بحالة حروف كبيرة). استخدم أسلوب التسمية SCREAMING_SNAKE_CASE (جميع حروف اسم المتغير كبيرة) للثوابت الأخرى. يجب أن تنتهي الدوالّ الإسنادية (الّتي ترجع قيمة منطقية) بعلامة استفهام. (هكذا: Array#empty?‎). يجب أن تنتهي أسماء الدوالّ التي يُحتمل أن تكون خطرة (مثل الدوالّ الّتي تُعدلّ self أو الوسطاء، أو exit!‎ …إلخ) بعلامة تعجب، ويجب أن تتواجد الدوالّ الخطرة (bang) إذا تتواجدت الدوالّ غير الخطرة (non-bang) معها (يمكنك الاطلاع على المقال للمزيد من المعلومات). سمِّ متغيّرات رمي الأخطاء _. version = '3.2.1' major_version, minor_version, _ = version.split('.') الأصناف تجنب استخدام متغيرات (@@) بسبب سلوكهم السيئ في الوراثة. class Parent @@class_var = 'parent' def self.print_class_var puts @@class_var end end class Child < Parent @@class_var = 'child' end Parent.print_class_var # => will print "child" كما ترى أن جميع الأصناف في التسلسل الهرمي للصنف تتشارك في متغير صنف واحد، ويجب أن تُفضّل متغيّرات مثيل الصنف على متغيّرات الصنف. استخدم def self.method لتعريف الدوالّ المتفرّدة (Singleton Methods)، وسيجعل هذا الدوالّ أكثر مقاومة لتغييرات إعادة الهيكلة. class TestClass # bad def TestClass.some_method ... end # good def self.some_other_method ... end تجنب استخدام class << self إلا عند الضرورة، فمثلًا، الجالبات المفردة (single accessors) والسمات مستعارة (aliased attributes). class TestClass # bad class << self def first_method ... end def second_method_etc ... end end # good class << self attr_accessor :per_page alias_method :nwo, :find_by_name_with_owner end def self.first_method ... end def self.second_method_etc ... end end ضع مسافة بادئة لدوالّ public وprotected وprivate بقدر تعريف الدالّة الّتي ينتمون إليها، واترك سطرًا فارغًا أعلاها وأسفلها. class SomeClass def public_method # ... end private def private_method # ... end end الاستثناءات لا تستخدم الاستثناءات للتحكم بسير البرنامج. # bad begin n / d rescue ZeroDivisionError puts "Cannot divide by 0!" end # good if d.zero? puts "Cannot divide by 0!" else n / d end تجنب إنقاذ (rescue) صنف الاستثناء Exception. # bad begin # an exception occurs here rescue Exception # exception handling end # good begin # an exception occurs here rescue StandardError # exception handling end # acceptable begin # an exception occurs here rescue # exception handling end لا تحدّد في استثناء RuntimeError وسيطين فقط في الكلمة المفتاحية raise، ومن الأفضل استخدام خطأ الأصناف الفرعية لتوضيح الخطأ وشرحه بطريقة أفضل. # bad raise RuntimeError, 'message' # better - RuntimeError is implicit here raise 'message' # best class MyExplicitError < RuntimeError; end raise MyExplicitError يُفضّل توفير صنف استثناء والرسالة كوسيطين في الكلمة المفتاحية raise بدلًا من نسخة استثناء عادي. # bad raise SomeException.new('message') # Note that there is no way to do `raise SomeException.new('message'), backtrace`. # good raise SomeException, 'message' # Consistent with `raise SomeException, 'message', backtrace`. تجنب استخدام rescue في شكل مُعدّل (Modifier). # bad read_file rescue handle_error($!) # good begin read_file rescue Errno:ENOENT => ex handle_error(ex) end التجميعات (Collections) يفضّل استخدام الخارطة (أو الخريطة) map بدلًا من تجميعة collect. يفضّل استخدام detect على find، فاستخدام find غامض بسبب دالّة find الخاصة بكائن السجل الغعال (ActiveRecord) وسيُظهر detect على أنك تعمل مع تجميعة في لغة روبي وليس كائن سجل فعال. يُفضّل استخدام reduce على inject. يُفضّل استخدام size على length وcount لتحسين أداء الشيفرة. يفّضل استخدام تدوين الإنشاء (creation notation) ومصفوفة مجزئة مصنّفة النوع (Literal)، إلّا إذا كنت بحاجة لتمرير الوسطاء لمنشئيها. # bad arr = Array.new hash = Hash.new # good arr = [] hash = {} # good because constructor requires parameters x = Hash.new { |h, k| h[k] = {} } يُفضّل استخدام Array#join بدلًا من Array#*‎ لوضوح الشيفرة. # bad %w(one two three) * ', ' # => 'one, two, three' # good %w(one two three).join(', ') # => 'one, two, three' استخدم الرموز (symbols) بدلًا من السلاسل النصية كمفاتيح لجدول Hash. # bad hash = { 'one' => 1, 'two' => 2, 'three' => 3 } # good hash = { :one => 1, :two => 2, :three => 3 } على نحو مماثل، استخدم رموز واضحة بدلًا من رموز السلاسل النصية عندما يكون ذلك ممكنًا. # bad :"symbol" # good :symbol استخدم Hash#key?‎ بدلًا من Hash#has_key?‎ وHash#value?‎ بدلًا من Hash#has_value?‎. فوفقًا لماتز (Matz)، تعدّ الأشكال الطويلة مُهملة. # bad hash.has_key?(:test) hash.has_value?(value) # good hash.key?(:test) hash.value?(value) استخدم جدول hash متعدّد الأسطر لأنه يجعل الشيفرة أكثر قابليّة للقراءة، واستخدم الفواصل التذييلية للتأكد من أن أي تغيّر للوسطاء لن يتسبب بتغيّرات غريبة لشكل هذه الأسطر، وذلك عندما لا يتغيّر منطق الحلّ. hash = { :protocol => 'https', :only_path => false, :controller => :users, :action => :set_password, :redirect => @redirect_url, :secret => @secret, } استخدم الفاصلة التذيليّة في المصفوفة الّتي تمتد لأكثر من سطر واحد. # good array = [1, 2, 3] # good array = [ "car", "bear", "plane", "zoo", ] السلاسل النصية يُفضّل توليد السلسلة النصية (string interpolation) بدلًا من دمج السِلاسل النصية: # bad email_with_name = user.name + ' <' + user.email + '>' # good email_with_name = "#{user.name} <#{user.email}>" وعلاوة على ذلك، لا تنس توليد نمط روبي 1.9، لنفترض أنك تُنشئ مفاتيح ذاكرة التخزين المؤقت كالتالي: CACHE_KEY = '_store' cache.write(@user.id + CACHE_KEY) مرةً أخرى يُفضّل توليد السلسلة النصية (string interpolation) بدلًا من دمج السِلاسل النصية: CACHE_KEY = '%d_store' cache.write(CACHE_KEY % @user.id) تجنب استخدام String#+‎ عندما تحتاج لإنشاء قطع بيانات كبيرة، واستخدم بدلًا من ذلك String#<<‎. تحور عملية دمج نسخ السلاسل النصية في مكانها، وهي أسرع دومًا من String#+‎، والّذي ينشئ مجموعة جديدة من كائنات السلسلة النصية. # good and also fast story = '' story << 'The Ugly Duckling' paragraphs.each do |paragraph| story << paragraph end استخدم \ في نهاية السطر بدلًا من + أو << لدمج السلاسل النصية متعددة الأسطر. # bad "Some string is really long and " + "spans multiple lines." "Some string is really long and " << "spans multiple lines." # good "Some string is really long and " \ "spans multiple lines." التعابير النمطية تجنب استخدام ‎$1-9 لأنه من الصعب متابعة ما يحتويه، واستخدم بدلًا منه المجموعات المسماة (Named groups). # bad /(regexp)/ =~ string ... process $1 # good /(?<meaningful_var>regexp)/ =~ string ... process meaningful_var كن حذرًا عند استخدام ^ و$ لأنها تطابق بداية/نهاية السطر، وليس نهايات السلسلة النصية، فإذا أردت مطابقة كامل السلسلة النصية فاستخدم: ‎\A و‎\z. string = "some injection\nusername" string[/^username$/] # matches string[/\Ausername\z/] # don't match استخدم المُعدّل x للتعابير النمطية المعقدة، فهذا سيجعلها أكثر قابلية للقراءة، ويمكنك إضافة بعض التعليقات المفيدة، فقط كن حذرًا لأنه سيتجاهل المسافات. regexp = %r{ start # some text \s # white space char (group) # first group (?:alt1|alt2) # some alternation end }x محارف النسبة المئوية يفضل استخدام الأقواس الهلالية على الأقواس المعقوصة، أو الأقواس المعقوفة، أو حتى الأنابيب (pipes) عند استخدام محددات مجردة % للتناسق ولأن سلوك محارف % أقرب إلى استدعاء الدالّة منه إلى البدائل. # bad %w[date locale] %w{date locale} %w|date locale| # good %w(date locale) استخدم ‎%w كما يحلو لك. STATES = %w(draft open closed) استخدم ()‎% للسلاسل النصية المتكونة من سطر واحد، والّتي تتطلّب عملية توليد سلسلة وعلامات الاقتباس المزدوجة المضمّنة، وبالنسبة للسلاسل النصية المتكونة من عدة أسطر، يُفضل استخدام heredocs. # bad - no interpolation needed %(Welcome, Jane!) # should be 'Welcome, Jane!' # bad - no double-quotes %(This is #{quality} style) # should be "This is #{quality} style" # bad - multiple lines %(Welcome, Jane!\nPlease enjoy your stay at #{location}\nCheers!) # should be a heredoc. # good - requires interpolation, has quotes, single line %(Welcome, #{name}!) استخدم ‎٪r للتعابير النمطية فقط والّتي تتطابق مع أكثر من محرف /. # bad %r(\s+) # still bad %r(^/(.*)$) # should be /^\/(.*)$/ # good %r(^/blog/2011/(.*)$) تجنب استخدام ‎%x إلا إذا أردت استدعاء أمر مع علامة الاقتباس الخلفية (`) - وهو أمر مستبعد إلى حد ما -. # bad date = %x(date) # good date = `date` echo = %x(echo `date`) ريلز عند العودة فورًا بعد استدعاء render أو redirect_to، ضع الكلمة المفتاحية return في السطر التالي وليس في نفس السطر. # bad render :text => 'Howdy' and return # good render :text => 'Howdy' return # still bad render :text => 'Howdy' and return if foo.present? # good if foo.present? render :text => 'Howdy' return end نطاقات عند تعريف نطاقات نموذج السجل الفعّال (ActiveRecord)، أحِط العلاقة بـ lambda، وخلافًا لذلك سيفرض الاتصال المجردة لقاعدة البيانات تنفيذه في وقت تحميل الصنف (مشابهة لطريقة بدء التشغيل). # bad scope :foo, where(:bar => 1) # good scope :foo, -> { where(:bar => 1) } انسجم مع الشيفرة إذا كنت تعدل شيفرة برمجية ما، فألقِ نظرة عليها لعدة دقائق، وحدّد أسلوب تنسيقها، فإن كانوا يستخدمون مسافات حول جميع المعاملات الرياضية، فانسجم مع هذه الطريقة، وإن كان للتعليقات صناديق صغيرة من المربعات hash حولها، فانسجم معها أيضًا. الهدف من امتلاك مبادئ توجيهية لتنسيق الشيفرة هي الحصول على مفردات مشتركة من الشيفرات ليتمكن الناس من فهم ما تقوله بدلًا من كيف تقوله، واستعرضنا هنا قواعد التنسيق العالمية حتى يعرف الناس المفردات، لكن التنسيقات شيفراتك المحلية مهمة أيضًا، فإذا كانت الشيفرة البرمجية الّتي ستضيفها تختلف اختلافًا كبيرًا عن الشيفرات البرمجية الّتي حولها فعندها ستجعل قراءة الشيفرة صعبة ولذلك تجنب هذا الأمر - دليل Google لتنسيق الشيفرة البرمجية للغة C++‎ ترجمة لدليل Ruby Style Guide من شركة Airbnb على موقع GitHub
  2. المنهجية الأكثر منطقية لتنسيق شيفرة ملفات CSS وSASS المصطلحات التصريح عن قاعدة التصريح عن قاعدة (rule declaration): هو الاسم المختار لمحدّد معين (أو لمجموعة من المحددات) مع مجموعة من الخاصيات المصاحبة. إليك مثالًا لتوضيح الأمر: .listing { font-size: 18px; line-height: 1.2; } المحددات إن المحددات التي رأينها عند التصريح عن قاعدة، هي الجزء الّذي سيُحدد طريقة تنسيق العناصر في شجرة DOM، وذلك بحسب الخاصيات المعرّفة في المحدّد. يمكن أن تُطابقُ المحددات عناصر HTML، أو صنف العنصر (class)، أو معرّف العنصر (ID)، أو أي سِمة من سماته. وهذه بعض الأمثلة عن المحدّدات: .my-element-class { /* ... */ } [aria-hidden] { /* ... */ } الخاصيات أخيرًا، الخاصيات هي ما يمنح العناصر المحددة تنسيقها والتي صرحنا عنها في المحدد. والخاصيات هي أزواج مؤلفة من الخاصية وقيمتها، ويمكن للقاعدة المصرح عنها أن تحتوي على تعريف خاصية أو أكثر. وهكذا ستبدو طريقة التصريح عن الخاصيات: /* بعض المحددات */ { background: #f1f1f1; color: #333; } ملفات CSS التنسيق استخدم الزر (tabs) بمقدار مسافتين (وتسمى أيضًا Soft-Tab نظرًا لأن زر Tab الإفتراضي يكون ثمان مسافات). يفضل استخدام الشرطة العادية (وهي -) بدل تسمية الأصناف بأسلوب سنام الجمل (camelCasing). لا بأس باستخدام الشرطات السفلية والتسمية بأسلوب PascalCasing (وهي طريقة مشابهة لطريقة سنام الجمل إلا أنه يجب أن يكون أول حرف كبير) إن كنت تستخدم BEM ( والّتي سنتطرق إليها لاحقًا في هذا الدليل). لا تستخدم مُحدِّدات المُعرِّفات (ID). عند استخدام محددات متعددة في تصريح واحد لقاعدة ما، امنح كل مُحدّد سطر خاص به. ضع مسافة قبل قوس الافتتاح { عند التصريح عن قاعدة. ضع مسافة بعد : وليس قبله في الخاصيات. ضع أقواس الإغلاق } عند التصريح عن قاعدة في سطر جديد. ضع أسطر فارغة بين تصريحات القواعد. طريقة تنسيق سيئة .avatar{ border-radius:50%; border:2px solid white; } .no, .nope, .not_good { // ... } #lol-no { // ... } طريقة تنسيق جيدة .avatar { border-radius: 50%; border: 2px solid white; } .one, .selector, .per-line { // ... } التعليقات يفضلُ استخدام التعليقات السطرية (وهي // في Sass-land) للتعليقات الكتلية. يفضلُ أن تضع التعليق بسطر خاص به. تجنب التعليقات في نهاية السطر. اكتب تعليقات تفصيلية للشيفرة البرمجية التي لا تشرح نفسها بنفسها: استخدام الخاصية z-index. استخدام المميزات التوافقية أو بعض الخدع المخصصة للمتصفحات. OOCSS و BEM نشجع على استخدام مزيج من OOCSS و BEM وذلك للأسباب التالية: يساعدنا هذا المزيج في إنشاء علاقات واضحة وصارمة بين ملفات التنسيق CSS وملفات HTML. ينشئ مكونات قابلة لإعادة الاستخدام والتركيب. يسمح بتقليل التداخل والتخصيص. يساعد في زيادة قابلية تطوير ملفات التنسيق. OOCSS (اختصارًا "Object Oriented CSS") وهي التنسيق كائني التوجه لملفات التنسيق، هو نهج لكتابة تنسيق CSS يشجعك على التفكير بملفات التنسيق على أنها مجموعة من "الكائنات": أي أنها قابلة لإعادة استخدام أجزاءٍ منها، وقابلة للتكرار، ويمكن استخدامها بشكل مستقل عبر موقع الوِب. لمزيد من المعلومات يمكنك الاطلاع على: توثيق نيكول سوليفان (Nicole Sullivan's)‏ OOCSS wiki. مقال مدخل إلى OOCSS‏ (Introduction to OOCSS). BEM (اختصارًا Block-Element-Modifier) معدلّ عنصر الكتلة وهو عبارة عن اصطلاح تسمية للأصناف في HTML و CSS. طوّر في الأصل من خلال شركة Yandex ووضعوا في حسبانهم الشيفرات البرمجية الكبيرة وقابلية التطوّر والتوسع للشيفرة، ويمكن اعتبارها بمثابة مجموعة قوية من المبادئ التوجيهية لتطبيق OOCSS. لمزيد من المعلومات يمكنك الاطلاع على: خدع CSS دليلك إلى منهجية BEM - CSS مدخل إلى BEM‏ (introduction to BEM). نوصي بالتنويع بأشكال BEM مع "كتل" مسماة بأسلوب PascalCased، والّتي تعمل بطريقة جيدة خصيصًا عند دمجها مع المكونات (مثلما يحدث في React). لا تزال تُستخدم الشُرط السفلية والشرطات للمعدلات وسلالتهم (من سيرثُ منهم). مثال // ListingCard.jsx function ListingCard() { return ( <article class="ListingCard ListingCard--featured"> <h1 class="ListingCard__title">Adorable 2BR in the sunny Mission</h1> <div class="ListingCard__content"> <p>Vestibulum id ligula porta felis euismod semper.</p> </div> </article> ); } /* ListingCard.css */ .ListingCard { } .ListingCard--featured { } .ListingCard__title { } .ListingCard__content { } ‎.ListingCard: وهي عبارة عن "كتلة" وتمثل مكون عالي المستوى. ‎.ListingCard__title: عبارة عن "عنصر" وتمثل سلالة ‎.ListingCard التي تساعد في تكوين الكتلة ككلّ. ‎.ListingCard--featured: وهو عبارة عن "معدلّ" ويمثل الحالات أو التشكيلات المتختلفة لكتلة ‎.ListingCard. محددات المعرفات في حين أنه من الممكن تحديد العناصر حسب المعرّف في CSS، إلا أن هذه المحددات تعدّ أسلوبًا مضادًا للنمط (anti-pattern). تقدم محدّدات المعرّفات مستوى عاليًا من التخصيص غير ضروري للتصريح عن قاعدة، بل ولن يمكننا إعادة استخدام هذه المحدّدات. لمزيد من المعلومات حول هذا الموضوع، أحيلك لهذه المقالة CSS Wizardry's article والّتي تتحدث عن طريقة التعامل مع التخصيص. خطاف الجافاسكربت تجنب ربط نفس الصنف في كلّ من ملفات التنسيق CSS والجافاسكربت. لأنه غالبًا ما سيُؤدي لخلط الاثنين معًا، وبأحسن الأحوال سيؤدي ذلك لإضاعة الوقت أثناء إعادة البناء عندما يتعين على المطوّر العودة لكلّ صنف يغيره، وفي أسوأ الأحوال، سيخشى المطوّرون إجراء تعديلات عليها خوفًا من كسر الوظيفة ما المرتبطة بها. نوصي بإنشاء أصناف مخصصة للربط مع جافاسكربت مسبوقة بـ ‎.js-‎: الحدود استخدم 0 بدلًا من none لتحديد أن النمط ليس له حدود. الطريقة السيئة .foo { border: none; } الطريقة الجيدة .foo { border: 0; } ملفات SASS الصياغة استخدم الصيغة ‎.scss، ولا تستخدم أبدًا الصيغة ‎.sass الأصلي رتب شيفرة ملفات CSS العادية وعمليات التضمين ‎@include بطريقة منطقي (انظر أدناه) ترتيب طريقة التصريح عن الخاصيات التصريح عن خاصية أدرج جميع التصاريح القياسية للخاصيات، وأي شيء آخر ما عدا عمليات التضمين ‎@include أو المحددات المتشعّية. .btn-green { background: green; font-weight: bold; // ... } تصريح عن عملية تضمين ‎@include إن تجميع ووضع جميع عمليات التضمين ‎@include في نهاية المحدّد سيسهل قراءة المحدد بالكامل. .btn-green { background: green; font-weight: bold; @include transition(background 0.5s ease); // ... } المحددات المتشعّبة يكون ترتيب المحددات المتشعّبة ( إن اضطررنا لاستخدامها) بعد عمليات التضمين ولا شيء بعدها. أضف مسافة بين عمليات التصريح عن القواعد والمحددات المتشعّبة، وكذلك بين المحددات المتشعّبة المتجاورة. طبّق نفس الإرشادات المذكورة سابقًا على المحددات المتشعّبة الخاصة بك. .btn { background: green; font-weight: bold; @include transition(background 0.5s ease); .icon { margin-right: 10px; } } المتغيرات يفضل استخدام أسماء المتغيرات التي تحتوي على شرطة عادية (مثل: ‎$my-variable) بدلًا من أسماء متغيرات مثل أسلوب تسمية سنام الجمل (camelCased) -تكبير أول حرف من كلّ كلمة في اسم المتغير عدا أول كلمة- أو أسلوب snake_cased -جميع حروف اسم المتغير صغيرة-. لا مشكلة بإضافة شرطة سفلية لأسماء المتغيرات الّتي نود استخدامها فقط داخل نفس الملف(هكذا: ‎$_my-variable). المخاليط يجب استخدام المخاليط (mixins) لتصغير شيفرتك البرمجية، أو لتوضيحها، أو لعزل تعقيدها - بطريقة مشابهة تمامًا للدوالّ المسماة جيدًا. يمكن للمخاليط الّتي لا تقبل أي وسطاء أن تكون مفيدة لذلك، ولكن انتبه فأذا لم تستخدم خوارزميات ضغط للملفات المشروع (مثل خوارزمية gzip)، فسيُساهم ذلك في تكرار الشيفرات البرمجية غير الضرورية في التنسيقات الناتجة. توسعة المحدّدات المُركّبة يجب تجنب التوسعة باستخدام التعليمة ‎@extend لأنه يسلك سلوك غير معروف للبعض وغالبًا ما يكون خطير، خاصة عند استخدامه مع محددات متشعّبة. حتى إن توسيع محددات العناصر الأساسية عالية المستوى يمكن أن يسبب مشاكل إذا انتهى الأمر بتغيير ترتيب المحددات في وقت لاحق (فمثلًا إذا كانت هذه المحددات في ملفات أخرى، وتغير ترتيب تحميل الملفات فهذا سيُشكل مشكلة). يجب أن تتعامل خوارزمية الضغط Gzipping مع عمليات تصغير أحجام الملفات الّتي ستحصلُ عليها باستخدام ‎@extend، وستمنحُك المخاليط تصغيرًا جيدًا لملفات التنسيق خاصتك. المحددات المتشعّبة ** لا تنشئ محددات متشعّبة بعمق يزيد عن ثلاثة مستويات!** .page-container { .content { .profile { // STOP! } } } عندما تصبح المحددات طويلة، من المحتمل أنك تضطر أن لتكتب تنسيق لديه المميزات التالية: مقترن بشدة بملفات HTML (وهذا يعدّ نقطة ضعف في التنسيق) -أو محدد للغاية (وهذا يعدّ نقطة قوة في التنسيق) -أو غير قابل لإعادة الاستخدام. مرة أخرى: لا تستخدم نهائيًا محددات المعرّفات المتشعبة! في حال وجب عليك استخدام محدّد المعرّف في البداية (ويجب أن تحاول بأقصى جهدك أن تتجنبه)، فلا يجب أن تكون متشعّبة أبدًا. وإن وقعت بهذه المشكلة، فعاود النظر في الشيفرة البرمجية أو أسأل نفسك لما كلّ هذا التخصيص الشديد؟ وإن أردت كتابة ملفات HTML وCSS ذات بنية جيدة، فيجب عليك ألا تستخدم محدّدات المعرّفات المتشعبة نهائيًا. ترجمة -وبتصرف- لدليل Airbnb لتنسيق ملفات CSS وSASS‏ (Airbnb CSS / Sass Styleguide) الموجود على موقع GitHub
  3. سنقوم اليوم بتطبيق مجموعة من التعديلات لتشكيل التصميم باستخدام الخطوط، ثم سننهي العمل بطباعته على القماش لتحقيق المظهر العتيق (القديم). لإكمال المظهر القتالي لتصاميم تي شيرت الملاكمة والفنون القتالية المختلطة، فقد قمت بإنشاء تصميم مُستند إلى Gracie Jiu Jitsu. في حين أن هذا النوع من التصاميم العتيقة لديه مظهر الكتابة بخط اليد، سوف نستخدم عرض الخطوط لتشكيل تصميمنا، مع بعض التعديلات باستخدام برنامج إليستريتور لإنتاج التصميم. ثم سنُعطي العمل الفني مظهر الـ تي شيرت القديم باستخدام خامات “Washed & Worn” المجانية. العمل باستخدام الخطوط بدلاً من الكتابة بخط اليد يجعل تركيب التصميم أسهل بكثير ويُعطيك القدرة على تعديل أو تغيير الصياغة (الكلمة) إذا احتجت ذلك. سوف أستخدم خطًا رائعًا يُسمى Bloomsbury، هو خط مزيج ما بين خط Sans و خط Serif مع أسلوب كتابة مرسُوم بخط اليد. هذه الخطوط لا تُكمل بعضها البعض بدقة فقط، ولكن تنوع الخط يشمل بعض الزخرفة الرائعة لتزيين تصميمك. قم بإنشاء مجلد جديد في برنامج إليستريتور وقم بتعيين الخطوط المناسبة لك كعناصر نصية. اضغط على مفتاح ALT بلوحة المفاتيح، وقم بسحب النص لعمل نسخة منه. قم بتحرير المحتوى لعمل تهجئة لكلمة Gracie. حدد الحرف الأخير فقط وقم بِاختيار واحدة من الحروف الرسومية البديلة لتطبيق مظهر على النص. اذهب إلى Object>Transform>Shear وقم باختيار “الخيار العمودي Vertical”. قم بتعديل زاوية القص Shear Angle إلى -10° لتجعل النص يتدفق صاعدًا نحو الأعلى. اخْتَر أداة الشكل البيضاوي Ellipse من شريط المهام وقم برسم دائرة حول النص، وادفعها نحو مركز النص، ثم قم بمسح التعبئة الحدود الافتراضية. اختر النوع فى أداة Type on a Path Tool من قائمة أداة النص Type ، ثم اضغط على مسار الدائرة لوضع فقرة من النصوص حول محيطها. استخدم أداة القطارة eyedropper tool لنسخ تنسيق النص المحدد إلى خط Bloomsbury Sans. قم بتعديل الكلمة المحيطة إلى Jiu Jitsu Academy، ثم قم بتغيير التتبع tracking إلى 50 من لوحة الحروف Character panel وقم بإعداد أسلوب النص إلى المنتصف. قم بتفعيل أداة الاختيار المباشرة Direct Selection Tool، واضغط مع السحب في منتصف مسار العنصر لإعادة النص إلى المنتصف. إذاً كانت الأدلة الذكية تعمل Smart Guides>View، فسيظهر لك دليل وردي عندما تكون المحاذاة عمودية تمامًا. قم بتعديل حجم الخط حتى يمتد النص من جهة واحدة إلى الجهة الأخرى من الدائرة، ثم حرك الدائرة بأكملها إلى الأسفل ليكون لديك تخطيط أفضل. اختَر أداة النجمة Star وقم برسم شكل صغير أسفل النص، اضغط على مفتاح ALT+Shift في لوحة المفاتيح بينما تقوم بسحب نسخة إلى الجهة الأخرى، ثم اختر كلاهما وقم بعمل مجموعة Group. اضغط على مفتاح ALT+Shift بلوحة المفاتيح واختر النوع من مسار الدائرة، ثم حرر مفتاح Shift وأعطِ الدائرة نقرةً إضافية لتجعلها العنصر الرئيسي، انقر على زر المحاذاة الأفقية لمحاذاة النجوم بشكل مركزي، دون تحريك العنصر الرئيسي من مكانه. قم بعمل نسخة من عنصر خط Bloomsbury Sans وقم بتعديل النص إلى EST. قلل الحجم وقم بتعيين التتبع tracking إلى 200. ضع عنصر النص هذا في المساحة الفارغة بين عنصُرَي النص الآخرَين. اسحب نسخة مكررة من النص وقم بتغيير الكلمات إلى 1925. اضغط مع الاستمرار على مفتاح Shift وحدد كل من عناصر النص الأصغر ونوع الدائرة على مسار، ثم اجعل الدائرة العنصر الرئيسي وقم بمحاذاة كل شيء بشكل مركزي. قم بعمل نسخة من خط Bloomsbury Sans وقم بتعديل النص إلى Rio de Janeiro Brazil، وقم بتعيين التتبع tracking إلى 50 وقم بإعداد التوجيه ليتناسب. قم بإجراء أي تعديلات على الحروف بوضع المؤشر بين الحروف ذات الصلة، ثم استخدم مفتاح ALT ومفاتيح المؤشر Cursor Keys لضبط التباعد. استخدم اختصار CMD+R لعرض المسطرة (إذا لم تكن نشطة بالفعل)، ثم اسحب الأدلة خارج الانحياز إلى كل جانب من الكلمة Gracie. قم بموازنة ووضع نص Rio de Janeiro داخل التخطيط. لإضافة اثنين من الخطوط الزخرفية، يُمكننا استخدام الحرف I من خط Bloomsbury بحيث يطابق الشكل غير النظامي، وأسلوب الكتابة باليد. انقر بزر الماوس الأيمن وحدد إنشاء الخطوط العريضةCreate Outlines لتحويل هذا الحرف إلى شكل. قم بتدوير الشكل بنسبة °90 وقم بتمديده ليتناسب الدليل مع كلمة Brazil. قم بعمل نسخة للجانب الآخر. وهناك طريقة أخرى لإنشاء تخطيطات مثيرة وهي استخدام ميزة تشويه المغلف Envelope Distort في الإليستريتور. حدد نص Rio والخطين، ثم أذهب إلى Object>Envelope Distort>Make With Warp. غير الإعدادات إلى قوس Arc عند 10٪. قم برسم تحديد حول جميع العناصر التي تشكل الشعار وقم بسحب نسخة إلى جانب واحد. وسوف يتم تحويل التصميم النهائي إلى أشكال، لذلك من المفيد الاحتفاظ بنسخ قابلة للتحرير في حالة الحاجة إلى إجراء أية تغييرات. حدد جميع عناصر النسخة الأصلية مرة أخرى، ثم انتقل إلى Object>Expand. سيؤدي ذلك إلى تحويل كل النص إلى أشكال ويطبق تأثير تشويه المغلف بشكل دائم. وبما أن الحروف تتداخل من الخط النصي، قم بدمج كل منها في مخطط واحد مستمر باستخدام زر Unite من لوحة Pathfinder. الخط النصي سلس جدًا أيضًا، في حين أن خط sans لديه مخطط غير منتظم. يمكننا إضافة تأثير مماثل باستخدام Effect>Distort & Transform>Roughen filter. قم بتغيير الإعدادات إلى Smooth، Absolute، ثم قم بضبط الـDetail إلى 30 وقم باختيار قيمة صغيرة للحجم، والتي سوف تعتمد على الحجم الكُلّي لعملك الفني. حدد جميع عناصر تصميم شعارك وقم بتجميعها معًا. سيبدو الرسم رائعًا، ولكن ما نحتاجه الآن هو إضافة ملمس الأقمشة للتصميم ليكون اللمسة الأخيرة التي ستُظهر أسلوب التصميم العتيق. انقر فوق زر عمل قناع Make Mask button في لوحة الشفافية Transparency panel لتطبيق قناع Opacity Mask على العمل الفني. انقر على الصورة المصغرة على اليمين لتنشيط القناع. افتح واحدة من أقمشة “Washed & Worn” المجانية وألصقها في القناع mask. وازن تركيبة الأقمشة بالأسفل لتغطية العمل الفني، انقر على الصورة المصغرة على اليمين للخروج من وضع القناعmask mode. تصميم الشعار النهائي يبدو مذهلاً مع مظهرٍ قماشي محكم يعطي العمل الفني مظهر قديم وعتيق. قم بتطبيق تعبئة ألوان مختلفة لاستعمالات متعددة، سوف يسمح القناع لمناطق القماش الخلفية بالظهور من خلاله. ترجمة –وبتصرّف- للمقال How To Create a Distressed Vintage Style Logo Design In Adobe Illustrator لصاحبه Chris Spooner.
  4. تعرفنا في الدرس السابق على القوالب في LibreOffice وتعلّمنا كيفية استخدام القوالب المضمّنة لإنشاء المستندات، بالإضافة إلى طريقة تنصيب قوالب من مصادر أخرى. في هذا الدرس سنغطي طريقتين لإنشاء القوالب وتعديلها، ونتعرف على بعض الإجراءات لتنظيم تلك القوالب، كإنشاء المجلدات، الحذف، النقل، الاستيراد، والتصدير. إنشاء القوالب يمكنك إنشاء القوالب بطريقتين: إمّا عن طريق حفظ المستند الاعتيادي كقالب، أو باستخدام المُرشدات Wizards. إنشاء قالب من مستند بالإضافة إلى التنسيقات، يمكن أن نحفظ ضمن القالب أيّة إعدادات يمكن إضافتها أو تعديلها في المستند. على سبيل المثال، يمكنك أن تحفظ إعدادات الطباعة وأيّة إعدادات أخرى تعيّنها من أدوات > الخيارات، مثل المسارات Paths والألوان. يمكن أن تحتوي القوالب التي تنشئها على نصوص معرّفة مسبقًا، مما يجنّبك إعادة كتابتها في كل مرة. على سبيل المثال، يمكن أن تنشئ قالبًا للرسائل التي ترسلها باستمرار، وتضيف إلى القالب اسمك، عنوانك، خاتمة الرسالة، وتوقيعك. كما بإمكانك أن تحفظ في القالب تخصيصات أشرطة القوائم والأدوات. لإنشاء قالب من مستند وحفظه في مجلد قوالبك، ابدأ بفتح مستند جديد أو مستند أنشئ سلفا وترغب في حفظه كقالب، ثم عدّل المستند وأضف أي محتوى ترغب في ظهوره في كل المستندات التي ستنشئها بناء على القالب الجديد، كشعار الشركة مثلًا، حقوق الطبع والنشر، رأس وتذييل الصفحات، وغيرها من العناصر. بعد ذلك، أنشئ الأنماط التي تريد استخدامها في القالب الجديد وعدّلها بما يلائم احتياجاتك. يوضح المستند أدناه مثالًا على قالب رسالة بسيط، استخدمنا فيه عناصر كالنصوص والإطار التي نريد تكرارها في كل الرسائل التي ننشئها من هذا القالب، وطبّقنا التنسيقات المرغوبة على العناصر. لحفظ القالب، اذهب إلى ملف File > القوالب Templates > احفظ كقالب Save As Template: أدخل في من مربع الحوار احفظ كقالب اسمًا مناسبًا للقالب، حدد الخيار قوالبي My Templates، وهو الفئة التي سيحفظ ضمنها القالب، ثم انقر على زر حفظ Save. بذلك تكون قد انتهيت من حفظ القالب، وبإمكانك الوصول إليها واستخدامه لإنشاء المستندات (راجع درس كيفية استخدام القوالب لإنشاء المستندات) من مربع الحوار القوالب (ملف > جديد > القوالب). إنشاء قالب باستخدام المرشدات بإمكانك استخدام المرشدات لإنشاء القوالب للرسائل، الفاكسات، جداول الأعمال، أو لإنشاء العروض التقديمية وصفحات الويب. لإنشاء قالب باستخدام أحد المرشدات، اذهب إلى ملف File > المرشدات Wizards > اختر نوع القالب. اتبع التعليمات في صفحات المرشد لإنشاء القالب، علمًا أنّ خطوات الإنشاء تختلف لكل نوع من القوالب، لكن تتبع نمطًا متشابهًا جدّا. على سبيل المثال، يمكنك من خلال المرشد لإنشاء قالب جدول أعمال أن تتحكم في تصميم الصفحة، أسماء حضور الاجتماع، بنود الاجتماع، وغيرها. ويمكنك معاينة التغييرات التي تجريها على تصميم القالب من نافذة المعاينة خلف مربع الحوار. بإمكانك أن تحدد في القسم الأخير من المرشد الاسمَ الذي سيظهر في مربع الحوار القوالب بالإضافة إلى تحديد الموقع الذي ستحفظ عليه القالب. أدخل اسم القالب في الحقل المخصص له، ثم انقر على النقاط الثلاثة بجانب حقل الموقع لإدخال اسم ملف القالب وتحديد مجلد الحفظ (الموقع المبدئي هو مجلد template، لكن يمكنك اختيار موقع مختلف). بعد تحديد اسم ملف القالب وموقعه انقر على زر احفظ Save لإغلاق مربع الحوار حفظ باسم Save As. وبالعودة إلى المرشد، يمكنك أن تحدد ما إذا كنت تريد إنشاء مستند جديد من القالب مباشرة، أو إجراء تعديلات يدوية على القالب، حدد أحد الخيارين تحت عبارة ما الذي تريد عمله بعد ذلك ثم انقر على زر أنه Finish. سيُضاف القالب الجديد إلى فئة قوالبي وبإمكانك الوصول إليه واستخدامه لإنشاء المستندات عبر مربع الحوار القوالب. ملاحظة: إذا لم يظهر القالب، حاول أن تُحدّث القائمة بالنقر على أيقونة الترس ثم الخيار أنعش (حدّث) Refresh لكي يظهر القالب الجديد. تحرير القوالب بإمكانك تحرير أنماط القالب ومحتواه، ومن ثم إعادة تطبيق أنماط القالب على المستندات التي أنشِئت اعتمادًا على ذلك القالب، لكن لا يمكنك إعادة تطبيق المحتوى. لتحرير قالب معيّن، افتح مربع الحوار القوالب (ملف > القوالب > أدر القوالب أو اضغط على Ctrl + Shift + N). بعد ذلك انقر بزر الفأرة الأيمن على الصورة المصغرة للقالب الذي تريد تعدليه واختر حرّر Edit. سيُفتح القالب في LibreOffice، ويمكنك بعدها أن تجري أي تعديل تريده على المستند. ولحفظ التغييرات اذهب إلى ملف File > احفظ Save من شريط القوائم. تحديث المستندات من قالب مُعدَّل إذا قمت بتحرير القالب وأنماطه، فإنه في المرة القادمة التي تفتح فيها أحد المستندات التي أنشئت اعتمادا على ذلك القالب قبل تعديله ستظهر لك رسالة تأكيد لتحديث المستند. يمكنك من خلالها القيام بأحد الإجراءين التاليين: تحديث الأنماط: لتطبيق الأنماط المعدّلة في القالب على المستند. الاحتفاظ بالأنماط القديمة: لعدم تطبيق الأنماط المعدلة في القالب على المستند. لكن في هذه الحالة سيتم فك ارتباط القالب بالمستند، حتّى وإن كان اسم القالب ما زال ظاهرًا في خصائص المستند (ملف > خصائص > عام). مع ذلك، ما زال بإمكانك استيراد الأنماط يدويًا من القالب، لكن في حال رغبت في إعادة ربط المستند بالقالب، يجب أن تنسخ محتويات المستند وتلصقها في مستند فارغ يستند على ذلك القالب. تعيين قالب افتراضي (مبدئي) Default إذا كنت تنشئ المستندات عبر المسار ملف > جديد، فسيُستخدَم القالب الافتراضي لذلك النوع من المستندات (نص، جدول بيانات، عرض تقديمي…إلخ). مع ذلك، بإمكانك أن تحدد القالب الافتراضي الذي تريد استخدامه في كل مرة تنشئ مستندًا جديدا. تعيين القالب كـ “افتراضي” أغلب الإعدادات الافتراضية، كحجم الصفحة وهوامش الصفحة، تكون قابلة للتغيير عبر المسار أداوت > الخيارات، لكن هذه التغييرات تُطبّق على المستند الذي تعمل عليه فقط. لجعل هذه التغييرات هي الإعدادات الافتراضية لذلك النوع من المستندات، يجب أن تستبدل القالب الافتراضي بآخر جديد. بإمكانك تعيين أيّ من القوالب المعروضة في مربع الحوار القوالب كـ افتراضي لنوع معين من المستندات بالذهاب إلى ملف > القوالب > أدر القوالب. بعد ذلك انقر بزر الفأرة الأيمن على القالب المرغوب واختر اجعله المبدئي. في المرة القادمة التي تريد فيها إنشاء مستند جديد عبر المسار ملف > جديد، سيُنشَأ ذلك المستند من هذا القالب الذي عيّنته كافتراضي. إعادة تعيين القالب الافتراضي لإعادة تعيين القالب الافتراضي الأصلي للمستندات، واستخدامه من جديد كقالب افتراضي، انقر على أيقونة الترس في الجزء السفلي من مدير القوالب، مرر مؤشر الفأرة فوق صفّر القالب المبدئي Reset Default Template واختر مستند نصي Text Document. لن تظهر هذه الخيارات مالم تعيّن قالبًا مخصّصًا كـ افتراضي مسبقًا، وكما وضحنا في الفقرة السابقة. بعد إعادة تعيين القالب الافتراضي، ستُنشَأ كل المستندات الجديدة بناءً على القالب الافتراضي الأصلي لذلك النوع من المستندات. تنظيم القوالب يمكن أن يستخدم LibreOffice القوالب المضافة إلى مجلدات القوالب الخاصة به فقط. وبإمكانك إنشاء مجلدات القوالب واستخدامها لتنظيم قوالبك. على سبيل المثال، يمكنك إنشاء مجلد لقوالب التقارير، وآخر لقوالب الرسائل، وهكذا. كما بإمكانك تصدير القوالب من تلك المجلدات أو استيرادها إليها. للبدء، افتح مدير القوالب عبر المسار ملف > القوالب > أدر القوالب. إنشاء مجلد قوالب لإنشاء مجلد قوالب، انقر على أيقونة الترس في الجزء السفلي من مربع الحوار القوالب واختر فئة جديدة New Folder. في مربع الحوار الذي سيظهر، أدخل اسمًا مناسبًا لمجلد القوالب وانقر على حسنًا OK. ملاحظة: لا يمكن إنشاء مجلد فرعي ضمن مجلد قوالب في LibreOffice. حذف مجلد قوالب لا يمكن حذف مجلدات القوالب التي تأتي مبدئيا مع LibreOffice، ولا يمكن حذف أي مجلد مضاف بواسطة مدير الامتدادات، إلّا إذا قمت بحذف الملحق الذي قام بتنصيب ذلك المجلد أولًا. مع ذلك بإمكانك حذف مجلدات القوالب التي أنشأتها بنفسك، ويتم ذلك بالنقر على أيقونة الترس في الجزء السفلي من مربع الحوار القوالب واختيار احذف الفئة Delete Folder. من مربع الحوار الذي سيظهر، حدد مجلد القوالب الذي تريد حذفه وانقر على زر حسنًا. بعد ذلك أكّد الحذف بالنقر على زر نعم. نقل القوالب لنقل قالب معين من مجلد قوالب إلى آخر، حدد هذا القالب ثم انقر على زر انقل Move في الجزء السفلي من مربع الحوار القوالب. بعد ذلك حدد مجلد القوالب الذي تريد نقل القالب إليه من مربع الحوار الذي سيظهر، ثم انقر على زر حسنا. حذف القوالب لا يمكنك حذف القوالب التي تتوفر بشكل افتراضي مع LibreOffice. كما لا يمكنك حذف أي قوالب تم تنصيبها بواسط مدير الامتدادات مالم تقم بحذف الملحق الذي قام بتنصيب تلك القوالب. مع ذلك، بإمكانك حذف القوالب التي أنشأتها أو استوردتها بنفسك. لحذف قالب معين، انقر عليه بزر الفأرة الأيمن من مربع الحوار القوالب، ثم اختر احذف Delete. بعد ذلك أكّد عملية الحذف بالنقر على زر نعم من مربع الحوار الذي سيظهر لك. استيراد القوالب لقد تطرقنا إلى كيفية استيراد القوالب ومجلدات القوالب إلى LibreOffice بالتفصيل في الدرس السابق (كيفية استخدام القوالب لإنشاء المستندات) لذا سنكتفي بشرح الخطوات بشكل سريع في هذا الدرس. لاستيراد قالب قمت بحفظه على أحد المجلدات في جهازك، انقر على زر استورد Import من مربع الحوار القوالب. بعد ذلك حدد مجلد القوالب الذي تريد استيراد القالب إليه. وأخيرًا اذهب إلى المجلد الذي تحفظ القالب عليه من متصفح الملفات، حدد القالب، ثم انقر على زر فتح Open. ستتم إضافة القالب إلى مجلد القوالب الذي حددته، وسيكون بإمكانك استخدامه لإنشاء المستندات. تصدير القوالب لتصدير قالب ما من مجلد القوالب إلى مكان آخر على جهازك، حدّد القالب من مربع الحوار القوالب ثم انقر على زر صدّر Export. من مربع الحوار اختيار مسار الذي سيظهر، حدد المجلد الذي تريد حفظ القالب عليه ثم انقر على حسنًا OK. ترجمة- وبتصرّف - لدليل المستخدم الخاص بالحزمة المكتبية LibreOffice.
  5. القالب هو عبارة عن مستند نموذجي يُستخدَم لإنشاء مستندات أخرى. على سبيل المثال، يمكنك إنشاء قالب لتقارير العمل بحيث يحتوي على شعار شركتك في الصفحة الأولى. وبالنتيجة ستحتوي كل المستندات الجديدة التي تنشئها من هذا القالب على شعار الشركة في الصفحة الأولى أيضًا. يمكن أن تتضمن القوالب جميعَ العناصر التي يمكن أن يتضمنها المستند الاعتيادي، كالنصوص، العناصر الجرافيكية، والأنماط، بالإضافة إلى الإعدادات المخصصة من قبل المستخدم، كالقياسات، اللغة، الطابعة المبدئية (الافتراضية)، وتخصيصات قوائم وأشرطة الأدوات. تُبنى جميع مستندات LibreOffice على أساس القوالب، وبإمكانك إنشاء قالب محدد لأي نوع من المستندات (النصوص، جداول البيانات، العروض التقديمية…إلخ). إذا لم تحدد قالبًا معيّنًا عند إنشاء المستند، فسيُنشَأ باستخدام القالب المبدئي لذلك النوع من المستندات. وإذا لم تحدّد قالبًا مبدئيًّا، سيستخدم LibreOffice القالب الفارغ لذلك النوع من المستندات والذي نُصِّب مع البرنامج. سنتعلم في هذا الدرس كيفية استخدام القوالب التي يوفرها LibreOffice لإنشاء المستندات بطرق مختلفة، كيفية إضافة قوالب من مصادر أخرى، وكيفية ربط المستند بقالب مختلف. إنشاء مستند من مربع الحوار القوالب Template Manager لاستخدام أحد قوالب LibreOffice لإنشاء مستند، قم أولًا بفتح مربع الحوار القوالب عن طريق المسار ملف File > جديد New > القوالب Templates (أو باستخدام مفاتيح الاختصار Ctrl + Shift + N). من مربع الحوار القوالب، بإمكانك إمّا إدخال كلمة مفتاحية معينة في حقل البحث للعثور على القالب المرغوب، أو تصفية القوالب المعروضة حسب نوع الملف (مستندات، عروض تقديمية، رسومات…إلخ)، ثم اختيار إحدى الفئات المتوفرة. وبما أننا نعمل على برنامج Writer، سنحدد الخيار مستندات من قائمة رشّح والخيار كل الفئات من القائمة المجاورة لها. من القوالب المتوفرة لمستندات LibreOffice Writer، قوالب للسيرة الذاتية، قوالب الرسائل الرسمية/المهنية، وغيرها. عندما تعثر على القالب المناسب، انقر عليه نقرة مزدوجة وسيُفتح في مستند جديد مستقل. يمكنك بعد ذلك أن تبدأ بتحرير القالب وإجراء التخصيصات المرغوبة ومن ثم حفظه. إنشاء مستند من قالب في صفحة البداية Start Center بإمكانك إنشاء مستند من القوالب في صفحة البداية لحزمة LibreOffice، ويمكن عرض هذه الصفحة عندما تكون جميع مستندات LibreOffice مغلقة، وعندما تكون بيئة التطوير المتكاملة (IDE) للماكرو مغلقة أيضًا. لفتح نافذة القوالب (Template Manager) من صفحة البداية، انقر على زر القوالب من الجزء الجانبي. يرافق هذا الزر أيضًا قائمة منسدلة لعرض القوالب الخاصة بنوع معين من المستندات (رايتر، كالك، إمبريس…إلخ)، بالإضافة إلى الخيار أدر القوالب الذي يفتح نفس مربع الحوار القوالب الذي استخدمته في الطريقة السابقة. عند اختيار أحد أنواع المستندات، ستُعرض القوالب المتاحة لذلك النوع فقط، بعدها انقر نقرة مزدوجة على الصورة المصغرة للقالب المرغوب لإنشاء مستند جديد مبني على هذا القالب، ومن ثم البدء بتحرير القالب وتخصيصه. إضافة قوالب من مصادر أخرى بالإضافة إلى مجموعة القوالب آنفة الذكر التي تتوفر مع تنصيب الحزمة، بإمكانك استخدام قوالب من مصادر أخرى لإنشاء مستنداتك، كأن يكون المصدر محليًّا (مجلد على جهازك قمت بتنزيل القوالب عليه)، أو بعيدًا (رابط يمكنك تنزيل القوالب منه). بإمكانك الوصول إلى مصدر القوالب الرسمي الخاص بالحزمة LibreOffice بالنقر على زر الكرة الأرضية في الجزء السفلي من مربع الحوار القوالب (جديد > القوالب)، أو بزيارة هذا الرابط بواسطة المتصفح. في الحالتين سيتم توجيهك إلى الصفحة الرسمية لقوالب حزمة LibreOffice، يمكنك تصفح القوالب المتوفرة وتحميل القالب المرغوب. عند تحميل القوالب، ربما تلاحظ أن بعضها متوفر بشكل حزمة ومجموعة في ملف بامتداد OXT. وطريقة تنصيب القوالب المنفردة تختلف قليلًا عن طريقة تنصيب حزمة القوالب، كما سنوضّح أدناه. ### تنصيب قالب مفرد افتح مربع الحوار القوالب، ثم انقر على زر استورد Import في الزاوية السفلى اليسرى منه. بعد ذلك حدد الفئة التي تريد نقل القالب إليها وانقر على زر حسنًا: بعد فتح مستعرض المجلدات، اذهب إلى المجلد الذي قمت بحفظ القالب فيه عند التنزيل، حدد ملف القالب، ثم انقر على زر فتح Open. سيُضاف القالب إلى الفئة المحددة، وسيكون بإمكانك استخدامه لإنشاء المستندات. تنصيب حزمة قوالب يوفر مدير الامتدادات Extension Manager طريقة سهلة لتنصيب حزم القوالب التي تم تجميعها بصيغة امتداد، ويتم ذلك باتباع الخطوات أدناه. بعد أن تُنزّل حزمة القوالب (ملف OXT) وتحفظها في مجلد ما على جهازك، افتح مربع الحوار مدير الامتدادات عبر المسار أدوات Tools > مدير الامتدادات Extension Manager. انقر على زر أضف Add لاستيراد الامتداد/الملحق (حزمة القوالب): من مستعرض المجلدات، اذهب إلى المجلد الذي قمت بحفظ حزمة القوالب عليه، حدد الملف، ثم انقر على زر فتح Open. سيبدأ تنصيب الحزمة، وسيُطلب منك قراءة اتفاقية الترخيص والموافقة عليها قبل التنصيب، انقر على زر اقبل للمواصلة. أغلق مربع الحوار بعد اكتمال التنصيب وأعد فتح المستند لكي يعمل الامتداد بشكل صحيح. وسيصبح بإمكانك الوصول إلى مجموعة القوالب التي قمت بتنصيبها واستخدامها لإنشاء المستندات عبر مربع الحوار القوالب. ربط المستند بقالب مختلف إذا رغبت في ربط المستند بقالب آخر غير القالب الأصلي الذي بنيت عليه المستند في البداية يمكنك استخدام إحدى الطريقتين التاليتين. الطريقة الأولى يُربَط المستند بقالب مختلف يدويًا على النحو التالي: افتح مربع الحوار القوالب ثم افتح القالب المرغوب بالنقر نقرة مزدوجة على الصورة المصغرة الخاصة به. سيُفتح مستند جديد مبني على هذا القالب يحتوي على النصوص أو الصور التي يمكن أن يتضمنها القالب. احذف العناصر غير المرغوبة من المستند الجديد. افتح المستند الذي تريد تغيير قالبه وحدّد جميع محتوياته (Ctrl + A) ونسخها (Ctrl + C). انقر داخل المستند الفارغ الذي أنشأته في الخطوة الأولى، ثم ألصق المحتوى الذي قمت بنسخه (Ctrl+ V).حدّث الفهرس (جدول المحتويات) إن وُجد، ثم احفظ المستند الجديد. الطريقة الثانية تعتمد هذه الطريقة على استخدام الملحق Template Changer، كالتالي: نزّل الملحق Template Changer من هذا الرابط ثم نصّبه من خلال مربع الحوار مدير الامتدادات (أدوات > مدير الامتدادات) كما قمنا بتنصيب حزمة القوالب. سيُضاف خياران جديدان إلى القائمة ملف > قوالب هما: Assign Template (current document) لتعيين قالب للمستند الحالي، وAssign Template (folder) لتعيين قالب لمستند آخر. افتح المستند الذي تريد تغيير قالبه، ثم اذهب إلى ملف > القوالب > Assign Template (current document). من نافذة Select Template، اذهب إلى المجلد الذي تحفظ عليه القالب الجديد، حدد القالب، ثم افتحه بالنقر على زر Open. احفظ المستند بعد تغيير القالب. ويمكنك الآن أن تلاحظ أن القالب الجديد قد تم تعيينه للمستند الحالي إذا نظرت إلى خصائص المستند العامة (ملف > الخصائص > عام > القالب). يُفضَّل للحصول على أفضل نتيجة عند تغيير القالب في كلتا الحالتين أن تكون أسماء الأنماط هي نفسها في المستند الحالي والقالب الجديد. فبخلاف ذلك سيتوجب عليك استخدام البحث والاستبدال لاستبدال الأنماط القديمة بالأنماط الجديدة. خاتمة يمكن أن تكون القوالب من الأدوات المفيدة جدًا لاختصار الوقت إذا كنت تنشئ مستندات متشابهة باستمرا؛ ففي هذه الحالة تستطيع استخدام نفس القالب في كل مرّة بتعديله وتخصيصه بدلًا من إنشاء مستند من الصفر. بالإضافة إلى ذلك، تكون بعض القوالب ذات مظهر متسق وجميل، يمكنك استخدامها لإنشاء مستندات منسقة مسبقًا بتحرير القالب وتخصيص محتواه فقط. سنتعرف في الدرس القادم على كيفية إنشاء القوالب وتعديلها. ترجمة- وبتصرّف - لدليل المستخدم الخاص بالحزمة المكتبية LibreOffice.
  6. بالرغم من أنّ LibreOffice Writer يوفّر مجموعات متنوّعة من الأنماط المبدئية (الافتراضية) التي يمكن تطبيقها مباشرة أو إجراء التعديلات عليها لتناسب تنسيق مستندك، إلّا أنّه تُتاح لك أيضًا إمكانية إنشاء أنماط جديدة وتخصيص جميع سماتها يدويًا وإضافتها إلى قائمة الأنماط المبدئية. سنتعلّم في هذا الدرس كيفية إنشاء أنماط جديدة وتخصيصها، بالإضافة إلى كيفية حذف الأنماط. إنشاء الأنماط يمكن إنشاء نمط جديد بإحدى الطرق التالية: باستخدام مربع الحوار نمط Style. إنشاء نمط من عنصر محدد. نسخ الأنماط من قالب أو مستند. باستخدام مربع الحوار نمط يُنشَأ نمط جديد باستخدام مربع الحوار نمط بطريقتين. الطريقة الأولى تُستخدم الطريقة الأولى لإنشاء نمط جديد كليًا، ومن ثم تعديله. انقر على السهم الصغير بجانب أيقونة الدلو في نافذة الأنماط والتنسيق (عرض > الأنماط والتنسيق) ثم اختر نمط جديد New Style من القائمة المنسدلة. سيُفتح مربع حوار صغير لتسمية النمط، أدخل اسمًا مناسبًا ثم انقر على حسنًا: سيُضاف النمط الجديد إلى قائمة الأنماط التي حددتها قبل إنشاء النمط. مثلًا إن نقرت على فئة أنماط الأحرف ثم أنشأت نمطا جديدا، ستعثر على ذلك النمط ضمن مجموعة أنماط الأحرف. انقر على النمط الجديد بزر الفأرة الأيمن ثم اختر عدّل لتخصيص خياراته. الطريقة الثانية تُستخدم هذه الطريقة لإنشاء نمط جديد على أساس نمط موجود مسبقًا (أحد الأنماط المبدئية). وفي هذه الحالة سيُربَط النمطان الجديدان (الأصلي والجديد معًا). وبما أنّ النمطين سيصبحان مرتبطين، فإن أي تغيير تجريه على النمط الأصلي سينعكس على كل الأنماط المرتبطة به تلقائيا. لإنشاء نمط جديد بهذه الطريقة، حدّد النمط الأساس أولًا من نافذة الأنماط والتنسيق، انقر عليه بزر الفأرة الأيمن، واختر جديد من القائمة المنبثقة: تُخصَّص الخيارات في كلتا الطريقتين عن طريق مربع الحوار نمط، وهو نفسه الذي استخدمناه في الدرس السابق لتعديل الأنماط المبدئية. مع الأخذ في الاعتبار أنّ الخيارات ستختلف باختلاف نوع النمط. ملاحظة: يُنصح، إذا احتجت إلى إنشاء أنماط جديدة على أساس الأنماط المبدئية، بتسمية النمط الجديد بنفس اسم النمط المبدئي مع سبقه أو إلحاقه باسم دلالي لتمييزه عن بقية الأنماط في القائمة. على سبيل المثال، إذا أنشأت نمطًا جديدًا على أساس النمط متن النص، يمكنك تسمية النمط الجديد متن النص-تقرير، أو متن النص-سيرة ذاتية .. وهكذا. إنشاء نمط من عنصر محدَّد بإمكانك إنشاء نمط جديد عن طريق نسخ التنسيق الذي طبّقته يدويًا على عنصر (فقرة، قائمة، صفحة… إلخ). يُضاف النمط الجديد في هذه الحالة إلى المستند الحالي فقط، أي أنّه لن يُحفَظ في القالب. افتح نافذة الأنماط والتنسيق ثم حدّد نوع النمط الذي تريد إنشاءه من الجزء العلوي للنافذة. انتقل بعد ذلك إلى المستند، وحدد العنصر الذي تريد حفظه كنمط، وليكن إطارًا مثلًا، ثم انقر على السهم الصغير بجانب أيقونة الدلو واختر نمط جديد من القائمة. أدخل اسمًا مناسبًا للنمط الجديد وانقر على حسنًا. سيُضاف النمط إلى قائمة الأنماط للنوع المحدد، ويمكنك استخدامه لاحقًا لتنسيق العناصر ذات الصلة. نسخ الأنماط من قالب أو مستند بإمكانك نسخ الأنماط إلى المستند عن طريق تحميلها من قالب أو من مستند آخر. للقيام بذلك يجب أولًا أن تفتح المستند الذي تريد نسخ الأنماط إليه، بعد ذلك انقر على السهم بجانب أيقونة الدلو في الجزء العلوي من نافذة الأنماط والتنسيق واختر حمّل الأنماط Load Styles. حدد في مربع الحوار حمّل أنماطًا أنواعَ الأنماط التي تريد نسخها بتأشير مربعات الخيار في الجزء السفلي. وبإمكانك تأشير خيار الاستبدال Overwrite إذا كنت ترغب في استبدال الأنماط في المستند الأصلي بالأنماط التي تحمل نفس الاسم في المستند الذي تستورد منه الأنماط. إذا تركت هذه الخيار غير مؤشر، ستُنقَل الأنماط غير المكررة (التي تحمل أسماء مختلفة) وتُتجاهل الأنماط المكررة. انقر بعد ذلك على زر من ملف From File لتحديد المستند أو القالب الذي ستنسخ الأنماط منه. وأخيرًا، اذهب إلى مجلد حفظ المستند/القالب، حدد امتداد الملف المرغوب (سواء كان قالبًا أو مستندًا) من القائمة المنسدلة بجانب حقل الاسم، ثم حدد الملف وانقر على فتح Open. ستُضاف الأنماط الجديدة المستوردة من المستند أو القالب إلى قوائم الأنماط وحسب نوع النمط (أنماط الفقرات تُضاف إلى قائمة أنماط الفقرات، وأنماط الصفحات تُضاف إلى قائمة أنماط الصفات… وهكذا). ملاحظة: إذا كان مستندك يحتوي على فهرس (جدول محتويات) واستخدمت أنماطًا مخصّصة للعناوين، يجب أن تأخذ في الحسبان أنه سيتم إرجاع مستويات العناوين المرتبطة بالمستويات التي قمت بتخصيصها في مربع الحوار ترقيم التخطيط (أدوات > ترقيم التخطيط) إلى الأنماط المبدئية (الافتراضية) عنوان رئيسي 1، عنوان رئيسي 2، وهكذا، عند تحميل أنماط نصوص من ملف لا يستخدم نفس الأنماط المخصصة. وبذلك سيتوجب عليك تغيير إعادة تطبيق الأنماط المخصصة على العناوين من جديد. حذف الأنماط لا يمكن حذف أي من الأنماط المعرّفة مسبقًا في LibreOffice من المستند أو القالب حتّى لو كانت غير مستخدمة، لكن يمكنك حذف أي من الأنماط المخصصة التي قمت بإنشائها بنفسك. ويفضّل قبل ذلك أن تتأكّد من أن تلك الأنماط غير مستخدمة في المستند الحالي. لحذف النمط، انقر عليه بزر الفأرة الأيمن في نافذة الأنماط والتنسيق واختر احذف Delete. بإمكانك تحديد أكثر من نمط وحذفها دفعة واحدة بالضغط على مفتاح Ctrl أثناء التحديد. ستُحذَف الأنماط مباشرة إذا كانت غير مستخدمة في المستند. وبخلاف ذلك ستظهر رسالة تنبّهك أن النمط مطبَّق في المستند الحالي، انقر على نعم لتأكيد الحذف. إذا حذفت أحد الأنماط المستخدمة، سيُطبَّق النمط الافتراضي على جميع العناصر التي كان النمط المحذوف مطبقًا عليها. إذا كانت لديك أيّة أسئلة أو أفكار حول إنشاء الأنماط واستخدامها، شاركنا بها عبر صندوق التعليقات. ترجمة- وبتصرّف - لدليل المستخدم الخاص بالحزمة المكتبية LibreOffice.
  7. تطرّقنا في دروس سابقة إلى كيفية بدء العمل على محرر النصوص Writer، أحد برامج حزمة الأدوات المكتبية LibreOffice. كما شرحنا كيفية استخدامه لتنسيق الفقرات النصية وإدراج مختلف العناصر، كالجداول والصور. وفي هذا الدرس سنتعرّف على الأنماط في LibreOffice وعلى كيفية تطبيقها لتنسيق الأجزاء المختلفة للمستند، من العناوين الرئيسية، إلى العناوين الفرعية والمتون. ما هي الأنماط؟ النمط Style هو مجموعة من التنسيقات التي يمكنك تطبيقها على صفحات محددة، نصوص محددة، أو غيرها من عناصر المستند لكي تغيّر مظهرها بسهولة وسرعة. وبما أنّ النمط ينطوي على أكثر من تنسيق، كاللون، الحجم، السمك، وغيرها؛ فإن تطبيق النمط يعني تطبيق مجموعة من التنسيقات على نفس العنصر دفعة واحدة. يغفل كثير من المستخدمين عن فائدة استخدام الأنماط، فينسّقون الفقرات، الكلمات، الجداول، تخطيطات الصفحة، وغيرها من أجزاء المستند يدويا. أي أنّهم اعتادوا على كتابة المستندات وفقًا لسمات مرئية محددة؛ على سبيل المثال، نوع الخط، حجمه، وغيرها من التنسيقات كالخط العريض أو المائل. أما الأنماط فهي عبارة عن سمات منطقية، واستخدامها يعني أنّك ستتوقف عن تحديد حجم الخط، لون الخط، محاذاة النص، وغيرها، وتكتفي بتحديد النمط فقط، لأنّك عرّفت ذلك النمط مسبقًا ليكون بتلك السمات/الخصائص. بعبارة أخرى، استخدام الأنماط يعني أنّك ستؤكّد على ماهية النص (أو الصفحة أو أي عنصر آخر)، بدلًا من التأكيد على مظهر ذلك النص. تساعد الأنماط على تحسين تناسق المستند، كما أنّها تسهّل تغيير التنسيقات الرئيسية. على سبيل المثال، قد ترغب في تغيير المسافات البادئة لكل الفقرات، أو تغيير نوع الخط لكل العناوين في المستند، هذه المهمة البسيطة يمكن أن تتطلب منك القيام بالكثير من التغيرات في أماكن مختلفة ومتفرقة، وستصبح العملية منهكة جدًا في المستندات الطويلة. وعلى النقيض من ذلك، سيتطلب الأمر إجراء تغيير واحد فيما لو قمت باستخدام الأنماط. بالإضافة إلى ذلك، تُستخدم الأنماط في عمليات أخرى، غير التنسيقات، حتّى وإن لم تكن مدركًا لها. على سبيل المثال، يعتمد Writer على أنماط العناوين Heading styles (أو غيرها من العناوين التي تحدّدها) عند إنشاء الفهارس Table of contents. وسنتطرّق إلى بعض الاستخدامات الشائعة للأنماط في درس لاحق. ما هي أنواع الأنماط التي يدعمها LibreOffice Writer؟ يدعم LibreOffice Writer أنواع الأنماط التالية: أنماط الصفحة Page Styles: وتتضمن الهوامش، الرؤوس والتذييل، والحدود والخلفيات. أنماط الفقرات Paragraph Styles: تتحكم هذه الأنماط بجميع جوانب مظهر الفقرة، مثل محاذاة النص، مواضع علامات الجدولة tab، التباعد بين السطور، والحدود، ويمكن أن تتضمن تنسيقات الأحرف أيضًا. أنماط المحارف Character Styles: تؤثر هذه الأنماط على نص محدد ضمن الفقرة، مثل نوع الخط، حجم النص، بالإضافة إلى تنسيقات النص العريض والمائل. أنماط الإطارات Frame Styles: تُستخدم لتنسيق أطر العناصر الجرافيكية والنصوص، وتتضمن التفاف النص، الحدود، الخلفيات، والأعمدة. أنماط القوائم List Styles: تتيح لك هذه الأنماط إمكانية تحديد، تنسيق، وتغيير مواضع التعداد الرقمي أو النقطي في القوائم. كيفية تطبيق الأنماط يوفر LibreOffice Writer عدة طرق لتحديد الأنماط وتطبيقها. باستخدام قائمة الأنماط Styles Menu تحتوي هذه القائمة على الأنماط المهمة شائعة الاستخدام من مجموعة أنماط الفقرات والمحارف، والتي يمكن تطبيقها على أي مستند نصي. ولكنها لا تحتوي على أنماط الإطارات، الصفحات، والقوائم. لتطبيق أحد أنماط الفقرات، ضع مؤشر الكتابة في موضع ما داخل الفقرة، ثم اختر أحد الأنماط من قائمة الأنماط (ستجد القائمة في أقصى يمين شريط التنسيق): على سبيل المثال، سنقوم بتطبيق النمط “المسمى الوظيفي”، على عنوان المستند، لأنه النمط المخصص لتنسيق عناوين المستندات. نضع مؤشر الكتابة في أي موقع داخل العنوان، ثم نختار النمط “المسمى الوظيفي” من القائمة: بمجرد تطبيق النمط، سنلاحظ تغيّر مظهر النص حسب التنسيقات المخصصة لذلك النمط. وبذلك يمكننا تنسيق النصوص والفقرات بنمط معين وبصورة متسقة بنقرة واحدة سريعة. ملاحظة: لا يمكن إضافة أنماط مخصصة إلى قائمة الأنماط. باستخدام نافذة الأنماط والتنسيق Styles and Formatting تتضمن نافذة الأنماط والتنسيق مجموعة متكاملة من الأدوات الخاصة بالأنماط. ولفتح هذه النافذة واستخدامها لتطبيق أحد الأنماط، اذهب إلى عرض View ثم الأنماط والتنسيق Styles and Formatting من شريط القوائم العلوي. يمكنك أيضًا فتح هذه النافذة عن طريق المسار أنماط Styles > الأنماط والتنسيق Styles and Formatting، أو بالنقر على زر F11 من لوحة المفاتيح، أو بالنقر على زر الأنماط والتنسيق من الشريط الجانبي تعرض نافذة الأنماط والتنسيق جميع الأنماط المتاحة، وتكون هذه الأنماط مصنّفة في فئات حسب النوع (أنماط الفقرات، أنماط الأحرف، أنماط الإطارات…إلخ)، ويمكنك استعراض قائمة الأنماط تحت كل فئة بالنقر على زر الفئة المرغوبة في الشريط العلوي من النافذة: لتطبيق أحد الأنماط، حدد الجزء/العنصر الذي تريد تطبيق النمط عليه، ثم انقر نقرا مزدوجًا على النمط المرغوب من الفئة المناسبة لذلك العنصر. على سبيل المثال، سنطبق نمط المحارف “وصلة إنترنت” على نص معين في المستند. وللقيام بذلك يجب أن نحدد ذلك النص أولًا، بخلاف أنماط الفقرات حيث نضع مؤشر الكتابة في أي موضع داخل الفقرة، لأنّ نمط الأحرف يطبّق على النص المحدد فقط وليس على الفقرة برمّتها. بعد تحديد النص ننقر نقرا مزدوجًا على النمط “وصلة إنترنت”: ملاحظة: يمكنك تحديد مجموعة الأنماط التي تريد عرضها في نافذة الأنماط والتنسيق، إذ يمكنك عرض كل الأنماط، الأنماط المخفية، الأنماط المطبقة، أو الأنماط المخصصة فقط: باستخدام نمط الفقرة Fill Format Mode يمكنك استخدام أداة نمط الفقرة (وأفضّل تسميتها أداة نسخ النمط أو تكرار النمط) لتطبيق النمط على العديد من المناطق المختلفة في المستند بصورة سريعة، دون الحاجة إلى العودة إلى نافذة الأنماط والتنسيق والنقر المزدوج مرارًا وتكرارًا. وهذه الطريقة مفيدة لتطبيق نفس النمط على العديد من الفقرات المتفرّقة، أو غيرها من العناصر. لاستخدام أداة نمط الفقرة، افتح نافذة الأنماط والتنسيق كما وضحنا في الفقرة السابقة ثم حدد النمط الذي تريد تطبيقه بنقرة واحدة بزر الفأرة الأيسر. بعد ذلك انقر على أداة نمط الفقرة (أيقونة الدلو) في الجزء العلوي للنافذة. عندما يتحول شكل المؤشر إلى شكل الدلو، مرر مؤشر الفأرة فوق الفقرة (أو الإطار، أو القائمة، أو غيرها من العناصر) التي تريد تطبيق النمط عليها، ثم انقر نقرة واحدة بزر الفأرة الأيسر لتطبيقه: وكما ذكرنا أعلاه، يُطبق نمط الفقرة على الفقرة برمتها، أما نمط الأحرف فنحتاج إلى تحديد الكلمة أو مجموعة الكلمات لتطبيقه. نكرر نفس الخطوة على العناصر التي نريد تنسيقها بنفس النمط لحين الانتهاء من إجراء جميع التغييرات. ولإلغاء تفعيل الأداة نمط الفقرة Fill Format Mode، ننقر على زر الدلو مجددًا، أو نضغط على المفتاح ESC من لوحة المفاتيح. ملاحظة: عندما تكون أداة نمط الفقرة فعالة، فإن النقر بزر الفأرة الأيمن على أي مكان في المستند سيؤدي إلى التراجع عن آخر عملية تطبيق للنمط. باستخدام اختصارات لوحة المفاتيح بعض اختصارات لوحة المفاتيح مخصصة لتطبيق أنماط معيَّنة، ويمكنك استخدامها لتطبيق النمط بصورة سريعة ومباشرة لاختصار الوقت، بدلًا من استخدام الطرق سابقة الذكر. على سبيل المثال، يُستخدم مفتاحا الاختصار Ctrl+0 لتطبيق النمط متن النص Text Body، ومفتاحا الاختصار Ctrl+ 1 لتطبيق النمط عنوان رئيسي Heading 1، والاختصار Ctrl+ 2 لتطبيق النمط عنوان رئيسي Heading 2، وهكذا. بإمكانك تعديل اختصارات لوحة المفاتيح وتخصيصها حسب ما يناسبك بالذهاب أدوات Tools > خصص Customize > لوحة المفاتيح Keyboard، ومن ثم تحديد مفاتيح الاختصارات المرغوبة والنقر على زر عدّل Modify: بهذا نكون قد وصلنا إلى نهاية الدرس. في الدرس القادم سنتعرّف على كيفية تعديل الأنماط المبدئية وإنشاء أنماط جديدة مخصصة. ترجمة- وبتصرّف - لدليل المستخدم الخاص بالحزمة المكتبية LibreOffice.
  8. تعرّفنا في الدرس السابق على الأنماط في LibreOffice Writer وتطرقنا إلى كيفية تطبيق الأنماط المبدئية المتاحة بطرق عدّة. في هذا الدرس سنتعلّم كيفية تعديل الأنماط الافتراضية وتخصيصها، وسنذكر بعض الأمثلة على استخدامات الأنماط في نهاية الدرس. إذا كانت خصائص الأنماط المبدئية Default غير ملائمة لتنسيق مستندك، بإمكانك أن تعدّل تلك الأنماط لتحصل على النمط الخاص بك وبالسمات المناسبة لك. يمكن تعديل الأنماط بالطرق التالية باستخدام مربع الحوار “نمط Style”، تحديث النمط من عنصر مُحدَّد سلفا، باستخدام خاصية التحديث التلقائي AutoUpdate (لأنماط الفقرات والإطارات فقط). ملاحظة: تُطبَّق التغييرات على الأنماط نمط سيتم تطبيقها في المستند الحالي فقط. لتعديل الأنماط في أكثر من مستند، يجب أن تُعدِّل القالب أو تنسخ الأنماط إلى تلك المستندات. تعديل النمط باستخدام مربع الحوار “نمط Style” من خلال مربع الحوار “نمط” يمكنك تعديل كل أنواع الأنماط، سواء كانت أنماط الفقرات، أنماط القوائم، أنماط الإطارات، وغيرها. للقيام بذلك نفتح نافذة الأنماط والتنسيق بالنقر على الأيقونة T في الشريط الجانبي (أو عن طريق المسار عرض View > الأنماط والتنسيق Styles and Formatting). بعد ذلك ننقر على النمط الذي نريد تعديله بزر الفأرة الأيمن ونختار عدّل Modify: يختلف مربع الحوار الذي سيظهر باختلاف نوع النمط الذي قمنا بتحديده. ويحتوي على مجموعة من التبويبات التي تحتوي بدورها على مجموعة من الخيارات القابلة للتعديل والتخصيص. إن اخترنا تعديل النمط “المسمى الوظيفي” على سبيل المثال، والذي هو أحد أنماط الفقرات، سيظهر مربع الحوار التالي. نلاحظ أن مربع الحوار يحتوي على 16 تبويبًا مختلفًا، ومنها يمكن تعديل نوع الخط، المحاذاة، المسافات البادئة والتباعد، الحدود، الشفافية، وغيرها من خصائص النصوص. فمثلًا لتغيير نوع الخط، نذهب إلى تبويب “الخط“، ومن قائمة “الخط” نختار نوع الخط المرغوب لكل نوع من النصوص (الغربية، الآسيوية، المركبة). سنختار النوع Sakkal، ونبقي على بقية الخيارات كما هي (يمكن الاستفادة من المربع في الجزء السفلي من مربع الحوار لمعاينة التغييرات على النص) ولتغيير لون الخط نذهب إلى تبويب “تأثيرات الخطوط“، ونختار اللون المرغوب من قائمة “لون الخط“. كما يمكننا إضافة تأثيرات أخرى، كالظل، التخطيط، أو إضافة خطوط أسفل، أعلى، أو على النص. بعد إجراء جميع التغييرات ننقر على زر “طبّق” لتطبيقها، ثم زر “حسنًا” للخروج من مربع الحوار. بمجرد تطبيق التغيير، سيُحدَّث هذا النمط في كل أنحاء المستند ليعكس التغييرات التي أجريناها، دون الحاجة إلى إعادة تطبيق النمط من جديد. مثال آخر؛ لو عدّلنا النمط “قائمة 2“، أحد أنماط القوائم، سنلاحظ أن تبويبات مربع الحوار تختلف كثيرًا عن التبويبات التي ظهرت مع النمط السابق. يمكننا هنا اختيار شكل النقاط للتعداد الرقمي، تغيير نمط الترقيم للتعداد الرقمي، تغيير شكل المخطط التفصيلي للتعداد الرقمي أو النقطي، وغيرها. سنقوم هنا مثلًا باختيار أيقونة للتعداد النقطي بدلًا من الرمز الافتراضي. نذهب لتبويب صورة Image ثم ننقر على “طبّق” > “حسنًا“. ستُحدَّث القوائم في المستند حسب التغييرات على النمط، ويمكننا تطبيق النمط المعدّل على أيّة قائمة في المستند الحالي لأن التغييرات ستبقى محفوظة. باختصار، تأتي مع كل نمط الخيارات الخاصة به، يمكنك استكشافها من مربع الحوار “نمط” وتعديلها حسب الرغبة. تحديث النمط من عنصر محدد يمكننا أيضًا أن نعدّل الأنماط الافتراضية (المبدئية) عن طريق تحديثها لتكتسب خصائص العنصر المحدد (فقرة، قائمة، إطار…إلخ)، وهذه الطريقة عكس الطريقة السابقة، أي أننا نقوم بتنسيق العنصر أولًا ثم نحدث النمط وفقًا لذلك، بدلًا من تعديل النمط ثم تطبيقه. لتحديث النمط، نحدد العنصر ذا التنسيق الذي نريد اعتماده نمطا، ومن نافذة الأنماط والتنسيق نحدد النمط الذي نريد تحديثه، ثم ننقر على السهم بجانب أيقونة الدلو في الجزء العلوي من النافذة ونختار “حدّث النمط Update Style“. على سبيل المثال، سنقوم بتحديث النمط المبدئي ليكون بنفس خصائص إحدى فقرات المستند التي نسّقناها مسبقًا؛ نضع مؤشر الكتابة داخل الفقرة، ثم نحدد “النمط المبدئي” من نافذة الأنماط والتنسيق، وأخيرًا ننقر على زر السهم ونختار “حدّث النمط“. عند تحديث النمط سيتغير مظهر جميع فقرات المستند التي طبّقنا عليها النمط المبدئي مسبقًا ليعكس خصائص النمط المُحَدّث. يمكن أيضًا تحديث النمط عن طريق الخيار “حدّث لتطابق التحديد” من القائمة الفرعية الخاصة بالنمط ضمن قائمة الأنماط الرئيسية. لا تقتصر إمكانيّة تطبيق التحديث على أنماط الفقرات فقط، وإنما على كلّ أنواع الأنماط، مع مراعاة تحديد العناصر ذات الصلة قبل تحديد النمط وتحديثه. ملاحظة: عندما تقوم بتحديث أحد أنماط الفقرات، تأكد من أنّ الفقرة المحددة منسقة بخصائص/سمات فريدة. لأنّه إذا كانت هناك خصائص مختلطة/مشتركة بين الفقرة والنمط الذي تريد تحديثه، ستبقى هذه الخصائص كما هي في السابق ولن يحدث أي تغيير. باستخدام خاصية التحديث التلقائي AutoUpdate تُطبّق هذه الخاصية على أنماط الفقرات والإطارات فقط. وكما هو واضح من الاسم، تعمل خاصية التحديث التلقائي على تحديث النمط تلقائيًا عندما تُعدِّل مباشرةً تنسيق الفقرة أو الإطار المطبّق عليه ذلك النمط. فلنفترض مثلًا أنَك قمت بتطبيق النمط “متن النص” على فقرة معينة، وأثناء العمل على مستندك، غيّرت تنسيق هذه الفقرة يدويًا من شريط أدوات التنسيق. في هذه الحالة سيُحدَّث النمط “متن النص” تلقائيًا ليُصبح تنسيقه مطابقًا للتنسيق الذي طبّقته. لتفعيل هذه الخاصية، انقر بزر الفأرة الأيمن على نمط الفقرة أو نمط الإطار في نافذة الأنماط والتنسيق واختر “عدّل Modify“: ومن تبويب “المنظِّم Organizer” أشِّر على مربع الخيار “حدّث آليًا“. أمثلة على استخدامات الأنماط في ما يلي أمثلة على الاستخدامات الشائعة لأنماط الفقرات والصفحات في LibreOffice Writer. تحديد صفحة أولى مختلفة للمستند تتضمن المستندات عادة، خصوصا التقارير والخطابات الرسمية، صفحة أولى تختلف عن بقية صفحات المستند. على سبيل المثال، تكون ترويسة الخطابات أو الأوراق الرسمية مختلفة عن ترويسة بقية الصفحات. كما أن الصفحة الأولى من تقرير ما قد لا تحتوي على رأس وتذييل، بينما تحتوي عليهما بقية الصفحات. يتيح LibreOffice Writer تحديد نمط صفحة مخصَّص للصفحة الأولى، ونمط آخر يطبق تلقائيًا على الصفحات التي تليها. يمكننا، مثلا، تطبيق نمط باسم “الصفحة الأولى First Page” على الصفحة الأولى من المستند والنمط “المبدئي Default” على بقية صفحات المستند. والشكل التالي يوضح ما سيكون عليه تخطيط المستند. تقسيم المستند إلى فصول بطريقة مماثلة لما ذكر أعلاه، بإمكاننا تقسيم المستند إلى فصول. فيمكن أن نطبق نمط “الصفحة الأولى” على صفحة البداية لكل فصل، والنمط “المبدئي” على بقية صفحات الفصل، وبعد نهاية الفصل ندرج فاصلًا يدويًّا (بالذهاب إلى قائمة إدراج > فاصل يدوي). ثم ننتقل إلى الفصل التالي ونطبّق نمط “الصفحة الأولى” على بداية الفصل… وهكذا. يوضح الشكل التالي ما سيكون عليه تخطيط المستند. تغيير اتجاه الصفحات ضمن المستند الواحد يمكن أن تحتوي مستندات Writer على صفحات بأكثر من اتجاه. من الأمثلة الشائعة؛ مستند يحتوي على صفحة باتجاه أفقي في وسطه، في حين تكون بقية الصفحات باتجاه عمودي (يمكن تحقيق ذلك باستخدام فواصل الصفحات Page Breaks أو أنماط الصفحات). لإدراج صفحة أفقية في وسط المستند، ينبغي أولًا إدراج فاصل صفحات (إدراج > فاصل صفحات) في الموضع المرغوب، ثم اختر نمط صفحة باتجاه أفقي (بالعرض Landscape). لكن ضع في اعتبارك أن القيام بذلك قد يتطلب منك تعديل خصائص الصفحة الأخرى، كالترويسة، التذييل، وترقيم الصفحة للنمط الأفقي. بعد ذلك قم بإدراج فاصل صفحات آخر بعد الصفحة الأفقية، واختر نمط الصفحة المبدئي ليُطبق على بقية صفحات المستند. عرض ترويسات مختلفة على الصفحات اليمنى واليسرى يمكن التحكم بإعدادات أنماط الصفحات لكي تعرض الصفحة اليمنى والصفحة اليسرى التي تقابلها بشكل متعاكس، أو لعرض الصفحات باتجاه اليمين فقط، أو باتجاه اليسار فقط. فعندما تقوم بإدراج ترويسة على نمط صفحة بتخطيط منعكس mirrored، أو بتخطيط يمين ويسار right-and-left، بإمكانك أن تجعل محتوى جميع الصفحات باتجاه واحد (على اليمين فقط، أو على اليسار فقط) أو باتجاهين مختلفين على الصفحات اليمنى والصفحات اليسرى. على سبيل المثال يمكنك وضع رقم الصفحة على الحافة اليسرى للصفحات اليسرى ووضعه على الحافة اليمنى للصفحات اليمنى، ووضع عنوان المستند على الحافة اليمنى للصفحات اليمنى فقط (كما موضح في الشكل أدناه) أو تخطيط الصفحة كما يناسب مستندك. التحكم بفواصل الصفحات تلقائيًا ينتقل Writer، في الإعداد المبدئي، إلى الصفحة التالية عندما تمتلئ الصفحة الأولى بالمحتوى. لكن يمكنك تغيير هذا الإعداد إن لم يكن مناسبًا لك. على سبيل المثال، بإمكانك أن تجعل إحدى الفقرات تبدأ في صفحة جديدة أو عمود جديد (حتّى وإن لم تكن الصفحة الحالية ممتلئة)، ومن ثم تحديد نمط الصفحة الجديدة. يمكنك استخدام مثل هذه الخاصية لعناوين الفصول التي غالبًا ما تبدأ في صفحة جديدة يُسرى (للمستندات باللغة العربية). إنشاء الفهارس تلقائيًا إذا كنت ترغب في إنشاء فهرس تلقائي،فيجب عليك أولا تطبيق الأنماط المناسبة على العناوين الرئيسية والعناوين الفرعية لمستندك، ثم افتح مربع الحوار “ترقيم التخطيط” (من القائمة “أدوات Tools” > “ترقيم التخطيط Outline Numbering“) لكي تحدّد الأنماط الخاصة بكل مستوى من مستويات الفهرس.تُنشّأ الفهارس مبدئيًّا باستخدام أنماط العناوين (Heading)، لكن بالطبع بإمكانك استخدام الأنماط التي تريد. تحديد تتابع أنماط الفقرات بإمكانك التحكم بإعدادات أحد أنماط الفقرات لكي يُطبَّق نمط معيّن (تحدده بنفسك) على الفقرة التالية عند الضغط على مفتاح Enter.على سبيل المثال، بإمكانك جعل الفقرة المطبق عليها النمط “عنوان رئيسي 1” تُتبع بفقرة يُطبق عليها النمط “متن النص“. مثال آخر؛ فقرة بنمط “المسمى الوظيفي” تُتبع بفقرة بنمط “عنوان رئيسي 1” تُتبع بفقرة بنمط “اقتباس” تُتبع بفقرة بنمط “عنوان رئيسي 2” تُتبع بفقرة بنمط “متن النص“.. وهكذا حسب التخطيط العام لمستندك. عند تحديد تتابع الأنماط بهذه الصورة، لن تضطر إلى تطبيق الأنماط يدويًا. ترجمة- بتصرّف - لدليل المستخدم الخاص بالحزمة المكتبية LibreOffice.
  9. إذا كنت من مستخدمي برنامج مايكروسوفت وورد الدائمين -ومن منّا لا يستخدمه- فلا بُدّ لك من التعرّف على واحدة من أهم الخصائص التي تساعدك على إنشاء مستندات متّسقة ومنسقة بصورة جيّدة؛ الأنماط Styles. تحتوي المستندات عادة على العديد من الفقرات، كالعنوان، المَتْن، العناوين الرئيسية، العناوين الفرعية، تسميات توضيحية، اقتباسات، إلخ. وعند تنسيق هذه الفقرات باستخدام النمط المناسب لكل فقرة، لا يؤدي ذلك إلى جعل المستند أكثر جاذبية من الناحية البصرية فحسب، وإنّما يساعد القرّاء على فهم ما يقرؤونه بشكل أفضل. في هذا الدرس سنتعلّم كيفية تطبيق الأنماط السريعة التي يوفّرها وورد بشكل افتراضي، وكذلك كيفية إنشاء أنماط جديدة إن لم نكن نرغب في استخدام الأنماط الجاهزة. تطبيق الأنماط السريعة توجد العشرات من الأنماط الجاهزة في وورد والتي يمكن الوصول إليها من معرض الأنماط ضمن تبويب الصفحة الرئيسية Home. الصورة أدناه توضّح مستندًا بسيطًا من صفحتين يحتوي على نصوص عادية غير منسقة، ويتكون من عنوان ومجموعة عناوين رئيسية وفرعية بالإضافة إلى محتوياتها: تبدو العناوين في المستند أعلاه غير بارزة بسبب عدم تنسيقها بتنسيق خاص، وهذا قد يشتت القارئ بعدم معرفة العنوان الذي ينتمي إليه ذلك المحتوى الذي يقرأه من النص. يمكننا تنسيق العناوين، أو غيرها، بالطريقة العادية باستخدام الأوامر الخاصة بتنسيق النصوص في تبويب الصفحة الرئيسية كحجم الخط، لونه، سمكه، إلخ. لكننا سنقوم بتطبيق الأنماط المناسبة للسرعة، السهولة، ولفائدة الأنماط الكبيرة في جعل بعض خصائص وورد تعمل بصورة مثالية، كالفهارس مثلا. نحدد الفقرة/النص التي نريد تطبيق النمط عليها ثم نذهب إلى معرض الأنماط في تبويب الصفحة الرئيسية Home، نمرر المؤشر فوق الأنماط المختلفة لعرض معاينة مباشرة، وعندما نحدد النمط المناسب ننقر عليه لتطبيقه: كما نلاحظ، هناك العديد من الأنماط المختلفة كنمط للتوكيد، نمط للاقتباس، نمط للعناوين الفرعية، إلخ. لقد قمنا باختيار النمط Title لأنه ما يناسب عنوان المستند، وعند تطبيقه يتغيّر حجم ونوع الخط (أو لونه في أنماط أخرى) تلقائيا. قمنا بتطبيق أنماط أخرى على بقية الفقرات (نمط Heading 1 للعناوين الرئيسية، ونمط Heading 2 للعناوين الفرعية). ويمكننا الاستدلال إلى نوع النمط المطبّق على الفقرة بوضع المؤشر فوقها، إذ سيتغّير النمط في معرض الأنماط كلما قمنا بتغيير موضع مؤشر الكتابة: يمكننا الوصول إلى هذه الأنماط أيضا وتفاصيلها من جزء الأنماط Styles Pane. ننقر على أيقونة مشغّل جزء الأنماط في أسفل يمين خانة الأنماط لفتحها: نضع مؤشر الكتابة عند الفقرة التي نريد تطبيق النمط عليها، ثم ننقر على النمط من جزء الأنماط. من فوائد هذه القائمة أنّها تعرض تفاصيل النمط (نوع الخط، حجمه، المسافات البادئة، إلخ) بمجرّد تمرير المؤشر فوقه: وهناك طريقة أخرى لعرض الأنماط، بفتح جزء تطبيق الأنماط Apply Styles Pane: يحتوي هذا المربّع على نفس الأنماط السريعة بالإضافة إلى المزيد من الأنماط الأخرى، والكثير منها خاصّة بالجداول. يمكننا كتابة اسم النمط في حقل الاسم Style Name للبحث عنه أو تصفّح الأنماط في القائمة وتحديدها: تغيير مجموعة الأنماط Styles Set إنّ مجموعة الأنماط الموجودة ضمن معرض الأنماط هي المجموعة الأساسية والافتراضية للمستند. لدينا خيار تغيير تنسيق هذه الأنماط بالكامل من تبويب تصميم Design، إذ يمكننا انتقاء مجموعة أنماط جديدة تختلف عن المجموعة الافتراضية من حيث خصائص الخط والفقرات. نمرر المؤشر فوق أحد التنسيقات من معرض تنسيق المستند Document Formatting لعرض معاينة مباشرة، وعند اختيار المجموعة المناسبة ننقر عليها لاختيارها: بعد اختيار مجموعة الأنماط الجديدة سيتغيّر مظهر المستند بالكامل، وكذلك ستتغيّر الأنماط السريعة في معرض الأنماط تبعا لذلك: ويمكننا تغيير النسق Theme، الخطوط Fonts، الألوان Colors، تباعد الفقرات Paragraph Spacing، وغيرها من الخيارات من نفس التبويب أيضا: ملاحظة: إذا كنت تستخدم إصدارا أقدم من 2013 فستجد معظم هذه الخيارات مجموعة ضمن أمر تغيير الأنماط Change Styles في تبويب الصفحة الرئيسية Home: مصدر الصورة مسح الأنماط والتنسيقات قد نحتاج أحيانا إلى مسح كافة التنسيقات وكافة الأنماط المطّبقة على فقرات المستند، وخصوصا إن لم نكن نحن من قام بإنشاء المستند من الأصل. في هذه الحالة من الأفضل إزالة هذه التنسيقات والأنماط ثم إعادة تنسيقها من جديد لتسهيل تمييز الفقرات التي قمنا بتطبيق تنسيقاتنا الخاصة عليها. للقيام بذلك نحدد الفقرة التي نريد مسح تنسيقاتها ثم نفتح جزء الأنماط وننقر على مسح الكل Clear All: أو ننقر على أمر مسح التنسيق بأكمله Clear All Formatting من خانة خط Font في تبويب الصفحة الرئيسية Home: نكرر الخطوة أعلاه على جميع الفقرات المنسّقة. لكنّ هذه العملية تصبح مملة ومضيّعة للوقت إذا كان المستند طويلا أو كانت التنسيقات والأنماط كثيرة ومعقّدة، ولذلك من الأفضل تحديد كافة محتويات المستند (Ctrl+A) ثم ننقر على مسح الكل Clear All: من الجدير بالذكر أنّ الأنماط تخلّصنا من الحاجة إلى إضافة فقرات إضافية من أجل ضبط التباعد بين الفقرات. فإذا كان المستند يحتوي على نصوص عادية بالشكل التالي: سيكون من الصعب تمييز بدايات الفقرات وسواء كانت عناوين أو غيرها، ولذلك سنضطر إلى إضافة فقرات إضافية بين العنوان والمتن: لكن عند تطبيق النمط المناسب على كل فقرة، سيتم ضبط تباعد الفقرات تلقائيا، وهذه فائدة أخرى لاستخدام الأنماط. إذا، فالأنماط هي عبارة عن خيارات تنسيقية تحسّن من مظهر المستند وتجعله سهل القراءة، كما توفّر الكثير من الوقت وتسّهل استخدام عدد من الخصائص الأخرى في البرنامج كالفهارس Table of Contents، الإسناد الترافقي Cross-reference، الارتباطات التشعبية Hyperlinks، إلخ. إنشاء أنماط جديدة بالرغم من التعدد في الأنماط الجاهزة المتوفرة في معرض الأنماط ومجموعات الأنماط المتوفرة في معرض تنسيق المستند، إلّا أنّنا في بعض الأحيان نحتاج إلى أنماط مخصصة تكون سمة للمستندات التي ننشئها. ومهما كان نوع النمط، يمكننا إنشاءه بعدة خطوات بسيطة. مثلا، في المستند الموضّح في الصورة أدناه، والذي لم يُطبّق عليه أي نمط أو تنسيق، إذا رغبنا في تنسيق كلمة "Workability" بنسق مخصص بحيث تظهر في كل الفقرات بهذا التنسيق يمكننا إنشاء نمط بهذا التنسيق وإضافته إلى معرض الأنماط. نقوم أولا بتنسيق الكلمة حسب ما هو مرغوب (قمنا بتغيير اللون ونوع الخط، وكذلك جعلناه مائلا Italic) ثم تحديدها (كلها أو جزء منها) والنقر على السهم في أقصى يمين معرض الأنماط، ثم نختار إنشاء نمط Create a Style: في مربع الحوار الذي سيظهر نقوم بإدخال الاسم المرغوب للنمط ثم ننقر على موافق OK: ستتم إضافة النمط الجديد إلى معرض الأنماط، وبذلك يمكننا البحث عن كلمة "Workability" في كافة فقرات المستند وتطبيق هذا النمط عليها: أو بطريقة أكثر اختصارا باستخدام خاصية الاستبدال Replace. نحدد كلمة "Workability" ثم ننقر على أمر استبدال Replace من تبويب الصفحة الرئيسية Home: من مربع الحوار Find and Replace نكتب نفس الكلمة (Workability) في حقل استبدال بـ Replace With ثم نتأكد من وضع مؤشر الكتابة في هذا الحقل، وننقر على Format ونختار Style: نحدد النمط الذي قمنا بإنشائه في الخطوة السابقة، ثم ننقر على موافق OK: بعد ذلك ننقر على زر استبدال الكل Replace All: وبذلك سيُطبّق النمط على جميع الكلمات مرّة واحدة، بدلا من تطبيقه على كل كلمة على حدة. بالإضافة إلى طريقة إنشاء نمط جديد التي قمنا بشرحها أعلاه، بإمكاننا تعريف نمط جديد وتخصيص كافة خياراته. مثلا إذا رغبنا في تعريف نمط للفقرات التي تمثل محتوى العناوين الفرعية، نضع مؤشر الكتابة داخل إحدى هذه الفقرات، ثم ننقر على زر نمط جديد New Style من جزء الأنماط: في مربع الحوار الذي سيظهر نقوم بإدخال اسم النمط، ونحدد نوعه Style Type سواء كان حرف Character، فقرة Paragraph، جدول Table، إلخ. والفرق بين الحرف والفقرة هو أنّ الأول سيُطبق على الكلمة التي يوجد عندها مؤشر الكتابة فقط، أما الثاني فيُطبّق على كامل الفقرة التي يوجد عندها مؤشر الكتابة. من قائمة Style based on نحدد النمط الذي نريد بناء نمطنا الجديد على أساسه (أي نستخدم خصائص ذلك النمط كأساس نبدأ بتعديل خياراتنا منه). نعدّل الخيارات الأخرى كالمسافة البادئة للفقرة، لون النص، حجم الخط، سمكه، نوعه، وغيرها. ويمكن الاستفادة من حقل المعاينة لمعرفة كيف سيبدو النمط الذي نقوم بإنشائه. بعد الانتهاء من تعديل جميع الخيارات ننقر على موافق OK: سيتم إدراج النمط الجديد في معرض الأنماط السريعة، ويمكننا تطبيقه على الفقرات بوضع مؤشر الكتابة فوق الفقرة ثم النقر على النمط: تعديل النمط إذا كنا نرغب في تعديل خيارات النمط الذي قمنا بإنشائه، أو أي نمط آخر موجود ضمن معرض الأنماط، ننقر بزر الفأرة الأيمن عليه ثم نختار تعديل Modify: أو بطريقة أخرى، ننقر على السهم بجانب اسم النمط في جزء الأنماط ونختار تعديل Modify: وفي الحالتين سيُفتح نفس مربع الحوار، Modify Style، ومنه نقوم بالتعديل المرغوب. سنقوم مثلا بإضافة مسافة تباعد عند نهاية الفقرة، ونلاحظ أنّ أي خيار نقوم بتخصيصه يظهر في المربّع السفلي الذي يوضّح خصائص النمط: بعد الانتهاء ننقر على موافق OK، وسيتم تطبيق التغيير في النمط على جميع الفقرات المُطبّق عليها هذا النمط، وبهذا نختصر الكثير من الوقت بدلا من إضافة تباعد لكل فقرة على حدة. استخدام مركز التحكم بالنمط Style Inspector مع تعدد طرق تنسيق النصوص في وورد، قد يصعب أحيانا معرفة نوع التنسيق المطبّق على فقرة أو كلمة معيّنة. لكن باستخدام أداة Style Inspector يمكننا معرفة بالضبط فيما إذا تم تطبيق تنسيق يدوي على النص بالإضافة إلى تنسيق النمط المُطبّق عليه. يمكننا أيضا استخدام خيارات Style Inspector وبالتحديد Reveal Formatting إذا كنا نريد معرفة تفاصيل النمط وتخصيص خياراته بدقة. للوصول إلى هذه الأداة، نفتح جزء الأنماط وننقر على زر Style Inspector: في نافذة مركز التحكم بالنمط يُوضَّح النمط المطبّق على الفقرة/الكلمة التي يوجد عندها مؤشر الكتابة. ومن خلاله يمكننا إزالة نمط الفقرة الحالي المخصص وإعادة تعيين النمط العادي Normal بالنقر على زر Reset to Normal Paragraph Style: أو إزالة التنسيق المطبّق يدويا على النص مع الإبقاء على التنسيق الآتي من النمط بالنقر على زر Clear Character Formatting: ولمعرفة تفاصيل النمط الحالي والتعديل عليها ننقر على زر Reveal Formatting: من خلال جزء Reveal Formatting بإمكاننا رؤية جميع المعلومات الخاصة بتنسيق النمط، وعند النقر على كل خيار ستُفتح نافذة مستقلة يمكننا بواسطتها تخصيص خيارات أكثر تفصيلا: فعند النقر على الخط Font مثلا، سيفتح مربع حوار يحتوي على كل ما يتعلّق بالخط من خيارات يمكن تخصيصها: وعندما ننقر على التباعد Spacing سنتمكن من تخصيص خيارات مسافات التباعد بدقة أكبر، حتى أنّه بالإمكان إدخال القيم يدويا، وهذا ما لم نتمكن من فعله في مربع الحوار Modify Style: إضافة النمط إلى المستندات الجديدة أو المستندات الموجودة عندما نقوم بإضافة النمط إلى معرض الأنماط السريعة، فإنّه وبشكل افتراضي يُضاف إلى المستند الحالي فقط. لكن هناك إمكانية إضافته إلى كل المستندات الجديدة التي نقوم بإنشائها أو المستندات الموجودة مسبقا. نقوم بفتح مربع الحوار Modify Style بالنقر بزر الفأرة الأيمن على النمط الذي قمنا بإنشائه ثم نختار Modify. عند فتح مربّع الحوار، نلاحظ أنّ الخيار Only in this Document محدد تلقائيا، وهذا يعني أنّ النمط الحالي مضاف إلى المستند الحالي فقط. لجعل النمط يُضاف إلى كل مستند جديد يُستخدم فيه القالب الحالي نحدد الخيار New Document based on this template: وبما أنّ القالب الذي نستخدمه في هذا المثال هو القالب العادي Normal، فإنّ هذا النمط سيُضاف إلى معرض الأنماط السريعة كلما قمنا بفتح مستند جديد بقالب فارغ: إما لإضافة النمط إلى مستند موجود مسبقا، نقوم بالنقر على زر إدارة الأنماط Manage Style من جزء الأنماط: في مربع الحوار الذي سيظهر ننقر على زر استيراد/تصدير Import/Export: في مربع الحوار Organizer لدينا مربعان، الأول (على جهة اليسار في الصورة أدناه) يحتوي على الأنماط الموجودة في المستند الذي نعمل عليه، Workability. والثاني (على جهة اليمين في الصورة أدناه) يحتوي على الأنماط الموجودة في القالب الافتراضي Normal: ما نريد القيام به هو نسخ النمط الذي قمنا بإنشائه سابقا باسم "Body Text1" من المستند الحالي، إلى مستند محفوظ لدينا على الجهاز باسم "The Bailey Method"، لذلك سنقوم أولا بإغلاق مستند القالب Normal بالنقر على زر Close File (المحدد في الصورة أعلاه)، ثم النقر على Open File: عند الانتقال إلى المجلد الذي نحفظ فيه المستند، سنلاحظ أنّه لا يحتوي على أي مستندات، وذلك لأنّ الامتدادات المحددة هي قوالب وورد All Word Templates. نقوم بتغيير هذا الخيار إلى كافة مستندات وورد All Word Documents: نحدد المستند المطلوب، وهو "The Bailey Method" في هذا المثال ثم ننقر على فتح Open: ستتم إضافة الأنماط الموجودة في هذا المستند إلى المربع على جهة اليمين. نحدد النمط الذي نريد نسخه من مستند "Workability"، وهو "Body Text1" ثم ننقر على زر نسخ Copy، وستتم إضافته إلى قائمة أنماط المستند "The Bailey Method": نغلق مربع الحوار Organizer ونحفظ التغييرات بالنقر على Save. عندما نقوم بفتح المستند "The Bailey Method" في المرة القادمة، سنجد أن النمط Body Text1 موجود ضمن معرض الأنماط السريعة:
×
×
  • أضف...