2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.
 
 Подсветка синтаксиса. Тег [syntax][/syntax]
Сообщение12.11.2009, 05:37 
Основатель
Аватара пользователя


11/05/05
4313
Теперь у вас есть возможность использовать подсветку синтаксиса с помощью тега [ syntax ]
Доступные аргументы простой версии тега (без указания языка):
  • start="<номер>" -- начать нумерацию с заданного числа
  • filename="<имя файла, используемое при скачивании кода>"
  • highlight="Номера строк, которые надо выделить, разделенные запятыми, либо дефисом в случае диапазона строк".
  • Для подсветки части строки можно использовать тег [highlight] ... [/highlight]. Для подсветки строки целиком, используйте аргумент highlight

Важно: Используя нотацию [ syntax=php ], вы задаете язык, поэтому некоторые вышеуказанные опции неприменимы.

Если вы указываете язык для подсветки с помощью аргумента lang=<язык> (например, lang=mysql) то можно использовать следующие опции:
  • lang="latex | matlab | python | cpp | sql | ... " - Поддерживается более 200 языков, список см. ниже.
  • start="<номер строки>" -- начать нумерацию с заданного числа
  • highlight="Номера строк, которые надо выделить, разделенные запятыми, либо дефисом в случае диапазона строк".
  • filename="<имя файла, используемое при скачивании кода>"
  • lines="n | f " -- способ отображения номеров строк. 'n' -- обычная (normal) нумерация, 'f' -- с поддержкой 'fancy' строк. См. примеры.
  • fancy="5" -- Выделяет каждую 5-ю строку, используется только если опция lines выставлена в 'f'

По умолчанию, если указан язык, то номера строк отображаться не будут. Для их отображения используйте опцию lines.

Примеры:
1. Пример без указания языка:
Код:
[syntax] ... [/syntax]

  1.   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam enim magna, commodo in ultricies id,  
  2. venenatis sed massa. Fusce at massa lacus. Ut aliquam, erat at auctor molestie, libero orci venenatis lorem,  
  3. sit amet vulputate libero nisi eget massa. Aliquam erat enim, mollis eget molestie ut, ullamcorper at lectus.  
  4. Aenean mi turpis, hendrerit in venenatis et, lobortis nec libero. Fusce pretium gravida nisi sed aliquet.  
  5. Morbi lobortis, erat sit amet dapibus ultrices, est orci aliquam orci, ut pellentesque erat odio in enim. Etiam id  
  6. ipsum at nisi vestibulum ullamcorper. Aliquam sollicitudin sollicitudin enim, eu dignissim metus laoreet vel. Proin  
  7. auctor, turpis vitae blandit semper, nisi diam molestie elit, ac iaculis ligula diam eu mauris. Sed sit amet elit  
  8. sapien. Proin at quam sem, vitae cursus diam. In varius nisi quis nunc scelerisque vitae varius arcu semper.  
  9. Vivamus consectetur placerat aliquet.    


2. Без указания языка, но с использованием опций:
Код:
[syntax start="4" filename="lorem.txt" highlight="4-5,7,9"] ... [highlight]....[/highlight] .... [/syntax]

код: (lorem.txt) [ скачать ] [ спрятать ]
  1.   Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam enim magna, commodo in ultricies id,  
  2. venenatis sed massa. Fusce at massa lacus. Ut aliquam, erat at auctor molestie, libero orci venenatis lorem,  
  3. sit amet vulputate libero nisi eget massa. Aliquam erat enim, mollis eget molestie ut, ullamcorper at lectus.  
  4. Aenean mi turpis, hendrerit in venenatis et, lobortis nec libero. Fusce pretium gravida nisi sed aliquet.  
  5. Morbi lobortis, erat sit amet dapibus ultrices, est orci aliquam orci, ut pellentesque erat odio in enim. Etiam id  
  6. ipsum at nisi vestibulum ullamcorper. Aliquam sollicitudin sollicitudin enim, eu dignissim metus laoreet vel. Proin  
  7. auctor, turpis vitae blandit semper, nisi diam molestie elit, ac iaculis ligula diam eu mauris. Sed sit amet elit  
  8. sapien. Proin at quam sem, vitae cursus diam. In varius nisi quis nunc scelerisque vitae varius arcu semper.  
  9. Vivamus consectetur placerat aliquet.    

3. Основной вариант использования:
Код:
[syntax=latex] ... [/syntax] или [syntax="latex"] ... [/syntax]
[syntax lang=perl] ... [/syntax]

код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass [11pt] {letter}
\begin{document}
\begin{letter} {Mr. G. Electric
\\Wheatstone Inc.\\33 Circuit Dr.\\
Corporation, California 02019}
\address{Mr. J. Powers\\Buffalo Lighting Co.
\\33 Washington St.\\Bison, New York 14230}
\signature{James Powers\\
President, Buffalo Lighting Co.}
\opening{Dear Mr. Electric:}

The power grid at 33 Washington St. has
failed due to an explosion of your
supermagneto transformer. We would
like you to repair it as per
your warranty stipulation.

\closing{Best regards,}
\cc{VP JES}
\end{letter}
\end{document}

Если строк в коде совсем немного, то Сворачивать/Разворачивать нечего:
Используется синтаксис Perl
#!/usr/bin/perl
print "Hello, world!\n";
 


4. Использование дополнительных опций:
Код:
[syntax lang=oracle11 start=91 lines=n] ... [/syntax]

Используется синтаксис Oracle 11 SQL
  1.     DELETE FROM btv_program_vb
  2.      WHERE prog_uid NOT IN (SELECT DISTINCT prog_uid FROM btv_event);
  3.     v_del_count := SQL%ROWCOUNT;
  4.     state_output('Delete rows count for (btv_program_vb) : ' ||
  5.                  v_del_count);
  6.  
  7.     DELETE FROM btv_program_ml
  8.      WHERE prog_uid NOT IN (SELECT DISTINCT prog_uid FROM btv_event);
  9.     v_del_count := SQL%ROWCOUNT;
  10.     state_output('Delete rows count for (btv_program_ml) : ' ||
  11.                  v_del_count);
  12.  

Код:
[syntax lang=oracle11 start=91 lines=f fancy=5] ... [/syntax]

Используется синтаксис Oracle 11 SQL
  1.     DELETE FROM btv_program_vb
  2.      WHERE prog_uid NOT IN (SELECT DISTINCT prog_uid FROM btv_event);
  3.     v_del_count := SQL%ROWCOUNT;
  4.     state_output('Delete rows count for (btv_program_vb) : ' ||
  5.                  v_del_count);
  6.  
  7.     DELETE FROM btv_program_ml
  8.      WHERE prog_uid NOT IN (SELECT DISTINCT prog_uid FROM btv_event);
  9.     v_del_count := SQL%ROWCOUNT;
  10.     state_output('Delete rows count for (btv_program_ml) : ' ||
  11.                  v_del_count);
  12.  


Код:
[syntax lang="perl" highlight=3-4,7-8,10,12] ... [/syntax]


код: [ скачать ] [ спрятать ]
Используется синтаксис Perl
use warnings;
use strict;

my %averages;

open( my $SCORES, '<', 'c:/scripts/skaters.txt' )
    or die "Can't open score file: $!\n";
while ( <$SCORES> ) {
    chomp;
    my ($name,@scores) = split ',';
    @scores = sort @scores;

    # Drop high & low scores
    pop @scores;
    shift @scores;

    my $total;
    $total += $_ for @scores;
    $averages{$name} = $total/scalar @scores;
}
close $SCORES;

my @names_by_score =
    sort {$averages{$b} <=> $averages{$a}} keys %averages;
for my $name ( @names_by_score[0..2] ) {
    print "$name: $averages{$name}\n";
}


Поддерживаемые языки:
Версия Syntax Highlighter: 1.0.15 Релиз: 1 Сборка: 43
Syntax Highlighter based on the XS BBCode parser.
Поддерживаются следующие BBCode теги: version, syntax

(202) Поддерживаемые языки: 4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, asm, asp, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, oobas, oracle11, oracle8, oxygene, oz, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, python, q, qbasic, rails, rebol, reg, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, uscript, vala, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xhtml, xml, xorg_conf, xpp, yaml, z80, zxbasic


Известные проблемы: К сожалению, плагин устроен таким образом, что обработка тега syntax производится уже после обработки всех других тегов и смайликов, поэтому следует быть особо внимательными при использовании вложенных тегов и смайликов.

 Профиль  
                  
 
 Re: Подсветка синтаксиса. Тег [syntax][/syntax]
Сообщение22.04.2011, 16:38 
Основатель
Аватара пользователя


11/05/05
4313
Примеры кода на разных языках

ABAP
Код языка для тега sytnax: abap
Описание языка: http://en.wikipedia.org/wiki/ABAP

код: [ скачать ] [ спрятать ]
Используется синтаксис ABAP
*
* This program interprets the sequential file created by ZHEAVYPR
* and displays the "heavy" ABAPs of a specified period of time.
* The result is a list of ABAPS categorized by app. server and
* work process type, and sorted by a number: how many times
* that particular ABAP was found running for too long time (>5min)
* during that period.
*
REPORT ZHEAVYLS.

DATA: INPUT_FILE(40) VALUE '/oracle/SID/sapreorg/heavy_abaps'.
PARAMETERS: DATE LIKE AMDS-ANDAT DEFAULT SY-DATUM,
            FROMTIME LIKE PLKZ-AEUZEIT DEFAULT SY-UZEIT,
            TOTIME LIKE PLKZ-AEUZEIT DEFAULT SY-UZEIT.

DATA: BEGIN OF O,
      1(10), 2(8), 3(8), 4(3), 5(8), 6(8),
END OF O.
DATA: BEGIN OF A OCCURS 100,
      3(8), 4(3), 6(8), NUM TYPE I,
END OF A.

OPEN DATASET INPUT_FILE FOR INPUT IN TEXT MODE.
DO.
  READ DATASET INPUT_FILE INTO O.
  IF SY-SUBRC <> 0.EXIT.ENDIF.
  IF O-1 = DATE AND O-2 >= FROMTIME AND O-2 <= TOTIME.
    MOVE-CORRESPONDING O TO A. A-NUM = 1.
    COLLECT A.
  ENDIF.
ENDDO.
CLOSE DATASET INPUT_FILE.

WRITE: / DATE, FROMTIME, '---', TOTIME.
SKIP 2.
SORT A BY 3 4 NUM DESCENDING.
LOOP AT A.
  AT NEW 3.
    WRITE: / A-3 COLOR 2.
  ENDAT.
  AT NEW 4.
    WRITE: / '      ',A-4 COLOR 3.
  ENDAT.
  WRITE: / '             ', A-6, A-NUM.
ENDLOOP.



ActionScript
Код языка для тега sytnax: actionscript, actionscript3
Описание языка: http://en.wikipedia.org/wiki/Actionscript

код: [ скачать ] [ спрятать ]
Используется синтаксис ActionScript 3
class VerletPoint {
        public var x:Number;
        public var y:Number;   
        public var anc_x:Number;
        public var anc_y:Number;
        public var anchored:Boolean;                           
        private var _oldX:Number;
        private var _oldY:Number;
        private static const SPEED_FACT:Number = .92;
        function VerletPoint(x:Number, y:Number) {                                             
                anchored = false;
                anc_x = 0;
                anc_y = 0;
                setPosition(x, y);
        }
        public function anchor(x:Number, y:Number):void {
                anchored = true;
                anc_x = x;
                anc_y = y;
        }
        public function update():void {
                //move this dot to next position depending on its speed and direction.                 
                var tempX:Number = x;
                var tempY:Number = y;
                if (!anchored){
                        x += vx; //vel in x (speed)
                        y += vy; //vel in y (speed)
                }
                _oldX = tempX;
                _oldY = tempY;
        }
        public function setPosition(x:Number, y:Number):void {
                //setup a point position and reset speed.
                this.x = _oldX = x;
                this.y = _oldY = y;
        }
        public function constrain(left:Number, right:Number, top:Number, bottom:Number):void {
                //ensure that the points are still inside limits (the screen)
                x = Math.max(left, Math.min(right, x));
                y = Math.max(top, Math.min(bottom, y));
        }
        public function get vx():Number {
                return (x - _oldX) * SPEED_FACT;
        }
        public function get vy():Number {
                return (y - _oldY) * SPEED_FACT;
        }              
}


ADA
Код языка для тега sytnax: ada
Описание языка: http://en.wikipedia.org/wiki/Ada_(programming_language)

код: [ скачать ] [ спрятать ]
Используется синтаксис Ada
with Ada.Text_IO; use Ada.Text_IO;
 
procedure Traffic is
 
   type Airplane_ID is range 1..10;         -- 10 airplanes (= tasks)
 
   task type Airplane(ID: Airplane_ID);     -- task type representing airplanes
   type Airplane_Access is access Airplane; -- access type (reference) to Airplane
 
   protected type Runway is             -- a protected object - the shared runway
      entry Assign_Aircraft(ID: Airplane_ID);
      entry Cleared_Runway (ID : Airplane_ID);
      entry Wait_For_Clear;
   private
      Clear: Boolean := True; -- protected private data - generally more than just a flag...
   end Runway;
   type Runway_Access is access all Runway;
 
   -- the air traffic controller takes requests for takeoff and landing
   task type Controller(My_Runway: Runway_Access) is
      entry Request_Takeoff (ID: in Airplane_ID; Takeoff: out Runway_Access);
      entry Request_Approach(ID: in Airplane_ID; Approach: out Runway_Access);
   end Controller;
 
   Runway1    : aliased Runway;             -- instantiate a runway
   Controller1: Controller(Runway1'Access); -- and a controller to manage it
 
  ------ the implementations of the above types ------
   protected body Runway is
      entry Assign_Aircraft (ID : Airplane_ID)
        when Clear is   -- the entry guard - tasks are blocked until this is true
      begin
        Clear := False;     Put_Line (Airplane_ID'Image (ID) & " on runway ");
      end;
 
      entry Cleared_Runway (ID : Airplane_ID) when not Clear is
      begin
         Clear := True;     Put_Line (Airplane_ID'Image (ID) & " cleared runway ");
      end;
 
      entry Wait_For_Clear when Clear is begin
         null;
      end;
   end Runway;
 
   task body Controller is
   begin
      loop
         My_Runway.Wait_For_Clear;   -- wait until runway is available
         select                      -- wait for two types of requests
            when Request_Approach'count = 0 =>  -- landings have priority
             accept Request_Takeoff (ID : in Airplane_ID; Takeoff : out Runway_Access) do
               My_Runway.Assign_Aircraft (ID);  -- reserve runway
               Takeoff := My_Runway;            -- tell airplane which runway
            end Request_Takeoff;                -- end of the synchronised part
         or
            accept Request_Approach (ID : in Airplane_ID; Approach : out Runway_Access) do
               My_Runway.Assign_Aircraft (ID);
               Approach := My_Runway;
            end Request_Approach;
         or                          -- terminate if nobody left who could call
            terminate;
         end select;
      end loop;
   end;
 
   task body Airplane is
      Rwy : Runway_Access;
   begin
      Controller1.Request_Takeoff (ID, Rwy); -- wait to be cleared for takeoff
      Put_Line (Airplane_ID'Image (ID) & "  taking off...");  delay 2.0;
      Rwy.Cleared_Runway (ID);
      delay 5.0; -- fly around a bit...
      loop
         select   -- try to request a runway
            Controller1.Request_Approach (ID, Rwy); -- this is a blocking call
            exit; -- if call returned we're clear for landing - proceed...
 
         or delay 3.0;  -- timeout - if no answer in 3 seconds, do something else
            Put_Line (Airplane_ID'Image (ID) & "   in holding pattern");
         end select;
      end loop;
      delay 4.0;  -- do landing approach...
      Put_Line (Airplane_ID'Image (ID) & "            touched down!");
      Rwy.Cleared_Runway(ID);  -- notify runway that we're done here.
   end;
 
   New_Airplane: Airplane_Access;
begin
   for I in Airplane_ID'Range loop  -- create a few airplane tasks
      New_Airplane := new Airplane(I); delay 3.0;
   end loop;
end Traffic;


To be continued

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 2 ] 

Модераторы: cepesh, Forum Administration



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group