<<Include(Menus/QAProcess)>>

####################################
##FILL ME IN
####################################
## for a custom note with links:
## note = Before writing a tutorial take the time to review the [[ROS/Tutorials|ROS tutorials]]
## for the canned note of "This tutorial assumes that you have completed the previous tutorials:" just add the links
## note.0=
## descriptive title for the tutorial
## title= 튜토리얼 작성하기
## multi-line description to be displayed in search
## description = 이 튜토리얼은 튜토리얼 작성을 위한 튜토리얼입니다.
## the next tutorial description (optional)
## next =
## links to next tutorial (optional)
## next.0.link=
## next.1.link=
## what level user is this tutorial for
## level= BeginnerCategory
## keywords = teaching, tutorials, writing
####################################
<<IncludeCSTemplate(TutorialCSHeaderTemplate)>>

<<TableOfContents(4)>>

=== 시작하기 ===
튜토리얼 작성을 위해 작성하고자 하는 Stack과 Package page로 이동합니다. 만약 아직 튜토리얼이 존재하지 않는다면, 아래와 같은 Page가 출력됩니다.

{{attachment:newpagetemplate.png||width="80%"}}

Click on the TutorialIndexTemplate link, and save the suggested preview without changes. This will create a new page for creating tutorials as shown below:

{{attachment:createnewtutorial.png}}

This page is useful for creating tutorials and will display the list of current tutorials. In the sidebar of the stack or package page there will be a link created for tutorials as shown below:
|| {{attachment:packagesidebar.png}} || {{attachment:stacksidebar.png}} ||




=== 새 튜토리얼 만들기 ===
In the create a new tutorial box enter a page name for your new tutorial and click the button. This will create a new page using the TutorialTemplate which looks something like (some ! are added in front of the keys so that the header for this page is generated correctly):

{{{#!cplusplus block=tutorial numbers =off
####################################
##FILL ME IN
####################################
## for a custom note with links:
## !note =
## for the canned note of "This tutorial assumes that you have completed the
## previous tutorials:" just add the links
## !note.0.link=
## descriptive title for the tutorial
## !title =
## multi-line description to be displayed in search
## !description =
## the next tutorial description (optional)
## !next =
## links to next tutorial (optional)
## !next.0.link=
## !next.1.link=
## what level user is this tutorial for
## !level= (BeginnerCategory, IntermediateCategory, AdvancedCategory)
## !keywords =
####################################

!<<IncludeCSTemplate(TutorialCSHeaderTemplate)>>
}}}
Note that until you save the page at least once, the preview button does not seem to be working properly.

=== Template Header 채우기 ===
위의 template은 위와 같은 page와 비슷한 header를 자동으로 생성합니다.

==== Note ====
Note는 tutorial을 page 위에 tutorial을 따라가기 위한 주의점이나 정보를 담는 파란 박스를 생성합니다.

아래의 text는 아래와 같이 생성됩니다.

{{{
note= This is my awesome text
}}}
||<#cce0ff>'''Note:''' This is my awesome text. ||


아래와 같이 사용한다면:

{{{
note.0=[[ROS/Tutorials|ROS tutorials]]
note.1=[[Documentation| ros.org]]
}}}
위의 text는 아래와 같이 링크를 추가합니다. 이번 예제는 전 예제를 비슷하게 따라했다는 것을 가정합니다.
||<#cce0ff>'''Note:''' This tutorial assumes that you have completed the previous tutorials: [[ROS/Tutorials|ROS tutorials]], [[Documentation|ros.org]]. ||




Note that if you want to place links in your custom text for the note they should go in-line rather than in note.0, note.1, etc. This will keep "This tutorial assumes that you have completed the previous tutorials:" from appearing undesired.

==== Title ====
Title은 Index page와 Tutorial page 위에 표시되는 제목입니다.

{{{
!title= My Awesome Tutorial
}}}
==== Description ====
Description은 Page위에 표시되며, Title과 같이 index page에서 설명으로 표시됩니다.

{{{
description= My awesome tutorial is amazingly awesome and cool, you won't even believe it, do it now!
}}}
아래와 같이 보입니다:
||<#FFFFCC>'''Description:''' My awesome tutorial is amazingly awesome and cool, you won't even believe it, do it now! ||




==== Next ====
Next는 링크하고 싶은 tutorial에 링크 할 때 사용됩니다. 이 Field는 옵션이며, 아무 것도 채워지지 않았을 경우 아무 것도 표시되지 않습니다.

{{{
next=Here are the next awesome tutorials
next.0.link=[[ROS/Tutorials|ROS tutorials]]
next.1.link=[[actionlib_tutorials/Tutorials|actionlib tutorials]]
}}}
아래와 같이 보입니다:
||<#FFFFCC>'''Next Tutorial:''' Here are the next awesome tutorials [[ROS/Tutorials|ROS tutorials]] [[actionlib_tutorials/Tutorials|actionlib tutorials]]. ||




혹은:

{{{
next.0.link=[[actionlib_tutorials/Tutorials|Actionlib tutorials]]
}}}
아래와 같이 보입니다:
||<#FFFFCC>'''Next Tutorial:''' [[actionlib_tutorials/Tutorials|Actionlib tutorials]]. ||




==== Level ====
Level은 2가지 목적을 위해 사용됩니다. 하나는 독자에게 이 tutorial의 level을 알려주는 목적과 index page에서 category로 분류하기 위한 목적을 가지고 있습니다.

{{{
level=AdvancedCategory
}}}
아래와 같이 보입니다:
||<#FFFFCC>'''Tutorial Level:''' ADVANCED ||




==== Keywords ====
Keywords 는 독자에게 만들고자 하는 tutorial을 쉽게 찾도록 도와줍니다.

{{{
keywords= great, cool, awesome
}}}
아래와 같이 보입니다:
||<#FFFFCC>'''Keywords:''' great, cool, awesome ||




=== 유용한 Macros ===
튜토리얼 작성을 위한 유용한 Macro에 대한 설명입니다.

==== Parsers ====
현재 wiki에는 아래와 같은 parser가 설치되어 있습니다.

'''c++'''

 . example:
  . {{{{#!cplusplus
{{{
#include <ros/ros.h>
int main(int argc, char** argv)
{
  ros::init(argc, argv, "talker");
  ros::NodeHandle n;
...
}}}
}}}}
 result:
  . {{{#!cplusplus
#include <ros/ros.h>
int main(int argc, char** argv)
{
  ros::init(argc, argv, "talker");
  ros::NodeHandle n;
...
}}}

'''latex'''

 . example:
  . {{{{#!latex
{{{
$$\overline{\overline{J}} \dot{\overline{v}} = -\overline{k}$$
}}}
}}}}
 result:
  . {{{#!latex
$$\overline{\overline{J}} \dot{\overline{v}} = -\overline{k}$$
}}}

'''python'''

 . example:
  . {{{{#!python
{{{
#!/usr/bin/env python
import roslib; roslib.load_manifest('beginner_tutorials')
import rospy
from std_msgs.msg import String
def talker():
    pub = rospy.Publisher('chatter', String)
    rospy.init_node('talker', anonymous=True)
...
}}}
}}}}
 result:
  . {{{
#!python block=pyblock
#!/usr/bin/env python
import roslib; roslib.load_manifest('beginner_tutorials')
import rospy
from std_msgs.msg import String
def talker():
    pub = rospy.Publisher('chatter', String)
    rospy.init_node('talker', anonymous=True)
...
}}}

==== CodeRef ====
만약 미리 작성해 놓은 코드를 다시 사용하고 싳으면 CodeRef를 사용합니다.

{{{{
#!cplusplus block=blockname
{{{
code....
is super
and awesome
}}}
}}}}
Coderef는 아래와 같이 사용합니다.

{{{
<<CodeRef(blockname,1,2)>>
}}}
아래와 같이 보입니다:

<<CodeRef(blockname,1,2)>>

`python`:

<<CodeRef(pyblock,1,2)>>

`#!cplusplus` 와 `#!python 는 {{{ 다음 새줄로 작성하는 것을 주의합시다.`

You have to save (not just preview) before the new code block becomes part of the system.

==== TutorialChain ====
TutorialChain 매크로는 튜토리얼 목록을 만들기 위해 사용합니다. Tutorial Chain은 튜토리얼 목록을 앞뒤의 링크로 묶어줍니다.

{{{
<<TutorialChain(WritingTutorials)>>
}}}
아래와 같이 Title과 Description을 보여줍니다.

<<TutorialChain(WritingTutorials)>>

==== IncludeCSTemplate ====
This macro takes the keys at the top of the page and turns them into [[http://clearsilver.net|clearsilver]] variables that can be operated on using the clearsilver templating commands. In the case of tutorials the keys are used in the TutorialCSHeaderTemplate.

{{{
!<<IncludeCSTemplate(TutorialCSHeaderTemplate)>>
}}}
==== Embed Tutorials ====
You can embed videos using the Youtube and Vimeo macros

{{{
<<Youtube(Q5KC-trrw_o)>>
}}}
<<Youtube(Q5KC-trrw_o)>>

=== 예제 튜토리얼 ===
Here is a list of good tutorials to base your tutorials off of:

 * [[ROS/Tutorials|ROS Tutorials]]
 * [[ROS/DriverTutorials|Driver Tutorials]]
 * [[actionlib_tutorials|actionlib tutorials]]

## AUTOGENERATED DO NOT DELETE
## TutorialCategory
## FILL IN THE STACK TUTORIAL CATEGORY HERE
## writing tutorial
## writing tutorial
## writing tutorials
## writing tutorials
## write tutorial
## write tutorial
## write tutorials
## write tutorials
## write tutorials
## write tutorials
## write tutorials
## write tutorials