תבנית:תרשים/תיעוד
מראה
דף זה מאגד מספר כלים לעריכה חזותית של תרשימים (עצי משפחה, תרשימי זרימה וכדומה) בוויקיפדיה. מערכת כלים זו מהווה אלטרנטיבה חזותית ל{{עץ משפחה}} ומבוססת על עקרונות עיצוביים דומים.
הוראות הפעלה
[עריכת קוד מקור]יצירת תרשים חדש
[עריכת קוד מקור]- צרו דף במרחב טיוטה או במרחב המשתמש שלכם בשם מתאים
- כנסו לעריכת קוד מקור של הדף והוסיפו את טקסט הבא:
{{ס:תרשים/קנבס 16x32}}
<noinclude>{{נוצר באמצעות תרשים}}</noinclude>
- (אפשר לבחור גם קנבס 32x32)
- שימרו את הדף.
עריכת התרשים
[עריכת קוד מקור]- פתחו בחלון נפרד את סרגל הכלים במצב עריכה חזותית. שימו לב, למרות שסרגל הכלים נפתח במצב העריכה, אין מטרה לערוך אותו, אלא להשתמש בו לצורך עריכת התרשים שלכם. אל תלחצו על "פרסום שינויים" בדף זה אלא אם כן אתם באמת מתכוונים לזה.
- כנסו לעריכה חזותית של הדף. בדף תופיע טבלה ריקה.
- ערכו את התרשים שלכם באמצעות העורך החזותי ובעזרת פעולות העתק-הדבק מסרגל הכלים (ראו הוראות עריכה או דוגמה מפורטת למטה). שימרו מעת לעת.
- בסיום העבודה, מחקו את כל השורות והעמודות המיותרות מהתרשים שלכם ושימרו אותו.
- העבירו אותו למרחב תבנית בשם הרצוי.
טיפים
[עריכת קוד מקור]- מומלץ להפעיל את הכלי בתצוגת "וקטור ישן (2010)". אפשר לשנות את התצוגה בתפריט ההעדפות[1]
- מומלץ לא להתחיל מקנבס גדול מידי. ניתן להוסיף שורות ועמודות לפי הצורך.
- מומלץ לעבוד עם 2 מסכים בעת עריכת התרשימים - האחד לתרשים והאחר לסרגל כלים.
- לצורך העריכה החזותית נדרש שהתרשים לא יהיה בתוך תבנית. אם אתם רוצים לשלב את התרשים בתוך אלמנט עיצובי כלשהו (למשל תבנית ניווט) מומלץ ליצור את התרשים כדף משנה של התבנית בה הוא אמור להופיע ולשלב אותו בתוך תבנית זו כמו שמשלבים תבנית
- אם יש לכם תרשים מורכב שאתם רוצים לשלב בתוך תבנית נווט ממולץ להשתמש ב{{מעטפת תרשים}}.
הוראות עריכה
[עריכת קוד מקור]התרשים מורכב בעיקרו מתיבות ומרצפות (ניתן להוסיף רכיבים נוספים לפי הצורך).
- תיבה - בדומה ל{{עץ משפחה}} התיבה בנויה בדרך כלל מ-3 תאי טבלה. אולם ניתן ליצור תאים בכל גודל רצוי. בסרגל הכלים מופיעים תאים ב-3 גדלים
- שימוש בתיבות מוכנות:
- העתק את התיבה מסרגל הכלים (או מתיבה שכבר קיימת בתרשים שלך).
- הדבק למקום הרצוי - סמן את מקום תחילת ההדבקה (הצד הימני העליון שלה) ובצע "הדבק". אם מסמנים מספר תאים אז המקום הקובע הוא של התא הימני העליון. ההדבקה דורסת את מה שהיה בתאים.
- לחץ לחיצה כפולה על התיבה כדי להיכנס לתא המתאים
- לחץ לחיצה נוספת כדי להיכנס לתבנית התיבה.
- נפתח חלון ועליו כפתור "עריכה". לחץ עליו
- עכשיו תוכל למלא את טקסט התיבה ומידע נוסף. (ראה פירוט ב{{תרשים/תיבה}}). הטקסט יכול לכלול קוד ויקי.
- הרחבת תיבה קיימת: אם רוצים ליצור תיבה בגודל שלא זמין בסרגל הכלים, ניתן ליצור תיבה קטנה יותר, לסמן אותה יחד עם מספר תאים משמאלה ומתחתיה, וללחוץ על "מיזוג". הדבר ידרוס את התאים האחרים שסומנו.
- מרצפת - רכיב המקביל ל"מרצפות" ב{{עץ משפחה}}. הרכיב כולל קווים שבאמצעותם ניתן לחבר את התיבות. ככלל כל מרצפת תופסת תא אחד, אך אפשר ליצור מרצפות בגדלים שונים בהתאם לצורך (לדוגמה, אם רוצים ליצור קו ארוך וכיתוב ממורכז מעליו).
- שימוש במרצפת קיימת:
- בחר את המרצפת מרצויה מסרגל הכלים (או מרצפת שכבר קיימת בתרשים שלך).
- "העתק" אותה ו"הדבק" אותה למקומות הרצויים בטבלה. ההדבקה דורסת את מה שהיה בתאים.
- בדומה לתיבה, ניתן לבחור מאפינים של המרצפת. ראה פירוט ב{{מרצפת}}.
- שימוש במרצפות אוניברסליות:
- בסרגל הכלים מופיעות 2 מרצפות אוניברסליות. הן צבועות במספר צבעים ומעוצבות בסיגנונות קוו שונים. למרצפות אלה יש מאפיינים רבים המאפשרים להתאים אותן לצרכים שונים. ראה פירוט ב{{מרצפת}}. כל אחת מהמרצפות האוניברסליות מורכבת מ - 4 רכיבים. אולם, אין צורך להשתמש בכולם. אם לא מעוניינים ברכיב מסוים יש ללבחור את ה"עובי" שלו להיות 0.
- אם זקוקים למרצפת שלא מופיעה בסרגל הכליים. צרו עותק נוסף של המרצפת האוניברסלית המתאימה לכם בסרגל הכלים. בחרו את המאפינים הרצויים. והשתמשו בה.
- אם המרצפת שיצרתם נראית לכם שימושית גם בתרשימים אחרים, אז אתם מוזמנים לשמור את סרגל הכילים ובכך להוסיף אותה אליו באופן קבוע - היו נועזים.
- במקרה כזה מומלץ גם להוסיף אותה לתבנית {{מרצפת}} (ראו פירוט בדף התבנית)
- איחוד מרצפות: ניתן למזג תאים בהם יש מרצפות שונות. במקרה כזה המרצפת העליונה הימנית תשתלט על כל התאים. ככלל זה לא מומלץ. למשל, אם רוצים ליצור קו אופקי ארוך עדיף להדביק מספר פעמים את אותה המרצפת. אולם הדבר יכול להיות שימושי למטרות מסוימות, למשל לצורך הוספת כיתוב.
- חץ
- ניתן להוסיף ראש חץ לקווים במרצפות השונות. לשם כך יש לבצע את הפעולות הבאות:
- להיכנס בסרגל הכלים לתא בו נמצאים החיצים (על ידי לחיצה כפולה).
- ללחוץ על החץ הרצוי ולהעתיק אותו.
- להיכנס לתא בו נמצאת המרצפת אליה רוצים להוסיף את החץ.
- לבצע פעולת הדבקה.
- לבחור את המאפיינים הרצויים לחץ, ראה פירוט ב{{תרשים/חץ}}.
- לאחר שילוב החץ בתא הרצוי ניתן להעתיק את התא הכולל את החץ ואת המרצפת כמקשה אחת ולהשתמש בו במקומות שונים בתרשים.
- הערות
- ניתן להוסיף מספר חיצים לאותו התא.
- במקרה שהתרשים מופיע במרחב הערכים על רקע לא לבן (כמו למשל כשהוא משולב בתבנית ניווט) אז יש להתאים את רקע החץ לרקע היעד.
- במאפייני החץ, יש לבחור עובי קו זהה לעובי הקו עליו ישב החץ.
- נכון לעכשיו במקדמי הגדלה מתחת ל-100% החיצים לעיתים לא מיושרים היטב.
- הוספת כיתוב
- ניתן להוסיף כיתוב לכל תא ריק על ידי לחיצה כפולה עליו.
- אם בתא יש מרצפת יש להקיש לאחר מכן על "הוספת פסקה". הוספת כיתוב למרצפת עובדת באופן מיטבי כאשר המרצפת היא של קו מאוזן ({{מרצפת|-}}). במקרה כזה ניתן להוסיף את הכיתוב הן מעל הקו והן מתחתיו. האפשרות "הוספת פסקה" מופיעה בשני מקומות אלה. מומלץ להשתמש בתבנית {{כיתוב קו}} למטרה זאת. התבנית מקטינה את הטקסט, גורמת לכך שלא יגלוש, ומרפדת אות משני צדדיו ברווח כך שלא יגע בתאים השכנים.
- טקסט מוסף יכול לכלול קוד ויקי.
- הוספת רכיבים נוספים
- מרצפות ותיבות הן תבניות. ניתן להוסיף אותן באופן ידיני כתבניות (במקום להעתיק אותם מסרגל הכלים).
- ניתן גם ליצור תבניות חדשות עם רכיביים עיצוביים שונים ולהוסיף אותן.
- ממלץ להסתכל ב{{מרצפת}} ו{{תרשים/תיבה}} כדי לראות איך ליצור תבנית שתמלא את כל התא בטבלה.
- אם מוסיפים מרצפת בתור תבנית, יש למחוק ראשית את תכולת התא. גם הוא הוא נראה ריק, יש בו מרצפת ריקה כבררת מחדל.
- מחיקה
- ניתן למחוק את תכולתו של כל תא על ידי לחיצה על הכפתור del במקלדת.
- אם התא הוא מיזוג של מספר תאים אז ניתן לפצל אותו חזרה על ידי לחיצה על התא ואז על "ביטול מיזוג"
- בקנבס המקורי, כל התאים מכילם "מרצפת ריקה". לאומת זאת, תאים שתכולתם נמחקה לא מכילם מרצפת כזאת. בדרך כלל, אין לדבר השפעה. אולם, כאשר תיבת תקסט נמצאת בקצה התרשים ואין מעל הקצה שלה מרצפות בכלל (ריקות או לא) זה משבש את תצוגתה. במקרה כזה די להוסיף מרצפת ריקה לאחד התאים מעל (או מתחת) לקצה התיבה. ניתן לעשות זאת באמצעות העתקה מכל תא שנראה ריק בסרגל הכלים או מכל תא בתרשים שתכולתו לא נמחקה.
- הוספת שורות ועמודות - ניתן לעשות זאת כמקובל בעריכה חזותית של טבלאות. תאים חדשים שיתווספו יהיו נטולי מרצפות כלל (גם לא ריקה). אם זה יוצר בעיה ניתן לטפל בזה כמו בסעיף הקודם.
יבוא
[עריכת קוד מקור]להלן סקריפט פייתון המאפשר להמיר תרשימים שנוצרו באמצעות {{עץ משפחה}} לתרשימים הניתנים לעריכה חזותית באופן המוסבר למעלה. הסקריפט לא עובד באופן מושלם ובמקרים רבים נדרשת עריכה ידנית לאחר היבוא.
הוראות שימוש בסקריפט
[עריכת קוד מקור]- התקינו פייתון ואת הסיפריה BeautifulSoup על המחשב שלכם.
- העתיקו את הסקריפט למחשב שלכם.
- החליפו את הטקסט:
כתוב כאן את הטקסט להמרה. לדוגמה: {{עץ משפחה|!}} {{עץ משפחה|-}}
בקוד המקור של עץ המשפחה אותו אתם מעוניינים להמיר. ניתן להמיר מספר תבנית {{עץ משפחה}} ביחד. אין צורך להעתיק את הקידומת {{עץ משפחה/התחלה}} והסיומת {{עץ משפחה/סוף}}.- למתקדמים: החליפו את הערך של הפרמטרים: CHAINGE_BOX_COLOR, CHAINGE_BOX_BOUNDARY BOX_COLOR BOUNDARY_COLOR, RAUND_CORNERS, REPLACE_DASHS, NEW_COLOR המופעים מיד לאחר השורה הקודמת שהחלפתם בערכים רצויים. ראו פרטים בהערות שמופיעות בסקריפט לצד הפרמטרים.
- החליפו את הטקסט:
שם קובץ היעד.txt
בשם הקובץ אליו אתם מעוניינים לשמור את התוצאה. - הריצו את ההסקריפט.
- העתיקו את תכולת הקובץ שאליו נשמרה התוצאה לדף ויקי בו אתם מעוניינים לשמור את התרשים ותשמרו את הדף.[2]
- המשיכו לערוך בהתאם לצורך.
- הערה: הסקריפט מתעלם מהגדרות עיצוב שמוגדרות לכל השורה ביחד או לכל העץ ביחד. הוא מתייחס רק להגדרות עיצוב שבוצעו עבור כל תיבה בנפרד.
הסקריפט |
---|
#import re
from bs4 import BeautifulSoup
CORNERS=[".",",","'","`"]
PURE_DASHS=list(r"7הקג%ץ/צ\~:")
MIXED_DASHS=list("{}*#ד")
def extract_templates(text):
templates = []
i = 0
while i < len(text):
if text[i:i+11] == '{{עץ משפחה|': # start of a template
nested_level = 1
j = i + 11 # Move past the '{{עץ משפחה|'
# Collect everything until the matching closing template
while j < len(text) and nested_level > 0:
if text[j:j+2] == '{{':
nested_level += 1
j += 2
elif text[j:j+2] == '}}':
nested_level -= 1
j += 2
else:
j += 1
# Append the template content, excluding '{{עץ משפחה|...}}' delimiters
templates.append(text[i+11:j-2].strip())
i = j # Move to the end of the template
else:
i += 1
return templates
def split_ignore_nested(text, separator='|'):
parts = []
current_part = []
nested_level = 0
i = 0
while i < len(text):
# Handle nested templates
if text[i:i+2] == '{{':
nested_level += 1
current_part.append(text[i:i+2])
i += 2
elif text[i:i+2] == '[[':
nested_level += 1
current_part.append(text[i:i+2])
i += 2
elif text[i:i+2] == '}}' and nested_level > 0:
nested_level -= 1
current_part.append(text[i:i+2])
i += 2
elif text[i:i+2] == ']]' and nested_level > 0:
nested_level -= 1
current_part.append(text[i:i+2])
i += 2
# Split at the separator if not inside a nested template
elif text[i] == separator and nested_level == 0:
parts.append(''.join(current_part))
current_part = []
i += 1
else:
current_part.append(text[i])
i += 1
parts.append(''.join(current_part))
return parts
def parse_template_content(content, separator='|'):
# Use BeautifulSoup to handle the HTML tags correctly
soup = BeautifulSoup(content, "html.parser")
parts = []
buffer = []
# Process each child (text or HTML tag)
for child in soup.children:
if child.name is None: # Regular text outside of tags
text_parts = split_ignore_nested(child, separator) # Split while ignoring nested templates
if buffer:
buffer[-1] += text_parts[0]
buffer.extend(text_parts[1:])
else:
buffer.extend(text_parts)
else: # HTML tag; append it as part of the current part
if buffer:
buffer[-1] += str(child)
else:
buffer.append(str(child))
parts.extend(buffer)
return parts
def parse_family_tree(input_string):
matches = extract_templates(input_string)
result = [proses_template_content(parse_template_content(match, '|')) for match in matches]
return result
def transform_family_tree(input_tree:str)->str:
return "{{תרשים}}\n"+wiki_table(parse_family_tree(input_string), 'DiagramTable')+"\n"+"<noinclude>{{נוצר באמצעות תרשים}}</noinclude>"
def proses_template_content(content: list) -> list:
boxes_data={}
new_content=[]
for i in range(len(content)):
pair=parse_template_content(content[i], '=')
if len(pair)==2:
pair[0]=pair[0].strip()
pair[1]=pair[1].strip()
if pair[0]=='גבול':
border=pair[1]
elif pair[0]=='עיצוב':
des=pair[1]
elif pair[0]=='צבע2':
col2=pair[1]
elif pair[0]=='עובי_קו':
thik=pair[1]
else:
boxes_data[pair[0]]=pair[1]
else:
new_content.append(content[i].strip())
for i in range(len(new_content)):
if new_content[i] in boxes_data.keys():
des_key="עיצוב_"+new_content[i]
new_content[i]='colspan="3" | {{תרשים/תיבה|טקסט='+ boxes_data[new_content[i]]
if des_key in boxes_data.keys():
des=boxes_data[des_key]
new_content[i]=new_content[i] + "|עיצוב="+des
if CHAINGE_BOX_COLOR:
new_content[i]=new_content[i]+"|צבע רקע="+BOX_COLOR
if CHAINGE_BOX_BOUNDARY:
new_content[i]=new_content[i]+"|צבע מסגרת="+BOUNDARY_COLOR
else:
tile=new_content[i]
new_content[i]="{{מרצפת|"+ tile
if RAUND_CORNERS:
if tile in CORNERS:
new_content[i]+="ע"
if REPLACE_DASHS:
if tile in PURE_DASHS:
new_content[i]+="|צבע="+NEW_COLOR+"|סגנון=רצוף"
elif tile in MIXED_DASHS:
new_content[i]+="1|צבע2="+NEW_COLOR
new_content[i]=new_content[i]+'}}'
return new_content
def wiki_table(data, table_class):
# Determine the maximum row length
max_columns = max(len(row) for row in data)
# Start building the wiki table with class
table_string = f'{{| class="{table_class}"\n'
for row in data:
# Start a new row
table_string += "|-\n"
# Add each cell in the row, filling in empty cells if row is shorter than max_columns
for cell in row + [""] * (max_columns - len(row)):
table_string += f"| {cell}\n"
# Close the wiki table
table_string += "|}"
return(table_string)
if __name__ == "__main__":
input_string = """
כתוב כאן את הטקסט להמרה. לדוגמה: {{עץ משפחה|!}} {{עץ משפחה|-}}
"""
CHAINGE_BOX_COLOR=False #האם לשנות את צבע הרקע של התיבות כבררת מחדל. אם הערך "שקר" בררת המחדל תהיה כמו בררית המחדל של התבנית תרשים
CHAINGE_BOX_BOUNDARY=False #האם לשנות את צבע המסגרת של התיבות כבררת מחדל. אם הערך "שקר" בררת המחדל תהיה כמו בררית המחדל של התבנית תרשים
#צבע הרקע של התיבות (כבררת מחדל) אם משנים אותו
BOX_COLOR="לבן"
#צבע המסגרת של התיבות (כבררת מחדל) אם משנים אותו
BOUNDARY_COLOR="{{תרשים/הגדרות|זכר}}"
RAUND_CORNERS=True#האם לעגל פינות של קווים
REPLACE_DASHS=True#האם להחליף קו מקוטע לקו צבוע
#הצבע מו מחלף הקו המקוטע (אם מוחלף)
NEW_COLOR="{{תרשים/הגדרות|נישואין}}"
new_tree=transform_family_tree(input_string)
print(new_tree)
fil=open("new_tree.txt", "w", encoding="utf-8")
fil.write(new_tree)
fil.close()
|
בעיות ידועות ודרכי התמודדות איתן
[עריכת קוד מקור]- בעת עריכה חזותית, התאים בטבלה מופעים גדולים למדי, זה גורם לכך שהטבלה חורגת שמאלה מאד. כל עוד מדובר בחריגה של פחות מרוחב הדף זה כמעט לא מפריע לעבודה, אולם לאחר מכן הדבר פוגע בעבודה. להלן מספר דרכי התמודדות עם זה:
- לעבוד עם עיצוב וקטור ישן.[1]
- להקטין את התצוגה (באמצעות contol + -)
- להתחיל את העבודה קרוב לצידו הימני של הקנבס (לא לשמור יותר מידי עמודות ריקות מימין).
- במקרה ויש צורך לעבוד הרחק באגף השמאלי של הקנבס והעבודה הופכת לא נוחה, ניתן להוסיף עוד שורת, לעבוד בהן באגף הימני, ולבסוף להעתיק למקום הרצוי בקנבס הראשי.
- בוויקיפדיה ישנן מגבלות על כמות המשאבים שדף מסוים צורך. השימוש בכלים כאן יקר יחסית במשאבים. לכן בתרשימים כבדים במיוחד לעיתים מגיעים למגבלה. ישנן מספר דרכים להתמודד עמ המגבלה:
- להימנע משימוש בתבנית מרצפת ולהחליף אותה בשימוש ישיר בתבניות מהן המרצפות מורכבות {{קטע}}, {{פינה}}, {{ממלא מקום}}.
- להחליף את התבניות {{קטע}} ו{{פינה}} בתבניות הישירות המתאימות להן:{{קטע2}}...{{קטע8}} ו{{פינה1}}...{{פינה9}}.
- להשתמש בתבנית {{תרשים/תיבה קלה}} במקום {{תרשים/תיבה}}.
- לרוקן תאים במקרה שאין בהם צורך בקבעית גודל מינימלי עבורן ולמחוק את השימוש ב{{ממלא מקום}} כשהוא לא נדרש.
- יש לדרכים אלו חסרונות כך שלא מומלץ להשתמש בהם ללא סיבה. כאן אפשר לראות דוגמה לתרשים כבד בו נעשה שימוש בטכניקות אלו.
דוגמאות
[עריכת קוד מקור]אפשר לראות דוגמאות לשימוש בכלי בקטגוריה:דפים שנוצרו באמצעות תבנית תרשים.
להלן דוגמה פשוטה עם הוראות מפורטות ליצירתה שלב אחר שלב:
דוגמה פשוטה עם הסבר מפרט |
---|
#פתח דף טיטה עבור התרשים. בדוגמה זהו הדף תבנית:תרשים/דוגמה פשוטה
|
ראו גם
[עריכת קוד מקור]כלי עריכה חזותית ל{{תרשים}} | ||
---|---|---|
דפים להעתקה | {{תרשים/קנבס 16x32}} • {{תרשים/קנבס 32x32}} • {{תרשים/קנבס מקרא}} • {{תרשים/קנבס מקרא מרובה}} • {{תרשים/סיפת מקרא}} • {{תרשים/סרגל כלים}} | |
תבניות לתרשימים | {{תרשים/תיבה}} • {{מרצפת}} • {{קטע}} • {{פינה}} • {{תרשים/מקרא}} • {{תרשים/חץ}} • {{ממלא מקום}} • {{תגית}} • {{כיתוב קו}} | |
שונות | {{תרשים/הגדרות}} • תבנית:תרשים/styles.css • {{נוצר באמצעות תרשים}} • קטגוריה:דפים שנוצרו באמצעות תבנית תרשים • {{מעטפת תרשים}} |
- {{עץ משפחה}}
- {{עץ משפחה לאדם אחד}}