本部外文翻译格式
- 格式:doc
- 大小:91.50 KB
- 文档页数:2
本科毕业设计(论文)外文翻译译文学生姓名:院(系):经济管理学院专业班级:市场营销0301班指导教师:完成日期:2007年3 月22 日日本的分销渠道——对于进入日本市场的挑战与机会Distribution Channels in JapanChallenges and Opportunities for theJapanese Market Entry作者:Hokey Min起止页码:P22-35出版日期(期刊号):0960-0035出版单位:MCB Univercity Press外文翻译译文:介绍尽管美国对日本的出口在过去两年已有大幅度的增长,然而美国对日本仍然存在着很大的贸易赤字。
尽管没有出现下降趋势,但越来越多的美国决策者及商务经理已经开始审查日本的贸易活动。
在这些人中,有一个很普遍的想法就是日本市场没有对美国产品开放,相反,美国市场对日本的贸易是开放的。
因此,克林顿政府试图采取强硬措施来反对日本的一系列贸易活动,包括商业习惯和政府政策,还企图通过贸易制裁的威胁来反对日本产品。
然而,这样的措施也会产生适得其反的结果。
它不仅会为美国消费者带来更高的商品价格和更少的商品选择,同时也会增加日本消费者的反美情绪。
最近Ginkota和Kotabe的调查表明:单独的贸易谈判不会提高美国商品进入日本市场的能力。
而对于提高美国公司进入日本市场能力的一个行之有效的方法就是研究日本近几个世纪以来所采用的商业活动。
由于法律障碍或者是日本公司对外封锁商业渠道,日本当地的分销渠道往往对外国公司不利,而这样的商业活动被认为是进入日本市场的主要障碍。
事实上,Yamawaki美国商品成功出口到日本市场在很大程度上取决于美国解决协议合同的能力。
尽管进入日本市场意义重大,然而对西方人而言,日本的经销体系经常会被人误以为是充满神秘感的。
这种误解源于日本复杂的分销惯例特征。
而这种分销惯例沿袭古老的而又严谨的建设体系。
在尝试美国贸易在日本市场成功获利减少不必要的贸易冲突过程中,我们揭露了日本分销中获利的事实,探索出了能成功进入日本市场的战略性武器。
杭州电子科技大学毕业论文外文文献翻译要求根据《普通高等学校本科毕业设计(论文)指导》的内容,特对外文文献翻译提出以下要求:一、翻译的外文文献可以是一篇,也可以是两篇,但总字符要求不少于1.5万(或翻译成中文后至少在3000字以上)。
二、翻译的外文文献应主要选自学术期刊、学术会议的文章、有关著作及其他相关材料,应与毕业论文(设计)主题相关,并作为外文参考文献列入毕业论文(设计)的参考文献。
并在每篇中文译文首页用“脚注”形式注明原文作者及出处,中文译文后应附外文原文。
脚注的方法:插入----引用---脚注和尾注三、中文译文的基本撰写格式为:1.题目:采用小三号、黑体字、居中打印;2.正文:采用小四号、宋体字,行间距为固定值20磅,标准字符间距。
页边距为左3cm,右2.5cm,上下各2.5cm,页面统一采用A4纸。
英文原文如为word文档,请用罗马字体排版,段前空两格。
从正文开始编写页码,页码居中。
四、封面格式由学校统一制作(注:封面上的“翻译题目”指中文译文的题目),填充内容为加粗小三号楷体_GB2312,并按“封面、译文一、外文原文一、译文二、外文原文二、考核表”的顺序统一装订。
五、忌自行更改表格样式,学号请写完整。
封面和考核表均为一页纸张,勿换行换页。
毕业论文外文文献翻译毕业设计(论文)题目Xxx翻译(1)题目指翻译后的中文译文的题目翻译(2)题目指翻译后的中文译文的题目学院会计学院(以本模板为准)专业会计学(以本模板为准)姓名XXXXXX(以本模板为准)班级XX020811(以本模板为准)学号XX023101(以本模板为准)指导教师XXXXXX(以本模板为准)外文翻译考核表。
xx学院关于2017届
本科毕业设计(论文)、外文资料翻译格式的说明
一、毕业设计(论文)格式
按照西南交通大学本科毕业设计(论文)撰写规范(2014修订)其中注意:
(1)公式、图、表编号为(X-Y),X为章号,Y为公式、图、表的章节中的序号。
(2)图名、表名要求格式为宋体(五号加粗)
(3)页码插入在页脚中,居中排版。
二、外文资料翻译格式
(1)外文资料翻译后的中文,其文字排版时版面不分栏,字体大小、行间距按照上述规范进行排版,其余格式参考原文格式排版即可。
(2)外文原文不用排版,直接打印即可。
(3)装订时,中文翻译在前,外文原文在后。
三、光盘资料
论文、翻译(中文、原文)、开题报告、中期报告、中期检查表、程序代码、工程文件、其他照片、视频、答辩ppt等,以及其他导师要求的材料。
要求:1、外文资料翻译内容要求:外文资料的内容应为本学科研究领域,并与毕业设计(论文)选题相关的技术资料或专业文献,译文字数应不少于3000汉字以上,同时应在译文末注明原文的出处。
不可采用网络中直接有外文和原文的。
2、外文资料翻译格式要求:译文题目采用小二号黑体,居中;译文正文采用宋体小四号,段前、段后距为0行;行距:固定值20磅。
英文原文如果为打印的话用新罗马(Times New Roman)小四号字。
装订时原文在前,译文在后。
文章中有引用的地方在原文中也要体现。
参考文献也要翻译成中文!用于无线传感器网络数据估算的节能协调算法摘要:无线传感器网络的各节点是用电池供电的,网络的生存期取决于各节点的能耗大小。
考虑到这类传感器网络在不同地方,节点都是检测单一现象并发送信息到汇聚中心(Fusion Center, FC为其缩写形式),以便汇聚中心能够处理实时信息。
在传统的系统中,数据处理任务是由汇聚中心来完成的,在传输之前是没有进行加工处理的。
在综合各种适值计算方法基础上,把网络分成了多个簇,数据分两个部分进行处理。
第一个部分是在各个簇的各个传感器节点上完成本地数据共享。
第二部分将在汇聚中心从各簇节点接收到所有的信息后完成。
本地数据共享将会使比特数据传输方面更高效。
在每个簇的所有节点上,我们可以采用相同的数据备份和一个虚拟的多输入-多输出(V-MIMO)架构,在簇到汇聚(FC)中心之间进行数据传输。
一个虚拟V-MIMO网络是由一组的分布式节点组成,每个节点都有自己的天线。
通过他们之间的数据共享,这些节点将变成传统的MIMO 系统。
在协同/虚拟的MIMO架构提出之前,协同阶段是没有进行任何数据处理或压缩的。
我们改变现有的V-MIMO网络算法来适应我们所关心的特殊类别的传感器网络。
我们用正交的时空分组码(STBC)作为MIMO部分。
通过仿真表明,这种算法相比于传统系统更加节能。
I.简介一个典型的无线传感器网络是由一组小型的、低价的和只有有限能源的传感器节点组成。
成都东软学院外文资料和译文格式要求一、译文必须采用计算机输入、打印,幅面A4。
外文资料原文(复印或打印)在前,译文在后,于左侧装订。
二、具体要求1、至少翻译一篇内容与所选课题相关的外文文献。
2、译文汉字字数不少于4000字。
3、正文格式要求:宋体五号字。
译文格式参见《译文格式要求》,宋体五号字,单倍行距。
纸张纸张为A4纸,页边距上2.54cm、下2.54cm、左3.17cm、右3.17cm。
装订外文资料原文(复印或打印)在前,译文在后封面封面的专业、班级、姓名、学号等信息要全部填写正确。
封面指导教师必须为讲师以上职称,若助教则需要配备一名讲师协助指导。
讲师在前,助教在后。
指导教师姓名后面空一个中文空格,加职称。
页眉页眉说明宋体小五,左端“XX学院毕业设计(论文)”,右端“译文”。
页眉中的学院名称要与封面学院名称一致。
字数本科4000字。
附:外文资料和译文封面、空白页成都东软学院外文资料和译文专业:软件工程移动互联网应用开发班级:2班姓名:罗荣昆学号:12310420216指导教师:2015年 12月 8日Android page layoutUsing XML-Based LayoutsW hile it is technically possible to create and attach widgets to our activity purely through Java code, the way we did in Chapter 4, the more common approach is to use an XML-based layout file. Dynamic instantiation of widgets is reserved for more complicated scenarios, where the widgets are not known at compile-time (e g., populating a column of radio buttons based on data retrieved off the Internet).With that in mind, it’s time to break out the XML and learn how to lay out Android activities that way.What Is an XML-Based Layout?As the name suggests, an XML-based layout is a specification of widgets’ relationships to each other—and to their containers (more on this in Chapter 7)—encoded in XML format. Specifi cally, Android considers XML-based layouts to be resources, and as such layout files are stored in the res/layout directory inside your Android project.Each XML file contains a tree of elements specifying a layout of widgets and their containers that make up one view hierarchy. The attributes of the XML elements are properties, describing how a widget should look or how a container should behave. For example, if a Button element has an attribute value of android:textStyle = "bold", that means that the text appearing on the face of the button should be rendered in a boldface font style.Android’s SDK ships with a tool (aapt) which uses the layouts. This tool should be automatically invoked by your Android tool chain (e.g., Eclipse, Ant’s build.xml). Of particular importance to you as a developer is that aapt generates the R.java source file within your project, allowing you to access layouts and widgets within those layouts directly from your Java code. Why Use XML-Based Layouts?Most everything you do using XML layout files can be achieved through Java code. For example, you could use setTypeface() to have a button render its textin bold, instead of using a property in an XML layout. Since XML layouts are yet another file for you to keep track of, we need good reasons for using such files.Perhaps the biggest reason is to assist in the creation of tools for view definition, such as a GUI builder in an IDE like Eclipse or a dedicated Android GUI designer like DroidDraw1. Such GUI builders could, in principle, generate Java code instead of XML. The challenge is re-reading the UI definition to support edits—that is far simpler if the data is in a structured format like XML than in a programming language. Moreover, keeping generated XML definitions separated from hand-written Java code makes it less likely that somebody’s custom-crafted source will get clobbered by accident when the generated bits get re-generated. XML forms a nice middle ground between something that is easy for tool-writers to use and easy for programmers to work with by hand as needed.Also, XML as a GUI definition format is becoming more commonplace. Microsoft’s XAML2, Adobe’s Flex3, and Mozilla’s XUL4 all take a similar approach to that of Android: put layout details in an XML file and put programming smarts in source files (e.g., JavaScript for XUL). Many less-well-known GUI frameworks, such as ZK5, also use XML for view definition. While “following the herd” is not necessarily the best policy, it does have the advantage of helping to ease the transition into Android from any other XML-centered view description language. OK, So What Does It Look Like?Here is the Button from the previous chapter’s sample application, converted into an XMLlayout file, found in the Layouts/NowRedux sample project. This code sample along with all others in this chapter can be found in the Source Code area of .<?xml version="1.0" encoding="utf-8"?><Button xmlns:android="/apk/res/android"android:id="@+id/button"android:text=""android:layout_width="fill_parent"android:layout_height="fill_parent"/>The class name of the widget—Button—forms the name of the XML element. Since Button is an Android-supplied widget, we can just use the bare class name. If you create your own widgets as subclasses of android.view.View, you would need to provide a full package declara tion as well.The root element needs to declare the Android XML namespace:xmlns:android="/apk/res/android"All other elements will be children of the root and will inherit that namespace declaration.Because we want to reference this button from our Java code, we need to give it an identifier via the android:id attribute. We will cover this concept in greater detail later in this chapter.The remaining attributes are properties of this Button instance:• android:text indicates the initial text to be displayed on the button face (in this case, an empty string)• android:layout_width and android:layout_height tell Android to have the button’swidth and height fill the “parent”, in this case the entire screen—these attributes will be covered in greater detail in Chapter 7.Since this single widget is the only content in our activity, we only need this single element. Complex UIs will require a whole tree of elements, representing the widgets and containers that control their positioning. All the remaining chapters of this book will use the XML layout form whenever practical, so there are dozens of other examples of more complex layouts for you to peruse from Chapter 7 onward.What’s with the @ Signs?Many widgets and containers only need to appear in the XML layout file and do not need to be referenced in your Java code. For example, a static label (TextView) frequently only needs to be in the layout file to indicate where it should appear. These sorts of elements in the XML file do not need to have the android:id attribute to give them a name.Anything you do want to use in your Java source, though, needs an android:id.The convention is to use @+id/... as the id value, where the ... represents your locally unique name for the widget in question. In the XML layout example in the preceding section, @+id/button is the identifier for the Button widget.Android provides a few special android:id values, of the form @android:id/.... We will see some of these in various chapters of this book, such as Chapters 8 and 10.We Attach These to the Java How?Given that you have painstakingly set up the widgets and containers in an XML layout filenamed main.xml stored in res/layout, all you need is one statement in your activity’s onCreate() callback to use that layout:setContentView(yout.main);This is the same setContentView() we used earlier, passing it an instance of a View subclass (in that case, a Button). The Android-built view, constructed from our layout, is accessed from that code-generated R class. All of the layouts are accessible under yout, keyed by the base name of the layout file—main.xml results in yout.main.To access our identified widgets, use findViewById(), passing in the numeric identifier of the widget in question. That numeric identifier was generated by Android in the R class asR.id.something (where something is the specific widget you are seeking). Those widgets are simply subclasses of View, just like the Button instance we created in Chapter 4.The Rest of the StoryIn the original Now demo, the button’s face would show the current time, which would reflect when the button was last pushed (or when the activity was first shown, if the button had not yet been pushed).Most of that logic still works, even in this revised demo (NowRedux). However,rather than instantiating the Button in our activity’s onCreate() callback, we can reference the one from the XML layout:package youts;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button; import java.util.Date;public class NowRedux extends Activity implements View.OnClickListener { Button btn;@Overridepublic void onCreate(Bundle icicle) { super.onCreate(icicle);setContentView(yout.main);btn=(Button)findViewById(R.id.button);btn.setOnClickListener(this);upd ateTime();}public void onClick(View view) { updateTime();}private void updateTime() {btn.setText(new Date().toString()); }}The first difference is that rather than setting the content view to be a view we created in Java code, we set it to reference the XML layout (setContentView(yout.main)). The R.java source file will be updated when we rebuild this project to include a reference to our layout file (stored as main.xml in our project’s res/l ayout directory).The other difference is that we need to get our hands on our Button instance, for which we use the findViewById() call. Since we identified our button as @+id/button, we can reference the button’s identifier as R.id.button. Now, with the Button instance in hand, we can set the callback and set the label as needed.As you can see in Figure 5-1, the results look the same as with the originalNow demo.Figure 5-1. The NowRedux sample activity Employing Basic WidgetsE very GUI toolkit has some basic widgets: fields, labels, buttons, etc. Android’s toolkit is no different in scope, and the basic widgets will provide a good introduction as to how widgets work in Android activities.Assigning LabelsThe simplest widget is the label, referred to in Android as a TextView. Like in most GUI toolkits, labels are bits of text not editable directly by users. Typically, they are used to identify adjacent widgets (e.g., a “Name:” label before a field where one fills in a name).In Java, you can create a label by creating a TextView instance. More commonly, though, you will create labels in XML layout files by adding a TextView element to the layout, with an android:text property to set the value of the label itself. If you need to swap labels based on certain criteria, such as internationalization, you may wish to use a resource reference in the XML instead, as will be described in Chapter 9. TextView has numerous other properties of relevance for labels, such as:• android:typeface to set the typeface to use for the label (e.g., monospace) • android:textStyle to indicate that the typeface should be made bold (bold), italic (italic),or bold and italic (bold_italic)• android:textColor to set the color of the label’s text, in RGB hex format (e.g., #FF0000 for red)For example, in the Basic/Label project, you will find the following layout file:<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android=/apk/res/androidandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="You were expecting something profound?" />As you can see in Figure 6-1, just that layout alone, with the stub Java source provided by Android’s p roject builder (e.g., activityCreator), gives you the application.Figure 6-1. The LabelDemo sample applicationButton, Button, Who’s Got the Button?We’ve already seen the use of the Button widget in Chapters 4 and 5. As it turns out, Button is a subclass of TextView, so everything discussed in the preceding section in terms of formatting the face of the button still holds. Fleeting ImagesAndroid has two widgets to help you embed images in your activities: ImageView and ImageButton. As the names suggest, they are image-based analogues to TextView and Button, respectively.Each widget takes an android:src attribute (in an XML layout) to specify what picture to use. These usually reference a drawable resource, described in greater detail in the chapter on resources. You can also set the image content based on a Uri from a content provider via setImageURI().ImageButton, a subclass of ImageView, mixes in the standard Button behaviors, for responding to clicks and whatnot.For example, take a peek at the main.xml layout from the Basic/ImageView sample project which is found along with all other code samples at : <?xml version="1.0" encoding="utf-8"?><ImageView xmlns:android=/apk/res/androidandroid:id="@+id/icon"android:layout_width="fill_parent"android:layout_height="fill_parent"android:adjustViewBounds="true"android:src="@drawable/molecule" />The result, just using the code-generated activity, is shown in Figure 6-2.Figure 6-2. The ImageViewDemo sample applicationFields of Green. Or Other Colors.Along with buttons and labels, fields are the third “anchor” of most GUI toolkits. In Android, they are implemented via the EditText widget, which is a subclass of the TextView used for labels.Along with the standard TextView properties (e.g., android:textStyle), EditText has many others that will be useful for you in constructing fields, including:• android:autoText, to control if the fie ld should provide automatic spelling assistance• android:capitalize, to control if the field should automatically capitalize the first letter of entered text (e.g., first name, city) • android:digits, to configure the field to accept only certain digi ts • android:singleLine, to control if the field is for single-line input or multiple-line input (e.g., does <Enter> move you to the next widget or add a newline?)Beyond those, you can configure fields to use specialized input methods, such asandroid:numeric for numeric-only input, android:password for shrouded password input,and android:phoneNumber for entering in phone numbers. If you want to create your own input method scheme (e.g., postal codes, Social Security numbers), you need to create your own implementation of the InputMethod interface, then configure the field to use it via android: inputMethod.For example, from the Basic/Field project, here is an XML layout file showing an EditText:<?xml version="1.0" encoding="utf-8"?><EditTextxmlns:android=/apk/res/androidandroid:id="@+id/field"android:layout_width="fill_parent"android:layout_height="fill_parent"android:singleLine="false" />Note that android:singleLine is false, so users will be able to enter in several lines of text. For this project, the FieldDemo.java file populates the input field with some prose:package monsware.android.basic;import android.app.Activity;import android.os.Bundle;import android.widget.EditText;public class FieldDemo extends Activity { @Overridepublic void onCreate(Bundle icicle) { super.onCreate(icicle);setContentView(yout.main);EditText fld=(EditText)findViewById(R.id.field);fld.setText("Licensed under the Apache License, Version 2.0 " + "(the \"License\"); you may not use this file " + "except in compliance with the License. You may " + "obtain a copy of the License at " +"/licenses/LICENSE-2.0");}}The result, once built and installed into the emulator, is shown in Figure 6-3.Figure 6-3. The FieldDemo sample applicationNote Android’s emulator only allows one application in the launcher per unique Java package. Since all the demos in this chapter share the monsware.android.basic package, you will only see one of these demos in your emulator’s launcher at any one time.Another flavor of field is one that offers auto-completion, to help users supply a value without typing in the whole text. That is provided in Android as the AutoCompleteTextView widget and is discussed in Chapter 8.Just Another Box to CheckThe classic checkbox has two states: checked and unchecked. Clicking the checkbox toggles between those states to indicate a choice (e.g., “Ad d rush delivery to my order”). In Android, there is a CheckBox widget to meet this need. It has TextView as an ancestor, so you can use TextView properties likeandroid:textColor to format the widget. Within Java, you can invoke: • isChecked() to determi ne if the checkbox has been checked• setChecked() to force the checkbox into a checked or unchecked state • toggle() to toggle the checkbox as if the user checked itAlso, you can register a listener object (in this case, an instance of OnCheckedChangeListener) to be notified when the state of the checkbox changes.For example, from the Basic/CheckBox project, here is a simple checkbox layout:<?xml version="1.0" encoding="utf-8"?><CheckBox xmlns:android="/apk/res/android"android:id="@+id/check"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="This checkbox is: unchecked" />The corresponding CheckBoxDemo.java retrieves and configures the behavior of the checkbox:public class CheckBoxDemo extends Activityimplements CompoundButton.OnCheckedChangeListener { CheckBox cb;@Overridepublic void onCreate(Bundle icicle) { super.onCreate(icicle);setContentView(yout.main);cb=(CheckBox)findViewById(R.id.check);cb.setOnCheckedChangeListener(this);}public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {if (isChecked) {cb.setText("This checkbox is: checked");}else {cb.setText("This checkbox is: unchecked");}}}Note that the activity serves as its own listener for checkbox state changes since it imple ments the OnCheckedChangeListener interface (via cb.setOnCheckedChangeListener(this)). The callback for the listener is onCheckedChanged(), which receives the checkbox whose state has changed and what the new state is. In this case, we update the text of the checkbox to reflect what the actual box contains.The result? Clicking the checkbox immediately updates its text, as you can see in Figures 6-4 and 6-5.Figure 6-4. The CheckBoxDemo sample application, with the checkbox uncheckedFigure 6-5. The same application, now with the checkbox checkedTurn the Radio UpAs with other implementations of radio buttons in other toolkits, Android’s radio buttons are two-state, like checkboxes, but can be grouped such that only one radio button in the group can be checked at any time.Like CheckBox, RadioButton inherits from CompoundButton, which in turn inherits fromTextView. Hence, all the standard TextView properties for font face, style, color, etc., are available for controlling the look of radio buttons. Similarly, you can call isChecked() on a RadioButton to see if it is selected, toggle() to select it, and so on, like you can with a CheckBox.Most times, you will want to put your RadioButton widgets inside of aRadioGroup. The RadioGroup indicates a set of radio buttons whose state is tied, meaning only one button out of the group can be selected at any time. If you assign an android:id to your RadioGroup in your XML layout, you can access the group from your Java code and invoke:• check() to check a specific radio button via its ID (e.g., group.check(R.id.radio1))• clearCheck() to clear all radio buttons, so none in the group are checked• getCheckedRadioButtonId() to get the ID of the currently-checked radio button (or -1 if none are checked)For example, from the Basic/RadioButton sample application, here is an XML layout showing a RadioGroup wrapping a set of RadioButton widgets: <?xml version="1.0" encoding="utf-8"?> <RadioGroupxmlns:android=/apk/res/androidandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent" ><RadioButton android:id="@+id/radio1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Rock" /><RadioButton android:id="@+id/radio2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Scissors" /><RadioButton android:id="@+id/radio3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Paper" /></RadioGroup>Figure 6-6 shows the result using the stock Android-generated Java forthe project and this layout.Figure 6-6. The RadioButtonDemo sample application Note that the radio button group is initially set to be completely unchecked at the outset. To pre-set one of the radio buttons to be checked, use either setChecked() on the RadioButton or check() on the RadioGroup from within your onCreate() callback in your activity.It’s Quite a ViewAll widgets, including the ones previously shown, extend View, and as such give all widgets an array of useful properties and methods beyond those already described.Useful PropertiesSome of the properties on View most likely to be used include:• Controls the focus sequence:• android:nextFocusDown• android:nextFocusLeft• android:nextFocusRight• android:nextFocusUp• android:visibility, which controls wheth er the widget is initially visible• android:background, which typically provides an RGB color value (e.g., #00FF00 for green) to serve as the background for the widgetUseful MethodsYou can toggle whether or not a widget is enabled via setEnabled() and see if it is enabled via isEnabled(). One common use pattern for this is to disable some widgets based on a CheckBox or RadioButton selection.You can give a widget focus via requestFocus() and see if it is focused via isFocused(). You might use this in concert with disabling widgets as previously mentioned, to ensure the proper widget has the focus once your disabling operation is complete.To help navigate the tree of widgets and containers that make up an activity’s overall view, you can use:• get Parent() to find the parent widget or container• findViewById() to find a child widget with a certain ID• getRootView() to get the root of the tree (e.g., what you provided to the activity via setContentView())Android 页面布局使用XML进行布局虽然纯粹通过Java代码在activity上创建和添加部件,在技术上是可行的,我们在第4章中做的一样,更常见的方法是使用一种基于XML的布局文件。
外文翻译原文1(中文宋体、英文Times New Roman Title of media choices, especially the Internet, prestige.Author (宋体小四顶格):Nationality (宋体小四顶格):Originate from (宋体小四顶格):译文1(中文宋体、英文Times New Roman译文标题作者国籍(宋体小四顶格):出处(宋体小四顶格):附件3外文翻译原文1Information technology capability and valueInformation technology (IT) has become an essential element of firm capability and a source of sustainable competitive advantage. Although it is widely accepted that IT resources contribute to performance and future growth potential of the firm, the empirical results of the relationship between IT capability and firm performance is still ambiguous [1,2]. The unavailability of publicly available data, the accelerated pace of IT innovation,the possible interactive effects betweenHypothesis 2 predicts that the relationship between human capital investment and firm performance will be positive and results from all the five models strongly support this hypothesis.Alternative Hypotheses 3A and 3B predict the possible interaction effects of IT capability and human capital investment on firm performance. Results from Models 1, 2 and 3 support Hypothesis 3B.……作者:Zorayda Ruth B.Andam国籍:菲律宾出处:Amercan Management Association译文1信息技术能力和价值创造:来自美国银行业的实证信息技术已成为企业能力的一个重要组成部分和可持续竞争优势的资源之一。
山东理工大学毕业设计(外文翻译材料)学院:专业:学生姓名:指导教师:电气与电子工程学院自动化于小涵季画外文翻译材料格式要求:1.页边距:上3.8磅;下3.8磅;左3.2,右3.2;页眉距边界2.8,页脚距边界32.原文题目:Arial,小三;间距:段前18磅,段后12磅,间距21磅3.原文正文:Times New Roman,小四;间距:段前0磅,段后6磅,间距21磅4.译文题目:黑体,小三;间距:同原文题目5.译文正文:宋体,小四;间距同原文正文6.页眉页脚:原文页眉处写:外文翻译(原文),宋体,五号。
译文页眉处写:外文翻译(译文),宋体,五号。
原文译文的页脚统一编页码(不要单独编页码)。
Plant Model Generation for PLC SimulationHyeong-Tae ParkAbstract:This paper reports an automated procedure for constructing a plant model for PLC simulation. Since PLC programs contain only the control logic without information on the plant model, it is necessary to build the corresponding plant model to perform the simulation. Conventionally, a plant model for PLC simulation has been constructed manually, which requires much effort and indepth knowledge of the simulation. As a remedy for this problem, we propose an automated procedure for generating a plant model from the symbol table of a PLC program. To do so, we propose a naming rule for PLC symbols so that the symbol names include sufficient information on the plant model. By analysing such symbol names, we extract a plant model automatically. The proposed methodology has been implemented and test runs performed.Keywords: agile manufacturing; CAD/CAM; CAPP; simulation1. IntroductionTo survive and prosper in the modern manufacturing era, manufacturers need to continuously improve their products, as well as their production systems. A modern manufacturing line is a highly integrated system composed of automated workstations, such as robots with tool-changing capabilities, a hardware handling system and storage system, and a computer control system that controls the operations of the- 1 -entire system.Since the implementation of a manufacturing line requires heavy investment, proper verification of a line’s operational status sho uld be performed to ensure that the highly automated manufacturing system will successfully achieve the intended benefits. Simulation technology is considered to be an essential tool in the design and analysis of complex systems that cannot be easily described by analytical or mathematical models . Simulation is useful for calculating utilisation statistics, finding bottlenecks, pointing out scheduling errors, and even for creating manufacturing schedules. Traditionally, various simulation languages, including ARENA and AutoMod, have been used for the simulation of manufacturing systems. These simulation languages have been widely accepted both by industry and by academia; however, they remain as analysis tools for the rough design stage of a production line, because their simulation models are not sufficiently realistic to be utilised for a detailed design or for implementation purposes. For example, real production lines are usually controlled by PLC (Programmable Logic Controller) programs (Rullan 1997), but conventional simulation languages roughly describe the control logic with independent entity flows (job flows) between processes.- 2 -Production systems typically consist of simultaneously operating machines, which are controlled by PLCs, currently the most suitable and widely employed industrial control technology. A PLC emulates the behaviour of an electric ladder diagram. As they are sequential machines, to emulate the workings of parallel circuits that respond instantaneously, PLCs use an input/output symbol table and a scanning cycle. When a program is being run in a PLC it is continuously executing a scanning cycle. The program scan solves the Boolean logic related to the information in the input table with that in the output and internal relay tables. In addition, the information in the output and internal relay tables is updated during the program scan. In a PLC, this Boolean logic is typically represented using a graphical language known as a ladder diagram (IEC 2003).Since the abstraction levels of conventional simulators and PLC programs are quite different, the control logic of conventional simulators cannot be reused for the generation of PLC programs. Usually, electrical engineers manually write PLC programs by referring to the rough control logic of conventional simulators, as shown in Figure 1. Since PLC programming is a very tedious and error-prone job, it is essential to verify the PLC programs offline to reduce the stabilisation time of a production system.Previous approaches to a PLC program can be categorised into two groups:- 3 -(1) verification of a given PLC programand (2) generation of a dependable PLC program. In the first group, various software tools have been developed for the verification of PLC based systems via the use of timed automata, such as UPPAAL2k, KRONOS, Supremica and HyTech, mainly for programs written in a statement list language, also termed Boolean (Manesis and Akantziotis 2005). Such software tools verify PLC programs to a certain extent; however, they remain limited. Since they mainly focus on the checking of theoretical attributes (safety, liveness, and reachability), it is not easy for users to determine whether the PLC programs actually achieve the intended control objectives. In the second group, many researchers have focused on the automatic generation of PLC programs from various formalisms including state diagrams, Petri nets, and IDEF0. These formalisms can help the design process of control logics; however, it is still difficult to find hidden errors, which is the most difficult part of verifying a control program.Figure 2. The concept of PLC simulation.To overcome the aforementioned problems, it is necessary to utilise simulation techniques for PLC program verification. By simulating PLC programs, it is possible to analyse the control logic in various ways and recognise hidden errors more intuitively (David 1998). Although PLC simulation can be a very powerful tool for the detailed verification of a production system, the accompanying construction of a plant model is a major obstacle (the counterpart model of a control program). Since PLC programs only contain the control information, without device models, it is necessary to build a corresponding plant model to perform simulation, as shown in- 4 -Figure 2. However, constructing a plant model requires an excessive amount of time and effort. Sometimes, the plant model construction requires much more time than the PLC programming. This serves as the motivation for exploring the possibility of finding an automatic procedure for generating a plant model from a given PLC program.Figure3.Symbol table of a PLC program.Although the objective of a PLC program is not to describe a plant model (device models), the symbol table of a PLC program can provide a glimpse of the plant model. As shown in Figure 3, symbols in a PLC program usually contain some information related to the plant. For example, ‘EXLINE_MB_AGV_P1’ means that the symbol is a signal that is related to the control of an ‘AGV’ (Auto Guided Vehicl e) belonging to the ‘MB’ station of ‘EXLINE’ line. The above scenario reveals the key idea of the present study. If we can develop a proper naming rule for PLC symbols, then it might be possible to extract a plant model by analysing the symbol names.This paper has two major objectives: (1) to propose a proper naming rule for PLC symbols and (2) to develop a procedure for generating a plant model by analysing the symbol names. The application area of the proposed methodology includes all types of automated manufacturing systems controlled by PLC programs, such as automotive production lines, FMSs (flexible manufacturing systems), and ASRSs (automatic storage and retrieval systems). The overall structure of the paper is as follows. Section 2 addresses the specifications of a plant model for PLC simulation. Section 3 describes a naming rule for PLC symbols, which enables the automatic generation of a plant model. Finally, concluding remarks are given in Section 4.2. Plant model for PLC simulationBefore explaining the specification of a plant model enabling PLC simulation, we want to address the importance of the PLC simulation. Chuang et al. (1999) proposed a procedure for the development of an industrial automated production system that- 5 -- 6 -consists of nine steps, as follows: (1) define the process to be controlled; (2) make a sketch of the process operation; (3) create a written sequence of the process; (4) on the sketch, add the sensors needed to carry out the control sequence; (5) add the manual controls needed for the process setup or for operational checks; (6) consider the safety of the operating personnel and make additions and adjustments as needed;(7) add the master stop switches required for a safe shutdown; (8) create a ladder logic diagram that will be used as a basis for thePLC program; and (9) consider the possible points where the process sequence may go astray. The most time-consuming task for the control logic designers is the eighth step, which is usually done by the repetitive method of code writing, testing, and debugging until the control objectives are achieved (Manesis and Akantziotis 2005). This is the reason why conventional PLC programming is often inefficient and prone to human error. As the configurations of production lines and their control programs become more complicated, there is a strong need for a more efficient PLC simulation environment. It is hoped that this paper will take positive steps in this direction.A PLC can be considered as a dedicated computer system having input and output signals. To run a PLC, the corresponding plant model (the counterpart system) is required to interact with the input and output of the PLC. The behaviour of the plant model should be the same as that of the actual system to achieve PLC verification. Since a production line consists of various devices, including robots, transporters, jigs, solenoids, proximity sensors, and light sensors (Groover 2006), we can consider a plant model as a set of device models. To build such a device model, this paper em ploys Zeigler’s DEVS (Discrete Event Systems Specifications) formalism (Zeigler 1984, Kim 1994), which supports the specification of discrete event models in a hierarchical, modular manner. The semantics of the formalism are highly compatible with object-oriented specifications for simulation models. We use the atomic model of the DEVS formalism to represent the behavior of a device model. Formally, an atomic model M is specified by a 7-tuple:M =〈X, S,Y, sin δ,ext δ,λ ,t a 〉X input events setS sequential states setY output events setsin δ S→S: internal transition functionext δQ*X→S: external transition functionQ={(s, e)∣s ∈S, 0≤e ≤t a (s)}: total state of MλS →Y: output function- 7 -t a S →Real: time advance functionThe four elements in the 7-tuple, namely sin δ,ext δ,λand t a , are called the characteristic functions of an atomic model. The atomic model of the DEVS formalism can be considered as a timed-FSA (finite state automata), and it is suitable for describing the behaviour of a device model. Once the device models (plant model) are obtained, it becomes possible to perform the PLC simulation. Currently, device models should be construed manually, which takes much time and effort. To cope with the problem, the objective of the paper is to propose an automated generation procedure for device models.Before explaining the automatic generation procedure of a plant model, let us take a look at the manual procedure to construct device models. To construct a device model, first it is necessary to identify the set of tasks that are assigned to the device. The activation of each task is normally triggered by an external signal from PLC programs. Once the set of tasks is identified for a device, it is then possible to extract the state transition diagram, which defines an atomic model of the DEVS formalism. Figure 4(a) shows a simple example of an AGV (Automatic Guided Vehicle) with two tasks, T1 (movement from p1 to p2) and T2 (movement from p2 to p1). As the two tasks should be triggered by external events, the shell part of the AGV must have two input ports, termed here as Signal_1 and Signal_2, as shown in Figure 4(b).From the set of tasks, it is possible to instantiate the state transition diagram. For this example, there are four states, P1, DoT1, P2 and DoT2. While P1 and P2 take external events from the input ports (Signal_1, Signal_2) for state transitions, DoT1 and DoT2 take internal events that are the end events of the two tasks (T1 and T2). The DEVS atomic model of the virtual device, corresponding to the AGV, can be described as follows:- 8 -Shell of a virtual device:M=〈X,S,Y,sin δ,ext δ,λ ,t a 〉}2_,1_{Signal Signal =X S={P1,DOT1,P2,DOT2} Y={T1Done,T2Done}sin δ(DOT1)=P2 s i nδ(DOT2)=P1 ext δ(P1,Signal_1)=DOT1 ext δ(P2,Signal_2)=DOT2λ(DOT1)=T1Done λ(DOT2)=T2Donet a (DOT1)=Time_1 t a (DOT2)=Time_2Once a plant model has been constructed, it is possible to perform the PLC simulation, which enables the intuitive verification of a PLC program. Figure 5 shows the connections between a PLC program and a plant model. The plant model includes all device models of a production system, and the PLC program contains the control logic for the plant model. To integrate the plant model and the PLC program, it is necessary to define the mapping between the plant model and the PLC program, which is described by I/O mapping. To enable the visual verification of a PLC program, it is necessary to import 3D graphic models, which are controlled by the logical device models (the state transition diagrams). Since 3D graphic models are not always necessary, they are optional for PLC simulation. As mentioned already, the objective of this paper is to extract device models from the symbol names of PLC programs. To do so, it is necessary to develop a proper naming rule for PLC symbols. The naming rule will be addressed in the next section.3. Symbol naming for plant model generationAlthough IEC 61131-3 provides various standard specifications for a PLC, the naming rules of PLC symbols have rarely been brought into focus. Since there have been no standard rules for the naming of PLC symbols, it has been fully dependent on individual PLC programmers.To generate device models from PLC symbols, it is necessary to make PLC symbols that include enough information concerning the plant model. To achieve this objective, we interviewed many PLC programmers and analysed various conventional rules. As a result, we came up with a naming structure consisting of five fields: (1) line name, (2) process number, (3) device name, (4) input or output, and (5) task name (or state name). Figure 6 shows the naming structure for PLC symbols.If the PLC symbols are named according to the proposed naming structure, then it becomes possible to extract device models (atomic models of DEVS formalism) by simply analysing the symbol names. There are two types of symbols (signals), input or output, which are specified by the fourth field. The purpose of the output signal is to trigger a task that is specified by the fifth field. Thus, it is possible to identify the set of tasks of a device by analysing the output symbols. As mentioned already, once the set of tasks is identified for a device, it is then possible to extract the state transition diagram for the device model, which defines an atomic model of the DEVS formalism. While an output signal (symbol) is issued by a PLC to trigger a task, an input signal (symbol) is issued by a device to report the completion of the task to theδand internal transition functions PLC. This means that external transition functionsextδof a device model can be automatically extracted from the output and input sinsymbols, respectively. We demonstrate the generation procedure of a plant modelfrom PLC symbols using an example, as shown in Figure 7.- 9 -- 10 -In the example cell, we assume a part is loaded manually on the AGV by a worker. When the AGV senses the existence of a part, it moves to transfer the part to the machine. After the transfer, the machine performs machining to convert the part into a finished product. In this case, the plant model consists of two device models: an AGV model and a machine model. The PLC program to control the simple manufacturing cell is shown in Figure 8(a), and its symbol table is shown in Figure 8(b).As shown in Figure 8(b), the AGV model has two output symbols and two input symbols. From the output symbols (EX_OP_AGV_O_GOP1, EX_OP_AGV_O_GOP2), we can intuitively recognise that the AGV has two tasks- 11 -(movement from P2 to P1, and movement from P1 to P2). By using the output symbols, we can extract the state transition diagram, as well as the external transitionfunctions, as shown in Figure 9(a).As mentioned already, an output symbol triggers a task of a device model, and an input symbol is made by the device to notify the completion of the task. Since the execution of a task is performed internally by the device, the internal transition functions of a device model can easily be extracted from the input symbols(EX_OP_AGV_I_DONEGOP1, EX_OP_AGV_I_DONEGOP2). In this way, the device model of the machine can be extracted from the related symbols(EX_OP_MC_, etc.), as shown in Figure 9(b). The procedure for the construction of a device model can be described as follows.- 12 -(1) Identify all corresponding pairs between output symbols and input symbols. While an output symbol triggers a task, the corresponding input symbol reports the completion of the task. For example, EX_OP_AGV_O_GOP1 corresponds toEX_OP_AGV_I_DONEGOP1. (2) Define the states of a device mode using the last naming fields of input/output symbols. In the case of the AGV, we can define four states, GoP1, DoneGoP1, GoP2, and DoneGoP2. (3) Define external (internal) transition functions using output (input) symbols. Once a plant model has been obtained, it becomes possible to perform the PLC simulation by defining the I/O mapping relations between the plant model and the PLC symbols. Through the PLC simulation, we can efficiently check whether the PLC program achieves the control objectives or not.The proposed methodology was implemented in C++language, and test runs were made on a personal computer, as shown in Figure 10. The PLC program shown in Figure 8(a) was written using GX IEC developer version 7.0 provided byMitsubishi Electric Corporation. The GX IEC developer can export a symbol table in the form of an Excel file, as shown in Figure 8(b). The exported symbol table becomes the input for the generation of a plant model. Figure 10 shows that the generated device models by analysing the exported symbol table.4. Discussion and conclusionsThrough PLC simulation, it is possible to analyse control logic in various ways and recognise hidden errors more intuitively. Although PLC simulation can be a very powerful tool for the detailed verification of a production system, the accompanying construction of a plant model requires too much time and effort. To remedy this problem, we have proposed an automated procedure to generate a plant model from the symbol table of a PLC program. To do so, we have also proposed a naming rule for PLC symbols so that the symbol names include sufficient information on the plant model. By analysing the symbol names, a plant model can be extracted automatically. Since a plant consists of various manufacturing devices, we can consider a plant model as a set of device models. To represent such a device model, the proposed method employs Zeigler’s DEVS formalism. We use the atomic model of the DEVS formalism to describe the logical behavior of a device model. In other words, it is necessary to extract the device models from the symbol table in the form of an atomic model of the DEVS formalism. Although the proposed methodology only deals with the local verification of PLC programs, it is also possible to extend the methodologyto include the verification of mechanical aspects of the plant .- 13 -工厂模型生成PLC仿真Hyeong-Tae Park摘要 :本文介绍一个自动程序可编程序控制器(PLC)生成工厂模型仿真。
外文翻译要求:1、外文资料与毕业设计(论文)选题密切相关,译文准确、质量好。
2、阅读2篇幅以上(10000字符左右)的外文资料,完成2篇不同文章的共2000汉字以上的英译汉翻译3、外文资料可以由指导教师提供,外文资料原则上应是外国作者。
严禁采用专业外语教材文章。
4、排序:“一篇中文译文、一篇外文原文、一篇中文译文、一篇外文原文”。
插图内文字及图名也译成中文。
5、标题与译文格式(字体、字号、行距、页边距等)与论文格式要求相同。
下页附:外文翻译与原文参考格式2英文翻译 (黑体、四号、顶格)外文原文出处:(译文前列出外文原文出处、作者、国籍,译文后附上外文原文)《ASHRAE Handbook —Refrigeration 》.CHAPTER3 .SYSTEM Practices for ammonia 3.1 System Selection 3.2 Equipment3.10 Reciprocating Compressors第3章 氨制冷系统的实施3.1 系统选择在选择一个氨制冷系统设计时,须要考虑一些设计决策要素,包括是否采用(1)单级压缩(2)带经济器的压缩(3)多级压缩(4)直接蒸发(5)满液式(6)液体再循环(7)载冷剂。
单级压缩系统基本的单级压缩系统由蒸发器、压缩机、冷凝器、储液器(假如用的话)和制冷剂控制装置(膨胀阀、浮球阀等)。
1997 ASHRAE 手册——“原理篇”中的第一章讨论了压缩制冷循环。
图1.壳管式经济器的布置外文翻译的标题与译文中的字体、字号、行距、页边距等与论文格式相同。
英文原文(黑体、四号、顶格)英文翻译2(黑体,四号,顶格)外文原文出处:(黑体,四号,顶格)P. Fanning. Nonlinear Models of Reinforced and Post-tensioned Concrete Beams. Lecturer, Department of Civil Engineering, University College Dublin. Received 16 Jul 2001.非线形模型钢筋和后张法预应力混凝土梁摘要:商业有限元软件一般包括混凝土在荷载做用下非线性反应的专用数值模型。
东北大学东软信息学院外文资料和译文格式要求一、译文必须采用计算机输入、打印,幅面A4。
外文资料原文(复印或打印)在前,译文在后,于左侧装订。
二、具体要求1、至少翻译一篇内容与所选课题相关的外文文献。
2、译文汉字字数不少于4000字。
3、正文格式要求:宋体五号字。
附:外文资料和译文封面、空白页外文资料和译文专业:班级:姓名:学号:指导教师:2010年12月23日5.2.5. Read/Write Spin LocksRead/write spin locks have been introduced to increase the amount of concurrency inside the kernel. They allow several kernel control paths to simultaneously read the same data structure, as long as no kernel control path modifies it. If a kernel control path wishes to write to the structure, it must acquire the write version of the read/write lock, which grants exclusive access to the resource. Of course, allowing concurrent reads on data structures improves system performance.Figure 5-2 illustrates two critical regions (C1 and C2) protected by read/write locks. Kernel control paths R0 and R1 are reading the data structures in C1 at the same time, while W0 is waiting to acquire the lock for writing. Kernel control path W1 is writing the data structures inC2, while both R2 and W2 are waiting to acquire the lock for reading and writing, respectively.Figure 5-2. Read/write spin locksEach read/write spin lock is a rwlock_t structure; its lock field is a 32-bit field that encodes two distinct pieces of information:∙ A 24-bit counter denoting the number of kernel control paths currently reading the protected data structure. The two's complement value of this counter is stored in bits 023 of the field.∙An unlock flag that is set when no kernel control path is reading or writing, and clear otherwise. This unlock flag is stored in bit 24 of the field.Notice that the lock field stores the number 0x01000000 if the spin lock is idle (unlock flag set and no readers), the number 0x00000000 if it has been acquired for writing (unlock flag clear and no readers), and any number in the sequence 0x00ffffff, 0x00fffffe, and so on, if it has been acquired for reading by one, two, or more processes (unlock flag clear and the two's complement on 24 bits of the number of readers). As the spinlock_t structure, the rwlock_t structure also includes a break_lock field.The rwlock_init macro initializes the lock field of a read/write spin lock to 0x01000000 (unlocked) and the break_lock field to zero.5.2.5.1. Getting and releasing a lock for readingThe read_lock macro, applied to the address rwlp of a read/write spin lock, is similar to thespin_lock macro described in the previous section. If the kernel preemption option has been selected when the kernel was compiled, the macro performs the very same actions as those of spin_lock( ), with just one exception: to effectively acquire the read/write spin lock in step 2, the macro executes the _raw_read_trylock( ) function:int _raw_read_trylock(rwlock_t *lock){atomic_t *count = (atomic_t *)lock->lock;atomic_dec(count);if (atomic_read(count) >= 0)return 1;atomic_inc(count);return 0;}The lock fieldthe read/write lock counteris accessed by means of atomic operations. Notice, however, that the whole function does not act atomically on the counter: for instance, the counter might change after having tested its value with the if statement and before returning 1. Nevertheless, the function works properly: in fact, the function returns 1 only if the counter was not zero or negative before the decrement, because the counter is equal to 0x01000000 for no owner, 0x00ffffff for one reader, and 0x00000000 for one writer.If the kernel preemption option has not been selected when the kernel was compiled, theread_lock macro yields the following assembly language code:movl $rwlp->lock,%eaxlock; subl $1,(%eax)jns 1fcall _ _read_lock_failed1:where _ _read_lock_failed( ) is the following assembly language function:_ _read_lock_failed:lock; incl (%eax)1: pausecmpl $1,(%eax)js 1block; decl (%eax)js _ _read_lock_failedretThe read_lock macro atomically decreases the spin lock value by 1, thus increasing the number of readers. The spin lock is acquired if the decrement operation yields a nonnegative value; otherwise, the _ _read_lock_failed( ) function is invoked. The function atomically increases the lock field to undo the decrement operation performed by the read_lock macro, and then loops until the field becomes positive (greater than or equal to 1). Next, _ _read_lock_failed( ) tries to get the spin lock again (another kernel control path could acquire the spin lock for writing right after the cmpl instruction).Releasing the read lock is quite simple, because the read_unlock macro must simply increase the counter in the lock field with the assembly language instruction:lock; incl rwlp->lockto decrease the number of readers, and then invoke preempt_enable( ) to reenable kernel preemption.5.2.5.2. Getting and releasing a lock for writingThe write_lock macro is implemented in the same way as spin_lock( ) andread_lock( ). For instance, if kernel preemption is supported, the function disables kernel preemption and tries to grab the lock right away by invoking_raw_write_trylock( ). If this function returns 0, the lock was already taken, thus the macro reenables kernel preemption and starts a busy wait loop, as explained in the description of spin_lock( ) in the previous section.The _raw_write_trylock( ) function is shown below:int _raw_write_trylock(rwlock_t *lock){atomic_t *count = (atomic_t *)lock->lock;if (atomic_sub_and_test(0x01000000, count))return 1;atomic_add(0x01000000, count);return 0;}The _raw_write_trylock( ) function subtracts 0x01000000 from the read/write spin lock value, thus clearing the unlock flag (bit 24). If the subtraction operation yieldszero (no readers), the lock is acquired and the function returns 1; otherwise, the function atomically adds 0x01000000 to the spin lock value to undo the subtraction operation.Once again, releasing the write lock is much simpler because the write_unlock macro must simply set the unlock flag in the lock field with the assembly language instruction:lock; addl $0x01000000,rwlpand then invoke preempt_enable().5.2.6. SeqlocksWhen using read/write spin locks, requests issued by kernel control paths to perform a read_lock or a write_lock operation have the same priority: readers must wait until the writer has finished and, similarly, a writer must wait until all readers have finished.Seqlocks introduced in Linux 2.6 are similar to read/write spin locks, except that they give a much higher priority to writers: in fact a writer is allowed to proceed even when readers are active. The good part of this strategy is that a writer never waits (unless another writer is active); the bad part is that a reader may sometimes be forced to read the same data several times until it gets a valid copy.Each seqlock is a seqlock_t structure consisting of two fields: a lock field of type spinlock_t and an integer sequence field. This second field plays the role of a sequence counter. Each reader must read this sequence counter twice, before and after reading the data, and check whether the two values coincide. In the opposite case, a new writer has become active and has increased the sequence counter, thus implicitly telling the reader that the data just read is not valid.A seqlock_t variable is initialized to "unlocked" either by assigning to it the value SEQLOCK_UNLOCKED, or by executing the seqlock_init macro. Writers acquire and release a seqlock by invoking write_seqlock( ) and write_sequnlock( ). The first function acquires the spin lock in the seqlock_t data structure, then increases the sequence counter by one; the second function increases the sequence counter once more, then releases the spin lock. This ensures that when the writer is in the middle of writing, the counter is odd, and that when no writer is altering data, the counter is even. Readers implement a critical region as follows:unsigned int seq;do {seq = read_seqbegin(&seqlock);/* ... CRITICAL REGION ... */} while (read_seqretry(&seqlock, seq));read_seqbegin() returns the current sequence number of the seqlock; read_seqretry() returns 1 if either the value of the seq local variable is odd (a writer was updating the data structure when the read_seqbegin( ) function has been invoked), or if the value of seq does not match the current value of the seqlock's sequence counter (a writer started working while the reader was still executing the code in the critical region).Notice that when a reader enters a critical region, it does not need to disable kernel preemption; on the other hand, the writer automatically disables kernel preemption when entering the critical region, because it acquires the spin lock.Not every kind of data structure can be protected by a seqlock. As a general rule, the following conditions must hold:∙The data structure to be protected does not include pointers that are modified by the writers and dereferenced by the readers (otherwise, a writer couldchange the pointer under the nose of the readers)∙The code in the critical regions of the readers does not have side effects (otherwise, multiple reads would have different effects from a single read) Furthermore, the critical regions of the readers should be short and writers should seldom acquire the seqlock, otherwise repeated read accesses would cause a severe overhead. A typical usage of seqlocks in Linux 2.6 consists of protecting some data structures related to the system time handling (see Chapter 6).5.2.7. Read-Copy Update (RCU)Read-copy update (RCU) is yet another synchronization technique designed to protect data structures that are mostly accessed for reading by several CPUs. RCU allows many readers and many writers to proceed concurrently (an improvement over seqlocks, which allow only one writer to proceed). Moreover, RCU is lock-free, that is, it uses no lock or counter shared by all CPUs; this is a great advantage over read/write spin locks and seqlocks, which have a high overhead due to cache line-snooping and invalidation.How does RCU obtain the surprising result of synchronizing several CPUs without shared data structures? The key idea consists of limiting the scope of RCU as follows:1.Only data structures that are dynamically allocated and referenced by meansof pointers can be protected by RCU.2.No kernel control path can sleep inside a critical region protected by RCU.When a kernel control path wants to read an RCU-protected data structure, it executes the rcu_read_lock( ) macro, which is equivalent to preempt_disable( ). Next, the reader dereferences the pointer to the data structure and starts reading it. As stated above, the reader cannot sleep until it finishes reading the data structure; the end of the critical region is marked by the rcu_read_unlock( ) macro, which is equivalent to preempt_enable( ).Because the reader does very little to prevent race conditions, we could expect that the writer has to work a bit more. In fact, when a writer wants to update the data structure, it dereferences the pointer and makes a copy of the whole data structure. Next, the writer modifies the copy. Once finished, the writer changes the pointer to the data structure so as to make it point to the updated copy. Because changing the value of the pointer is an atomic operation, each reader or writer sees either the old copy or the new one: no corruption in the data structure may occur. However, a memory barrier is required to ensure that the updated pointer is seen by the other CPUs only after the data structure has been modified. Such a memory barrier is implicitly introduced if a spin lock is coupled with RCU to forbid the concurrent execution of writers.The real problem with the RCU technique, however, is that the old copy of the data structure cannot be freed right away when the writer updates the pointer. In fact, the readers that were accessing the data structure when the writer started its update could still be reading the old copy. The old copy can be freed only after all (potential) readers on the CPUs have executed the rcu_read_unlock( ) macro. The kernel requires every potential reader to execute that macro before:∙The CPU performs a process switch (see restriction 2 earlier).∙The CPU starts executing in User Mode.∙The CPU executes the idle loop (see the section "Kernel Threads" in Chapter 3).In each of these cases, we say that the CPU has gone through a quiescent state.The call_rcu( ) function is invoked by the writer to get rid of the old copy of the data structure. It receives as its parameters the address of an rcu_head descriptor (usually embedded inside the data structure to be freed) and the address of a callback function to be invoked when all CPUs have gone through a quiescent state. Once executed, the callback function usually frees the old copy of the data structure.The call_rcu( ) function stores in the rcu_head descriptor the address of the callback and its parameter, then inserts the descriptor in a per-CPU list of callbacks. Periodically, once every tick (see the section "Updating Local CPU Statistics" in Chapter 6), the kernel checks whether the local CPU has gone through a quiescent state. When all CPUs have gone through a quiescent state, a local taskletwhose descriptor is stored in the rcu_tasklet per-CPU variableexecutes all callbacks in the list.RCU is a new addition in Linux 2.6; it is used in the networking layer and in the Virtual Filesystem.5.2.8. SemaphoresWe have already introduced semaphores in the section "Synchronization and Critical Regions" in Chapter 1. Essentially, they implement a locking primitive that allows waiters to sleep until the desired resource becomes free.Actually, Linux offers two kinds of semaphores:∙Kernel semaphores, which are used by kernel control paths∙System V IPC semaphores, which are used by User Mode processesIn this section, we focus on kernel semaphores, while IPC semaphores are described in Chapter 19.A kernel semaphore is similar to a spin lock, in that it doesn't allow a kernel control path to proceed unless the lock is open. However, whenever a kernel control path tries to acquire a busy resource protected by a kernel semaphore, the corresponding process is suspended. It becomes runnable again when the resource is released. Therefore, kernel semaphores can be acquired only by functions that are allowed to sleep; interrupt handlers and deferrable functions cannot use them.A kernel semaphore is an object of type struct semaphore, containing the fields shown in the following list.countStores an atomic_t value. If it is greater than 0, the resource is free that is, itis currently available. If count is equal to 0, the semaphore is busy but noother process is waiting for the protected resource. Finally, if count isnegative, the resource is unavailable and at least one process is waiting for it.waitStores the address of a wait queue list that includes all sleeping processes that are currently waiting for the resource. Of course, if count is greater than orequal to 0, the wait queue is empty.sleepersStores a flag that indicates whether some processes are sleeping on thesemaphore. We'll see this field in operation soon.The init_MUTEX( ) and init_MUTEX_LOCKED( ) functions may be used to initialize a semaphore for exclusive access: they set the count field to 1 (free resource with exclusive access) and 0 (busy resource with exclusive access currently granted to the process that initializes the semaphore), respectively. The DECLARE_MUTEX and DECLARE_MUTEX_LOCKED macros do the same, but they also statically allocate the struct semaphore variable. Note that a semaphore could also be initialized with an arbitrary positive value n for count. In this case, at most n processes are allowed to concurrently access the resource.5.2.8.1. Getting and releasing semaphoresLet's start by discussing how to release a semaphore, which is much simpler than getting one. When a process wishes to release a kernel semaphore lock, it invokes the up( ) function. This function is essentially equivalent to the following assembly language fragment:movl $sem->count,%ecxlock; incl (%ecx)jg 1flea %ecx,%eaxpushl %edxpushl %ecxcall _ _uppopl %ecxpopl %edx1:where _ _up( ) is the following C function:__attribute__((regparm(3))) void _ _up(struct semaphore *sem){wake_up(&sem->wait);}The up( ) function increases the count field of the *sem semaphore, and then it checks whether its value is greater than 0. The increment of count and the setting of the flag tested by the following jump instruction must be atomically executed, or else another kernel control path could concurrently access the field value, with disastrousresults. If count is greater than 0, there was no process sleeping in the wait queue, so nothing has to be done. Otherwise, the _ _up( ) function is invoked so that one sleeping process is woken up. Notice that _ _up( ) receives its parameter from the eax register (see the description of the _ _switch_to( ) function in the section "Performing the Process Switch" in Chapter 3).Conversely, when a process wishes to acquire a kernel semaphore lock, it invokes the down( ) function. The implementation of down( ) is quite involved, but it is essentially equivalent to the following:down:movl $sem->count,%ecxlock; decl (%ecx);jns 1flea %ecx, %eaxpushl %edxpushl %ecxcall _ _downpopl %ecxpopl %edx1:where _ _down( ) is the following C function:__attribute__((regparm(3))) void _ _down(struct semaphore * sem){DECLARE_WAITQUEUE(wait, current);unsigned long flags;current->state = TASK_UNINTERRUPTIBLE;spin_lock_irqsave(&sem->wait.lock, flags);add_wait_queue_exclusive_locked(&sem->wait, &wait);sem->sleepers++;for (;;) {if (!atomic_add_negative(sem->sleepers-1, &sem->count)) {sem->sleepers = 0;break;}sem->sleepers = 1;spin_unlock_irqrestore(&sem->wait.lock, flags);schedule( );spin_lock_irqsave(&sem->wait.lock, flags);current->state = TASK_UNINTERRUPTIBLE;}remove_wait_queue_locked(&sem->wait, &wait);wake_up_locked(&sem->wait);spin_unlock_irqrestore(&sem->wait.lock, flags);current->state = TASK_RUNNING;}The down( ) function decreases the count field of the *sem semaphore, and then checks whether its value is negative. Again, the decrement and the test must be atomically executed. If count is greater than or equal to 0, the current process acquires the resource and the execution continues normally. Otherwise, count is negative, and the current process must be suspended. The contents of some registers are saved on the stack, and then _ _down( ) is invoked.Essentially, the _ _down( ) function changes the state of the current process from TASK_RUNNING to TASK_UNINTERRUPTIBLE, and it puts the process in the semaphore wait queue. Before accessing the fields of the semaphore structure, the function also gets the sem->wait.lock spin lock that protects the semaphore wait queue (see "How Processes Are Organized" in Chapter 3) and disables local interrupts. Usually, wait queue functions get and release the wait queue spin lock as necessary when inserting and deleting an element. The _ _down( ) function, however, uses the wait queue spin lock also to protect the other fields of the semaphore data structure, so that no process running on another CPU is able to read or modify them. To that end, _ _down( ) uses the "_locked" versions of the wait queue functions, which assume that the spin lock has been already acquired before their invocations.The main task of the _ _down( ) function is to suspend the current process until the semaphore is released. However, the way in which this is done is quite involved. To easily understand the code, keep in mind that the sleepers field of the semaphore is usually set to 0 if no process is sleeping in the wait queue of the semaphore, and it is set to 1 otherwise. Let's try to explain the code by considering a few typical cases. MUTEX semaphore open (count equal to 1, sleepers equal to 0)The down macro just sets the count field to 0 and jumps to the nextinstruction of the main program; therefore, the _ _down( ) function is notexecuted at all.MUTEX semaphore closed, no sleeping processes (count equal to 0, sleepers equal to 0)The down macro decreases count and invokes the _ _down( ) function withthe count field set to -1 and the sleepers field set to 0. In each iteration of theloop, the function checks whether the count field is negative. (Observe thatthe count field is not changed by atomic_add_negative( ) because sleepers isequal to 0 when the function is invoked.)∙If the count field is negative, the function invokes schedule( ) tosuspend the current process. The count field is still set to -1, and thesleepers field to 1. The process picks up its run subsequently insidethis loop and issues the test again.∙If the count field is not negative, the function sets sleepers to 0 and exits from the loop. It tries to wake up another process in thesemaphore wait queue (but in our scenario, the queue is now empty)and terminates holding the semaphore. On exit, both the count fieldand the sleepers field are set to 0, as required when the semaphore isclosed but no process is waiting for it.MUTEX semaphore closed, other sleeping processes (count equal to -1, sleepers equal to 1)The down macro decreases count and invokes the _ _down( ) function withcount set to -2 and sleepers set to 1. The function temporarily sets sleepers to 2, and then undoes the decrement performed by the down macro by addingthe value sleepers-1 to count. At the same time, the function checks whethercount is still negative (the semaphore could have been released by theholding process right before _ _down( ) entered the critical region).∙If the count field is negative, the function resets sleepers to 1 andinvokes schedule( ) to suspend the current process. The count field isstill set to -1, and the sleepers field to 1.∙If the count field is not negative, the function sets sleepers to 0, tries to wake up another process in the semaphore wait queue, and exitsholding the semaphore. On exit, the count field is set to 0 and thesleepers field to 0. The values of both fields look wrong, becausethere are other sleeping processes. However, consider that anotherprocess in the wait queue has been woken up. This process doesanother iteration of the loop; the atomic_add_negative( ) functionsubtracts 1 from count, restoring it to -1; moreover, before returningto sleep, the woken-up process resets sleepers to 1.So, the code properly works in all cases. Consider that the wake_up( ) function in _ _down( ) wakes up at most one process, because the sleeping processes in the wait queue are exclusive (see the section "How Processes Are Organized" in Chapter 3).Only exception handlers , and particularly system call service routines , can use the down( ) function. Interrupt handlers or deferrable functions must not invoke down( ),because this function suspends the process when the semaphore is busy. For this reason, Linux provides the down_trylock( ) function, which may be safely used by one of the previously mentioned asynchronous functions. It is identical to down( ) except when the resource is busy. In this case, the function returns immediately instead of putting the process to sleep.A slightly different function called down_interruptible( ) is also defined. It is widely used by device drivers, because it allows processes that receive a signal while being blocked on a semaphore to give up the "down" operation. If the sleeping process is woken up by a signal before getting the needed resource, the function increases the count field of the semaphore and returns the value -EINTR. On the other hand, if down_interruptible( ) runs to normal completion and gets the resource, it returns 0. The device driver may thus abort the I/O operation when the return value is -EINTR.Finally, because processes usually find semaphores in an open state, the semaphore functions are optimized for this case. In particular, the up( ) function does not execute jump instructions if the semaphore wait queue is empty; similarly, the down( ) function does not execute jump instructions if the semaphore is open. Much of the complexity of the semaphore implementation is precisely due to the effort of avoiding costly instructions in the main branch of the execution flow.5.2.9. Read/Write SemaphoresRead/write semaphores are similar to the read/write spin locks described earlier in the section "Read/Write Spin Locks," except that waiting processes are suspended instead of spinning until the semaphore becomes open again.Many kernel control paths may concurrently acquire a read/write semaphore for reading; however, every writer kernel control path must have exclusive access to the protected resource. Therefore, the semaphore can be acquired for writing only if no other kernel control path is holding it for either read or write access. Read/write semaphores improve the amount of concurrency inside the kernel and improve overall system performance.The kernel handles all processes waiting for a read/write semaphore in strict FIFO order. Each reader or writer that finds the semaphore closed is inserted in the last position of a semaphore's wait queue list. When the semaphore is released, the process in the first position of the wait queue list are checked. The first process is always awoken. If it is a writer, the other processes in the wait queue continue to sleep. If it is a reader, all readers at the start of the queue, up to the first writer, are also woken up and get the lock. However, readers that have been queued after a writer continue to sleep.Each read/write semaphore is described by a rw_semaphore structure that includes the following fields:countStores two 16-bit counters. The counter in the most significant word encodesin two's complement form the sum of the number of nonwaiting writers(either 0 or 1) and the number of waiting kernel control paths. The counter inthe less significant word encodes the total number of nonwaiting readers andwriters.wait_listPoints to a list of waiting processes. Each element in this list is arwsem_waiter structure, including a pointer to the descriptor of the sleepingprocess and a flag indicating whether the process wants the semaphore forreading or for writing.wait_lockA spin lock used to protect the wait queue list and the rw_semaphorestructure itself.The init_rwsem( ) function initializes an rw_semaphore structure by setting the count field to 0, the wait_lock spin lock to unlocked, and wait_list to the empty list. The down_read( ) and down_write( ) functions acquire the read/write semaphore for reading and writing, respectively. Similarly, the up_read( ) and up_write( ) functions release a read/write semaphore previously acquired for reading and for writing. The down_read_trylock( ) and down_write_trylock( ) functions are similar todown_read( ) and down_write( ), respectively, but they do not block the process if the semaphore is busy. Finally, the downgrade_write( ) function atomically transforms a write lock into a read lock. The implementation of these five functions is long, but easy to follow because it resembles the implementation of normal semaphores; therefore, we avoid describing them.5.2.10. CompletionsLinux 2.6 also makes use of another synchronization primitive similar to semaphores: completions . They have been introduced to solve a subtle race condition that occurs in multiprocessor systems when process A allocates a temporary semaphore variable, initializes it as closed MUTEX, passes its address to process B, and then invokes down( ) on it. Process A plans to destroy the semaphore as soon as it awakens. Later。
外文翻译格式
外语翻译通常需要遵循一定的格式,以确保翻译内容的准确性和易读性。
以下是一个700字外文翻译的通用格式示例:
1. 标题:翻译的内容的标题,通常与原文标题保持一致,居中显示。
2. 原文:原文内容,可将原文段落编号,并保留原文格式,如段落缩进或列表。
3. 译文:相关段落的翻译内容,与原文一一对应,并保持相同的段落编号和格式。
4. 术语翻译:将翻译中使用的特定术语或固定表达进行解释和翻译,避免出现歧义。
5. 校对与审校:对翻译内容进行校对和审校,确保翻译准确无误。
6. 结论:对整个翻译内容进行总结和评价,提出自己的观点和见解。
7. 参考文献:如有需要,列出翻译过程中所参考的文献或资料。
8. 附录:如有需要,可在翻译后添加附录,补充相关资料或说明。
注意事项:
- 翻译应遵循专业的术语和语法规范,尽量保持翻译内容的准确性。
- 可根据需要调整段落的分配和序号,以符合原文和翻译内容的逻辑结构。
- 保持翻译格式的统一和美观,使用合适的字体和字号,并注意标点符号的使用。
- 翻译结束后,应进行校对和审校,以确保翻译质量的准确性和流畅性。
总之,一个700字外文翻译的格式应该清晰明了,结构合理,准确无误,并能为读者提供一个清晰且易于理解的翻译内容。
外文翻译的格式要求
一、封面
1、已填写的内容不要改动
2、外文出处只能填写著作名、教材名、英文论文题目、英语国家官
方网页网址、期刊名、报纸名。
中文网址禁止填写。
二、外文翻译文件排列顺序
首先是封面,然后是译文即中文,其次另起一页英文即原文,最后一页是外文资料翻译评价表(由指导教师填写)。
三、译文部分格式要求
1、题目为宋体四号居中加粗
2、正文内容为宋体小四,行间距为固定值18磅,其他数值为0
四、原文格式要求
字体为Times New Roman ,其他与原文相同。
因为学校对毕业论文中的外文翻译并无规定,为统一起见,特做以下要求:1、每篇字数为1500字左右,共两篇;2、每篇由两部分组成:译文 +原文。
3 附件中是一篇范本,具体字号、字体已标注。
外文翻译(包含原文)(宋体四号加粗)外文翻译一(宋体四号加粗)作者:(宋体小四号加粗)Kim Mee Hyun Director, Policy Research & Development Team, Korean Film Council (小四号)出处:(宋体小四号加粗)Korean Cinema from Origins to RenaissanceP358~P34C)韩国电影的发展及前景(标题:宋体四号加粗)1996~现在在过去的十年间,韩国电影经历了难以置信的增长。
上个世纪60年代,韩国电影迅速崛起,然而很快便陷入停滞状态,直到90年代以后,韩国电影又重新进入繁盛时期。
在这个时期,韩国电影在数量上并没有大幅的增长,但多部电影的观影人数达到了上千万人次。
1996年,韩国本土电影的市场占有量只有23.1%。
但是到了1998年,市场占有量增长到35.8%,到2001年更是达到了50% 虽然从1996年开始,韩国电影一直处在不断上升的过程中,但是直到1999年姜帝圭导演的《生死谍变》的成功才诞生了韩国电影的又一个高峰。
虽然《生死谍变》创造了韩国电影史上的最高电影票房纪录,但是1999年以后最高票房纪录几乎每年都会被刷新。
当人们都在津津乐道所谓的“韩国大片”时,2000年朴赞郁导演的《共同警备区JSA〉和2001年郭暻泽导演的《朋友》均成功刷新了韩国电影最高票房纪录。
2003年康佑硕导演的《实尾岛》和2004年姜帝圭导演的又一部力作《太极旗飘扬》开创了观影人数上千万人次的时代。
姜帝圭和康佑硕导演在韩国电影票房史上扮演了十分重要的角色。
从1993年的《特警冤家》到2003年的《实尾岛》,康佑硕导演了多部成功的电影。
外文文献翻译格式要求
外文文献中文翻译的格式要求通常包括以下几个方面:
2.翻译稿的标题应与原文保持一致,通常在文献翻译稿的第一页的中间位置,使用加粗、居中排版。
3.每一段落开始时空两行,段落间距可以根据需要适当调整。
4. 翻译稿中的引用部分,应在文中用中括号标注原文引用部分的位置,如 "[Original text]"
5.翻译稿中的图表、表格等内容,需要在相应位置插入,并在上方标明图表或表格编号,并在下方进行说明。
7.在翻译稿的最后,需要标注翻译人员的签名,并附上日期。
总之,翻译稿与原文应尽量保持一致,在排版和格式上遵循一定的要求和规范。
具体格式要求也可以根据翻译机构或期刊的要求进行调整。
毕业设计外文资料翻译学院:信息科学与工程学院专业:电子科学与技术姓名:康兴华学号: 040704128 外文出处:填入英文资料名称(用外文写)附件: 1.外文资料翻译译文;2.外文原文。
指导教师评语:签名:年月日附件1:外文资料翻译译文UART的核核的概况带有Avalon接口的通用异步接收/发送器的核(UART的核)所执行的方式是为了沟通一个系统内置的Altera FPGA和外部设备之间的串行字符流。
核实行RS-232协议计时,并提供可调波特率,奇偶,停止和数据位,以及可选RTS/CTS的流量控制信号。
它的功能设置是可配置的,对于给定的系统,它允许设计者实现必要的功能。
核提供了一个简单的寄存器映射的Avalon存储器映射(Avalon-MM)的从属接口,使Avalon-MM的主控外设(如一个NiosII处理器)通过读和写控制寄存器和数据寄存器来简单的与核沟通。
该UART的核是SOPC Builder-ready,并且可以轻松的集成到任何SOPC Builder 产生的系统中,本章包含以下章节:■“功能描述”见8-2页■“设备和工具支持”见8-4页■“在SOPC Builder中对核实例化”见8-4页■“硬件仿真考虑”见8-9页■“软件编程模型”见8-9页1. 功能描述图1 展示了UART核的分块表核有两个用户可见部分:■寄存器文件,它通过Avalon-MM从属端口来存取■RS-232的信号,RXD,TXD,CTS和RTS1.1 Avalon-MM从属接口和寄存器该UART的核提供了一个Avalon-MM从属接口到内部寄存器文件。
连接用户接口包含6个16位的寄存器:控制,状态,rxdata,txdata,除数,endofpacket。
一个主控外设,如一个NiosII处理器,可以使寄存器通过串行连接来控制核和传输数据。
该UART的核提供了一个活跃的中断请求(IRQ)输出,当新的数据已收到或当核心准备传输另一字符时,可以要求一个中断,进一步的细节见8-20页“中断行为”。
大连东软信息技术职业学院
外文资料和译文格式要求
一、译文必须采用计算机输入、打印,幅面A4。
外文资料原文(复印或打印)在前,译文在后,于左侧装订。
二、具体要求:
1、至少翻译一篇内容与所选课题相关的外文文献。
2、译文汉字字数不少于2000字。
3、格式要求参照《大连东软信息技术职业学院毕业设计(论文)撰写规范》。
附:外文资料和译文封面、空白页
大连东软信息技术职业学院
外文资料和译文
专业:软件技术
班级:软件07101班
姓名:
学号:
指导教师:刘冰月
2009 年 12 月 16 日
原文粘贴在这里,不要求格式
大连东软信息技术职业学院毕业设计(论文)译文
正文写在这里,小四号宋体,1.5倍行距
标题格式如下:。
外文文献翻译格式
外文文献翻译格式一般需包括以下内容:
1. 文献翻译的题目:对外文文献的标题进行翻译,并在翻译后的题目前加上“外文文献翻译:”。
2. 文献的出处:包括外文文献的作者名称、文献标题、原文出版信息等。
3. 翻译的正文:按照文章的段落,将外文文献逐段翻译成中文。
在翻译的文本前后加上序号,以示区分。
4. 翻译的语言风格:外文文献翻译应注重语言风格的保持。
翻译时要根据文章的风格,选择适当的中文表达方式,保持原文的句子结构和词汇用法。
5. 原文和译文对照:将原文和译文对照排列,方便读者对照阅读。
可以将原文和译文分别排列在左右两栏中,或者将原文和译文分别放在不同的页面上,便于对照阅读。
6. 翻译中的注释:如果有部分内容翻译困难或有待解释的地方,在翻译文中添加注释。
注释的格式一般为在译文后面加上方括号,括号内的文字为注释内容。
7. 译者的信息:在文献翻译末尾一般会加上译者的姓名,并注明译者的专业领域或者工作单位。
总之,外文文献翻译格式需要将原文翻译成中文,保持原文的结构和风格,并加上适当的注释和对照,方便读者阅读和理解。
英文翻译(原文)说明书题目:系别:专业:学生姓名:学号:指导教师:职称:题目类型:理论研究实验研究工程设计工程技术研究软件开发年月日英文翻译(译文)说明书题目:系别:专业:学生姓名:学号:指导教师:职称:题目类型:理论研究实验研究工程设计工程技术研究软件开发年月日附件二:范例摘要(“摘要”之间空两格,采用三号字、黑体、居中,与内容空一行) (内容采用小四号宋体)注:毕业设计(论文)摘要或总说明书要概括研究课题的内容、方法和观点以及取得的成果和结论,应反映整个内容的精华,字数在300字左右。
关键词:(小四号、黑体、顶格)☆☆☆;☆☆☆;☆☆☆(内容采用小四号、宋体、接排、各关键词之间有分号)Abstract(三号加粗):(采用三号字、Times New Roman字体、加黑、居中、与内容空一行) There is a kind of automatic access system that use automatic indemnification technology to identify user’s ID and rights, and according to user’s rights to control the door.••••••(内容采用小四号Times New Roman字体,要求300-500单词)Key words(小四号加粗、Times New Roman字体、顶格):(内容采用小四号、Times New Roman字体、接排、各关键词之间有分号)目录(三号、黑体、居中、目录两字空四格、与正文空一行)引言 (1)1(空两格)☆☆☆☆,☆☆(四号黑体) (3)1.1(空一格)☆☆☆,☆☆☆(小四号黑体) (3)1.2 ☆☆☆、☆☆☆☆ (4)2 ☆☆☆☆☆☆☆☆ (6)2.1 ☆☆☆、☆☆,☆ (6)2.1.1☆☆☆☆☆ (6)2.1.2☆☆☆☆☆☆ (7)••••••5 结论 (34)谢辞 (35)参考文献 (35)附录 (36)注:目录按三级标题编写(即:1 ……、1.1 ……、1.1.1 ……),要求标题层次清晰。
大连民族学院
本科毕业设计外文翻译
学院:
专业(班级):
学生姓名:
指导教师:
2012年月日
1
每名学生在毕业设计(论文)期间,应完成译文不少于3千汉字的外文资料翻译。
译文内容必须与毕业设计(论文)内容有关,原则上是近五年出版的期刊(不可翻译有中文译文的书籍或期刊)。
1.1译文正文格式
译文正文格式同毕业设计(论文)正文格式要求。
1.2 译文页眉页脚的编排
页脚要求同毕业论文页脚要求,一律用阿拉伯数字连续编页码。
页码应由正文首页开始,作为第1页。
封面不编入页码。
页码必须标注在每页页脚底部居中位置,宋体,小五。
无页眉。
1.3标题格式
各级标题格式同毕业论文中相关要求。
2 打印和装订说明
2.1 封皮
按照首页格式制作封面。
2.2 正文
单面打印。
2.3装订规范要求
装订时原文在前,译文在后,左侧装订。
译文必须于毕业设计(论文)中期检查前完成,交指导教师批改。
–1–。
本科生外文文献翻译
外文题目
中文题目: 河北大学本科生外文文献翻译
学 院 学科门类 专 业 学 号 姓 名 指导教师 张文
装 订 线
河北大学2014届本科生毕业外文翻译
外文翻译撰写格式要求
1、外文翻译一律打印,采取A4纸张,页边距一律采取:上、下2.5cm,左3cm,右1.5cm,行间距取多倍行距(设置值为1.25);字符间距为默认值(缩放100%,间距:标准),封面采用教务处统一规定的封面。
2、字数及字体要求
(1)外文翻译所用字体要求为宋体;(2)外文翻译字数要求3000字以上。
3、字号
第一层次题序和标题用小三号黑体字;第二层次题序和标题用四号黑体字;第三层次及以下题序和标题与第二层次同;正文用小四号宋体。
4、页眉及页码
外文翻译各页均加页眉,采用宋体五号宋体居中,打印“河北大学XXXX 届本科生毕业外文翻译”。
页码从正文开始在页脚按阿拉伯数字(宋体小五号)连续编排,居中书写。
5、外文资料及译文
外文资料可用A4纸复印,如果打印,采用小四号Times New Roman字体,译文采用小四号宋体打印。
(要求附原文复印件(A4纸张))!
6、外文翻译封面见上页模板。